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 51