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() { |