[FFmpeg-devel] [PATCH] lavc/hevc: Allow arbitrarily many trailing_zero_8bits after a NAL unit in bytestream format.

Hendrik Leppkes h.leppkes at gmail.com
Thu Mar 17 00:41:40 CET 2016


On Wed, Mar 16, 2016 at 9:37 PM, Mark Thompson <sw at jkqxz.net> wrote:
> ---
> libavcodec/hevc_parse.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/libavcodec/hevc_parse.c b/libavcodec/hevc_parse.c
> index 63ed84a..8c629ff 100644
> --- a/libavcodec/hevc_parse.c
> +++ b/libavcodec/hevc_parse.c
> @@ -227,6 +227,20 @@ int ff_hevc_split_packet(HEVCContext *s, HEVCPacket *pkt, const uint8_t *buf, in
>                 return AVERROR_INVALIDDATA;
>             }
>         } else {
> +            if (pkt->nals > 0) {
> +                // Discard arbtrarily many trailing_zero_8bits before the
> +                // start code of the next NAL unit.
> +                while (buf[0] == 0 && buf[1] == 0 && buf[2] == 0) {
> +                    ++buf;
> +                    --length;
> +                    if (length < 4)
> +                        break;
> +                }
> +                if (length < 4) {
> +                    // There are only zeroes left, so no more NAL units here.
> +                    break;
> +                }
> +            }
>             /* search start code */
>             while (buf[0] != 0 || buf[1] != 0 || buf[2] != 1) {
>                 ++buf;

I'm slightly confused, wouldn't the loop right after skip over the
zeroes until it finds a valid start code?
It essentially does the same on a cursory look.

- Hendrik


More information about the ffmpeg-devel mailing list