--- a/configure 2018-08-27 13:46:41.071106150 +0200 +++ b/configure 2018-08-27 13:46:28.162765762 +0200 @@ -6013,7 +6013,7 @@ require_pkg_config libopencv opencv opencv/cxcore.h cvCreateImageHeader; } enabled libopenh264 && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion enabled libopenjpeg && { check_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version || - { require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } } + { require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version "-DOPJ_STATIC $pthreads_extralibs $libm_extralibs" && add_cppflags "-DOPJ_STATIC $pthreads_extralibs $libm_extralibs"; } } enabled libopenmpt && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++" enabled libopus && { enabled libopus_decoder && { --- a/libavcodec/cfhddata.c +++ b/libavcodec/cfhddata.c @@ -276,10 +276,10 @@ av_cold int ff_cfhd_init_vlcs(CFHDContext *s) { int i, j, ret = 0; - uint32_t new_cfhd_vlc_bits[NB_VLC_TABLE_18 * 2]; - uint8_t new_cfhd_vlc_len[NB_VLC_TABLE_18 * 2]; - uint16_t new_cfhd_vlc_run[NB_VLC_TABLE_18 * 2]; - int16_t new_cfhd_vlc_level[NB_VLC_TABLE_18 * 2]; + uint32_t *new_cfhd_vlc_bits = av_calloc(sizeof(uint32_t), NB_VLC_TABLE_18 * 2); + uint8_t *new_cfhd_vlc_len = av_calloc(sizeof(uint8_t), NB_VLC_TABLE_18 * 2); + uint16_t *new_cfhd_vlc_run = av_calloc(sizeof(uint16_t), NB_VLC_TABLE_18 * 2); + int16_t *new_cfhd_vlc_level = av_calloc(sizeof(int16_t), NB_VLC_TABLE_18 * 2); /** Similar to dv.c, generate signed VLC tables **/ @@ -305,8 +305,13 @@ ret = init_vlc(&s->vlc_9, VLC_BITS, j, new_cfhd_vlc_len, 1, 1, new_cfhd_vlc_bits, 4, 4, 0); - if (ret < 0) + if (ret < 0) { + av_free(new_cfhd_vlc_bits); + av_free(new_cfhd_vlc_len); + av_free(new_cfhd_vlc_run); + av_free(new_cfhd_vlc_level); return ret; + } for (i = 0; i < s->vlc_9.table_size; i++) { int code = s->vlc_9.table[i][0]; int len = s->vlc_9.table[i][1]; @@ -346,8 +351,14 @@ ret = init_vlc(&s->vlc_18, VLC_BITS, j, new_cfhd_vlc_len, 1, 1, new_cfhd_vlc_bits, 4, 4, 0); - if (ret < 0) + if (ret < 0) { + av_free(new_cfhd_vlc_bits); + av_free(new_cfhd_vlc_len); + av_free(new_cfhd_vlc_run); + av_free(new_cfhd_vlc_level); return ret; + } + av_assert0(s->vlc_18.table_size == 4572); for (i = 0; i < s->vlc_18.table_size; i++) { @@ -367,5 +378,10 @@ s->table_18_rl_vlc[i].run = run; } + av_free(new_cfhd_vlc_bits); + av_free(new_cfhd_vlc_len); + av_free(new_cfhd_vlc_run); + av_free(new_cfhd_vlc_level); + return ret; }