| Index: webrtc/modules/video_coding/rtp_frame_reference_finder.h
|
| diff --git a/webrtc/modules/video_coding/rtp_frame_reference_finder.h b/webrtc/modules/video_coding/rtp_frame_reference_finder.h
|
| index e9e7d60a33155764719d992ff44511f8ab2e47c8..db1ddf80725b2e638744d467a54ac0e27bad3ad5 100644
|
| --- a/webrtc/modules/video_coding/rtp_frame_reference_finder.h
|
| +++ b/webrtc/modules/video_coding/rtp_frame_reference_finder.h
|
| @@ -57,12 +57,12 @@ class RtpFrameReferenceFinder {
|
| void ClearTo(uint16_t seq_num);
|
|
|
| private:
|
| - static const uint16_t kPicIdLength = 1 << 7;
|
| + static const uint16_t kPicIdLength = 1 << 15;
|
| static const uint8_t kMaxTemporalLayers = 5;
|
| - static const int kMaxLayerInfo = 10;
|
| - static const int kMaxStashedFrames = 10;
|
| - static const int kMaxNotYetReceivedFrames = 20;
|
| - static const int kMaxGofSaved = 15;
|
| + static const int kMaxLayerInfo = 50;
|
| + static const int kMaxStashedFrames = 50;
|
| + static const int kMaxNotYetReceivedFrames = 100;
|
| + static const int kMaxGofSaved = 50;
|
| static const int kMaxPaddingAge = 100;
|
|
|
|
|
| @@ -129,6 +129,24 @@ class RtpFrameReferenceFinder {
|
| // All picture ids are unwrapped to 16 bits.
|
| uint16_t UnwrapPictureId(uint16_t picture_id) EXCLUSIVE_LOCKS_REQUIRED(crit_);
|
|
|
| + // Returns true if the frame is old and should be dropped.
|
| + // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be
|
| + // around M59).
|
| + bool Vp9PidTl0Fix(const RtpFrameObject& frame,
|
| + int16_t* picture_id,
|
| + int16_t* tl0_pic_idx) EXCLUSIVE_LOCKS_REQUIRED(crit_);
|
| +
|
| + // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be
|
| + // around M59).
|
| + bool DetectVp9PicIdJump(int fixed_pid,
|
| + int fixed_tl0,
|
| + uint32_t timestamp) const
|
| + EXCLUSIVE_LOCKS_REQUIRED(crit_);
|
| +
|
| + // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be
|
| + // around M59).
|
| + bool DetectVp9Tl0PicIdxJump(int fixed_tl0, uint32_t timestamp) const
|
| + EXCLUSIVE_LOCKS_REQUIRED(crit_);
|
|
|
| // For every group of pictures, hold two sequence numbers. The first being
|
| // the sequence number of the last packet of the last completed frame, and
|
| @@ -196,6 +214,15 @@ class RtpFrameReferenceFinder {
|
| int cleared_to_seq_num_ GUARDED_BY(crit_);
|
|
|
| OnCompleteFrameCallback* frame_callback_;
|
| +
|
| + // Vp9PidFix variables
|
| + // TODO(philipel): Remove when VP9 PID does not jump mid-stream.
|
| + int vp9_fix_last_timestamp_ = -1;
|
| + int vp9_fix_jump_timestamp_ = -1;
|
| + int vp9_fix_last_picture_id_ = -1;
|
| + int vp9_fix_pid_offset_ = 0;
|
| + int vp9_fix_last_tl0_pic_idx_ = -1;
|
| + int vp9_fix_tl0_pic_idx_offset_ = 0;
|
| };
|
|
|
| } // namespace video_coding
|
|
|