From ea71440aec38979cd72f691bb0565ccd4d6553e4 Mon Sep 17 00:00:00 2001 From: "mikhal@webrtc.org" Date: Mon, 12 Dec 2011 02:29:34 +0000 Subject: [PATCH] video_coding: Adding the non reference flag to the receive side logic. Review URL: http://webrtc-codereview.appspot.com/323005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1157 4adac7df-926f-26a2-2b94-8c16560cd09d --- src/modules/video_coding/main/source/frame_buffer.cc | 4 ++++ src/modules/video_coding/main/source/frame_buffer.h | 1 + src/modules/video_coding/main/source/session_info.cc | 6 ++++++ src/modules/video_coding/main/source/session_info.h | 1 + 4 files changed, 12 insertions(+) diff --git a/src/modules/video_coding/main/source/frame_buffer.cc b/src/modules/video_coding/main/source/frame_buffer.cc index 82dbe21818..153c635760 100644 --- a/src/modules/video_coding/main/source/frame_buffer.cc +++ b/src/modules/video_coding/main/source/frame_buffer.cc @@ -80,6 +80,10 @@ int VCMFrameBuffer::Tl0PicId() const { return _sessionInfo.Tl0PicId(); } +bool VCMFrameBuffer::NonReference() const { + return _sessionInfo.NonReference(); +} + bool VCMFrameBuffer::IsSessionComplete() const { diff --git a/src/modules/video_coding/main/source/frame_buffer.h b/src/modules/video_coding/main/source/frame_buffer.h index d7bde65917..f74ac9d628 100644 --- a/src/modules/video_coding/main/source/frame_buffer.h +++ b/src/modules/video_coding/main/source/frame_buffer.h @@ -59,6 +59,7 @@ public: int PictureId() const; int TemporalId() const; int Tl0PicId() const; + bool NonReference() const; // Set counted status (as counted by JB or not) void SetCountedFrame(bool frameCounted); diff --git a/src/modules/video_coding/main/source/session_info.cc b/src/modules/video_coding/main/source/session_info.cc index 569cb7a7bb..be6ef6636a 100644 --- a/src/modules/video_coding/main/source/session_info.cc +++ b/src/modules/video_coding/main/source/session_info.cc @@ -73,6 +73,12 @@ int VCMSessionInfo::Tl0PicId() const { return _packets[0].codecSpecificHeader.codecHeader.VP8.tl0PicIdx; } +bool VCMSessionInfo::NonReference() const { + if (_lowSeqNum == -1 || _packets[0].codecSpecificHeader.codec != kRTPVideoVP8) + return false; + return _packets[0].codecSpecificHeader.codecHeader.VP8.nonReference; +} + void VCMSessionInfo::Reset() { for (int i = 0; i <= _highestPacketIndex; ++i) diff --git a/src/modules/video_coding/main/source/session_info.h b/src/modules/video_coding/main/source/session_info.h index 11805791bd..05bdcc6aa2 100644 --- a/src/modules/video_coding/main/source/session_info.h +++ b/src/modules/video_coding/main/source/session_info.h @@ -79,6 +79,7 @@ public: int PictureId() const; int TemporalId() const; int Tl0PicId() const; + bool NonReference() const; WebRtc_UWord32 PrepareForDecode(WebRtc_UWord8* ptrStartOfLayer, VideoCodecType codec);