FFmpeg
Loading...
Searching...
No Matches
vf_hflip_init.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2007 Benoit Fouet
3 * Copyright (c) 2010 Stefano Sabatini
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22#ifndef AVFILTER_HFLIP_INIT_H
23#define AVFILTER_HFLIP_INIT_H
24
25#include <stdint.h>
26
27#include "config.h"
29#include "libavutil/error.h"
31#include "hflip.h"
32
33static void hflip_byte_c(const uint8_t *src, uint8_t *dst, int w)
34{
35 for (int j = 0; j < w; j++)
36 dst[j] = src[-j];
37}
38
39static void hflip_short_c(const uint8_t *ssrc, uint8_t *ddst, int w)
40{
41 const uint16_t *src = (const uint16_t *)ssrc;
42 uint16_t *dst = (uint16_t *)ddst;
43
44 for (int j = 0; j < w; j++)
45 dst[j] = src[-j];
46}
47
48static void hflip_dword_c(const uint8_t *ssrc, uint8_t *ddst, int w)
49{
50 const uint32_t *src = (const uint32_t *)ssrc;
51 uint32_t *dst = (uint32_t *)ddst;
52
53 for (int j = 0; j < w; j++)
54 dst[j] = src[-j];
55}
56
57static void hflip_b24_c(const uint8_t *src, uint8_t *dst, int w)
58{
59 const uint8_t *in = src;
60 uint8_t *out = dst;
61
62 for (int j = 0; j < w; j++, out += 3, in -= 3) {
63 int32_t v = AV_RB24(in);
64
65 AV_WB24(out, v);
66 }
67}
68
69static void hflip_b48_c(const uint8_t *src, uint8_t *dst, int w)
70{
71 const uint8_t *in = src;
72 uint8_t *out = dst;
73
74 for (int j = 0; j < w; j++, out += 6, in -= 6) {
75 int64_t v = AV_RB48(in);
76
77 AV_WB48(out, v);
78 }
79}
80
81static void hflip_qword_c(const uint8_t *ssrc, uint8_t *ddst, int w)
82{
83 const uint64_t *src = (const uint64_t *)ssrc;
84 uint64_t *dst = (uint64_t *)ddst;
85
86 for (int j = 0; j < w; j++)
87 dst[j] = src[-j];
88}
89
90av_unused static int ff_hflip_init(FlipContext *s, int step[4], int nb_planes)
91{
92 for (int i = 0; i < nb_planes; i++) {
93 step[i] *= s->bayer_plus1;
94 switch (step[i]) {
95 case 1: s->flip_line[i] = hflip_byte_c; break;
96 case 2: s->flip_line[i] = hflip_short_c; break;
97 case 3: s->flip_line[i] = hflip_b24_c; break;
98 case 4: s->flip_line[i] = hflip_dword_c; break;
99 case 6: s->flip_line[i] = hflip_b48_c; break;
100 case 8: s->flip_line[i] = hflip_qword_c; break;
101 default:
102 return AVERROR_BUG;
103 }
104 }
105#if ARCH_X86 && HAVE_X86ASM
106 ff_hflip_init_x86(s, step, nb_planes);
107#endif
108
109 return 0;
110}
111
112#endif /* AVFILTER_HFLIP_INIT_H */
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
static FILE * out
int32_t
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
#define s(width, name)
Definition cbs_vp9.c:198
long long int64_t
Definition coverity.c:34
error code definitions
#define AVERROR_BUG
Internal bug, also see AVERROR_BUG2.
Definition error.h:52
void ff_hflip_init_x86(FlipContext *s, int step[4], int nb_planes)
#define AV_WB24(p, d)
#define AV_WB48(p, darg)
#define AV_RB24(x)
#define AV_RB48(x)
Macro definitions for various function/variable attributes.
#define av_unused
Definition attributes.h:164
uint8_t w
Definition llvidencdsp.c:39
#define src
Definition vp8dsp.c:248
static void hflip_b24_c(const uint8_t *src, uint8_t *dst, int w)
static void hflip_short_c(const uint8_t *ssrc, uint8_t *ddst, int w)
static void hflip_qword_c(const uint8_t *ssrc, uint8_t *ddst, int w)
static void hflip_b48_c(const uint8_t *src, uint8_t *dst, int w)
static void hflip_dword_c(const uint8_t *ssrc, uint8_t *ddst, int w)
static av_unused int ff_hflip_init(FlipContext *s, int step[4], int nb_planes)
static void hflip_byte_c(const uint8_t *src, uint8_t *dst, int w)