[FFmpeg-devel] [PATCH] avcodec/mpeg4videodec: Use more specific error codes

Michael Niedermayer michael at niedermayer.cc
Sat Mar 10 23:15:16 EET 2018


On Sat, Mar 10, 2018 at 03:33:33PM -0300, James Almer wrote:
> On 3/10/2018 2:34 PM, Michael Niedermayer wrote:
> > Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> > ---
> >  libavcodec/mpeg4videodec.c | 100 +++++++++++++++++++++++----------------------
> >  1 file changed, 51 insertions(+), 49 deletions(-)
> > 
> > diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c
> > index 19210d97fe..1357b357a8 100644
> > --- a/libavcodec/mpeg4videodec.c
> > +++ b/libavcodec/mpeg4videodec.c
> > @@ -448,7 +448,7 @@ int ff_mpeg4_decode_video_packet_header(Mpeg4DecContext *ctx)
> >  
> >      /* is there enough space left for a video packet + header */
> >      if (get_bits_count(&s->gb) > s->gb.size_in_bits - 20)
> > -        return -1;
> > +        return AVERROR_INVALIDDATA;
> >  
> >      for (len = 0; len < 32; len++)
> >          if (get_bits1(&s->gb))
> > @@ -456,7 +456,7 @@ int ff_mpeg4_decode_video_packet_header(Mpeg4DecContext *ctx)
> >  
> >      if (len != ff_mpeg4_get_video_packet_prefix_length(s)) {
> >          av_log(s->avctx, AV_LOG_ERROR, "marker does not match f_code\n");
> > -        return -1;
> > +        return AVERROR_INVALIDDATA;
> >      }
> >  
> >      if (ctx->shape != RECT_SHAPE) {
> > @@ -468,7 +468,7 @@ int ff_mpeg4_decode_video_packet_header(Mpeg4DecContext *ctx)
> >      if (mb_num >= s->mb_num || !mb_num) {
> >          av_log(s->avctx, AV_LOG_ERROR,
> >                 "illegal mb_num in video packet (%d %d) \n", mb_num, s->mb_num);
> > -        return -1;
> > +        return AVERROR_INVALIDDATA;
> >      }
> >  
> >      s->mb_x = mb_num % s->mb_width;
> > @@ -597,7 +597,7 @@ static inline int mpeg4_decode_dc(MpegEncContext *s, int n, int *dir_ptr)
> >  
> >      if (code < 0 || code > 9 /* && s->nbit < 9 */) {
> >          av_log(s->avctx, AV_LOG_ERROR, "illegal dc vlc\n");
> > -        return -1;
> > +        return AVERROR_INVALIDDATA;
> >      }
> >  
> >      if (code == 0) {
> > @@ -620,7 +620,7 @@ static inline int mpeg4_decode_dc(MpegEncContext *s, int n, int *dir_ptr)
> >              if (get_bits1(&s->gb) == 0) { /* marker */
> >                  if (s->avctx->err_recognition & (AV_EF_BITSTREAM|AV_EF_COMPLIANT)) {
> >                      av_log(s->avctx, AV_LOG_ERROR, "dc marker bit missing\n");
> > -                    return -1;
> > +                    return AVERROR_INVALIDDATA;
> >                  }
> >              }
> >          }
> > @@ -664,7 +664,7 @@ static int mpeg4_decode_partition_a(Mpeg4DecContext *ctx)
> >                      if (cbpc < 0) {
> >                          av_log(s->avctx, AV_LOG_ERROR,
> >                                 "mcbpc corrupted at %d %d\n", s->mb_x, s->mb_y);
> > -                        return -1;
> > +                        return cbpc;
> 
> get_vlc2() seems to return -1 on error, so nothing really changes with
> this.

right, ill hardcode these


> Same with every other similar call, 

the other calls should return proper error codes and we should
forward these.
Not forwarding an error because the current implementation of a
function generates an error code that the caller can hardcode is
bad design.
We should not duplicate the implementation of what a function returns
in the caller. The implementation could change and then this is wrong.

Or am i missing a reason why hardcoding the error codes in the caller
would be an advantage ?

will send a new patch

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Does the universe only have a finite lifespan? No, its going to go on
forever, its just that you wont like living in it. -- Hiranya Peiri
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180310/2ae7aded/attachment.sig>


More information about the ffmpeg-devel mailing list