webrtc/modules/video_coding/frame_buffer.h
Niels Möller 87e2d785a0 Prepare for splitting FrameType into AudioFrameType and VideoFrameType
This cl deprecates the FrameType enum, and adds aliases AudioFrameType
and VideoFrameType.

After downstream usage is updated, the enums will be separated
and be moved out of common_types.h.

Bug: webrtc:6883
Change-Id: I2aaf660169da45f22574b4cbb16aea8522cc07a6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/123184
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27011}
2019-03-07 10:12:57 +00:00

86 lines
2.5 KiB
C++

/*
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef MODULES_VIDEO_CODING_FRAME_BUFFER_H_
#define MODULES_VIDEO_CODING_FRAME_BUFFER_H_
#include <stddef.h>
#include <stdint.h>
#include <vector>
#include "common_types.h" // NOLINT(build/include)
#include "modules/video_coding/codecs/h264/include/h264_globals.h"
#include "modules/video_coding/codecs/vp9/include/vp9_globals.h"
#include "modules/video_coding/encoded_frame.h"
#include "modules/video_coding/include/video_coding.h"
#include "modules/video_coding/jitter_buffer_common.h"
#include "modules/video_coding/packet.h"
#include "modules/video_coding/session_info.h"
namespace webrtc {
class VCMFrameBuffer : public VCMEncodedFrame {
public:
VCMFrameBuffer();
virtual ~VCMFrameBuffer();
virtual void Reset();
VCMFrameBufferEnum InsertPacket(const VCMPacket& packet,
int64_t timeInMs,
const FrameData& frame_data);
// State
// Get current state of frame
VCMFrameBufferStateEnum GetState() const;
void PrepareForDecode(bool continuous);
bool IsSessionComplete() const;
bool HaveFirstPacket() const;
int NumPackets() 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;
std::vector<NaluInfo> GetNaluInfos() const;
void SetGofInfo(const GofInfoVP9& gof_info, size_t idx);
// 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;
webrtc::VideoFrameType FrameType() const;
private:
void SetState(VCMFrameBufferStateEnum state); // Set state of frame
VCMFrameBufferStateEnum _state; // Current state of the frame
VCMSessionInfo _sessionInfo;
uint16_t _nackCount;
int64_t _latestPacketTimeMs;
};
} // namespace webrtc
#endif // MODULES_VIDEO_CODING_FRAME_BUFFER_H_