[FFmpeg-cvslog] avcodec/dxa: Remove set-but-unused variable
ffmpeg | branch: master | Andreas Rheinhardt | Sat Mar 29 02:07:32 2025 +0100| [948a78365b1bd252767090d5778b12abd583abc1] | committer: Andreas Rheinhardt avcodec/dxa: Remove set-but-unused variable Forgotten in 6e80ec9dc5d7ea83c3abac641aa08ad7849c9e98. Signed-off-by: Andreas Rheinhardt > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=948a78365b1bd252767090d5778b12abd583abc1 --- libavcodec/dxa.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/libavcodec/dxa.c b/libavcodec/dxa.c index 3a53d3496e..5b429781df 100644 --- a/libavcodec/dxa.c +++ b/libavcodec/dxa.c @@ -213,7 +213,6 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, unsigned long dsize; int i, j, compr, ret; int stride; -int pc = 0; GetByteContext gb; bytestream2_init(&gb, avpkt->data, avpkt->size); @@ -224,7 +223,6 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, for(i = 0; i < 256; i++){ c->pal[i] = 0xFFU << 24 | bytestream2_get_be24(&gb); } -pc = 1; } if ((ret = ff_get_buffer(avctx, frame, AV_GET_BUFFER_FLAG_REF)) < 0) ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-cvslog] speexdec: fix framesize for ultra-wideband
ffmpeg | branch: master | Tristan Matthews | Thu Mar 13 14:54:48 2025 -0400| [c14b837dedade432a5f95981c3b1677099015376] | committer: James Almer speexdec: fix framesize for ultra-wideband This matches how the libspeex decoder is calculating frame size (except in clamp form). Fixes #11495 Signed-off-by: James Almer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c14b837dedade432a5f95981c3b1677099015376 --- libavcodec/speexdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/speexdec.c b/libavcodec/speexdec.c index 90a1b50bd6..60daab3b01 100644 --- a/libavcodec/speexdec.c +++ b/libavcodec/speexdec.c @@ -1426,7 +1426,7 @@ static int parse_speex_extradata(AVCodecContext *avctx, if (s->frame_size < NB_FRAME_SIZE << (s->mode > 1) || s->frame_size > INT32_MAX >> (s->mode > 1)) return AVERROR_INVALIDDATA; -s->frame_size <<= (s->mode > 1); +s->frame_size = FFMIN(s->frame_size << (s->mode > 1), NB_FRAME_SIZE << s->mode); s->vbr = bytestream_get_le32(&buf); s->frames_per_packet = bytestream_get_le32(&buf); if (s->frames_per_packet <= 0 || ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-cvslog] avcodec/ffv1enc: Eliminate RemapEncoderState
ffmpeg | branch: master | Michael Niedermayer | Fri Mar 28 09:23:25 2025 +0100| [f76508511547a45da4879de54a2f4d7f73eecce5] | committer: Michael Niedermayer avcodec/ffv1enc: Eliminate RemapEncoderState Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f76508511547a45da4879de54a2f4d7f73eecce5 --- libavcodec/ffv1enc.c | 151 +++ 1 file changed, 67 insertions(+), 84 deletions(-) diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c index e7372e572b..b156ff2dc1 100644 --- a/libavcodec/ffv1enc.c +++ b/libavcodec/ffv1enc.c @@ -1252,64 +1252,47 @@ static void load_rgb_float32_frame(FFV1Context *f, FFV1SliceContext *sc, AV_QSORT(sc->unit[3], i, struct Unit, CMP); } -typedef struct RemapEncoderState { +static int encode_float32_remap_segment(FFV1SliceContext *sc, +int p, int mul_count, int *mul_tab, int update, int final) +{ +const int pixel_num = sc->slice_width * sc->slice_height; uint8_t state[2][3][32]; int mul[4096+1]; -RangeCoder rc; -int lu; -int run; -int64_t last_val; -int compact_index; -int mul_count; -int i; -int pixel_num; -int p; -int current_mul_index; -int run1final; +RangeCoder rc = sc->c; +int lu = 0; +int run = 0; +int64_t last_val = -1; +int compact_index = -1; +int i = 0; +int current_mul_index = -1; +int run1final = 0; int64_t run1start_i; int64_t run1start_last_val; int run1start_mul_index; -} RemapEncoderState; -static int encode_float32_remap_segment(FFV1SliceContext *sc, -int p, int mul_count, int *mul_tab, int update, int final) -{ -RemapEncoderState s; - -s.pixel_num = sc->slice_width * sc->slice_height; -s.p = p; -s.i = 0; -s.rc = sc->c; -s.mul_count = mul_count; -memcpy(s.mul, mul_tab, sizeof(*mul_tab)*(mul_count+1)); -memset(s.state, 128, sizeof(s.state)); -put_symbol(&s.rc, s.state[0][0], s.mul_count, 0); -memset(s.state, 128, sizeof(s.state)); -s.last_val = -1; -s.compact_index = -1; -s.lu = 0; -s.run = 0; -s.current_mul_index = -1; -s.run1final = 0; - -for (; s.i < s.pixel_num+1; s.i++) { -int current_mul = s.current_mul_index < 0 ? 1 : FFABS(s.mul[s.current_mul_index]); +memcpy(mul, mul_tab, sizeof(*mul_tab)*(mul_count+1)); +memset(state, 128, sizeof(state)); +put_symbol(&rc, state[0][0], mul_count, 0); +memset(state, 128, sizeof(state)); + +for (; i < pixel_num+1; i++) { +int current_mul = current_mul_index < 0 ? 1 : FFABS(mul[current_mul_index]); int64_t val; -if (s.i == s.pixel_num) { -if (s.last_val == 0x) { +if (i == pixel_num) { +if (last_val == 0x) { break; } else { -val = s.last_val + ((1LL<<32) - s.last_val + current_mul - 1) / current_mul * current_mul; +val = last_val + ((1LL<<32) - last_val + current_mul - 1) / current_mul * current_mul; av_assert2(val >= (1LL<<32)); -val += s.lu * current_mul; //ensure a run1 ends +val += lu * current_mul; //ensure a run1 ends } } else -val = sc->unit[s.p][s.i].val; +val = sc->unit[p][i].val; -if (s.last_val != val) { -int64_t delta = val - s.last_val; +if (last_val != val) { +int64_t delta = val - last_val; int64_t step = FFMAX(1, (delta + current_mul/2) / current_mul); -av_assert2(s.last_val < val); +av_assert2(last_val < val); av_assert2(current_mul > 0); delta -= step*current_mul; @@ -1317,69 +1300,69 @@ static int encode_float32_remap_segment(FFV1SliceContext *sc, av_assert2(delta > -current_mul); av_assert2(step > 0); -if (s.lu) { -if (!s.run) { -s.run1start_i= s.i - 1; -s.run1start_last_val = s.last_val; -s.run1start_mul_index= s.current_mul_index; +if (lu) { +if (!run) { +run1start_i= i - 1; +run1start_last_val = last_val; +run1start_mul_index= current_mul_index; } if (step == 1) { -if (s.run1final) { +if (run1final) { if (current_mul>1) -put_symbol_inline(&s.rc, s.state[s.lu][1], delta, 1, NULL, NULL); +put_symbol_inline(&rc, state[lu][1], delta, 1, NULL, NULL); } -s.run ++; -av_assert2(s.last_val + current_mul + delta == val); +run ++; +
[FFmpeg-cvslog] avcodec/ffv1enc: Better heuristic for selecting mul values.
ffmpeg | branch: master | Michael Niedermayer | Fri Mar 28 01:52:15 2025 +0100| [2f0500f22c1d90883ce38a392829138333274d4a] | committer: Michael Niedermayer avcodec/ffv1enc: Better heuristic for selecting mul values. This increases the search space from the hardcoded 17 tables to ~ 23^512 tables The mul_count choice is chosen by bruteforce All testcases tried, improve Sponsored-by: Sovereign Tech Fund Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2f0500f22c1d90883ce38a392829138333274d4a --- libavcodec/ffv1enc.c | 89 ++-- 1 file changed, 51 insertions(+), 38 deletions(-) diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c index bc59f96746..5e7c714035 100644 --- a/libavcodec/ffv1enc.c +++ b/libavcodec/ffv1enc.c @@ -1409,52 +1409,65 @@ static void encode_float32_remap(FFV1Context *f, FFV1SliceContext *sc, av_assert0 (s.pixel_num <= 65536); for (int p= 0; p < 1 + 2*f->chroma_planes + f->transparency; p++) { -float score_tab[16] = {0}; -int64_t last_val = -1; -int best_index = 0; +float score_sum[2] = {0}; +int mul_all[2][513]; s.rc = sc->c; s.i = 0; s.p = p; -for(int v = 0; v< 512; v++) { -if (v >= 0x378/8 && v <= 23 + 0x378/8) { -s.mul[v] = -(0x800080 >> (v - 0x378/8)); -} else -s.mul[v] = -1; -} -for (int i= 0; iunit[p][i].val; -if (val != last_val) { -av_assert2(last_val < val); -for(int si= 0; si < FF_ARRAY_ELEMS(score_tab); si++) { -int64_t delta = val - last_val; -int mul; -int64_t cost; - -if (last_val < 0) { -mul = 1; -} else if (si + 1 == FF_ARRAY_ELEMS(score_tab)) { -mul = -s.mul[ (last_val + 1) >> (32-9) ]; -} else -mul = 1<>9]; +int last_mul_index = -1; +score_sum[mul_count>>9] += log2(mul_count); +for (int i= 0; iunit[p][i].val; +int mul_index = (val + 1LL)*mul_count >> 32; +if (val != last_val) { +float *score_tab = score_tab_all[(last_val + 1LL)*mul_count >> 32]; +av_assert2(last_val < val); +for(int si= 0; si < FF_ARRAY_ELEMS(*score_tab_all); si++) { +int64_t delta = val - last_val; +int mul; +int64_t cost; + +if (last_val < 0) { +mul = 1; +} else { +mul = (0x10001LL)<> 16; +} + +cost = FFMAX((delta + mul/2) / mul, 1); +score_tab[si] += log2(cost); +if (mul > 1) +score_tab[si] += log2(fabs(delta - cost*mul)+1) * (1 + (mul_count > 1)); +if (mul_index != last_mul_index) +score_tab[si] += 0.5*log2(mul); +} } last_val = val; +last_mul_index = mul_index; } +for(int i= 0; i> 16); +score_sum[mul_count>>9] += score_tab[ best_index ]; +} +mul_tab[mul_count] = 1; + +s.mul_count = mul_count; +memcpy(s.mul, mul_all[s.mul_count>>9], sizeof(*s.mul)*(s.mul_count+1)); +score_sum[mul_count>>9] = encode_float32_remap_segment(sc, &s, 0, 0); } -for(int si= 1; si < FF_ARRAY_ELEMS(score_tab); si++) { -if (score_tab[si] < score_tab[ best_index ]) -best_index = si; -} -if (best_index + 1 < FF_ARRAY_ELEMS(score_tab)) { -s.mul[0] = -1 << best_index; -s.mul_count = 1; -} else { -s.mul_count = 512; -} -s.mul[s.mul_count] = 1; + +s.mul_count = score_sum[0] <= score_sum[1] ? 1 : 512; +memcpy(s.mul, mul_all[s.mul_count>>9], sizeof(*s.mul)*(s.mul_count+1)); encode_float32_remap_segment(sc, &s, 1, 1); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-cvslog] avcodec/ffv1enc: Add -remap_optimizer option
ffmpeg | branch: master | Michael Niedermayer | Fri Mar 28 11:36:27 2025 +0100| [1d2c39100524e8528b1fd48b71924ddc6a2b011c] | committer: Michael Niedermayer avcodec/ffv1enc: Add -remap_optimizer option This allows tuning how much effort (time) the encoder spends on optimizing the remap table Signed-off-by: Michael Niedermayer > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1d2c39100524e8528b1fd48b71924ddc6a2b011c --- doc/encoders.texi| 4 libavcodec/ffv1.h| 2 +- libavcodec/ffv1enc.c | 52 +--- 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/doc/encoders.texi b/doc/encoders.texi index f3fcc1aa60..f987a234bc 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -554,6 +554,10 @@ use 8bit default @item greater8bit use >8bit default @end table + +@item remap_optimizer +0 - 5, default 3, how much effort the encoder puts into optimizing the remap table. + @end table @anchor{flac} diff --git a/libavcodec/ffv1.h b/libavcodec/ffv1.h index 09118e0b7d..578b504c9f 100644 --- a/libavcodec/ffv1.h +++ b/libavcodec/ffv1.h @@ -148,7 +148,7 @@ typedef struct FFV1Context { int colorspace; int flt; int remap_mode; - +int remap_optimizer; int use32bit; diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c index b156ff2dc1..a09b31218d 100644 --- a/libavcodec/ffv1enc.c +++ b/libavcodec/ffv1enc.c @@ -1369,33 +1369,46 @@ static void encode_float32_remap(FFV1Context *f, FFV1SliceContext *sc, const uint8_t *src[4]) { int pixel_num = sc->slice_width * sc->slice_height; -int mul_count; +const int max_log2_mul_count = ((int[]){ 1, 1, 1, 9, 9, 10})[f->remap_optimizer]; +const int log2_mul_count_step = ((int[]){ 1, 1, 1, 9, 9, 1})[f->remap_optimizer]; +const int max_log2_mul= ((int[]){ 1, 8, 8, 9, 22, 22})[f->remap_optimizer]; +const int log2_mul_step = ((int[]){ 1, 8, 1, 1, 1, 1})[f->remap_optimizer]; +const int bruteforce_count= ((int[]){ 0, 0, 0, 1, 1, 1})[f->remap_optimizer]; +const int stair_mode = ((int[]){ 0, 0, 0, 1, 0, 0})[f->remap_optimizer]; av_assert0 (pixel_num <= 65536); for (int p= 0; p < 1 + 2*f->chroma_planes + f->transparency; p++) { -float score_sum[2] = {0}; -int mul_all[2][513]; +int best_log2_mul_count = 0; +float score_sum[11] = {0}; +int mul_all[11][1025]; -for (mul_count= 1; mul_count<=512; mul_count+=511) { -float score_tab_all[513][23] = {0}; +for (int log2_mul_count= 0; log2_mul_count <= max_log2_mul_count; log2_mul_count += log2_mul_count_step) { +float score_tab_all[1025][23] = {0}; int64_t last_val = -1; -int *mul_tab = mul_all[mul_count>>9]; +int *mul_tab = mul_all[log2_mul_count]; int last_mul_index = -1; -score_sum[mul_count>>9] += log2(mul_count); +int mul_count = 1 << log2_mul_count; + +score_sum[log2_mul_count] += log2_mul_count; for (int i= 0; iunit[p][i].val; int mul_index = (val + 1LL)*mul_count >> 32; if (val != last_val) { float *score_tab = score_tab_all[(last_val + 1LL)*mul_count >> 32]; av_assert2(last_val < val); -for(int si= 0; si < FF_ARRAY_ELEMS(*score_tab_all); si++) { +for(int si= 0; si <= max_log2_mul; si += log2_mul_step) { int64_t delta = val - last_val; int mul; int64_t cost; if (last_val < 0) { mul = 1; +} else if (stair_mode && mul_count == 512 && si == max_log2_mul ) { +if (mul_index >= 0x378/8 && mul_index <= 23 + 0x378/8) { +mul = (0x800080 >> (mul_index - 0x378/8)); +} else +mul = 1; } else { mul = (0x10001LL)<> 16; } @@ -1414,20 +1427,29 @@ static void encode_float32_remap(FFV1Context *f, FFV1SliceContext *sc, for(int i= 0; i> 16); -score_sum[mul_count>>9] += score_tab[ best_index ]; +if (stair_mode && mul_count == 512 && best_index == max_log2_mul ) { +if (i >= 0x378/8 && i <= 23 + 0x378/8) { +mul_tab[i] = -(0x800080 >> (i - 0x378/8)); +} else +mul_tab[i] = -1; +} else +mul_tab[i] = -((0x10001LL)<> 16); +score_sum[log2_mul_count] += score_tab[ best_index ]; } mul_tab[mul_count] = 1; -score_sum[mul_count>>9] = encode
[FFmpeg-cvslog] avformat/rtpenc: Check dimensions during init
ffmpeg | branch: master | Andreas Rheinhardt | Sun Mar 30 12:06:13 2025 +0200| [35c091f4b7fb19aee9dfcc6c60ace0be92907ce5] | committer: Andreas Rheinhardt avformat/rtpenc: Check dimensions during init Also fixes a -Wdeclaration-after-statement warning. Reviewed-by: Michael Niedermayer Signed-off-by: Andreas Rheinhardt > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=35c091f4b7fb19aee9dfcc6c60ace0be92907ce5 --- libavformat/rtpenc.c | 16 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libavformat/rtpenc.c b/libavformat/rtpenc.c index 8b989dca71..b220a941a2 100644 --- a/libavformat/rtpenc.c +++ b/libavformat/rtpenc.c @@ -219,6 +219,14 @@ static int rtp_write_header(AVFormatContext *s1) s->nal_length_size = (st->codecpar->extradata[21] & 0x03) + 1; } break; +case AV_CODEC_ID_MJPEG: +case AV_CODEC_ID_BITPACKED: +case AV_CODEC_ID_RAWVIDEO: +if (st->codecpar->width <= 0 || st->codecpar->height <= 0) { +av_log(s1, AV_LOG_ERROR, "dimensions not set\n"); +return AVERROR(EINVAL); +} +break; case AV_CODEC_ID_VP9: if (s1->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) { av_log(s, AV_LOG_ERROR, @@ -635,18 +643,10 @@ static int rtp_write_packet(AVFormatContext *s1, AVPacket *pkt) rtp_send_ilbc(s1, pkt->data, size); break; case AV_CODEC_ID_MJPEG: -if (st->codecpar->width <= 0 || st->codecpar->height <= 0) { -av_log(s1, AV_LOG_ERROR, "dimensions not set\n"); -return AVERROR(EINVAL); -} ff_rtp_send_jpeg(s1, pkt->data, size); break; case AV_CODEC_ID_BITPACKED: case AV_CODEC_ID_RAWVIDEO: { -if (st->codecpar->width <= 0 || st->codecpar->height <= 0) { -av_log(s1, AV_LOG_ERROR, "dimensions not set\n"); -return AVERROR(EINVAL); -} int interlaced = st->codecpar->field_order != AV_FIELD_PROGRESSIVE; ff_rtp_send_raw_rfc4175(s1, pkt->data, size, interlaced, 0); ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-cvslog] configure: add option to select use of response files
ffmpeg | branch: master | Gyan Doshi | Fri Mar 21 13:28:40 2025 +0530| [64087171f67bab220c4d3001eb6b074cf488284c] | committer: Gyan Doshi configure: add option to select use of response files > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=64087171f67bab220c4d3001eb6b074cf488284c --- configure | 25 + ffbuild/library.mak | 4 ++-- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/configure b/configure index 225a235de7..4559962a4a 100755 --- a/configure +++ b/configure @@ -427,6 +427,7 @@ Toolchain options: --enable-thumb compile for Thumb instruction set --enable-lto[=arg] use link-time optimization --env="ENV=override" override the environment variables + --disable-response-files Don't pass the list of objects to linker in a file [autodetect] Advanced options (experts only): --malloc-prefix=PREFIX prefix malloc and related names with PREFIX @@ -2661,6 +2662,7 @@ CMDLINE_SELECT=" extra_warnings logging optimizations +response_files rpath stripping version_tracking @@ -4131,6 +4133,7 @@ objformat="elf32" x86asmexe_default="nasm" windres_default="windres" striptype="direct" +response_files_default="auto" # OS target_os_default=$(tolower $(uname -s)) @@ -5176,7 +5179,7 @@ test -n "$cc_type" && enable $cc_type || : ${dep_cc_default:=$cc} : ${ld_default:=$cc} : ${host_ld_default:=$host_cc} -set_default ar as objcc dep_cc ld ln_s host_ld windres +set_default ar as objcc dep_cc ld ln_s host_ld windres response_files probe_cc as "$as" asflags_filter=$_flags_filter @@ -7736,12 +7739,18 @@ case $ld_type in ;; esac -{ -ar_out=${FFTMPDIR}/test$LIBSUF -respfile="@/dev/null" -out_arg="$(echo $ar_o | sed "s;\$@;$ar_out;g")" -test_cmd $ar $arflags $out_arg $respfile && ar_objs="true" || ar_objs="" -} +if [ "$response_files" != "no" ]; then +ar_out=${FFTMPDIR}/test$LIBSUF +respfile="@/dev/null" +out_arg="$(echo $ar_o | sed "s;\$@;$ar_out;g")" +if test_cmd $ar $arflags $out_arg $respfile; then +response_files="yes" +elif [ "$response_files" = "auto" ]; then +response_files="no" +else +die "Response files are not available with this toolchain. Exiting" +fi +fi enable frame_thread_encoder @@ -8119,7 +8128,7 @@ DEPX86ASM=$x86asmexe DEPX86ASMFLAGS=\$(X86ASMFLAGS) AR=$ar ARFLAGS=$arflags -AR_OBJS=$ar_objs +RESPONSE_FILES=$response_files AR_O=$ar_o AR_CMD=$ar NM_CMD=$nm diff --git a/ffbuild/library.mak b/ffbuild/library.mak index 7e1871b74c..288c82a177 100644 --- a/ffbuild/library.mak +++ b/ffbuild/library.mak @@ -35,7 +35,7 @@ OBJS += $(SHLIBOBJS) endif $(SUBDIR)$(LIBNAME): $(OBJS) $(STLIBOBJS) $(RM) $@ -ifeq ($(AR_OBJS),true) +ifeq ($(RESPONSE_FILES),yes) $(Q)echo $^ > $@.objs $(AR) $(ARFLAGS) $(AR_O) @$@.objs else @@ -72,7 +72,7 @@ $(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR) $(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SHLIBOBJS) $(SLIBOBJS) $(SUBDIR)lib$(NAME).ver $(SLIB_CREATE_DEF_CMD) -ifeq ($(AR_OBJS),true) +ifeq ($(RESPONSE_FILES),yes) $(Q)echo $$(filter %.o,$$^) > $$@.objs $$(LD) $(SHFLAGS) $(LDFLAGS) $(LDSOFLAGS) $$(LD_O) @$$@.objs $(FFEXTRALIBS) else ___ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".