#ifndef WEBRTC_JETSON_AV1_BITSTREAM_H_
#define WEBRTC_JETSON_AV1_BITSTREAM_H_
#include <cstddef>
#include <cstdint>
#include <vector>
namespace livekit {
namespace av1 {
struct ObuSpan {
size_t offset = 0;
size_t total_size = 0;
int type = -1;
bool has_size_field = false;
};
std::vector<ObuSpan> ParseObus(const uint8_t* data, size_t len);
bool HasSequenceHeaderObu(const uint8_t* data, size_t len);
bool ExtractSequenceHeaderObu(const uint8_t* data,
size_t len,
std::vector<uint8_t>* out);
void EnsureSequenceHeaderOnKeyframe(std::vector<uint8_t>* packet,
const std::vector<uint8_t>& cached_seq_header);
void StripIvfFrameHeaderIfPresent(std::vector<uint8_t>* packet);
void ConvertAnnexBToLowOverheadIfPresent(std::vector<uint8_t>* packet);
void StripNonTransferObusIfPresent(std::vector<uint8_t>* packet);
void NormalizeForRtp(std::vector<uint8_t>* packet);
bool IsWebRtcParseable(const uint8_t* data, size_t len);
} }
#endif