This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 7a906e31d949e50b104db1b524bb8d66cf05f47d Author: Andreas Rheinhardt <[email protected]> AuthorDate: Fri Aug 7 01:23:54 2026 +0200 Commit: Andreas Rheinhardt <[email protected]> CommitDate: Sun Aug 9 17:22:47 2026 +0200 avcodec/x86/ttaencdsp: Merge into ttadsp This allows to avoid duplication of (source) code and constants. Reviewed-by: Lynne <[email protected]> Signed-off-by: Andreas Rheinhardt <[email protected]> --- libavcodec/x86/Makefile | 2 +- libavcodec/x86/ttadsp.asm | 23 ++++++++- libavcodec/x86/ttaencdsp.asm | 119 ------------------------------------------- 3 files changed, 22 insertions(+), 122 deletions(-) diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile index b85fa7e1cc..85a01af5c5 100644 --- a/libavcodec/x86/Makefile +++ b/libavcodec/x86/Makefile @@ -177,7 +177,7 @@ X86ASM-OBJS-$(CONFIG_SVQ1_ENCODER) += x86/svq1enc.o X86ASM-OBJS-$(CONFIG_TAK_DECODER) += x86/takdsp.o X86ASM-OBJS-$(CONFIG_TRUEHD_DECODER) += x86/mlpdsp.o X86ASM-OBJS-$(CONFIG_TTA_DECODER) += x86/ttadsp.o -X86ASM-OBJS-$(CONFIG_TTA_ENCODER) += x86/ttaencdsp.o +X86ASM-OBJS-$(CONFIG_TTA_ENCODER) += x86/ttadsp.o X86ASM-OBJS-$(CONFIG_UTVIDEO_DECODER) += x86/utvideodsp.o X86ASM-OBJS-$(CONFIG_V210_ENCODER) += x86/v210enc.o X86ASM-OBJS-$(CONFIG_V210_DECODER) += x86/v210.o diff --git a/libavcodec/x86/ttadsp.asm b/libavcodec/x86/ttadsp.asm index db12a32eca..f4b9fa831d 100644 --- a/libavcodec/x86/ttadsp.asm +++ b/libavcodec/x86/ttadsp.asm @@ -20,6 +20,8 @@ ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ;****************************************************************************** +%include "config_components.asm" + %include "libavutil/x86/x86util.asm" SECTION_RODATA @@ -29,9 +31,9 @@ pd_1224: dd 1, 2, 2, 4 SECTION .text -%macro TTA_FILTER 2 +%macro TTA_FILTER 2-3 INIT_XMM %1 -cglobal tta_filter_process, 5,5,%2, qm, dx, dl, error, in, shift, round +cglobal tta%3_filter_process, 5,5,%2, qm, dx, dl, error, in, shift, round mova m2, [qmq ] mova m3, [qmq + 0x10] mova m4, [dxq ] @@ -94,6 +96,15 @@ cglobal tta_filter_process, 5,5,%2, qm, dx, dl, error, in, shift, round mova [dlq ], m2 mova [dxq ], m5 mova [dxq + 0x10], m4 + +%ifidn %3,enc + movd m2, shiftm ; + movd m0, [inq] ; + psrad m6, m2 ; + psubd m3, m0, m6 ; + movd [inq], m3 ; *in -= (sum >> filter->shift); + movd [errorq], m3 ; filter->error = *in; +%else movd m0, [inq] ; filter->error = *in; movd [errorq], m0 ; @@ -101,6 +112,7 @@ cglobal tta_filter_process, 5,5,%2, qm, dx, dl, error, in, shift, round psrad m6, m2 ; paddd m0, m6 ; movd [inq], m0 ; +%endif psrldq m1, 4 ; pslldq m0, 12 ; filter->dl[4] = -filter->dl[5]; @@ -115,5 +127,12 @@ cglobal tta_filter_process, 5,5,%2, qm, dx, dl, error, in, shift, round RET %endmacro +%if CONFIG_TTA_DECODER TTA_FILTER ssse3, 8 TTA_FILTER sse4, 7 +%endif + +%if CONFIG_TTA_ENCODER +TTA_FILTER ssse3, 8, enc +TTA_FILTER sse4, 7, enc +%endif diff --git a/libavcodec/x86/ttaencdsp.asm b/libavcodec/x86/ttaencdsp.asm deleted file mode 100644 index c9cbd49874..0000000000 --- a/libavcodec/x86/ttaencdsp.asm +++ /dev/null @@ -1,119 +0,0 @@ -;****************************************************************************** -;* TTA Encoder DSP SIMD optimizations -;* -;* Copyright (C) 2014-2016 James Almer -;* -;* This file is part of FFmpeg. -;* -;* FFmpeg is free software; you can redistribute it and/or -;* modify it under the terms of the GNU Lesser General Public -;* License as published by the Free Software Foundation; either -;* version 2.1 of the License, or (at your option) any later version. -;* -;* FFmpeg is distributed in the hope that it will be useful, -;* but WITHOUT ANY WARRANTY; without even the implied warranty of -;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;* Lesser General Public License for more details. -;* -;* You should have received a copy of the GNU Lesser General Public -;* License along with FFmpeg; if not, write to the Free Software -;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -;****************************************************************************** - -%include "libavutil/x86/x86util.asm" - -SECTION_RODATA - -pd_n0113: dd ~0, ~1, ~1, ~3 -pd_1224: dd 1, 2, 2, 4 - -SECTION .text - -%macro TTAENC_FILTER 2 -INIT_XMM %1 -cglobal ttaenc_filter_process, 5,5,%2, qm, dx, dl, error, in, shift, round - mova m2, [qmq ] - mova m3, [qmq + 0x10] - mova m4, [dxq ] - mova m5, [dxq + 0x10] - - movd m6, [errorq] ; if (filter->error < 0) { - SPLATD m6 ; for (int i = 0; i < 8; i++) - psignd m0, m4, m6 ; filter->qm[i] -= filter->dx[i]; - psignd m1, m5, m6 ; } else if (filter->error > 0) { - paddd m2, m0 ; for (int i = 0; i < 8; i++) - paddd m3, m1 ; filter->qm[i] += filter->dx[i]; - mova [qmq ], m2 ; } - mova [qmq + 0x10], m3 ; - - mova m0, [dlq ] - mova m1, [dlq + 0x10] - -%if cpuflag(sse4) - pmulld m2, m0 - pmulld m3, m1 -%else - pshufd m6, m0, 0xb1 - pshufd m7, m2, 0xb1 - pmuludq m6, m7 - pshufd m6, m6, 0xd8 - pmuludq m2, m0 - pshufd m2, m2, 0xd8 - punpckldq m2, m6 - - pshufd m6, m1, 0xb1 - pshufd m7, m3, 0xb1 - pmuludq m6, m7 - pshufd m6, m6, 0xd8 - pmuludq m3, m1 - pshufd m3, m3, 0xd8 - punpckldq m3, m6 -%endif - ; Using horizontal add (phaddd) seems to be slower than shuffling stuff around - paddd m2, m3 ; int sum = filter->round + - ; filter->dl[0] * filter->qm[0] + - pshufd m3, m2, 0xe ; filter->dl[1] * filter->qm[1] + - paddd m2, m3 ; filter->dl[2] * filter->qm[2] + - ; filter->dl[3] * filter->qm[3] + - movd m6, roundm ; filter->dl[4] * filter->qm[4] + - paddd m6, m2 ; filter->dl[5] * filter->qm[5] + - pshufd m2, m2, 0x1 ; filter->dl[6] * filter->qm[6] + - paddd m6, m2 ; filter->dl[7] * filter->qm[7]; - - palignr m5, m4, 4 ; filter->dx[0] = filter->dx[1]; filter->dx[1] = filter->dx[2]; - ; filter->dx[2] = filter->dx[3]; filter->dx[3] = filter->dx[4]; - - palignr m2, m1, m0, 4 ; filter->dl[0] = filter->dl[1]; filter->dl[1] = filter->dl[2]; - ; filter->dl[2] = filter->dl[3]; filter->dl[3] = filter->dl[4]; - - psrad m4, m1, 30 ; filter->dx[4] = ((filter->dl[4] >> 30) | 1); - por m4, [pd_1224 ] ; filter->dx[5] = ((filter->dl[5] >> 30) | 2) & ~1; - pand m4, [pd_n0113] ; filter->dx[6] = ((filter->dl[6] >> 30) | 2) & ~1; - ; filter->dx[7] = ((filter->dl[7] >> 30) | 4) & ~3; - - mova [dlq ], m2 - mova [dxq ], m5 - mova [dxq + 0x10], m4 - - movd m2, shiftm ; - movd m0, [inq] ; - psrad m6, m2 ; - psubd m3, m0, m6 ; - movd [inq], m3 ; *in -= (sum >> filter->shift); - movd [errorq], m3 ; filter->error = *in; - - psrldq m1, 4 ; - pslldq m0, 12 ; filter->dl[4] = -filter->dl[5]; - pshufd m0, m0, 0xf0 ; filter->dl[5] = -filter->dl[6]; - psubd m0, m1 ; filter->dl[6] = *in - filter->dl[7]; - psrldq m1, m0, 4 ; filter->dl[7] = *in; - pshufd m1, m1, 0xf4 ; filter->dl[5] += filter->dl[6]; - paddd m0, m1 ; filter->dl[4] += filter->dl[5]; - psrldq m1, 4 ; - paddd m0, m1 ; - mova [dlq + 0x10], m0 ; - RET -%endmacro - -TTAENC_FILTER ssse3, 8 -TTAENC_FILTER sse4, 7 _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
