diff mbox series

[FFmpeg-devel,32/39] avcodec/msmpeg4enc: Don't use code for static init that can fail

Message ID 20201210111657.2276739-33-andreas.rheinhardt@gmail.com
State Accepted
Commit f0042e573e13858ab16b08ad9899eb8c908cd058
Headers show
Series Make mpegvideo encoders init-threadsafe | expand

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished

Commit Message

Andreas Rheinhardt Dec. 10, 2020, 11:16 a.m. UTC
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
---
 libavcodec/mpegvideo_enc.c |  3 +--
 libavcodec/msmpeg4.h       |  2 +-
 libavcodec/msmpeg4enc.c    | 23 ++++++++---------------
 3 files changed, 10 insertions(+), 18 deletions(-)

Comments

Andreas Rheinhardt April 2, 2021, 10:18 a.m. UTC | #1
On Thu, Dec 10, 2020 at 12:19 PM Andreas Rheinhardt <
andreas.rheinhardt@gmail.com> wrote:

> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
> ---
>  libavcodec/mpegvideo_enc.c |  3 +--
>  libavcodec/msmpeg4.h       |  2 +-
>  libavcodec/msmpeg4enc.c    | 23 ++++++++---------------
>  3 files changed, 10 insertions(+), 18 deletions(-)
>
> diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
> index 8fb415f42b..8f4876b0ca 100644
> --- a/libavcodec/mpegvideo_enc.c
> +++ b/libavcodec/mpegvideo_enc.c
> @@ -1008,8 +1008,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
>      if (CONFIG_H263_ENCODER && s->out_format == FMT_H263)
>          ff_h263_encode_init(s);
>      if (CONFIG_MSMPEG4_ENCODER && s->msmpeg4_version)
> -        if ((ret = ff_msmpeg4_encode_init(s)) < 0)
> -            return ret;
> +        ff_msmpeg4_encode_init(s);
>      if ((CONFIG_MPEG1VIDEO_ENCODER || CONFIG_MPEG2VIDEO_ENCODER)
>          && s->out_format == FMT_MPEG1)
>          ff_mpeg1_encode_init(s);
> diff --git a/libavcodec/msmpeg4.h b/libavcodec/msmpeg4.h
> index bcdb967401..e111088574 100644
> --- a/libavcodec/msmpeg4.h
> +++ b/libavcodec/msmpeg4.h
> @@ -50,7 +50,7 @@ void ff_msmpeg4_encode_motion(MpegEncContext * s, int
> mx, int my);
>  int ff_msmpeg4_coded_block_pred(MpegEncContext * s, int n,
>                                  uint8_t **coded_block_ptr);
>
> -int ff_msmpeg4_encode_init(MpegEncContext *s);
> +void ff_msmpeg4_encode_init(MpegEncContext *s);
>  void ff_msmpeg4_encode_picture_header(MpegEncContext *s, int
> picture_number);
>  void ff_msmpeg4_encode_ext_header(MpegEncContext *s);
>  void ff_msmpeg4_encode_mb(MpegEncContext *s, int16_t block[6][64],
> diff --git a/libavcodec/msmpeg4enc.c b/libavcodec/msmpeg4enc.c
> index 2c61735d9d..7a3858b966 100644
> --- a/libavcodec/msmpeg4enc.c
> +++ b/libavcodec/msmpeg4enc.c
> @@ -32,7 +32,6 @@
>
>  #include "libavutil/attributes.h"
>  #include "libavutil/avutil.h"
> -#include "libavutil/mem.h"
>  #include "mpegvideo.h"
>  #include "h263.h"
>  #include "internal.h"
> @@ -46,13 +45,11 @@
>  static uint8_t rl_length[NB_RL_TABLES][MAX_LEVEL+1][MAX_RUN+1][2];
>
>  /* build the table which associate a (x,y) motion vector to a vlc */
> -static av_cold int init_mv_table(MVTable *tab)
> +static av_cold void init_mv_table(MVTable *tab, uint16_t
> table_mv_index[4096])
>  {
>      int i, x, y;
>
> -    tab->table_mv_index = av_malloc(sizeof(uint16_t) * 4096);
> -    if (!tab->table_mv_index)
> -        return AVERROR(ENOMEM);
> +    tab->table_mv_index = table_mv_index;
>
>      /* mark all entries as not used */
>      for(i=0;i<4096;i++)
> @@ -63,8 +60,6 @@ static av_cold int init_mv_table(MVTable *tab)
>          y = tab->table_mvy[i];
>          tab->table_mv_index[(x << 6) | y] = i;
>      }
> -
> -    return 0;
>  }
>
>  void ff_msmpeg4_code012(PutBitContext *pb, int n)
> @@ -118,10 +113,10 @@ static int get_size_of_code(MpegEncContext * s,
> RLTable *rl, int last, int run,
>      return size;
>  }
>
> -av_cold int ff_msmpeg4_encode_init(MpegEncContext *s)
> +av_cold void ff_msmpeg4_encode_init(MpegEncContext *s)
>  {
>      static int init_done=0;
> -    int i, ret;
> +    int i;
>
>      ff_msmpeg4_common_init(s);
>      if(s->msmpeg4_version>=4){
> @@ -130,12 +125,12 @@ av_cold int ff_msmpeg4_encode_init(MpegEncContext *s)
>      }
>
>      if (!init_done) {
> +        static uint16_t mv_index_tables[2][4096];
>          /* init various encoding tables */
>          init_done = 1;
> -        if ((ret = init_mv_table(&ff_mv_tables[0])) < 0)
> -            return ret;
> -        if ((ret = init_mv_table(&ff_mv_tables[1])) < 0)
> -            return ret;
> +        init_mv_table(&ff_mv_tables[0], mv_index_tables[0]);
> +        init_mv_table(&ff_mv_tables[1], mv_index_tables[1]);
> +
>          for(i=0;i<NB_RL_TABLES;i++)
>              ff_rl_init(&ff_rl_table[i], ff_static_rl_table_store[i]);
>
> @@ -152,8 +147,6 @@ av_cold int ff_msmpeg4_encode_init(MpegEncContext *s)
>              }
>          }
>      }
> -
> -    return 0;
>  }
>
>  static void find_best_tables(MpegEncContext * s)
> --
> 2.25.1
>
>
Will apply.

