OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 return ManageFrameVp9(frame); | 93 return ManageFrameVp9(frame); |
94 // Since the EndToEndTests use kVicdeoCodecUnknow we treat it the same as | 94 // Since the EndToEndTests use kVicdeoCodecUnknow we treat it the same as |
95 // kVideoCodecGeneric. | 95 // kVideoCodecGeneric. |
96 // TODO(philipel): Take a look at the EndToEndTests and see if maybe they | 96 // TODO(philipel): Take a look at the EndToEndTests and see if maybe they |
97 // should be changed to use kVideoCodecGeneric instead. | 97 // should be changed to use kVideoCodecGeneric instead. |
98 case kVideoCodecUnknown: | 98 case kVideoCodecUnknown: |
99 case kVideoCodecH264: | 99 case kVideoCodecH264: |
100 case kVideoCodecI420: | 100 case kVideoCodecI420: |
101 case kVideoCodecGeneric: | 101 case kVideoCodecGeneric: |
102 return ManageFrameGeneric(frame, kNoPictureId); | 102 return ManageFrameGeneric(frame, kNoPictureId); |
| 103 case kVideoCodecStereo: |
| 104 return ManageFrameVp9(frame); |
103 } | 105 } |
104 | 106 |
105 // If not all code paths return a value it makes the win compiler sad. | 107 // If not all code paths return a value it makes the win compiler sad. |
106 RTC_NOTREACHED(); | 108 RTC_NOTREACHED(); |
107 return kDrop; | 109 return kDrop; |
108 } | 110 } |
109 | 111 |
110 void RtpFrameReferenceFinder::PaddingReceived(uint16_t seq_num) { | 112 void RtpFrameReferenceFinder::PaddingReceived(uint16_t seq_num) { |
111 rtc::CritScope lock(&crit_); | 113 rtc::CritScope lock(&crit_); |
112 auto clean_padding_to = | 114 auto clean_padding_to = |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 rtc::Optional<RTPVideoTypeHeader> rtp_codec_header = frame->GetCodecHeader(); | 400 rtc::Optional<RTPVideoTypeHeader> rtp_codec_header = frame->GetCodecHeader(); |
399 if (!rtp_codec_header) { | 401 if (!rtp_codec_header) { |
400 LOG(LS_WARNING) << "Failed to get codec header from frame, dropping frame."; | 402 LOG(LS_WARNING) << "Failed to get codec header from frame, dropping frame."; |
401 return kDrop; | 403 return kDrop; |
402 } | 404 } |
403 | 405 |
404 const RTPVideoHeaderVP9& codec_header = rtp_codec_header->VP9; | 406 const RTPVideoHeaderVP9& codec_header = rtp_codec_header->VP9; |
405 | 407 |
406 if (codec_header.picture_id == kNoPictureId || | 408 if (codec_header.picture_id == kNoPictureId || |
407 codec_header.temporal_idx == kNoTemporalIdx) { | 409 codec_header.temporal_idx == kNoTemporalIdx) { |
408 return ManageFrameGeneric(std::move(frame), codec_header.picture_id); | 410 return ManageFrameGeneric(std::move(frame), kNoPictureId); |
409 } | 411 } |
410 | 412 |
411 frame->spatial_layer = codec_header.spatial_idx; | 413 frame->spatial_layer = codec_header.spatial_idx; |
412 frame->inter_layer_predicted = codec_header.inter_layer_predicted; | 414 frame->inter_layer_predicted = codec_header.inter_layer_predicted; |
413 frame->picture_id = codec_header.picture_id % kPicIdLength; | 415 frame->picture_id = codec_header.picture_id % kPicIdLength; |
414 | |
415 if (last_unwrap_ == -1) | 416 if (last_unwrap_ == -1) |
416 last_unwrap_ = codec_header.picture_id; | 417 last_unwrap_ = codec_header.picture_id; |
417 | 418 |
418 if (last_picture_id_ == -1) | 419 if (last_picture_id_ == -1) |
419 last_picture_id_ = frame->picture_id; | 420 last_picture_id_ = frame->picture_id; |
420 | 421 |
421 if (codec_header.flexible_mode) { | 422 if (codec_header.flexible_mode) { |
422 frame->num_references = codec_header.num_ref_pics; | 423 frame->num_references = codec_header.num_ref_pics; |
423 for (size_t i = 0; i < frame->num_references; ++i) { | 424 for (size_t i = 0; i < frame->num_references; ++i) { |
424 frame->references[i] = | 425 frame->references[i] = |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
590 } | 591 } |
591 | 592 |
592 void RtpFrameReferenceFinder::UnwrapPictureIds(RtpFrameObject* frame) { | 593 void RtpFrameReferenceFinder::UnwrapPictureIds(RtpFrameObject* frame) { |
593 for (size_t i = 0; i < frame->num_references; ++i) | 594 for (size_t i = 0; i < frame->num_references; ++i) |
594 frame->references[i] = unwrapper_.Unwrap(frame->references[i]); | 595 frame->references[i] = unwrapper_.Unwrap(frame->references[i]); |
595 frame->picture_id = unwrapper_.Unwrap(frame->picture_id); | 596 frame->picture_id = unwrapper_.Unwrap(frame->picture_id); |
596 } | 597 } |
597 | 598 |
598 } // namespace video_coding | 599 } // namespace video_coding |
599 } // namespace webrtc | 600 } // namespace webrtc |
OLD | NEW |