FFmpeg
Loading...
Searching...
No Matches
exrdsp.c
Go to the documentation of this file.
1/*
2 * This file is part of FFmpeg.
3 *
4 * Copyright (c) 2006 Industrial Light & Magic, a division of Lucas Digital Ltd. LLC
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#include <stdint.h>
22
24#include "exrdsp.h"
25#include "config.h"
26
27static void reorder_pixels_scalar(uint8_t *dst, const uint8_t *src, ptrdiff_t size)
28{
29 const uint8_t *t1 = src;
30 int half_size = size / 2;
31 const uint8_t *t2 = src + half_size;
32 uint8_t *s = dst;
33 int i;
34
35 for (i = 0; i < half_size; i++) {
36 *(s++) = *(t1++);
37 *(s++) = *(t2++);
38 }
39}
40
41static void predictor_scalar(uint8_t *src, ptrdiff_t size)
42{
43 /* Unrolled: `src[i + 1] += src[i] - 128;` */
44 if ((size & 1) == 0) {
45 src[1] += src[0] ^ 0x80;
46 src++;
47 size--;
48 }
49
50 for (ptrdiff_t i = 1; i < size; i += 2) {
51 uint8_t a = src[i] + src[i - 1];
52
53 src[i] = a;
54 src[i + 1] += a;
55 src[i] ^= 0x80;
56 }
57}
58
60{
61 c->reorder_pixels = reorder_pixels_scalar;
62 c->predictor = predictor_scalar;
63
64#if ARCH_RISCV
66#elif ARCH_X86 && HAVE_X86ASM
68#endif
69}
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
#define s(width, name)
Definition cbs_vp9.c:198
void ff_exrdsp_init_riscv(ExrDSPContext *c)
Definition exrdsp_init.c:29
void ff_exrdsp_init_x86(ExrDSPContext *c)
Definition exrdsp_init.c:35
int a
av_cold void ff_exrdsp_init(ExrDSPContext *c)
Definition exrdsp.c:59
static void predictor_scalar(uint8_t *src, ptrdiff_t size)
Definition exrdsp.c:41
static void reorder_pixels_scalar(uint8_t *dst, const uint8_t *src, ptrdiff_t size)
Definition exrdsp.c:27
Macro definitions for various function/variable attributes.
#define av_cold
Definition attributes.h:117
#define src
Definition vp8dsp.c:248
int size
static double c[64]