summaryrefslogtreecommitdiff
path: root/libavcodec/msmpeg4enc.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-12-10 06:01:45 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-04-02 16:01:10 +0200
commitf0042e573e13858ab16b08ad9899eb8c908cd058 (patch)
tree71a8a2ca26fcd87f3939a4300d8e3d6e8f1d22b1 /libavcodec/msmpeg4enc.c
parentafa511ad34452b1806a6cfa2dd785168140843e6 (diff)
avcodec/msmpeg4enc: Don't use code for static init that can fail
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavcodec/msmpeg4enc.c')
-rw-r--r--libavcodec/msmpeg4enc.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/libavcodec/msmpeg4enc.c b/libavcodec/msmpeg4enc.c
index 5f809c2aeb..59a18532c2 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)