[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