| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 frame->time_stamp, | 58 frame->time_stamp, |
| 59 frame->rotation, apply_rotation); | 59 frame->rotation, apply_rotation); |
| 60 } | 60 } |
| 61 | 61 |
| 62 bool WebRtcVideoFrame::InitToBlack(int w, int h, | 62 bool WebRtcVideoFrame::InitToBlack(int w, int h, |
| 63 int64_t time_stamp_ns) { | 63 int64_t time_stamp_ns) { |
| 64 InitToEmptyBuffer(w, h, time_stamp_ns); | 64 InitToEmptyBuffer(w, h, time_stamp_ns); |
| 65 return SetToBlack(); | 65 return SetToBlack(); |
| 66 } | 66 } |
| 67 | 67 |
| 68 size_t WebRtcVideoFrame::GetWidth() const { | 68 int WebRtcVideoFrame::width() const { |
| 69 return video_frame_buffer_ ? video_frame_buffer_->width() : 0; | 69 return video_frame_buffer_ ? video_frame_buffer_->width() : 0; |
| 70 } | 70 } |
| 71 | 71 |
| 72 size_t WebRtcVideoFrame::GetHeight() const { | 72 int WebRtcVideoFrame::height() const { |
| 73 return video_frame_buffer_ ? video_frame_buffer_->height() : 0; | 73 return video_frame_buffer_ ? video_frame_buffer_->height() : 0; |
| 74 } | 74 } |
| 75 | 75 |
| 76 const uint8_t* WebRtcVideoFrame::GetYPlane() const { | 76 const uint8_t* WebRtcVideoFrame::GetYPlane() const { |
| 77 return video_frame_buffer_ ? video_frame_buffer_->data(kYPlane) : nullptr; | 77 return video_frame_buffer_ ? video_frame_buffer_->data(kYPlane) : nullptr; |
| 78 } | 78 } |
| 79 | 79 |
| 80 const uint8_t* WebRtcVideoFrame::GetUPlane() const { | 80 const uint8_t* WebRtcVideoFrame::GetUPlane() const { |
| 81 return video_frame_buffer_ ? video_frame_buffer_->data(kUPlane) : nullptr; | 81 return video_frame_buffer_ ? video_frame_buffer_->data(kUPlane) : nullptr; |
| 82 } | 82 } |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 | 243 |
| 244 // If the video frame is backed up by a native handle, it resides in the GPU | 244 // If the video frame is backed up by a native handle, it resides in the GPU |
| 245 // memory which we can't rotate here. The assumption is that the renderers | 245 // memory which we can't rotate here. The assumption is that the renderers |
| 246 // which uses GPU to render should be able to rotate themselves. | 246 // which uses GPU to render should be able to rotate themselves. |
| 247 RTC_DCHECK(!GetNativeHandle()); | 247 RTC_DCHECK(!GetNativeHandle()); |
| 248 | 248 |
| 249 if (rotated_frame_) { | 249 if (rotated_frame_) { |
| 250 return rotated_frame_.get(); | 250 return rotated_frame_.get(); |
| 251 } | 251 } |
| 252 | 252 |
| 253 int width = static_cast<int>(GetWidth()); | 253 int orig_width = width(); |
| 254 int height = static_cast<int>(GetHeight()); | 254 int orig_height = height(); |
| 255 | 255 |
| 256 int rotated_width = width; | 256 int rotated_width = orig_width; |
| 257 int rotated_height = height; | 257 int rotated_height = orig_height; |
| 258 if (GetVideoRotation() == webrtc::kVideoRotation_90 || | 258 if (GetVideoRotation() == webrtc::kVideoRotation_90 || |
| 259 GetVideoRotation() == webrtc::kVideoRotation_270) { | 259 GetVideoRotation() == webrtc::kVideoRotation_270) { |
| 260 rotated_width = height; | 260 rotated_width = orig_height; |
| 261 rotated_height = width; | 261 rotated_height = orig_width; |
| 262 } | 262 } |
| 263 | 263 |
| 264 rotated_frame_.reset(CreateEmptyFrame(rotated_width, rotated_height, | 264 rotated_frame_.reset(CreateEmptyFrame(rotated_width, rotated_height, |
| 265 GetTimeStamp())); | 265 GetTimeStamp())); |
| 266 | 266 |
| 267 // TODO(guoweis): Add a function in webrtc_libyuv.cc to convert from | 267 // TODO(guoweis): Add a function in webrtc_libyuv.cc to convert from |
| 268 // VideoRotation to libyuv::RotationMode. | 268 // VideoRotation to libyuv::RotationMode. |
| 269 int ret = libyuv::I420Rotate( | 269 int ret = libyuv::I420Rotate( |
| 270 GetYPlane(), GetYPitch(), GetUPlane(), GetUPitch(), GetVPlane(), | 270 GetYPlane(), GetYPitch(), GetUPlane(), GetUPitch(), GetVPlane(), |
| 271 GetVPitch(), rotated_frame_->GetYPlane(), rotated_frame_->GetYPitch(), | 271 GetVPitch(), rotated_frame_->GetYPlane(), rotated_frame_->GetYPitch(), |
| 272 rotated_frame_->GetUPlane(), rotated_frame_->GetUPitch(), | 272 rotated_frame_->GetUPlane(), rotated_frame_->GetUPitch(), |
| 273 rotated_frame_->GetVPlane(), rotated_frame_->GetVPitch(), width, height, | 273 rotated_frame_->GetVPlane(), rotated_frame_->GetVPitch(), |
| 274 orig_width, orig_height, |
| 274 static_cast<libyuv::RotationMode>(GetVideoRotation())); | 275 static_cast<libyuv::RotationMode>(GetVideoRotation())); |
| 275 if (ret == 0) { | 276 if (ret == 0) { |
| 276 return rotated_frame_.get(); | 277 return rotated_frame_.get(); |
| 277 } | 278 } |
| 278 return nullptr; | 279 return nullptr; |
| 279 } | 280 } |
| 280 | 281 |
| 281 } // namespace cricket | 282 } // namespace cricket |
| OLD | NEW |