Chromium Code Reviews| Index: webrtc/modules/video_coding/frame_object.cc |
| diff --git a/webrtc/modules/video_coding/frame_object.cc b/webrtc/modules/video_coding/frame_object.cc |
| index 4eb8aeea53dc4ba8cbcad03098e16bbfbffd15a3..abc9350a3938568aa7d0b712dfb571d595376216 100644 |
| --- a/webrtc/modules/video_coding/frame_object.cc |
| +++ b/webrtc/modules/video_coding/frame_object.cc |
| @@ -8,6 +8,7 @@ |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| +#include "webrtc/base/checks.h" |
| #include "webrtc/modules/video_coding/frame_object.h" |
| #include "webrtc/modules/video_coding/packet_buffer.h" |
| @@ -32,39 +33,44 @@ RtpFrameObject::RtpFrameObject(PacketBuffer* packet_buffer, |
| last_seq_num_(last_seq_num), |
| received_time_(received_time), |
| times_nacked_(times_nacked) { |
| - VCMPacket* packet = packet_buffer_->GetPacket(first_seq_num); |
| - if (packet) { |
| - // RtpFrameObject members |
| - frame_type_ = packet->frameType; |
| - codec_type_ = packet->codec; |
| - |
| - // TODO(philipel): Remove when encoded image is replaced by FrameObject. |
| - // VCMEncodedFrame members |
| - CopyCodecSpecific(&packet->video_header); |
| - _completeFrame = true; |
| - _payloadType = packet->payloadType; |
| - _timeStamp = packet->timestamp; |
| - ntp_time_ms_ = packet->ntp_time_ms_; |
| - |
| - // Since FFmpeg use an optimized bitstream reader that reads in chunks of |
| - // 32/64 bits we have to add at least that much padding to the buffer |
| - // to make sure the decoder doesn't read out of bounds. |
| - // NOTE! EncodedImage::_size is the size of the buffer (think capacity of |
| - // an std::vector) and EncodedImage::_length is the actual size of |
| - // the bitstream (think size of an std::vector). |
| - if (codec_type_ == kVideoCodecH264) |
| - _size = frame_size + EncodedImage::kBufferPaddingBytesH264; |
| - else |
| - _size = frame_size; |
| - |
| - _buffer = new uint8_t[_size]; |
| - _length = frame_size; |
| - _frameType = packet->frameType; |
| - GetBitstream(_buffer); |
| - |
| - // FrameObject members |
| - timestamp = packet->timestamp; |
| - } |
| + VCMPacket* first_packet = packet_buffer_->GetPacket(first_seq_num); |
| + RTC_DCHECK(first_packet); |
| + |
| + // RtpFrameObject members |
| + frame_type_ = first_packet->frameType; |
| + codec_type_ = first_packet->codec; |
| + |
| + // TODO(philipel): Remove when encoded image is replaced by FrameObject. |
| + // VCMEncodedFrame members |
| + CopyCodecSpecific(&first_packet->video_header); |
| + _completeFrame = true; |
| + _payloadType = first_packet->payloadType; |
| + _timeStamp = first_packet->timestamp; |
| + ntp_time_ms_ = first_packet->ntp_time_ms_; |
| + |
| + // Since FFmpeg use an optimized bitstream reader that reads in chunks of |
| + // 32/64 bits we have to add at least that much padding to the buffer |
| + // to make sure the decoder doesn't read out of bounds. |
| + // NOTE! EncodedImage::_size is the size of the buffer (think capacity of |
| + // an std::vector) and EncodedImage::_length is the actual size of |
| + // the bitstream (think size of an std::vector). |
| + if (codec_type_ == kVideoCodecH264) |
| + _size = frame_size + EncodedImage::kBufferPaddingBytesH264; |
| + else |
| + _size = frame_size; |
| + |
| + _buffer = new uint8_t[_size]; |
| + _length = frame_size; |
| + _frameType = first_packet->frameType; |
| + GetBitstream(_buffer); |
| + |
| + // FrameObject members |
| + timestamp = first_packet->timestamp; |
| + |
| + VCMPacket* last_packet = packet_buffer_->GetPacket(last_seq_num); |
|
philipel
2016/11/21 15:15:21
Apparently the video rotation is set in the last p
brandtr
2016/11/21 16:46:45
Is this according to the RFC, or just the way that
sprang_webrtc
2016/11/21 16:49:14
Don't we set it on all packets? Or is it that we s
philipel
2016/11/22 14:56:23
Added (copied from frame_buffer.cc) a comment abou
philipel
2016/11/22 14:56:23
Added comment, also, this piece of logic is copied
sprang_webrtc
2016/11/28 13:40:44
Acknowledged.
|
| + RTC_DCHECK(last_packet && last_packet->markerBit); |
| + rotation_ = last_packet->video_header.rotation; |
| + _rotation_set = true; |
| } |
| RtpFrameObject::~RtpFrameObject() { |