Sets up framework for decoding with errors: collects frame sizes (in number of packets) in JB and passes this information to VCMSessionInfo with rtt_ms as FrameData.
R=marpan@google.com, mikhal@webrtc.org Review URL: https://webrtc-codereview.appspot.com/1841004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@4424 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@ -8,8 +8,8 @@
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#ifndef WEBRTC_MODULES_VIDEO_CODING_FRAME_BUFFER_H_
|
||||
#define WEBRTC_MODULES_VIDEO_CODING_FRAME_BUFFER_H_
|
||||
#ifndef WEBRTC_MODULES_VIDEO_CODING_MAIN_SOURCE_FRAME_BUFFER_H_
|
||||
#define WEBRTC_MODULES_VIDEO_CODING_MAIN_SOURCE_FRAME_BUFFER_H_
|
||||
|
||||
#include "webrtc/modules/interface/module_common_types.h"
|
||||
#include "webrtc/modules/video_coding/main/source/encoded_frame.h"
|
||||
@ -17,82 +17,81 @@
|
||||
#include "webrtc/modules/video_coding/main/source/session_info.h"
|
||||
#include "webrtc/typedefs.h"
|
||||
|
||||
namespace webrtc
|
||||
{
|
||||
namespace webrtc {
|
||||
|
||||
class VCMFrameBuffer : public VCMEncodedFrame
|
||||
{
|
||||
public:
|
||||
VCMFrameBuffer();
|
||||
virtual ~VCMFrameBuffer();
|
||||
class VCMFrameBuffer : public VCMEncodedFrame {
|
||||
public:
|
||||
VCMFrameBuffer();
|
||||
virtual ~VCMFrameBuffer();
|
||||
|
||||
VCMFrameBuffer(VCMFrameBuffer& rhs);
|
||||
VCMFrameBuffer(const VCMFrameBuffer& rhs);
|
||||
|
||||
virtual void Reset();
|
||||
virtual void Reset();
|
||||
|
||||
VCMFrameBufferEnum InsertPacket(const VCMPacket& packet,
|
||||
int64_t timeInMs,
|
||||
bool enableDecodableState,
|
||||
uint32_t rttMs);
|
||||
VCMFrameBufferEnum InsertPacket(const VCMPacket& packet,
|
||||
int64_t timeInMs,
|
||||
bool enableDecodableState,
|
||||
const FrameData& frame_data);
|
||||
|
||||
// State
|
||||
// Get current state of frame
|
||||
VCMFrameBufferStateEnum GetState() const;
|
||||
// Get current state and timestamp of frame
|
||||
VCMFrameBufferStateEnum GetState(uint32_t& timeStamp) const;
|
||||
void PrepareForDecode(bool continuous);
|
||||
// State
|
||||
// Get current state of frame
|
||||
VCMFrameBufferStateEnum GetState() const;
|
||||
// Get current state and timestamp of frame
|
||||
VCMFrameBufferStateEnum GetState(uint32_t& timeStamp) const;
|
||||
void PrepareForDecode(bool continuous);
|
||||
|
||||
bool IsRetransmitted() const;
|
||||
bool IsSessionComplete() const;
|
||||
bool HaveFirstPacket() const;
|
||||
bool HaveLastPacket() const;
|
||||
// Makes sure the session contain a decodable stream.
|
||||
void MakeSessionDecodable();
|
||||
bool IsRetransmitted() const;
|
||||
bool IsSessionComplete() const;
|
||||
bool HaveFirstPacket() const;
|
||||
bool HaveLastPacket() const;
|
||||
int NumPackets() const;
|
||||
// Makes sure the session contain a decodable stream.
|
||||
void MakeSessionDecodable();
|
||||
|
||||
// Sequence numbers
|
||||
// Get lowest packet sequence number in frame
|
||||
int32_t GetLowSeqNum() const;
|
||||
// Get highest packet sequence number in frame
|
||||
int32_t GetHighSeqNum() const;
|
||||
// Sequence numbers
|
||||
// Get lowest packet sequence number in frame
|
||||
int32_t GetLowSeqNum() const;
|
||||
// Get highest packet sequence number in frame
|
||||
int32_t GetHighSeqNum() const;
|
||||
|
||||
int PictureId() const;
|
||||
int TemporalId() const;
|
||||
bool LayerSync() const;
|
||||
int Tl0PicId() const;
|
||||
bool NonReference() const;
|
||||
int PictureId() const;
|
||||
int TemporalId() const;
|
||||
bool LayerSync() const;
|
||||
int Tl0PicId() const;
|
||||
bool NonReference() const;
|
||||
|
||||
// Set counted status (as counted by JB or not)
|
||||
void SetCountedFrame(bool frameCounted);
|
||||
bool GetCountedFrame() const;
|
||||
// Set counted status (as counted by JB or not)
|
||||
void SetCountedFrame(bool frameCounted);
|
||||
bool GetCountedFrame() const;
|
||||
|
||||
// Increments a counter to keep track of the number of packets of this frame
|
||||
// which were NACKed before they arrived.
|
||||
void IncrementNackCount();
|
||||
// Returns the number of packets of this frame which were NACKed before they
|
||||
// arrived.
|
||||
int16_t GetNackCount() const;
|
||||
// Increments a counter to keep track of the number of packets of this frame
|
||||
// which were NACKed before they arrived.
|
||||
void IncrementNackCount();
|
||||
// Returns the number of packets of this frame which were NACKed before they
|
||||
// arrived.
|
||||
int16_t GetNackCount() const;
|
||||
|
||||
int64_t LatestPacketTimeMs() const;
|
||||
int64_t LatestPacketTimeMs() const;
|
||||
|
||||
webrtc::FrameType FrameType() const;
|
||||
void SetPreviousFrameLoss();
|
||||
webrtc::FrameType FrameType() const;
|
||||
void SetPreviousFrameLoss();
|
||||
|
||||
int32_t ExtractFromStorage(const EncodedVideoData& frameFromStorage);
|
||||
int32_t ExtractFromStorage(const EncodedVideoData& frameFromStorage);
|
||||
|
||||
// The number of packets discarded because the decoder can't make use of
|
||||
// them.
|
||||
int NotDecodablePackets() const;
|
||||
// The number of packets discarded because the decoder can't make use of
|
||||
// them.
|
||||
int NotDecodablePackets() const;
|
||||
|
||||
private:
|
||||
void SetState(VCMFrameBufferStateEnum state); // Set state of frame
|
||||
private:
|
||||
void SetState(VCMFrameBufferStateEnum state); // Set state of frame
|
||||
|
||||
VCMFrameBufferStateEnum _state; // Current state of the frame
|
||||
bool _frameCounted; // Was this frame counted by JB?
|
||||
VCMSessionInfo _sessionInfo;
|
||||
uint16_t _nackCount;
|
||||
int64_t _latestPacketTimeMs;
|
||||
VCMFrameBufferStateEnum _state; // Current state of the frame
|
||||
bool _frameCounted; // Was this frame counted by JB?
|
||||
VCMSessionInfo _sessionInfo;
|
||||
uint16_t _nackCount;
|
||||
int64_t _latestPacketTimeMs;
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
#endif // WEBRTC_MODULES_VIDEO_CODING_FRAME_BUFFER_H_
|
||||
#endif // WEBRTC_MODULES_VIDEO_CODING_MAIN_SOURCE_FRAME_BUFFER_H_
|
||||
|
Reference in New Issue
Block a user