11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
22PROMEKI_NAMESPACE_BEGIN
98 using Visitor = Function<Error(
const NalUnit &)>;
117 static Error forEachAnnexBNal(
const BufferView &in,
const Visitor &visit);
135 static Error forEachAvccNal(
const BufferView &in, uint8_t lenSize,
const Visitor &visit);
158 static Error annexBToAvcc(
const BufferView &in, uint8_t lenSize, Buffer &outBuf);
186 static Error annexBToAvccFiltered(
const BufferView &in, uint8_t lenSize,
187 const Function<
bool(
const NalUnit &)> &keep,
204 static Error avccToAnnexB(
const BufferView &in, uint8_t lenSize, Buffer &outBuf);
223 static Error wrapNalsAsAnnexB(
const List<BufferView> &nals, Buffer &outBuf);
242 uint8_t chromaFormatIdc = 1;
243 uint8_t bitDepthLumaMinus8 = 0;
244 uint8_t bitDepthChromaMinus8 = 0;
274 static Error parseSpsResolution(
const BufferView &sps, SpsInfo &out);
320struct AvcDecoderConfig {
321 uint8_t configurationVersion = 1;
322 uint8_t avcProfileIndication = 0;
323 uint8_t profileCompatibility = 0;
324 uint8_t avcLevelIndication = 0;
325 uint8_t lengthSizeMinusOne = 3;
352 static Error fromAnnexB(
const BufferView &au, AvcDecoderConfig &out);
364 static Error parse(
const BufferView &payload, AvcDecoderConfig &out);
376 Error serialize(Buffer &outBuf)
const;
386 Error toAnnexB(Buffer &outBuf)
const;
398 static bool isIdrAnnexB(
const BufferView &au);