History

avcodec/idctdsp: Only try to initialize xvid idct if it is used

This allows to remove checks from ff_xvid_idct_init() (and also the AVCodecContext* parameter).

Andreas Rheinhardt committed 1 year ago

Commit 2e8a3e61 parent 6349a333 files · +6 −12Browse files

Unified · Split

3 files
  1. libavcodec/idctdsp.c +4 −3
  2. libavcodec/xvididct.c +1 −7
  3. libavcodec/xvididct.h +1 −2
libavcodec/idctdsp.c+4−3
@@ -276,6 +276,10 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) · 275 unmodified lines
276276 c->idct = ff_faanidct;
277277 c->perm_type = FF_IDCT_PERM_NONE;
278278 #endif /* CONFIG_FAANIDCT */
279+#if CONFIG_MPEG4_DECODER
280+ } else if (avctx->idct_algo == FF_IDCT_XVID) {
281+ ff_xvid_idct_init(c);
282+#endif
279283 } else { // accurate/default
280284 c->idct_put = ff_simple_idct_put_int16_8bit;
281285 c->idct_add = ff_simple_idct_add_int16_8bit;
@@ -289,9 +293,6 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) · 7 unmodified lines
289293 c->put_signed_pixels_clamped = put_signed_pixels_clamped_c;
290294 c->add_pixels_clamped = ff_add_pixels_clamped_c;
291295
292− if (CONFIG_MPEG4_DECODER && avctx->idct_algo == FF_IDCT_XVID)
293− ff_xvid_idct_init(c, avctx);
294−
295296 #if ARCH_AARCH64
296297 ff_idctdsp_init_aarch64(c, avctx, high_bit_depth);
297298 #elif ARCH_ARM
libavcodec/xvididct.c+1−7
@@ -32,7 +32,6 @@ · 31 unmodified lines
3232
3333 #include "config.h"
3434 #include "libavutil/attributes.h"
35−#include "avcodec.h"
3635 #include "idctdsp.h"
3736 #include "xvididct.h"
3837
@@ -330,13 +329,8 @@ static void xvid_idct_add(uint8_t *dest, ptrdiff_t line_size, int16_t *block) · 291 unmodified lines
330329 ff_add_pixels_clamped_c(block, dest, line_size);
331330 }
332331
333−av_cold void ff_xvid_idct_init(IDCTDSPContext *c, AVCodecContext *avctx)
332+av_cold void ff_xvid_idct_init(IDCTDSPContext *c)
334333 {
335− const unsigned high_bit_depth = avctx->bits_per_raw_sample > 8;
336−
337− if (high_bit_depth || avctx->lowres)
338− return;
339−
340334 c->idct_put = xvid_idct_put;
341335 c->idct_add = xvid_idct_add;
342336 c->idct = ff_xvid_idct;
libavcodec/xvididct.h+1−2
@@ -21,12 +21,11 @@ · 20 unmodified lines
2121
2222 #include <stdint.h>
2323
24−#include "avcodec.h"
2524 #include "idctdsp.h"
2625
2726 void ff_xvid_idct(int16_t *const in);
2827
29−void ff_xvid_idct_init(IDCTDSPContext *c, AVCodecContext *avctx);
28+void ff_xvid_idct_init(IDCTDSPContext *c);
3029
3130 void ff_xvid_idct_init_x86(IDCTDSPContext *c);
3231 void ff_xvid_idct_init_mips(IDCTDSPContext *c);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t