#endif
};
+const enum AVCodecID ff_cbs_all_codec_ids[] = {
+#if CONFIG_CBS_H264
+ AV_CODEC_ID_H264,
+#endif
+#if CONFIG_CBS_H265
+ AV_CODEC_ID_H265,
+#endif
+#if CONFIG_CBS_MPEG2
+ AV_CODEC_ID_MPEG2VIDEO,
+#endif
+ AV_CODEC_ID_NONE
+};
+
int ff_cbs_init(CodedBitstreamContext **ctx_ptr,
enum AVCodecID codec_id, void *log_ctx)
{
AVPacket *pkt,
CodedBitstreamFragment *frag)
{
+ AVBufferRef *buf;
int err;
err = ff_cbs_write_fragment_data(ctx, frag);
if (err < 0)
return err;
- err = av_new_packet(pkt, frag->data_size);
- if (err < 0)
- return err;
+ av_assert0(frag->data_ref);
+ buf = av_buffer_ref(frag->data_ref);
+ if (!buf)
+ return AVERROR(ENOMEM);
- memcpy(pkt->data, frag->data, frag->data_size);
+ av_init_packet(pkt);
+ pkt->buf = buf;
+ pkt->data = frag->data;
pkt->size = frag->data_size;
return 0;