FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavfilter
vf_swapuv.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at>
3
*
4
* This file is part of FFmpeg.
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
/**
22
* @file
23
* swap UV filter
24
*/
25
26
#include "
avfilter.h
"
27
#include "
formats.h
"
28
#include "
internal.h
"
29
#include "
video.h
"
30
31
static
AVFilterBufferRef
*
get_video_buffer
(
AVFilterLink
*link,
int
perms,
32
int
w,
int
h)
33
{
34
AVFilterBufferRef
*picref =
35
ff_default_get_video_buffer
(link, perms, w, h);
36
37
FFSWAP
(
uint8_t
*, picref->
data
[1], picref->
data
[2]);
38
FFSWAP
(
int
, picref->
linesize
[1], picref->
linesize
[2]);
39
40
return
picref;
41
}
42
43
static
int
filter_frame
(
AVFilterLink
*link,
AVFilterBufferRef
*inpicref)
44
{
45
FFSWAP
(
uint8_t
*, inpicref->
data
[1], inpicref->
data
[2]);
46
FFSWAP
(
int
, inpicref->
linesize
[1], inpicref->
linesize
[2]);
47
48
return
ff_filter_frame
(link->
dst
->
outputs
[0], inpicref);
49
}
50
51
static
int
query_formats
(
AVFilterContext
*ctx)
52
{
53
static
const
enum
AVPixelFormat
pix_fmts[] = {
54
AV_PIX_FMT_YUV420P
,
AV_PIX_FMT_YUVJ420P
,
AV_PIX_FMT_YUVA420P
,
55
AV_PIX_FMT_YUV444P
,
AV_PIX_FMT_YUVJ444P
,
AV_PIX_FMT_YUVA444P
,
56
AV_PIX_FMT_YUV440P
,
AV_PIX_FMT_YUVJ440P
,
57
AV_PIX_FMT_YUV422P
,
AV_PIX_FMT_YUVJ422P
,
58
AV_PIX_FMT_YUV411P
,
59
AV_PIX_FMT_NONE
,
60
};
61
62
ff_set_common_formats
(ctx,
ff_make_format_list
(pix_fmts));
63
return
0;
64
}
65
66
static
const
AVFilterPad
swapuv_inputs
[] = {
67
{
68
.
name
=
"default"
,
69
.type =
AVMEDIA_TYPE_VIDEO
,
70
.get_video_buffer =
get_video_buffer
,
71
.filter_frame =
filter_frame
,
72
},
73
{
NULL
}
74
};
75
76
static
const
AVFilterPad
swapuv_outputs
[] = {
77
{
78
.
name
=
"default"
,
79
.type =
AVMEDIA_TYPE_VIDEO
,
80
},
81
{
NULL
}
82
};
83
84
AVFilter
avfilter_vf_swapuv
= {
85
.
name
=
"swapuv"
,
86
.description =
NULL_IF_CONFIG_SMALL
(
"Swap U and V components."
),
87
.priv_size = 0,
88
.query_formats =
query_formats
,
89
.inputs =
swapuv_inputs
,
90
.outputs =
swapuv_outputs
,
91
};
Generated on Sat May 25 2013 03:58:45 for FFmpeg by
1.8.2