OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2015 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 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 return false; | 161 return false; |
162 } | 162 } |
163 uint8_t* dst_y = reinterpret_cast<uint8_t*>( | 163 uint8_t* dst_y = reinterpret_cast<uint8_t*>( |
164 CVPixelBufferGetBaseAddressOfPlane(pixel_buffer, 0)); | 164 CVPixelBufferGetBaseAddressOfPlane(pixel_buffer, 0)); |
165 int dst_stride_y = CVPixelBufferGetBytesPerRowOfPlane(pixel_buffer, 0); | 165 int dst_stride_y = CVPixelBufferGetBytesPerRowOfPlane(pixel_buffer, 0); |
166 uint8_t* dst_uv = reinterpret_cast<uint8_t*>( | 166 uint8_t* dst_uv = reinterpret_cast<uint8_t*>( |
167 CVPixelBufferGetBaseAddressOfPlane(pixel_buffer, 1)); | 167 CVPixelBufferGetBaseAddressOfPlane(pixel_buffer, 1)); |
168 int dst_stride_uv = CVPixelBufferGetBytesPerRowOfPlane(pixel_buffer, 1); | 168 int dst_stride_uv = CVPixelBufferGetBytesPerRowOfPlane(pixel_buffer, 1); |
169 // Convert I420 to NV12. | 169 // Convert I420 to NV12. |
170 int ret = libyuv::I420ToNV12( | 170 int ret = libyuv::I420ToNV12( |
171 frame.video_frame_buffer()->DataY(), | 171 frame.buffer(webrtc::kYPlane), frame.stride(webrtc::kYPlane), |
172 frame.video_frame_buffer()->StrideY(), | 172 frame.buffer(webrtc::kUPlane), frame.stride(webrtc::kUPlane), |
173 frame.video_frame_buffer()->DataU(), | 173 frame.buffer(webrtc::kVPlane), frame.stride(webrtc::kVPlane), dst_y, |
174 frame.video_frame_buffer()->StrideU(), | 174 dst_stride_y, dst_uv, dst_stride_uv, frame.width(), frame.height()); |
175 frame.video_frame_buffer()->DataV(), | |
176 frame.video_frame_buffer()->StrideV(), | |
177 dst_y, dst_stride_y, dst_uv, dst_stride_uv, | |
178 frame.width(), frame.height()); | |
179 CVPixelBufferUnlockBaseAddress(pixel_buffer, 0); | 175 CVPixelBufferUnlockBaseAddress(pixel_buffer, 0); |
180 if (ret) { | 176 if (ret) { |
181 LOG(LS_ERROR) << "Error converting I420 VideoFrame to NV12 :" << ret; | 177 LOG(LS_ERROR) << "Error converting I420 VideoFrame to NV12 :" << ret; |
182 return false; | 178 return false; |
183 } | 179 } |
184 return true; | 180 return true; |
185 } | 181 } |
186 | 182 |
187 // This is the callback function that VideoToolbox calls when encode is | 183 // This is the callback function that VideoToolbox calls when encode is |
188 // complete. From inspection this happens on its own queue. | 184 // complete. From inspection this happens on its own queue. |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
530 if (result != 0) { | 526 if (result != 0) { |
531 LOG(LS_ERROR) << "Encode callback failed: " << result; | 527 LOG(LS_ERROR) << "Encode callback failed: " << result; |
532 return; | 528 return; |
533 } | 529 } |
534 bitrate_adjuster_.Update(frame._size); | 530 bitrate_adjuster_.Update(frame._size); |
535 } | 531 } |
536 | 532 |
537 } // namespace webrtc | 533 } // namespace webrtc |
538 | 534 |
539 #endif // defined(WEBRTC_VIDEO_TOOLBOX_SUPPORTED) | 535 #endif // defined(WEBRTC_VIDEO_TOOLBOX_SUPPORTED) |
OLD | NEW |