[FFmpeg-devel] [PATCH v3 07/11] avcodec: add cbs for h266/vvc
Nuo Mi
nuomi2021 at gmail.com
Sun Jan 17 06:08:52 EET 2021
On Thu, Jan 14, 2021 at 12:22 PM James Almer <jamrial at gmail.com> wrote:
> On 1/11/2021 1:33 PM, Nuo Mi wrote:
> > @@ -1218,6 +1464,20 @@ static int cbs_h2645_unit_requires_zero_byte(enum
> AVCodecID codec_id,
> > return type == H264_NAL_SPS || type == H264_NAL_PPS;
> > if (codec_id == AV_CODEC_ID_HEVC)
> > return type == HEVC_NAL_VPS || type == HEVC_NAL_SPS || type ==
> HEVC_NAL_PPS;
> > + if (codec_id == AV_CODEC_ID_VVC) {
> > + switch (type) {
> > + case VVC_DCI_NUT:
> > + case VVC_OPI_NUT:
> > + case VVC_VPS_NUT:
> > + case VVC_SPS_NUT:
> > + case VVC_PPS_NUT:
> > + case VVC_PREFIX_APS_NUT:
> > + case VVC_SUFFIX_APS_NUT:
> > + return 1;
> > + default:
> > + return 0;
> > + }
>
> return type >= VVC_OPI_NUT && type <= VVC_SUFFIX_APS_NUT;
>
good suggestion. thanks fixed.
>
> > + }
> > return 0;
> > }
> >
> > @@ -1369,6 +1629,34 @@ static void cbs_h265_close(CodedBitstreamContext
> *ctx)
> > av_buffer_unref(&h265->pps_ref[i]);
> > }
> >
> > +static void cbs_h266_flush(CodedBitstreamContext *ctx)
> > +{
> > + CodedBitstreamH266Context *h266 = ctx->priv_data;
> > +
> > + for (int i = 0; i < FF_ARRAY_ELEMS(h266->sps); i++) {
> > + av_buffer_unref(&h266->sps_ref[i]);
> > + h266->sps[i] = NULL;
> > + }
> > + for (int i = 0; i < FF_ARRAY_ELEMS(h266->pps); i++) {
> > + av_buffer_unref(&h266->pps_ref[i]);
> > + h266->pps[i] = NULL;
> > + }
> > + av_buffer_unref(&h266->ph_ref);
> > + h266->ph = NULL;
> > +
> > + h266->active_sps = NULL;
> > + h266->active_pps = NULL;
> > +}
> > +
> > +static void cbs_h266_close(CodedBitstreamContext *ctx)
> > +{
> > + CodedBitstreamH266Context *h266 = ctx->priv_data;
> > +
> > + cbs_h266_flush(ctx);
> > + ff_h2645_packet_uninit(&h266->common.read_packet);
> > +
> > + }
> > +
> > static void cbs_h264_free_sei_payload(H264RawSEIPayload *payload)
> > {
> > switch (payload->payload_type) {
> > @@ -1513,6 +1801,76 @@ static const CodedBitstreamUnitTypeDescriptor
> cbs_h265_unit_types[] = {
> > CBS_UNIT_TYPE_END_OF_LIST
> > };
> >
> > +static void cbs_h266_free_sei(void *opaque, uint8_t *content)
> > +{
> > +}
>
> static void cbs_h266_free_sei_payload(H266RawSEIPayload *payload)
> {
> switch (payload->payload_type) {
> case VVC_SEI_TYPE_DECODED_PICTURE_HASH:
> break;
> default:
> av_buffer_unref(&payload->payload.other.data_ref);
> break;
> }
> av_buffer_unref(&payload->extension_data.data_ref);
> }
>
> static void cbs_h266_free_sei(void *opaque, uint8_t *content)
> {
> H266RawSEI *sei = (H266RawSEI*)content;
>
> for (int i = 0; i < sei->payload_count; i++)
> cbs_h266_free_sei_payload(&sei->payload[i]);
> av_freep(&content);
> }
>
fixed
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
More information about the ffmpeg-devel
mailing list