int ff_cbs_read_packet(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVPacket *pkt) { int err; memset(frag, 0, sizeof(*frag)); if (pkt->buf) { frag->data_ref = av_buffer_ref(pkt->buf); if (!frag->data_ref) return AVERROR(ENOMEM); frag->data = pkt->data; frag->data_size = pkt->size; } else { err = cbs_fill_fragment_data(ctx, frag, pkt->data, pkt->size); if (err < 0) return err; } err = ctx->codec->split_fragment(ctx, frag, 0); if (err < 0) return err; return cbs_read_fragment_content(ctx, frag); }
int ff_cbs_read(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const uint8_t *data, size_t size) { int err; memset(frag, 0, sizeof(*frag)); err = cbs_fill_fragment_data(ctx, frag, data, size); if (err < 0) return err; err = ctx->codec->split_fragment(ctx, frag, 0); if (err < 0) return err; return cbs_read_fragment_content(ctx, frag); }
int ff_cbs_read_extradata(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVCodecParameters *par) { int err; memset(frag, 0, sizeof(*frag)); err = cbs_fill_fragment_data(ctx, frag, par->extradata, par->extradata_size); if (err < 0) return err; err = ctx->codec->split_fragment(ctx, frag, 1); if (err < 0) return err; return cbs_read_fragment_content(ctx, frag); }
int ff_cbs_read_extradata(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVCodecParameters *par) { int err; memset(frag, 0, sizeof(*frag)); frag->data = par->extradata; frag->data_size = par->extradata_size; err = ctx->codec->split_fragment(ctx, frag, 1); if (err < 0) return err; frag->data = NULL; frag->data_size = 0; return cbs_read_fragment_content(ctx, frag); }
int ff_cbs_read_packet(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVPacket *pkt) { int err; memset(frag, 0, sizeof(*frag)); frag->data = pkt->data; frag->data_size = pkt->size; err = ctx->codec->split_fragment(ctx, frag, 0); if (err < 0) return err; frag->data = NULL; frag->data_size = 0; return cbs_read_fragment_content(ctx, frag); }
int ff_cbs_read(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const uint8_t *data, size_t size) { int err; memset(frag, 0, sizeof(*frag)); // (We won't write to this during split.) frag->data = (uint8_t*)data; frag->data_size = size; err = ctx->codec->split_fragment(ctx, frag, 0); if (err < 0) return err; frag->data = NULL; frag->data_size = 0; return cbs_read_fragment_content(ctx, frag); }