Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(520)

Unified Diff: webrtc/modules/video_coding/frame_object.cc

Issue 2522493002: Now run EndToEndTest with the WebRTC-NewVideoJitterBuffer experiment. (Closed)
Patch Set: Rebase Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() {
« no previous file with comments | « webrtc/modules/video_coding/frame_buffer2.cc ('k') | webrtc/modules/video_coding/rtp_frame_reference_finder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698