[FFmpeg-cvslog] avcodec/dxa: Remove set-but-unused variable

2025-03-30 Thread Andreas Rheinhardt
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

2025-03-30 Thread Tristan Matthews
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

2025-03-30 Thread Michael Niedermayer
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.

2025-03-30 Thread Michael Niedermayer
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

2025-03-30 Thread Michael Niedermayer
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

2025-03-30 Thread Andreas Rheinhardt
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

2025-03-30 Thread Gyan Doshi
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".