| Index: webrtc/modules/video_coding/main/source/jitter_buffer.h
|
| diff --git a/webrtc/modules/video_coding/main/source/jitter_buffer.h b/webrtc/modules/video_coding/main/source/jitter_buffer.h
|
| index 8a05f1ff178097b8dff7ab2a725045ef063d8da5..31e3be257824893e664499f7e651676ed8898e5f 100644
|
| --- a/webrtc/modules/video_coding/main/source/jitter_buffer.h
|
| +++ b/webrtc/modules/video_coding/main/source/jitter_buffer.h
|
| @@ -74,6 +74,37 @@ class FrameList
|
| void Reset(UnorderedFrameList* free_frames);
|
| };
|
|
|
| +class Vp9SsMap {
|
| + public:
|
| + typedef std::map<uint32_t, GofInfoVP9, TimestampLessThan> SsMap;
|
| + bool Insert(const VCMPacket& packet);
|
| + void Reset();
|
| +
|
| + // Removes SS data that are older than |timestamp|.
|
| + // The |timestamp| should be an old timestamp, i.e. packets with older
|
| + // timestamps should no longer be inserted.
|
| + void RemoveOld(uint32_t timestamp);
|
| +
|
| + bool UpdatePacket(VCMPacket* packet);
|
| + void UpdateFrames(FrameList* frames);
|
| +
|
| + // Public for testing.
|
| + // Returns an iterator to the corresponding SS data for the input |timestamp|.
|
| + bool Find(uint32_t timestamp, SsMap::iterator* it);
|
| +
|
| + private:
|
| + // These two functions are called by RemoveOld.
|
| + // Checks if it is time to do a clean up (done each kSsCleanupIntervalSec).
|
| + bool TimeForCleanup(uint32_t timestamp) const;
|
| +
|
| + // Advances the oldest SS data to handle timestamp wrap in cases where SS data
|
| + // are received very seldom (e.g. only once in beginning, second when
|
| + // IsNewerTimestamp is not true).
|
| + void AdvanceFront(uint32_t timestamp);
|
| +
|
| + SsMap ss_map_;
|
| +};
|
| +
|
| class VCMJitterBuffer {
|
| public:
|
| VCMJitterBuffer(Clock* clock, rtc::scoped_ptr<EventWrapper> event);
|
| @@ -307,10 +338,8 @@ class VCMJitterBuffer {
|
| FrameList incomplete_frames_ GUARDED_BY(crit_sect_);
|
| VCMDecodingState last_decoded_state_ GUARDED_BY(crit_sect_);
|
| bool first_packet_since_reset_;
|
| - // Contains last received frame's temporal information for non-flexible mode.
|
| - GofInfoVP9 last_gof_;
|
| - uint32_t last_gof_timestamp_;
|
| - bool last_gof_valid_;
|
| + // Contains scalability structure data for VP9.
|
| + Vp9SsMap vp9_ss_map_ GUARDED_BY(crit_sect_);
|
|
|
| // Statistics.
|
| VCMReceiveStatisticsCallback* stats_callback_ GUARDED_BY(crit_sect_);
|
|
|