1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-11-23 21:54:53 +02:00

avfilter/vf_idetdsp: use consistent uint8_t pointer type

Even for 16-bit DSP functions. Instead, cast the pointer inside the
function.
This commit is contained in:
Niklas Haas
2025-09-16 14:23:31 +02:00
committed by Niklas Haas
parent 60dbcc5321
commit 326abf359f
3 changed files with 21 additions and 14 deletions

View File

@@ -36,13 +36,17 @@ int ff_idet_filter_line_c(const uint8_t *a, const uint8_t *b, const uint8_t *c,
return ret; return ret;
} }
int ff_idet_filter_line_c_16bit(const uint16_t *a, const uint16_t *b, const uint16_t *c, int w) int ff_idet_filter_line_c_16bit(const uint8_t *a, const uint8_t *b, const uint8_t *c, int w)
{ {
int x; int x;
int ret=0; int ret=0;
const uint16_t *a16 = (const uint16_t *) a;
const uint16_t *b16 = (const uint16_t *) b;
const uint16_t *c16 = (const uint16_t *) c;
for(x=0; x<w; x++){ for(x=0; x<w; x++){
int v = (*a++ + *c++) - 2 * *b++; int v = (*a16++ + *c16++) - 2 * *b16++;
ret += FFABS(v); ret += FFABS(v);
} }
@@ -51,7 +55,7 @@ int ff_idet_filter_line_c_16bit(const uint16_t *a, const uint16_t *b, const uint
void av_cold ff_idet_dsp_init(IDETDSPContext *dsp, int depth) void av_cold ff_idet_dsp_init(IDETDSPContext *dsp, int depth)
{ {
dsp->filter_line = depth > 8 ? (ff_idet_filter_func)ff_idet_filter_line_c_16bit : ff_idet_filter_line_c; dsp->filter_line = depth > 8 ? ff_idet_filter_line_c_16bit : ff_idet_filter_line_c;
#if ARCH_X86 #if ARCH_X86
ff_idet_dsp_init_x86(dsp, depth); ff_idet_dsp_init_x86(dsp, depth);
#endif #endif

View File

@@ -33,6 +33,6 @@ void ff_idet_dsp_init_x86(IDETDSPContext *idet, int depth);
/* main fall-back for left-over */ /* main fall-back for left-over */
int ff_idet_filter_line_c(const uint8_t *a, const uint8_t *b, const uint8_t *c, int w); int ff_idet_filter_line_c(const uint8_t *a, const uint8_t *b, const uint8_t *c, int w);
int ff_idet_filter_line_c_16bit(const uint16_t *a, const uint16_t *b, const uint16_t *c, int w); int ff_idet_filter_line_c_16bit(const uint8_t *a, const uint8_t *b, const uint8_t *c, int w);
#endif /* AVFILTER_IDETDSP_H */ #endif /* AVFILTER_IDETDSP_H */

View File

@@ -42,17 +42,20 @@ static int idet_filter_line_##KIND(const uint8_t *a, const uint8_t *b, \
#define FUNC_MAIN_DECL_16bit(KIND, SPAN) \ #define FUNC_MAIN_DECL_16bit(KIND, SPAN) \
int ff_idet_filter_line_16bit_##KIND(const uint16_t *a, const uint16_t *b, \ int ff_idet_filter_line_16bit_##KIND(const uint8_t *a, const uint8_t *b, \
const uint16_t *c, int w); \ const uint8_t *c, int w); \
static int idet_filter_line_16bit_##KIND(const uint16_t *a, const uint16_t *b, \ static int idet_filter_line_16bit_##KIND(const uint8_t *a, const uint8_t *b, \
const uint16_t *c, int w) { \ const uint8_t *c, int w) { \
int sum = 0; \ int sum = 0; \
const int left_over = w & (SPAN - 1); \ const int left_over = w & (SPAN - 1); \
w -= left_over; \ const int w_main = w - left_over; \
if (w > 0) \ const int offset = w_main << 1; \
sum += ff_idet_filter_line_16bit_##KIND(a, b, c, w); \ if (w_main > 0) \
if (left_over > 0) \ sum += ff_idet_filter_line_16bit_##KIND(a, b, c, w_main); \
sum += ff_idet_filter_line_c_16bit(a + w, b + w, c + w, left_over); \ if (left_over > 0) { \
sum += ff_idet_filter_line_c_16bit(a + offset, b + offset, c + offset, \
left_over); \
} \
return sum; \ return sum; \
} }
@@ -66,7 +69,7 @@ av_cold void ff_idet_dsp_init_x86(IDETDSPContext *dsp, int depth)
const int cpu_flags = av_get_cpu_flags(); const int cpu_flags = av_get_cpu_flags();
if (EXTERNAL_SSE2(cpu_flags)) { if (EXTERNAL_SSE2(cpu_flags)) {
dsp->filter_line = depth > 8 ? (ff_idet_filter_func)idet_filter_line_16bit_sse2 : idet_filter_line_sse2; dsp->filter_line = depth > 8 ? idet_filter_line_16bit_sse2 : idet_filter_line_sse2;
} }
#endif // HAVE_X86ASM #endif // HAVE_X86ASM
} }