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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 RTC_CHECK_LE(layerInfo.pNalLengthInByte[nal], | 100 RTC_CHECK_LE(layerInfo.pNalLengthInByte[nal], |
101 std::numeric_limits<size_t>::max() - required_size); | 101 std::numeric_limits<size_t>::max() - required_size); |
102 required_size += layerInfo.pNalLengthInByte[nal]; | 102 required_size += layerInfo.pNalLengthInByte[nal]; |
103 } | 103 } |
104 } | 104 } |
105 if (encoded_image->_size < required_size) { | 105 if (encoded_image->_size < required_size) { |
106 // Increase buffer size. Allocate enough to hold an unencoded image, this | 106 // Increase buffer size. Allocate enough to hold an unencoded image, this |
107 // should be more than enough to hold any encoded data of future frames of | 107 // should be more than enough to hold any encoded data of future frames of |
108 // the same size (avoiding possible future reallocation due to variations in | 108 // the same size (avoiding possible future reallocation due to variations in |
109 // required size). | 109 // required size). |
110 encoded_image->_size = | 110 encoded_image->_size = CalcBufferSize( |
111 CalcBufferSize(kI420, frame_buffer.width(), frame_buffer.height()); | 111 VideoType::kI420, frame_buffer.width(), frame_buffer.height()); |
112 if (encoded_image->_size < required_size) { | 112 if (encoded_image->_size < required_size) { |
113 // Encoded data > unencoded data. Allocate required bytes. | 113 // Encoded data > unencoded data. Allocate required bytes. |
114 LOG(LS_WARNING) << "Encoding produced more bytes than the original image " | 114 LOG(LS_WARNING) << "Encoding produced more bytes than the original image " |
115 << "data! Original bytes: " << encoded_image->_size | 115 << "data! Original bytes: " << encoded_image->_size |
116 << ", encoded bytes: " << required_size << "."; | 116 << ", encoded bytes: " << required_size << "."; |
117 encoded_image->_size = required_size; | 117 encoded_image->_size = required_size; |
118 } | 118 } |
119 encoded_image->_buffer = new uint8_t[encoded_image->_size]; | 119 encoded_image->_buffer = new uint8_t[encoded_image->_size]; |
120 encoded_image_buffer->reset(encoded_image->_buffer); | 120 encoded_image_buffer->reset(encoded_image->_buffer); |
121 } | 121 } |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 Release(); | 247 Release(); |
248 ReportError(); | 248 ReportError(); |
249 return WEBRTC_VIDEO_CODEC_ERROR; | 249 return WEBRTC_VIDEO_CODEC_ERROR; |
250 } | 250 } |
251 // TODO(pbos): Base init params on these values before submitting. | 251 // TODO(pbos): Base init params on these values before submitting. |
252 int video_format = EVideoFormatType::videoFormatI420; | 252 int video_format = EVideoFormatType::videoFormatI420; |
253 openh264_encoder_->SetOption(ENCODER_OPTION_DATAFORMAT, | 253 openh264_encoder_->SetOption(ENCODER_OPTION_DATAFORMAT, |
254 &video_format); | 254 &video_format); |
255 | 255 |
256 // Initialize encoded image. Default buffer size: size of unencoded data. | 256 // Initialize encoded image. Default buffer size: size of unencoded data. |
257 encoded_image_._size = | 257 encoded_image_._size = CalcBufferSize(VideoType::kI420, codec_settings->width, |
258 CalcBufferSize(kI420, codec_settings->width, codec_settings->height); | 258 codec_settings->height); |
259 encoded_image_._buffer = new uint8_t[encoded_image_._size]; | 259 encoded_image_._buffer = new uint8_t[encoded_image_._size]; |
260 encoded_image_buffer_.reset(encoded_image_._buffer); | 260 encoded_image_buffer_.reset(encoded_image_._buffer); |
261 encoded_image_._completeFrame = true; | 261 encoded_image_._completeFrame = true; |
262 encoded_image_._encodedWidth = 0; | 262 encoded_image_._encodedWidth = 0; |
263 encoded_image_._encodedHeight = 0; | 263 encoded_image_._encodedHeight = 0; |
264 encoded_image_._length = 0; | 264 encoded_image_._length = 0; |
265 return WEBRTC_VIDEO_CODEC_OK; | 265 return WEBRTC_VIDEO_CODEC_OK; |
266 } | 266 } |
267 | 267 |
268 int32_t H264EncoderImpl::Release() { | 268 int32_t H264EncoderImpl::Release() { |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
497 | 497 |
498 int32_t H264EncoderImpl::SetPeriodicKeyFrames(bool enable) { | 498 int32_t H264EncoderImpl::SetPeriodicKeyFrames(bool enable) { |
499 return WEBRTC_VIDEO_CODEC_OK; | 499 return WEBRTC_VIDEO_CODEC_OK; |
500 } | 500 } |
501 | 501 |
502 VideoEncoder::ScalingSettings H264EncoderImpl::GetScalingSettings() const { | 502 VideoEncoder::ScalingSettings H264EncoderImpl::GetScalingSettings() const { |
503 return VideoEncoder::ScalingSettings(true); | 503 return VideoEncoder::ScalingSettings(true); |
504 } | 504 } |
505 | 505 |
506 } // namespace webrtc | 506 } // namespace webrtc |
OLD | NEW |