| OLD | NEW |
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
| 9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 | 170 |
| 171 VideoFrame* WebRtcVideoFrame::Copy() const { | 171 VideoFrame* WebRtcVideoFrame::Copy() const { |
| 172 WebRtcVideoFrame* new_frame = new WebRtcVideoFrame( | 172 WebRtcVideoFrame* new_frame = new WebRtcVideoFrame( |
| 173 video_frame_buffer_, elapsed_time_ns_, time_stamp_ns_, rotation_); | 173 video_frame_buffer_, elapsed_time_ns_, time_stamp_ns_, rotation_); |
| 174 new_frame->pixel_width_ = pixel_width_; | 174 new_frame->pixel_width_ = pixel_width_; |
| 175 new_frame->pixel_height_ = pixel_height_; | 175 new_frame->pixel_height_ = pixel_height_; |
| 176 return new_frame; | 176 return new_frame; |
| 177 } | 177 } |
| 178 | 178 |
| 179 bool WebRtcVideoFrame::MakeExclusive() { | 179 bool WebRtcVideoFrame::MakeExclusive() { |
| 180 DCHECK(video_frame_buffer_->native_handle() == nullptr); | 180 RTC_DCHECK(video_frame_buffer_->native_handle() == nullptr); |
| 181 if (IsExclusive()) | 181 if (IsExclusive()) |
| 182 return true; | 182 return true; |
| 183 | 183 |
| 184 // Not exclusive already, need to copy buffer. | 184 // Not exclusive already, need to copy buffer. |
| 185 rtc::scoped_refptr<webrtc::VideoFrameBuffer> new_buffer = | 185 rtc::scoped_refptr<webrtc::VideoFrameBuffer> new_buffer = |
| 186 new rtc::RefCountedObject<webrtc::I420Buffer>( | 186 new rtc::RefCountedObject<webrtc::I420Buffer>( |
| 187 video_frame_buffer_->width(), video_frame_buffer_->height(), | 187 video_frame_buffer_->width(), video_frame_buffer_->height(), |
| 188 video_frame_buffer_->stride(kYPlane), | 188 video_frame_buffer_->stride(kYPlane), |
| 189 video_frame_buffer_->stride(kUPlane), | 189 video_frame_buffer_->stride(kUPlane), |
| 190 video_frame_buffer_->stride(kVPlane)); | 190 video_frame_buffer_->stride(kVPlane)); |
| 191 | 191 |
| 192 if (!CopyToPlanes( | 192 if (!CopyToPlanes( |
| 193 new_buffer->MutableData(kYPlane), new_buffer->MutableData(kUPlane), | 193 new_buffer->MutableData(kYPlane), new_buffer->MutableData(kUPlane), |
| 194 new_buffer->MutableData(kVPlane), new_buffer->stride(kYPlane), | 194 new_buffer->MutableData(kVPlane), new_buffer->stride(kYPlane), |
| 195 new_buffer->stride(kUPlane), new_buffer->stride(kVPlane))) { | 195 new_buffer->stride(kUPlane), new_buffer->stride(kVPlane))) { |
| 196 return false; | 196 return false; |
| 197 } | 197 } |
| 198 | 198 |
| 199 video_frame_buffer_ = new_buffer; | 199 video_frame_buffer_ = new_buffer; |
| 200 return true; | 200 return true; |
| 201 } | 201 } |
| 202 | 202 |
| 203 size_t WebRtcVideoFrame::ConvertToRgbBuffer(uint32 to_fourcc, uint8* buffer, | 203 size_t WebRtcVideoFrame::ConvertToRgbBuffer(uint32 to_fourcc, uint8* buffer, |
| 204 size_t size, int stride_rgb) const { | 204 size_t size, int stride_rgb) const { |
| 205 CHECK(video_frame_buffer_); | 205 RTC_CHECK(video_frame_buffer_); |
| 206 CHECK(video_frame_buffer_->native_handle() == nullptr); | 206 RTC_CHECK(video_frame_buffer_->native_handle() == nullptr); |
| 207 return VideoFrame::ConvertToRgbBuffer(to_fourcc, buffer, size, stride_rgb); | 207 return VideoFrame::ConvertToRgbBuffer(to_fourcc, buffer, size, stride_rgb); |
| 208 } | 208 } |
| 209 | 209 |
| 210 bool WebRtcVideoFrame::Reset(uint32 format, | 210 bool WebRtcVideoFrame::Reset(uint32 format, |
| 211 int w, | 211 int w, |
| 212 int h, | 212 int h, |
| 213 int dw, | 213 int dw, |
| 214 int dh, | 214 int dh, |
| 215 uint8* sample, | 215 uint8* sample, |
| 216 size_t sample_size, | 216 size_t sample_size, |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 const VideoFrame* WebRtcVideoFrame::GetCopyWithRotationApplied() const { | 289 const VideoFrame* WebRtcVideoFrame::GetCopyWithRotationApplied() const { |
| 290 // If the frame is not rotated, the caller should reuse this frame instead of | 290 // If the frame is not rotated, the caller should reuse this frame instead of |
| 291 // making a redundant copy. | 291 // making a redundant copy. |
| 292 if (GetVideoRotation() == webrtc::kVideoRotation_0) { | 292 if (GetVideoRotation() == webrtc::kVideoRotation_0) { |
| 293 return this; | 293 return this; |
| 294 } | 294 } |
| 295 | 295 |
| 296 // If the video frame is backed up by a native handle, it resides in the GPU | 296 // If the video frame is backed up by a native handle, it resides in the GPU |
| 297 // memory which we can't rotate here. The assumption is that the renderers | 297 // memory which we can't rotate here. The assumption is that the renderers |
| 298 // which uses GPU to render should be able to rotate themselves. | 298 // which uses GPU to render should be able to rotate themselves. |
| 299 DCHECK(!GetNativeHandle()); | 299 RTC_DCHECK(!GetNativeHandle()); |
| 300 | 300 |
| 301 if (rotated_frame_) { | 301 if (rotated_frame_) { |
| 302 return rotated_frame_.get(); | 302 return rotated_frame_.get(); |
| 303 } | 303 } |
| 304 | 304 |
| 305 int width = static_cast<int>(GetWidth()); | 305 int width = static_cast<int>(GetWidth()); |
| 306 int height = static_cast<int>(GetHeight()); | 306 int height = static_cast<int>(GetHeight()); |
| 307 | 307 |
| 308 int rotated_width = width; | 308 int rotated_width = width; |
| 309 int rotated_height = height; | 309 int rotated_height = height; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 325 rotated_frame_->GetUPlane(), rotated_frame_->GetUPitch(), | 325 rotated_frame_->GetUPlane(), rotated_frame_->GetUPitch(), |
| 326 rotated_frame_->GetVPlane(), rotated_frame_->GetVPitch(), width, height, | 326 rotated_frame_->GetVPlane(), rotated_frame_->GetVPitch(), width, height, |
| 327 static_cast<libyuv::RotationMode>(GetVideoRotation())); | 327 static_cast<libyuv::RotationMode>(GetVideoRotation())); |
| 328 if (ret == 0) { | 328 if (ret == 0) { |
| 329 return rotated_frame_.get(); | 329 return rotated_frame_.get(); |
| 330 } | 330 } |
| 331 return nullptr; | 331 return nullptr; |
| 332 } | 332 } |
| 333 | 333 |
| 334 } // namespace cricket | 334 } // namespace cricket |
| OLD | NEW |