diff mbox

[FFmpeg-devel] lavc/hevc: Don't parse NAL unit for a dummy buffer

Message ID 20180327075740.20517-1-haihao.xiang@intel.com
State Accepted
Headers show

Commit Message

Xiang, Haihao March 27, 2018, 7:57 a.m. UTC
hevc parser mistakenly reports the following message if a dummy buffer
is padded for EOF

   [hevc @ 0x559b63848610] missing picture in access unit

Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
---
 libavcodec/hevc_parser.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Liu Steven March 27, 2018, 8:07 a.m. UTC | #1
> On 27 Mar 2018, at 15:57, Haihao Xiang <haihao.xiang@intel.com> wrote:
> 
> hevc parser mistakenly reports the following message if a dummy buffer
> is padded for EOF
> 
>   [hevc @ 0x559b63848610] missing picture in access unit
> 
> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
> ---
> libavcodec/hevc_parser.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/libavcodec/hevc_parser.c b/libavcodec/hevc_parser.c
> index a468682ed33..228784e946f 100644
> --- a/libavcodec/hevc_parser.c
> +++ b/libavcodec/hevc_parser.c
> @@ -294,6 +294,8 @@ static int hevc_parse(AVCodecParserContext *s, AVCodecContext *avctx,
>     int next;
>     HEVCParserContext *ctx = s->priv_data;
>     ParseContext *pc = &ctx->pc;
> +    int is_dummy_buf = (buf_size == 0);
What about use !buf_size
> +    const uint8_t *dummy_buf = buf;
> 
>     if (avctx->extradata && !ctx->parsed_extradata) {
>         ff_hevc_decode_extradata(avctx->extradata, avctx->extradata_size, &ctx->ps, &ctx->sei,
> @@ -313,7 +315,10 @@ static int hevc_parse(AVCodecParserContext *s, AVCodecContext *avctx,
>         }
>     }
> 
> -    parse_nal_units(s, buf, buf_size, avctx);
> +    is_dummy_buf = (is_dummy_buf && (dummy_buf == buf));
> +
> +    if (!is_dummy_buf)
> +        parse_nal_units(s, buf, buf_size, avctx);
> 
>     *poutbuf      = buf;
>     *poutbuf_size = buf_size;
> -- 
> 2.14.1
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Thanks
Steven
Xiang, Haihao March 30, 2018, 1:19 a.m. UTC | #2
> > On 27 Mar 2018, at 15:57, Haihao Xiang <haihao.xiang@intel.com> wrote:

> > 

> > hevc parser mistakenly reports the following message if a dummy buffer

> > is padded for EOF

> > 

> >   [hevc @ 0x559b63848610] missing picture in access unit

> > 

> > Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>

> > ---

> > libavcodec/hevc_parser.c | 7 ++++++-

> > 1 file changed, 6 insertions(+), 1 deletion(-)

> > 

> > diff --git a/libavcodec/hevc_parser.c b/libavcodec/hevc_parser.c

> > index a468682ed33..228784e946f 100644

> > --- a/libavcodec/hevc_parser.c

> > +++ b/libavcodec/hevc_parser.c

> > @@ -294,6 +294,8 @@ static int hevc_parse(AVCodecParserContext *s,

> > AVCodecContext *avctx,

> >     int next;

> >     HEVCParserContext *ctx = s->priv_data;

> >     ParseContext *pc = &ctx->pc;

> > +    int is_dummy_buf = (buf_size == 0);

> 

> What about use !buf_size


Thanks, I will update the patch to use !buf_size.

> > +    const uint8_t *dummy_buf = buf;

> > 

> >     if (avctx->extradata && !ctx->parsed_extradata) {

> >         ff_hevc_decode_extradata(avctx->extradata, avctx->extradata_size,

> > &ctx->ps, &ctx->sei,

> > @@ -313,7 +315,10 @@ static int hevc_parse(AVCodecParserContext *s,

> > AVCodecContext *avctx,

> >         }

> >     }

> > 

> > -    parse_nal_units(s, buf, buf_size, avctx);

> > +    is_dummy_buf = (is_dummy_buf && (dummy_buf == buf));

> > +

> > +    if (!is_dummy_buf)

> > +        parse_nal_units(s, buf, buf_size, avctx);

> > 

> >     *poutbuf      = buf;

> >     *poutbuf_size = buf_size;

> > -- 

> > 2.14.1

> > 

> > _______________________________________________

> > ffmpeg-devel mailing list

> > ffmpeg-devel@ffmpeg.org

> > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

> 

> Thanks

> Steven

> 

> 

> 

> 

>
diff mbox

Patch

diff --git a/libavcodec/hevc_parser.c b/libavcodec/hevc_parser.c
index a468682ed33..228784e946f 100644
--- a/libavcodec/hevc_parser.c
+++ b/libavcodec/hevc_parser.c
@@ -294,6 +294,8 @@  static int hevc_parse(AVCodecParserContext *s, AVCodecContext *avctx,
     int next;
     HEVCParserContext *ctx = s->priv_data;
     ParseContext *pc = &ctx->pc;
+    int is_dummy_buf = (buf_size == 0);
+    const uint8_t *dummy_buf = buf;
 
     if (avctx->extradata && !ctx->parsed_extradata) {
         ff_hevc_decode_extradata(avctx->extradata, avctx->extradata_size, &ctx->ps, &ctx->sei,
@@ -313,7 +315,10 @@  static int hevc_parse(AVCodecParserContext *s, AVCodecContext *avctx,
         }
     }
 
-    parse_nal_units(s, buf, buf_size, avctx);
+    is_dummy_buf = (is_dummy_buf && (dummy_buf == buf));
+
+    if (!is_dummy_buf)
+        parse_nal_units(s, buf, buf_size, avctx);
 
     *poutbuf      = buf;
     *poutbuf_size = buf_size;