Index: webrtc/modules/video_coding/packet_buffer.h |
diff --git a/webrtc/modules/video_coding/packet_buffer.h b/webrtc/modules/video_coding/packet_buffer.h |
index caa81f6b99e99f8400298dbc70558676ddcb2606..37fdab7ef1c5bbe399542ddb39ecbdcf4dfadc1b 100644 |
--- a/webrtc/modules/video_coding/packet_buffer.h |
+++ b/webrtc/modules/video_coding/packet_buffer.h |
@@ -12,6 +12,7 @@ |
#define WEBRTC_MODULES_VIDEO_CODING_PACKET_BUFFER_H_ |
#include <array> |
+#include <utility> |
#include <vector> |
#include <map> |
#include <set> |
@@ -20,6 +21,7 @@ |
#include "webrtc/base/criticalsection.h" |
#include "webrtc/base/scoped_ptr.h" |
#include "webrtc/base/thread_annotations.h" |
+#include "webrtc/modules/include/module_common_types.h" |
#include "webrtc/modules/video_coding/packet.h" |
#include "webrtc/modules/video_coding/sequence_number_util.h" |
@@ -52,6 +54,7 @@ class PacketBuffer { |
static const int kMaxStashedFrames = 10; |
static const int kMaxLayerInfo = 10; |
static const int kMaxNotYetReceivedFrames = 20; |
+ static const int kMaxGofSaved = 5; |
stefan-webrtc
2016/04/26 08:15:12
This constant seems to only be used in the .cc fil
stefan-webrtc
2016/04/26 08:15:12
I wonder if 5 GOFs will actually be enough... It c
philipel
2016/04/28 09:40:42
Increased to 15.
philipel
2016/04/28 09:40:42
This is used on line 193 in the .h file.
|
friend RtpFrameObject; |
// Since we want the packet buffer to be as packet type agnostic |
@@ -115,6 +118,15 @@ class PacketBuffer { |
void CompletedFrameVp8(std::unique_ptr<RtpFrameObject> frame) |
EXCLUSIVE_LOCKS_REQUIRED(crit_); |
+ // Find references for Vp9 frames |
+ void ManageFrameVp9(std::unique_ptr<RtpFrameObject> frame) |
+ EXCLUSIVE_LOCKS_REQUIRED(crit_); |
+ |
+ // Unwrap the picture id and the frame references and then call the |
+ // |frame_callback| callback with the completed frame. |
+ void CompletedFrameVp9(std::unique_ptr<RtpFrameObject> frame) |
+ EXCLUSIVE_LOCKS_REQUIRED(crit_); |
+ |
// All picture ids are unwrapped to 16 bits. |
uint16_t UnwrapPictureId(uint16_t picture_id) |
EXCLUSIVE_LOCKS_REQUIRED(crit_); |
@@ -172,6 +184,19 @@ class PacketBuffer { |
std::map<uint8_t, |
std::array<int16_t, kMaxTemporalLayer>, |
DescendingSeqNumComp<uint8_t>> layer_info_ GUARDED_BY(crit_); |
+ |
+ // Where the current scalability structure is in the |
+ // |scalability_structures_| array. |
+ uint8_t current_ss_idx_; |
+ |
+ // Holds received scalability structures. |
+ std::array<GofInfoVP9, kMaxGofSaved> |
+ scalability_structures_ GUARDED_BY(crit_); |
+ |
+ // Holds the picture id and the Gof information for a given TL0 picture index. |
+ std::map<uint8_t, |
+ std::pair<uint16_t, GofInfoVP9*>, |
+ DescendingSeqNumComp<uint8_t>> gof_info_ GUARDED_BY(crit_); |
}; |
} // namespace video_coding |