Commit: 2de5de57c58521862e0fecc95fc474ea347b7468 Author: Sergey Sharybin Date: Wed Jul 8 15:03:06 2020 +0200 Branches: master https://developer.blender.org/rB2de5de57c58521862e0fecc95fc474ea347b7468
Build: fix stack linker warning with ffmpeg on macOS The ff_cfhd_init_vlcs() function was using a lot of stack space, which made linker on macOS unhappy. Using heap allocation allows to silence the warning without causing other side-effects. Kept the patch enabled for all platforms to avoid difference in behavior and performance on different platforms, which could make certain types of investigation very tricky. Differential Revision: https://developer.blender.org/D8248 =================================================================== M build_files/build_environment/patches/ffmpeg.diff =================================================================== diff --git a/build_files/build_environment/patches/ffmpeg.diff b/build_files/build_environment/patches/ffmpeg.diff index 960728ae980..e195ca272de 100644 --- a/build_files/build_environment/patches/ffmpeg.diff +++ b/build_files/build_environment/patches/ffmpeg.diff @@ -9,3 +9,62 @@ 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; + } _______________________________________________ Bf-blender-cvs mailing list [email protected] https://lists.blender.org/mailman/listinfo/bf-blender-cvs