- Andreas
diff mbox series

Patch

diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index 8fb415f42b..8f4876b0ca 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -1008,8 +1008,7 @@  FF_ENABLE_DEPRECATION_WARNINGS
     if (CONFIG_H263_ENCODER && s->out_format == FMT_H263)
         ff_h263_encode_init(s);
     if (CONFIG_MSMPEG4_ENCODER && s->msmpeg4_version)
-        if ((ret = ff_msmpeg4_encode_init(s)) < 0)
-            return ret;
+        ff_msmpeg4_encode_init(s);
     if ((CONFIG_MPEG1VIDEO_ENCODER || CONFIG_MPEG2VIDEO_ENCODER)
         && s->out_format == FMT_MPEG1)
         ff_mpeg1_encode_init(s);
diff --git a/libavcodec/msmpeg4.h b/libavcodec/msmpeg4.h
index bcdb967401..e111088574 100644
--- a/libavcodec/msmpeg4.h
+++ b/libavcodec/msmpeg4.h
@@ -50,7 +50,7 @@  void ff_msmpeg4_encode_motion(MpegEncContext * s, int mx, int my);
 int ff_msmpeg4_coded_block_pred(MpegEncContext * s, int n,
                                 uint8_t **coded_block_ptr);
 
-int ff_msmpeg4_encode_init(MpegEncContext *s);
+void ff_msmpeg4_encode_init(MpegEncContext *s);
 void ff_msmpeg4_encode_picture_header(MpegEncContext *s, int picture_number);
 void ff_msmpeg4_encode_ext_header(MpegEncContext *s);
 void ff_msmpeg4_encode_mb(MpegEncContext *s, int16_t block[6][64],
diff --git a/libavcodec/msmpeg4enc.c b/libavcodec/msmpeg4enc.c
index 2c61735d9d..7a3858b966 100644
--- a/libavcodec/msmpeg4enc.c
+++ b/libavcodec/msmpeg4enc.c
@@ -32,7 +32,6 @@ 
 
 #include "libavutil/attributes.h"
 #include "libavutil/avutil.h"
-#include "libavutil/mem.h"
 #include "mpegvideo.h"
 #include "h263.h"
 #include "internal.h"
@@ -46,13 +45,11 @@ 
 static uint8_t rl_length[NB_RL_TABLES][MAX_LEVEL+1][MAX_RUN+1][2];
 
 /* build the table which associate a (x,y) motion vector to a vlc */
-static av_cold int init_mv_table(MVTable *tab)
+static av_cold void init_mv_table(MVTable *tab, uint16_t table_mv_index[4096])
 {
     int i, x, y;
 
-    tab->table_mv_index = av_malloc(sizeof(uint16_t) * 4096);
-    if (!tab->table_mv_index)
-        return AVERROR(ENOMEM);
+    tab->table_mv_index = table_mv_index;
 
     /* mark all entries as not used */
     for(i=0;i<4096;i++)
@@ -63,8 +60,6 @@  static av_cold int init_mv_table(MVTable *tab)
         y = tab->table_mvy[i];
         tab->table_mv_index[(x << 6) | y] = i;
     }
-
-    return 0;
 }
 
 void ff_msmpeg4_code012(PutBitContext *pb, int n)
@@ -118,10 +113,10 @@  static int get_size_of_code(MpegEncContext * s, RLTable *rl, int last, int run,
     return size;
 }
 
-av_cold int ff_msmpeg4_encode_init(MpegEncContext *s)
+av_cold void ff_msmpeg4_encode_init(MpegEncContext *s)
 {
     static int init_done=0;
-    int i, ret;
+    int i;
 
     ff_msmpeg4_common_init(s);
     if(s->msmpeg4_version>=4){
@@ -130,12 +125,12 @@  av_cold int ff_msmpeg4_encode_init(MpegEncContext *s)
     }
 
     if (!init_done) {
+        static uint16_t mv_index_tables[2][4096];
         /* init various encoding tables */
         init_done = 1;
-        if ((ret = init_mv_table(&ff_mv_tables[0])) < 0)
-            return ret;
-        if ((ret = init_mv_table(&ff_mv_tables[1])) < 0)
-            return ret;
+        init_mv_table(&ff_mv_tables[0], mv_index_tables[0]);
+        init_mv_table(&ff_mv_tables[1], mv_index_tables[1]);
+
         for(i=0;i<NB_RL_TABLES;i++)
             ff_rl_init(&ff_rl_table[i], ff_static_rl_table_store[i]);
 
@@ -152,8 +147,6 @@  av_cold int ff_msmpeg4_encode_init(MpegEncContext *s)
             }
         }
     }
-
-    return 0;
 }
 
 static void find_best_tables(MpegEncContext * s)