On 3/25/2019 12:29 PM, James Almer wrote:
> +        ret = ff_cbs_read_packet(s->cbc, td, s->buffer_pkt);
> +        if (ret < 0) {
> +            av_log(ctx, AV_LOG_ERROR, "Failed to parse temporal unit.\n");
> +            return ret;

> +    if (split) {
> +        AV1RawFrameHeader *frame = NULL;
> +        int cur_frame_type = -1, size = 0;
> +
> +        for (i = s->cur_frame_idx; i < td->nb_units; i++) {
> +            CodedBitstreamUnit *unit = &td->units[i];
> +
> +            size += unit->data_size;
> +            if (unit->type == AV1_OBU_FRAME) {
> +                AV1RawOBU *obu = unit->content;
> +
> +                if (frame) {
> +                    ret = AVERROR_INVALIDDATA;
> +                    goto fail;

> +            } else if (unit->type == AV1_OBU_FRAME_HEADER) {
> +                AV1RawOBU *obu = unit->content;
> +
> +                if (frame) {
> +                    ret = AVERROR_INVALIDDATA;
> +                    goto fail;

> +            } else if (unit->type == AV1_OBU_TILE_GROUP) {
> +                AV1RawOBU *obu = unit->content;
> +                AV1RawTileGroup *group = &obu->obu.tile_group;
> +
> +                if (!frame || cur_frame_type != AV1_OBU_FRAME_HEADER) {
> +                    ret = AVERROR_INVALIDDATA;
> +                    goto fail;

I'm not sure if we should abort and discard the packet in these cases,
or just pass it through.

In all these the Temporal Unit is invalid in some form (Orphaned Tile
Group OBUs, Frame Headers showing up when the Tile Groups from a
previous Frame Header were expected, etc), but maybe it should be left
to the decoder to decide what to do with them.

> +fail:
> +    if (ret < 0)
> +        av_packet_unref(out);
> +    av_packet_unref(s->buffer_pkt);
> +    ff_cbs_fragment_reset(s->cbc, td);
> +
> +    return ret;
> +}
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to