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 ec187de086506c7056373b31fd2184d63dddddfb..1729e9cc37a7780c86595d8bf5e381f4c375dde4 100644 |
--- a/webrtc/modules/video_coding/packet_buffer.h |
+++ b/webrtc/modules/video_coding/packet_buffer.h |
@@ -14,6 +14,8 @@ |
#include <vector> |
#include "webrtc/base/criticalsection.h" |
+#include "webrtc/base/refcount.h" |
+#include "webrtc/base/scoped_ref_ptr.h" |
#include "webrtc/base/thread_annotations.h" |
#include "webrtc/modules/include/module_common_types.h" |
#include "webrtc/modules/video_coding/packet.h" |
@@ -35,19 +37,28 @@ class OnCompleteFrameCallback { |
virtual void OnCompleteFrame(std::unique_ptr<FrameObject> frame) = 0; |
}; |
-class PacketBuffer { |
+class PacketBuffer : rtc::RefCountInterface { |
danilchap
2016/08/02 14:04:45
Do you need to derive from this interface?
If you
philipel
2016/08/02 14:39:59
Removed inheritance.
|
public: |
- // Both |start_buffer_size| and |max_buffer_size| must be a power of 2. |
- PacketBuffer(Clock* clock, |
- size_t start_buffer_size, |
- size_t max_buffer_size, |
- OnCompleteFrameCallback* frame_callback); |
+ static rtc::scoped_refptr<PacketBuffer> Create( |
+ Clock* clock, |
+ size_t start_buffer_size, |
+ size_t max_buffer_size, |
+ OnCompleteFrameCallback* frame_callback); |
bool InsertPacket(const VCMPacket& packet); |
void ClearTo(uint16_t seq_num); |
void Clear(); |
+ int AddRef() const; |
+ int Release() const; |
+ |
private: |
+ // Both |start_buffer_size| and |max_buffer_size| must be a power of 2. |
+ PacketBuffer(Clock* clock, |
+ size_t start_buffer_size, |
+ size_t max_buffer_size, |
+ OnCompleteFrameCallback* frame_callback); |
+ |
friend RtpFrameObject; |
// Since we want the packet buffer to be as packet type agnostic |
// as possible we extract only the information needed in order |
@@ -118,6 +129,8 @@ class PacketBuffer { |
// Frames that have received all their packets are handed off to the |
// |reference_finder_| which finds the dependencies between the frames. |
RtpFrameReferenceFinder reference_finder_; |
+ |
+ mutable volatile int ref_count_ = 0; |
}; |
} // namespace video_coding |