2 * This file is part of FFmpeg.
4 * FFmpeg is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * FFmpeg is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with FFmpeg; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 static void ttafilter_process_dec_c(int32_t *qm
, int32_t *dx
, int32_t *dl
,
22 int32_t *error
, int32_t *in
, int32_t shift
,
25 qm
[0] -= dx
[0]; qm
[1] -= dx
[1]; qm
[2] -= dx
[2]; qm
[3] -= dx
[3];
26 qm
[4] -= dx
[4]; qm
[5] -= dx
[5]; qm
[6] -= dx
[6]; qm
[7] -= dx
[7];
27 } else if (*error
> 0) {
28 qm
[0] += dx
[0]; qm
[1] += dx
[1]; qm
[2] += dx
[2]; qm
[3] += dx
[3];
29 qm
[4] += dx
[4]; qm
[5] += dx
[5]; qm
[6] += dx
[6]; qm
[7] += dx
[7];
32 round
+= dl
[0] * qm
[0] + dl
[1] * qm
[1] + dl
[2] * qm
[2] + dl
[3] * qm
[3] +
33 dl
[4] * qm
[4] + dl
[5] * qm
[5] + dl
[6] * qm
[6] + dl
[7] * qm
[7];
35 dx
[0] = dx
[1]; dx
[1] = dx
[2]; dx
[2] = dx
[3]; dx
[3] = dx
[4];
36 dl
[0] = dl
[1]; dl
[1] = dl
[2]; dl
[2] = dl
[3]; dl
[3] = dl
[4];
38 dx
[4] = ((dl
[4] >> 30) | 1);
39 dx
[5] = ((dl
[5] >> 30) | 2) & ~1;
40 dx
[6] = ((dl
[6] >> 30) | 2) & ~1;
41 dx
[7] = ((dl
[7] >> 30) | 4) & ~3;
44 *in
+= (round
>> shift
);
46 dl
[4] = -dl
[5]; dl
[5] = -dl
[6];
47 dl
[6] = *in
- dl
[7]; dl
[7] = *in
;
48 dl
[5] += dl
[6]; dl
[4] += dl
[5];
51 av_cold
void ff_ttadsp_init(TTADSPContext
*c
)
53 c
->ttafilter_process_dec
= ttafilter_process_dec_c
;
56 ff_ttadsp_init_x86(c
);