| 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..0dd06abf2e041b5a0e58a78e0d441231248b4a50 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,50 @@ 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); | 
| +  RTC_DCHECK(last_packet && last_packet->markerBit); | 
| +  // http://www.etsi.org/deliver/etsi_ts/126100_126199/126114/12.07.00_60/ | 
| +  // ts_126114v120700p.pdf Section 7.4.5. | 
| +  // The MTSI client shall add the payload bytes as defined in this clause | 
| +  // onto the last RTP packet in each group of packets which make up a key | 
| +  // frame (I-frame or IDR frame in H.264 (AVC), or an IRAP picture in H.265 | 
| +  // (HEVC)). | 
| +  rotation_ = last_packet->video_header.rotation; | 
| +  _rotation_set = true; | 
| } | 
|  | 
| RtpFrameObject::~RtpFrameObject() { | 
|  |