]> git.sesse.net Git - ffmpeg/blob - libavfilter/transpose.h
avformat/avio: Add Metacube support
[ffmpeg] / libavfilter / transpose.h
1 /*
2  * This file is part of FFmpeg.
3  *
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.
8  *
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.
13  *
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
17  */
18 #ifndef AVFILTER_TRANSPOSE_H
19 #define AVFILTER_TRANSPOSE_H
20
21 #include <stddef.h>
22 #include <stdint.h>
23
24 enum PassthroughType {
25     TRANSPOSE_PT_TYPE_NONE,
26     TRANSPOSE_PT_TYPE_LANDSCAPE,
27     TRANSPOSE_PT_TYPE_PORTRAIT,
28 };
29
30 enum TransposeDir {
31     TRANSPOSE_CCLOCK_FLIP,
32     TRANSPOSE_CLOCK,
33     TRANSPOSE_CCLOCK,
34     TRANSPOSE_CLOCK_FLIP,
35     TRANSPOSE_REVERSAL,    // rotate by half-turn
36     TRANSPOSE_HFLIP,
37     TRANSPOSE_VFLIP,
38 };
39
40 typedef struct TransVtable {
41     void (*transpose_8x8)(uint8_t *src, ptrdiff_t src_linesize,
42                           uint8_t *dst, ptrdiff_t dst_linesize);
43     void (*transpose_block)(uint8_t *src, ptrdiff_t src_linesize,
44                             uint8_t *dst, ptrdiff_t dst_linesize,
45                             int w, int h);
46 } TransVtable;
47
48 void ff_transpose_init_x86(TransVtable *v, int pixstep);
49
50 #endif