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 4c4537cb450fc28c68b005cef4a31da4420d7076..4e0d207b3d67b628fe8a48f8ede95a6c7b6a8bae 100644 |
--- a/webrtc/modules/video_coding/frame_object.cc |
+++ b/webrtc/modules/video_coding/frame_object.cc |
@@ -12,6 +12,7 @@ |
#include "webrtc/common_video/h264/h264_common.h" |
#include "webrtc/modules/video_coding/packet_buffer.h" |
#include "webrtc/rtc_base/checks.h" |
+#include "webrtc/rtc_base/logging.h" |
namespace webrtc { |
namespace video_coding { |
@@ -34,6 +35,7 @@ RtpFrameObject::RtpFrameObject(PacketBuffer* packet_buffer, |
last_seq_num_(last_seq_num), |
received_time_(received_time), |
times_nacked_(times_nacked) { |
+ LOG(LS_ERROR) << __func__ << first_seq_num << " " << last_seq_num; |
VCMPacket* first_packet = packet_buffer_->GetPacket(first_seq_num); |
RTC_CHECK(first_packet); |
@@ -41,6 +43,26 @@ RtpFrameObject::RtpFrameObject(PacketBuffer* packet_buffer, |
frame_type_ = first_packet->frameType; |
codec_type_ = first_packet->codec; |
+ if (first_packet->video_header.stereoInfo.frame_index == 0 && |
+ codec_type_ == kVideoCodecStereo) { |
+ uint16_t index = first_seq_num; |
+ while (index != last_seq_num) { |
+ VCMPacket* packet = packet_buffer_->GetPacket(first_seq_num); |
+ if (packet->video_header.stereoInfo.frame_index > 0) |
+ break; |
+ index = (index + 1) % packet_buffer_->size_; |
+ } |
+ last_seq_num_ = index; |
+ |
+ _codecSpecificInfo.stereoInfo.num_frames = 1; |
+ RtpFrameObject* alpha = |
+ new RtpFrameObject(packet_buffer, index, last_seq_num, frame_size, |
+ times_nacked, received_time); |
+ _codecSpecificInfo.stereoInfo.encoded_images[0] = alpha; |
+ _codecSpecificInfo.stereoInfo.codec_specific_infos[0] = |
+ alpha->CodecSpecific(); |
+ } |
+ |
// TODO(philipel): Remove when encoded image is replaced by FrameObject. |
// VCMEncodedFrame members |
CopyCodecSpecific(&first_packet->video_header); |