Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
2d9d4440
Commit
2d9d4440
authored
Nov 28, 2012
by
Clément Bœsch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavfi: convert remaining input/output list compound literals to named objects.
This is following
568c70e7
.
parent
bff576c7
Show whitespace changes
Inline
Side-by-side
Showing
48 changed files
with
1038 additions
and
761 deletions
+1038
-761
af_aconvert.c
libavfilter/af_aconvert.c
+21
-10
af_amerge.c
libavfilter/af_amerge.c
+13
-10
af_aresample.c
libavfilter/af_aresample.c
+22
-11
af_asetnsamples.c
libavfilter/af_asetnsamples.c
+23
-21
af_astreamsync.c
libavfilter/af_astreamsync.c
+32
-23
af_atempo.c
libavfilter/af_atempo.c
+22
-16
af_earwax.c
libavfilter/af_earwax.c
+21
-10
af_pan.c
libavfilter/af_pan.c
+21
-14
af_silencedetect.c
libavfilter/af_silencedetect.c
+21
-14
af_volume.c
libavfilter/af_volume.c
+20
-10
af_volumedetect.c
libavfilter/af_volumedetect.c
+21
-14
asrc_aevalsrc.c
libavfilter/asrc_aevalsrc.c
+13
-9
asrc_flite.c
libavfilter/asrc_flite.c
+13
-14
avf_concat.c
libavfilter/avf_concat.c
+2
-2
avf_showspectrum.c
libavfilter/avf_showspectrum.c
+23
-22
avf_showwaves.c
libavfilter/avf_showwaves.c
+23
-22
f_ebur128.c
libavfilter/f_ebur128.c
+12
-9
f_sendcmd.c
libavfilter/f_sendcmd.c
+41
-35
f_setpts.c
libavfilter/f_setpts.c
+21
-19
f_settb.c
libavfilter/f_settb.c
+21
-14
sink_buffer.c
libavfilter/sink_buffer.c
+46
-26
src_movie.c
libavfilter/src_movie.c
+3
-3
vf_alphaextract.c
libavfilter/vf_alphaextract.c
+21
-14
vf_alphamerge.c
libavfilter/vf_alphamerge.c
+33
-25
vf_ass.c
libavfilter/vf_ass.c
+25
-18
vf_bbox.c
libavfilter/vf_bbox.c
+22
-16
vf_blackdetect.c
libavfilter/vf_blackdetect.c
+25
-19
vf_colormatrix.c
libavfilter/vf_colormatrix.c
+24
-14
vf_decimate.c
libavfilter/vf_decimate.c
+25
-22
vf_deshake.c
libavfilter/vf_deshake.c
+22
-12
vf_edgedetect.c
libavfilter/vf_edgedetect.c
+21
-18
vf_framestep.c
libavfilter/vf_framestep.c
+24
-21
vf_hue.c
libavfilter/vf_hue.c
+23
-20
vf_idet.c
libavfilter/vf_idet.c
+25
-15
vf_mp.c
libavfilter/vf_mp.c
+25
-14
vf_removelogo.c
libavfilter/vf_removelogo.c
+24
-17
vf_setfield.c
libavfilter/vf_setfield.c
+20
-13
vf_smartblur.c
libavfilter/vf_smartblur.c
+21
-18
vf_super2xsai.c
libavfilter/vf_super2xsai.c
+23
-16
vf_swapuv.c
libavfilter/vf_swapuv.c
+20
-13
vf_thumbnail.c
libavfilter/vf_thumbnail.c
+25
-17
vf_tile.c
libavfilter/vf_tile.c
+24
-17
vf_tinterlace.c
libavfilter/vf_tinterlace.c
+23
-16
vsrc_cellauto.c
libavfilter/vsrc_cellauto.c
+13
-12
vsrc_life.c
libavfilter/vsrc_life.c
+13
-12
vsrc_mandelbrot.c
libavfilter/vsrc_mandelbrot.c
+12
-8
vsrc_mptestsrc.c
libavfilter/vsrc_mptestsrc.c
+12
-7
vsrc_testsrc.c
libavfilter/vsrc_testsrc.c
+38
-39
No files found.
libavfilter/af_aconvert.c
View file @
2d9d4440
...
@@ -154,6 +154,25 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamplesref)
...
@@ -154,6 +154,25 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamplesref)
return
ret
;
return
ret
;
}
}
static
const
AVFilterPad
aconvert_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
,
},
{
NULL
}
};
static
const
AVFilterPad
aconvert_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_output
,
},
{
NULL
}
};
AVFilter
avfilter_af_aconvert
=
{
AVFilter
avfilter_af_aconvert
=
{
.
name
=
"aconvert"
,
.
name
=
"aconvert"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Convert the input audio to sample_fmt:channel_layout."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Convert the input audio to sample_fmt:channel_layout."
),
...
@@ -161,14 +180,6 @@ AVFilter avfilter_af_aconvert = {
...
@@ -161,14 +180,6 @@ AVFilter avfilter_af_aconvert = {
.
init
=
init
,
.
init
=
init
,
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
aconvert_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
outputs
=
aconvert_outputs
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
,
},
{
.
name
=
NULL
}},
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_output
,
},
{
.
name
=
NULL
}},
};
};
libavfilter/af_amerge.c
View file @
2d9d4440
...
@@ -323,6 +323,16 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
...
@@ -323,6 +323,16 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
amerge_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_output
,
.
request_frame
=
request_frame
,
},
{
NULL
}
};
AVFilter
avfilter_af_amerge
=
{
AVFilter
avfilter_af_amerge
=
{
.
name
=
"amerge"
,
.
name
=
"amerge"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Merge two audio streams into "
.
description
=
NULL_IF_CONFIG_SMALL
(
"Merge two audio streams into "
...
@@ -331,14 +341,7 @@ AVFilter avfilter_af_amerge = {
...
@@ -331,14 +341,7 @@ AVFilter avfilter_af_amerge = {
.
init
=
init
,
.
init
=
init
,
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
NULL
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
NULL
}
},
.
outputs
=
amerge_outputs
,
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_output
,
.
request_frame
=
request_frame
,
},
{
.
name
=
NULL
}
},
.
priv_class
=
&
amerge_class
,
.
priv_class
=
&
amerge_class
,
};
};
libavfilter/af_aresample.c
View file @
2d9d4440
...
@@ -253,6 +253,26 @@ static int request_frame(AVFilterLink *outlink)
...
@@ -253,6 +253,26 @@ static int request_frame(AVFilterLink *outlink)
return
ret
;
return
ret
;
}
}
static
const
AVFilterPad
aresample_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
,
},
{
NULL
},
};
static
const
AVFilterPad
aresample_outputs
[]
=
{
{
.
name
=
"default"
,
.
config_props
=
config_output
,
.
request_frame
=
request_frame
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
NULL
},
};
AVFilter
avfilter_af_aresample
=
{
AVFilter
avfilter_af_aresample
=
{
.
name
=
"aresample"
,
.
name
=
"aresample"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Resample audio data."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Resample audio data."
),
...
@@ -260,15 +280,6 @@ AVFilter avfilter_af_aresample = {
...
@@ -260,15 +280,6 @@ AVFilter avfilter_af_aresample = {
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
priv_size
=
sizeof
(
AResampleContext
),
.
priv_size
=
sizeof
(
AResampleContext
),
.
inputs
=
aresample_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
outputs
=
aresample_outputs
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
,
},
{
.
name
=
NULL
}},
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
config_props
=
config_output
,
.
request_frame
=
request_frame
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
.
name
=
NULL
}},
};
};
libavfilter/af_asetnsamples.c
View file @
2d9d4440
...
@@ -175,31 +175,33 @@ static int request_frame(AVFilterLink *outlink)
...
@@ -175,31 +175,33 @@ static int request_frame(AVFilterLink *outlink)
return
ret
;
return
ret
;
}
}
AVFilter
avfilter_af_asetnsamples
=
{
static
const
AVFilterPad
asetnsamples_inputs
[]
=
{
.
name
=
"asetnsamples"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Set the number of samples for each output audio frames."
),
.
priv_size
=
sizeof
(
ASNSContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_WRITE
.
min_perms
=
AV_PERM_READ
|
AV_PERM_WRITE
,
},
{
.
name
=
NULL
}
},
},
{
NULL
}
};
.
outputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
asetnsamples_outputs
[]
=
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
request_frame
=
request_frame
,
.
request_frame
=
request_frame
,
.
config_props
=
config_props_output
,
.
config_props
=
config_props_output
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
AVFilter
avfilter_af_asetnsamples
=
{
.
name
=
"asetnsamples"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Set the number of samples for each output audio frames."
),
.
priv_size
=
sizeof
(
ASNSContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
inputs
=
asetnsamples_inputs
,
.
outputs
=
asetnsamples_outputs
,
.
priv_class
=
&
asetnsamples_class
,
.
priv_class
=
&
asetnsamples_class
,
};
};
libavfilter/af_astreamsync.c
View file @
2d9d4440
...
@@ -180,34 +180,43 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
...
@@ -180,34 +180,43 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
return
0
;
return
0
;
}
}
AVFilter
avfilter_af_astreamsync
=
{
static
const
AVFilterPad
astreamsync_inputs
[]
=
{
.
name
=
"astreamsync"
,
{
.
description
=
NULL_IF_CONFIG_SMALL
(
"Copy two streams of audio data "
.
name
=
"in1"
,
"in a configurable order."
),
.
priv_size
=
sizeof
(
AStreamSyncContext
),
.
init
=
init
,
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"in1"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
},
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
{
.
name
=
"in2"
,
},{
.
name
=
"in2"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
},
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
{
.
name
=
NULL
}
},
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
NULL
}
{
.
name
=
"out1"
,
};
static
const
AVFilterPad
astreamsync_outputs
[]
=
{
{
.
name
=
"out1"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_output
,
.
config_props
=
config_output
,
.
request_frame
=
request_frame
,
},
.
request_frame
=
request_frame
,
{
.
name
=
"out2"
,
},{
.
name
=
"out2"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_output
,
.
config_props
=
config_output
,
.
request_frame
=
request_frame
,
},
.
request_frame
=
request_frame
,
{
.
name
=
NULL
}
},
},
{
NULL
}
};
AVFilter
avfilter_af_astreamsync
=
{
.
name
=
"astreamsync"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Copy two streams of audio data "
"in a configurable order."
),
.
priv_size
=
sizeof
(
AStreamSyncContext
),
.
init
=
init
,
.
query_formats
=
query_formats
,
.
inputs
=
astreamsync_inputs
,
.
outputs
=
astreamsync_outputs
,
};
};
libavfilter/af_atempo.c
View file @
2d9d4440
...
@@ -1136,6 +1136,26 @@ static int process_command(AVFilterContext *ctx,
...
@@ -1136,6 +1136,26 @@ static int process_command(AVFilterContext *ctx,
return
!
strcmp
(
cmd
,
"tempo"
)
?
yae_set_tempo
(
ctx
,
arg
)
:
AVERROR
(
ENOSYS
);
return
!
strcmp
(
cmd
,
"tempo"
)
?
yae_set_tempo
(
ctx
,
arg
)
:
AVERROR
(
ENOSYS
);
}
}
static
const
AVFilterPad
atempo_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
config_props
=
config_props
,
.
min_perms
=
AV_PERM_READ
,
},
{
NULL
}
};
static
const
AVFilterPad
atempo_outputs
[]
=
{
{
.
name
=
"default"
,
.
request_frame
=
request_frame
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
NULL
}
};
AVFilter
avfilter_af_atempo
=
{
AVFilter
avfilter_af_atempo
=
{
.
name
=
"atempo"
,
.
name
=
"atempo"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Adjust audio tempo."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Adjust audio tempo."
),
...
@@ -1144,20 +1164,6 @@ AVFilter avfilter_af_atempo = {
...
@@ -1144,20 +1164,6 @@ AVFilter avfilter_af_atempo = {
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
process_command
=
process_command
,
.
process_command
=
process_command
,
.
priv_size
=
sizeof
(
ATempoContext
),
.
priv_size
=
sizeof
(
ATempoContext
),
.
inputs
=
atempo_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{
.
outputs
=
atempo_outputs
,
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
config_props
=
config_props
,
.
min_perms
=
AV_PERM_READ
,
},
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
request_frame
=
request_frame
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
.
name
=
NULL
}
},
};
};
libavfilter/af_earwax.c
View file @
2d9d4440
...
@@ -153,19 +153,30 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
...
@@ -153,19 +153,30 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
return
ret
;
return
ret
;
}
}
static
const
AVFilterPad
earwax_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
config_props
=
config_input
,
.
min_perms
=
AV_PERM_READ
,
},
{
NULL
}
};
static
const
AVFilterPad
earwax_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
NULL
}
};
AVFilter
avfilter_af_earwax
=
{
AVFilter
avfilter_af_earwax
=
{
.
name
=
"earwax"
,
.
name
=
"earwax"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Widen the stereo image."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Widen the stereo image."
),
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
priv_size
=
sizeof
(
EarwaxContext
),
.
priv_size
=
sizeof
(
EarwaxContext
),
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
inputs
=
earwax_inputs
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
outputs
=
earwax_outputs
,
.
filter_frame
=
filter_frame
,
.
config_props
=
config_input
,
.
min_perms
=
AV_PERM_READ
,
},
{
.
name
=
NULL
}},
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
.
name
=
NULL
}},
};
};
libavfilter/af_pan.c
View file @
2d9d4440
...
@@ -376,6 +376,25 @@ static av_cold void uninit(AVFilterContext *ctx)
...
@@ -376,6 +376,25 @@ static av_cold void uninit(AVFilterContext *ctx)
swr_free
(
&
pan
->
swr
);
swr_free
(
&
pan
->
swr
);
}
}
static
const
AVFilterPad
pan_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_props
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
,
},
{
NULL
}
};
static
const
AVFilterPad
pan_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
NULL
}
};
AVFilter
avfilter_af_pan
=
{
AVFilter
avfilter_af_pan
=
{
.
name
=
"pan"
,
.
name
=
"pan"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Remix channels with coefficients (panning)."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Remix channels with coefficients (panning)."
),
...
@@ -383,18 +402,6 @@ AVFilter avfilter_af_pan = {
...
@@ -383,18 +402,6 @@ AVFilter avfilter_af_pan = {
.
init
=
init
,
.
init
=
init
,
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
pan_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{
.
outputs
=
pan_outputs
,
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_props
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
,
},
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
.
name
=
NULL
}
},
};
};
libavfilter/af_silencedetect.c
View file @
2d9d4440
...
@@ -162,24 +162,31 @@ static int query_formats(AVFilterContext *ctx)
...
@@ -162,24 +162,31 @@ static int query_formats(AVFilterContext *ctx)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
silencedetect_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
get_audio_buffer
=
ff_null_get_audio_buffer
,
.
filter_frame
=
filter_frame
,
},
{
NULL
}
};
static
const
AVFilterPad
silencedetect_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
NULL
}
};
AVFilter
avfilter_af_silencedetect
=
{
AVFilter
avfilter_af_silencedetect
=
{
.
name
=
"silencedetect"
,
.
name
=
"silencedetect"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Detect silence."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Detect silence."
),
.
priv_size
=
sizeof
(
SilenceDetectContext
),
.
priv_size
=
sizeof
(
SilenceDetectContext
),
.
init
=
init
,
.
init
=
init
,
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
silencedetect_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{
.
outputs
=
silencedetect_outputs
,
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
get_audio_buffer
=
ff_null_get_audio_buffer
,
.
filter_frame
=
filter_frame
,
},
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
.
name
=
NULL
}
},
.
priv_class
=
&
silencedetect_class
,
.
priv_class
=
&
silencedetect_class
,
};
};
libavfilter/af_volume.c
View file @
2d9d4440
...
@@ -172,20 +172,30 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
...
@@ -172,20 +172,30 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
return
ff_filter_frame
(
outlink
,
insamples
);
return
ff_filter_frame
(
outlink
,
insamples
);
}
}
static
const
AVFilterPad
volume_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_WRITE
,
},
{
NULL
},
};
static
const
AVFilterPad
volume_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
NULL
},
};
AVFilter
avfilter_af_volume
=
{
AVFilter
avfilter_af_volume
=
{
.
name
=
"volume"
,
.
name
=
"volume"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Change input volume."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Change input volume."
),
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
priv_size
=
sizeof
(
VolumeContext
),
.
priv_size
=
sizeof
(
VolumeContext
),
.
init
=
init
,
.
init
=
init
,
.
inputs
=
volume_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
outputs
=
volume_outputs
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_WRITE
},
{
.
name
=
NULL
}},
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
.
name
=
NULL
}},
};
};
libavfilter/af_volumedetect.c
View file @
2d9d4440
...
@@ -131,6 +131,25 @@ static void uninit(AVFilterContext *ctx)
...
@@ -131,6 +131,25 @@ static void uninit(AVFilterContext *ctx)
print_stats
(
ctx
);
print_stats
(
ctx
);
}
}
static
const
AVFilterPad
volumedetect_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
get_audio_buffer
=
ff_null_get_audio_buffer
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
,
},
{
NULL
}
};
static
const
AVFilterPad
volumedetect_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
NULL
}
};
AVFilter
avfilter_af_volumedetect
=
{
AVFilter
avfilter_af_volumedetect
=
{
.
name
=
"volumedetect"
,
.
name
=
"volumedetect"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Detect audio volume."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Detect audio volume."
),
...
@@ -138,18 +157,6 @@ AVFilter avfilter_af_volumedetect = {
...
@@ -138,18 +157,6 @@ AVFilter avfilter_af_volumedetect = {
.
priv_size
=
sizeof
(
VolDetectContext
),
.
priv_size
=
sizeof
(
VolDetectContext
),
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
inputs
=
volumedetect_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{
.
outputs
=
volumedetect_outputs
,
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
get_audio_buffer
=
ff_null_get_audio_buffer
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
,
},
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
{
.
name
=
NULL
}
},
};
};
libavfilter/asrc_aevalsrc.c
View file @
2d9d4440
...
@@ -242,6 +242,16 @@ static int request_frame(AVFilterLink *outlink)
...
@@ -242,6 +242,16 @@ static int request_frame(AVFilterLink *outlink)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
aevalsrc_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_props
,
.
request_frame
=
request_frame
,
},
{
NULL
}
};
AVFilter
avfilter_asrc_aevalsrc
=
{
AVFilter
avfilter_asrc_aevalsrc
=
{
.
name
=
"aevalsrc"
,
.
name
=
"aevalsrc"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Generate an audio signal generated by an expression."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Generate an audio signal generated by an expression."
),
...
@@ -250,13 +260,7 @@ AVFilter avfilter_asrc_aevalsrc = {
...
@@ -250,13 +260,7 @@ AVFilter avfilter_asrc_aevalsrc = {
.
init
=
init
,
.
init
=
init
,
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
EvalContext
),
.
priv_size
=
sizeof
(
EvalContext
),
.
inputs
=
NULL
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
NULL
}},
.
outputs
=
aevalsrc_outputs
,
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_props
,
.
request_frame
=
request_frame
,
},
{
.
name
=
NULL
}},
.
priv_class
=
&
aevalsrc_class
,
.
priv_class
=
&
aevalsrc_class
,
};
};
libavfilter/asrc_flite.c
View file @
2d9d4440
...
@@ -268,25 +268,24 @@ static int request_frame(AVFilterLink *outlink)
...
@@ -268,25 +268,24 @@ static int request_frame(AVFilterLink *outlink)
return
ff_filter_frame
(
outlink
,
samplesref
);
return
ff_filter_frame
(
outlink
,
samplesref
);
}
}
AVFilter
avfilter_asrc_flite
=
{
static
const
AVFilterPad
flite_outputs
[]
=
{
.
name
=
"flite"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Synthesize voice from text using libflite."
),
.
query_formats
=
query_formats
,
.
init
=
init
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
FliteContext
),
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
NULL
}},
.
outputs
=
(
const
AVFilterPad
[])
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_props
,
.
config_props
=
config_props
,
.
request_frame
=
request_frame
,
.
request_frame
=
request_frame
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
AVFilter
avfilter_asrc_flite
=
{
.
name
=
"flite"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Synthesize voice from text using libflite."
),
.
query_formats
=
query_formats
,
.
init
=
init
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
FliteContext
),
.
inputs
=
NULL
,
.
outputs
=
flite_outputs
,
.
priv_class
=
&
flite_class
,
.
priv_class
=
&
flite_class
,
};
};
libavfilter/avf_concat.c
View file @
2d9d4440
...
@@ -445,7 +445,7 @@ AVFilter avfilter_avf_concat = {
...
@@ -445,7 +445,7 @@ AVFilter avfilter_avf_concat = {
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
priv_size
=
sizeof
(
ConcatContext
),
.
priv_size
=
sizeof
(
ConcatContext
),
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
NULL
}
}
,
.
inputs
=
NULL
,
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
NULL
}
}
,
.
outputs
=
NULL
,
.
priv_class
=
&
concat_class
,
.
priv_class
=
&
concat_class
,
};
};
libavfilter/avf_showspectrum.c
View file @
2d9d4440
...
@@ -298,33 +298,34 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
...
@@ -298,33 +298,34 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
return
0
;
return
0
;
}
}
AVFilter
avfilter_avf_showspectrum
=
{
static
const
AVFilterPad
showspectrum_inputs
[]
=
{
.
name
=
"showspectrum"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Convert input audio to a spectrum video output."
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
priv_size
=
sizeof
(
ShowSpectrumContext
),
.
inputs
=
(
const
AVFilterPad
[])
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
,
.
min_perms
=
AV_PERM_READ
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
.
outputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
showspectrum_outputs
[]
=
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_output
,
.
config_props
=
config_output
,
.
request_frame
=
request_frame
,
.
request_frame
=
request_frame
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
AVFilter
avfilter_avf_showspectrum
=
{
.
name
=
"showspectrum"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Convert input audio to a spectrum video output."
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
priv_size
=
sizeof
(
ShowSpectrumContext
),
.
inputs
=
showspectrum_inputs
,
.
outputs
=
showspectrum_outputs
,
.
priv_class
=
&
showspectrum_class
,
.
priv_class
=
&
showspectrum_class
,
};
};
libavfilter/avf_showwaves.c
View file @
2d9d4440
...
@@ -228,33 +228,34 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
...
@@ -228,33 +228,34 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
return
0
;
return
0
;
}
}
AVFilter
avfilter_avf_showwaves
=
{
static
const
AVFilterPad
showwaves_inputs
[]
=
{
.
name
=
"showwaves"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Convert input audio to a video output."
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
priv_size
=
sizeof
(
ShowWavesContext
),
.
inputs
=
(
const
AVFilterPad
[])
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
,
.
min_perms
=
AV_PERM_READ
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
.
outputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
showwaves_outputs
[]
=
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_output
,
.
config_props
=
config_output
,
.
request_frame
=
request_frame
,
.
request_frame
=
request_frame
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
AVFilter
avfilter_avf_showwaves
=
{
.
name
=
"showwaves"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Convert input audio to a video output."
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
priv_size
=
sizeof
(
ShowWavesContext
),
.
inputs
=
showwaves_inputs
,
.
outputs
=
showwaves_outputs
,
.
priv_class
=
&
showwaves_class
,
.
priv_class
=
&
showwaves_class
,
};
};
libavfilter/f_ebur128.c
View file @
2d9d4440
...
@@ -728,6 +728,16 @@ static av_cold void uninit(AVFilterContext *ctx)
...
@@ -728,6 +728,16 @@ static av_cold void uninit(AVFilterContext *ctx)
avfilter_unref_bufferp
(
&
ebur128
->
outpicref
);
avfilter_unref_bufferp
(
&
ebur128
->
outpicref
);
}
}
static
const
AVFilterPad
ebur128_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
get_audio_buffer
=
ff_null_get_audio_buffer
,
.
filter_frame
=
filter_frame
,
},
{
NULL
}
};
AVFilter
avfilter_af_ebur128
=
{
AVFilter
avfilter_af_ebur128
=
{
.
name
=
"ebur128"
,
.
name
=
"ebur128"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"EBU R128 scanner."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"EBU R128 scanner."
),
...
@@ -735,13 +745,6 @@ AVFilter avfilter_af_ebur128 = {
...
@@ -735,13 +745,6 @@ AVFilter avfilter_af_ebur128 = {
.
init
=
init
,
.
init
=
init
,
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
ebur128_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
get_audio_buffer
=
ff_null_get_audio_buffer
,
.
filter_frame
=
filter_frame
,
},
{
.
name
=
NULL
}
},
.
outputs
=
NULL
,
.
outputs
=
NULL
,
};
};
libavfilter/f_sendcmd.c
View file @
2d9d4440
...
@@ -518,15 +518,7 @@ end:
...
@@ -518,15 +518,7 @@ end:
#if CONFIG_SENDCMD_FILTER
#if CONFIG_SENDCMD_FILTER
AVFilter
avfilter_vf_sendcmd
=
{
static
const
AVFilterPad
sendcmd_inputs
[]
=
{
.
name
=
"sendcmd"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Send commands to filters."
),
.
init
=
init
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
SendCmdContext
),
.
inputs
=
(
const
AVFilterPad
[])
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
...
@@ -534,45 +526,59 @@ AVFilter avfilter_vf_sendcmd = {
...
@@ -534,45 +526,59 @@ AVFilter avfilter_vf_sendcmd = {
.
start_frame
=
process_frame
,
.
start_frame
=
process_frame
,
.
end_frame
=
ff_null_end_frame
,
.
end_frame
=
ff_null_end_frame
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
.
outputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
sendcmd_outputs
[]
=
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
};
#endif
AVFilter
avfilter_vf_sendcmd
=
{
.
name
=
"sendcmd"
,
#if CONFIG_ASENDCMD_FILTER
AVFilter
avfilter_af_asendcmd
=
{
.
name
=
"asendcmd"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Send commands to filters."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Send commands to filters."
),
.
init
=
init
,
.
init
=
init
,
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
SendCmdContext
),
.
priv_size
=
sizeof
(
SendCmdContext
),
.
inputs
=
sendcmd_inputs
,
.
outputs
=
sendcmd_outputs
,
};
#endif
#if CONFIG_ASENDCMD_FILTER
.
inputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
asendcmd_inputs
[]
=
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
get_audio_buffer
=
ff_null_get_audio_buffer
,
.
get_audio_buffer
=
ff_null_get_audio_buffer
,
.
filter_frame
=
process_frame
,
.
filter_frame
=
process_frame
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
.
outputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
asendcmd_outputs
[]
=
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
AVFilter
avfilter_af_asendcmd
=
{
.
name
=
"asendcmd"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Send commands to filters."
),
.
init
=
init
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
SendCmdContext
),
.
inputs
=
asendcmd_inputs
,
.
outputs
=
asendcmd_outputs
,
};
};
#endif
#endif
libavfilter/f_setpts.c
View file @
2d9d4440
...
@@ -183,15 +183,7 @@ static av_cold void uninit(AVFilterContext *ctx)
...
@@ -183,15 +183,7 @@ static av_cold void uninit(AVFilterContext *ctx)
}
}
#if CONFIG_ASETPTS_FILTER
#if CONFIG_ASETPTS_FILTER
AVFilter
avfilter_af_asetpts
=
{
static
const
AVFilterPad
avfilter_af_asetpts_inputs
[]
=
{
.
name
=
"asetpts"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Set PTS for the output audio frame."
),
.
init
=
init
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
SetPTSContext
),
.
inputs
=
(
const
AVFilterPad
[])
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
...
@@ -199,15 +191,25 @@ AVFilter avfilter_af_asetpts = {
...
@@ -199,15 +191,25 @@ AVFilter avfilter_af_asetpts = {
.
config_props
=
config_input
,
.
config_props
=
config_input
,
.
filter_frame
=
filter_frame
,
.
filter_frame
=
filter_frame
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
.
outputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
avfilter_af_asetpts_outputs
[]
=
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
AVFilter
avfilter_af_asetpts
=
{
.
name
=
"asetpts"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Set PTS for the output audio frame."
),
.
init
=
init
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
SetPTSContext
),
.
inputs
=
avfilter_af_asetpts_inputs
,
.
outputs
=
avfilter_af_asetpts_outputs
,
};
};
#endif
/* CONFIG_ASETPTS_FILTER */
#endif
/* CONFIG_ASETPTS_FILTER */
...
...
libavfilter/f_settb.c
View file @
2d9d4440
...
@@ -152,25 +152,32 @@ AVFilter avfilter_vf_settb = {
...
@@ -152,25 +152,32 @@ AVFilter avfilter_vf_settb = {
#endif
#endif
#if CONFIG_ASETTB_FILTER
#if CONFIG_ASETTB_FILTER
static
const
AVFilterPad
avfilter_af_asettb_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
get_audio_buffer
=
ff_null_get_audio_buffer
,
.
filter_frame
=
filter_frame
,
},
{
NULL
}
};
static
const
AVFilterPad
avfilter_af_asettb_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_output_props
,
},
{
NULL
}
};
AVFilter
avfilter_af_asettb
=
{
AVFilter
avfilter_af_asettb
=
{
.
name
=
"asettb"
,
.
name
=
"asettb"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Set timebase for the audio output link."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Set timebase for the audio output link."
),
.
init
=
init
,
.
init
=
init
,
.
priv_size
=
sizeof
(
SetTBContext
),
.
priv_size
=
sizeof
(
SetTBContext
),
.
inputs
=
avfilter_af_asettb_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{
.
outputs
=
avfilter_af_asettb_outputs
,
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
get_audio_buffer
=
ff_null_get_audio_buffer
,
.
filter_frame
=
filter_frame
,
},
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_output_props
,
},
{
.
name
=
NULL
}
},
};
};
#endif
#endif
libavfilter/sink_buffer.c
View file @
2d9d4440
...
@@ -234,6 +234,16 @@ static int vsink_query_formats(AVFilterContext *ctx)
...
@@ -234,6 +234,16 @@ static int vsink_query_formats(AVFilterContext *ctx)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
ffbuffersink_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
end_frame
=
end_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
},
{
NULL
},
};
AVFilter
avfilter_vsink_ffbuffersink
=
{
AVFilter
avfilter_vsink_ffbuffersink
=
{
.
name
=
"ffbuffersink"
,
.
name
=
"ffbuffersink"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Buffer video frames, and make them available to the end of the filter graph."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Buffer video frames, and make them available to the end of the filter graph."
),
...
@@ -242,13 +252,18 @@ AVFilter avfilter_vsink_ffbuffersink = {
...
@@ -242,13 +252,18 @@ AVFilter avfilter_vsink_ffbuffersink = {
.
uninit
=
vsink_uninit
,
.
uninit
=
vsink_uninit
,
.
query_formats
=
vsink_query_formats
,
.
query_formats
=
vsink_query_formats
,
.
inputs
=
ffbuffersink_inputs
,
.
outputs
=
NULL
,
};
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
static
const
AVFilterPad
buffersink_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
}
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
{
.
name
=
NULL
}
},
},
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
NULL
}
},
{
NULL
},
};
};
AVFilter
avfilter_vsink_buffersink
=
{
AVFilter
avfilter_vsink_buffersink
=
{
...
@@ -259,13 +274,8 @@ AVFilter avfilter_vsink_buffersink = {
...
@@ -259,13 +274,8 @@ AVFilter avfilter_vsink_buffersink = {
.
uninit
=
vsink_uninit
,
.
uninit
=
vsink_uninit
,
.
query_formats
=
vsink_query_formats
,
.
query_formats
=
vsink_query_formats
,
.
inputs
=
buffersink_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
outputs
=
NULL
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
end_frame
=
end_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
},
{
.
name
=
NULL
}},
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
NULL
}},
};
};
static
int
filter_frame
(
AVFilterLink
*
link
,
AVFilterBufferRef
*
samplesref
)
static
int
filter_frame
(
AVFilterLink
*
link
,
AVFilterBufferRef
*
samplesref
)
...
@@ -328,6 +338,16 @@ static int asink_query_formats(AVFilterContext *ctx)
...
@@ -328,6 +338,16 @@ static int asink_query_formats(AVFilterContext *ctx)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
ffabuffersink_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
},
{
NULL
},
};
AVFilter
avfilter_asink_ffabuffersink
=
{
AVFilter
avfilter_asink_ffabuffersink
=
{
.
name
=
"ffabuffersink"
,
.
name
=
"ffabuffersink"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Buffer audio frames, and make them available to the end of the filter graph."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Buffer audio frames, and make them available to the end of the filter graph."
),
...
@@ -335,13 +355,18 @@ AVFilter avfilter_asink_ffabuffersink = {
...
@@ -335,13 +355,18 @@ AVFilter avfilter_asink_ffabuffersink = {
.
uninit
=
asink_uninit
,
.
uninit
=
asink_uninit
,
.
priv_size
=
sizeof
(
BufferSinkContext
),
.
priv_size
=
sizeof
(
BufferSinkContext
),
.
query_formats
=
asink_query_formats
,
.
query_formats
=
asink_query_formats
,
.
inputs
=
ffabuffersink_inputs
,
.
outputs
=
NULL
,
};
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
static
const
AVFilterPad
abuffersink_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
}
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
{
.
name
=
NULL
}
},
},
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
NULL
}
},
{
NULL
},
};
};
AVFilter
avfilter_asink_abuffersink
=
{
AVFilter
avfilter_asink_abuffersink
=
{
...
@@ -351,13 +376,8 @@ AVFilter avfilter_asink_abuffersink = {
...
@@ -351,13 +376,8 @@ AVFilter avfilter_asink_abuffersink = {
.
uninit
=
asink_uninit
,
.
uninit
=
asink_uninit
,
.
priv_size
=
sizeof
(
BufferSinkContext
),
.
priv_size
=
sizeof
(
BufferSinkContext
),
.
query_formats
=
asink_query_formats
,
.
query_formats
=
asink_query_formats
,
.
inputs
=
abuffersink_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
outputs
=
NULL
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
},
{
.
name
=
NULL
}},
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
NULL
}},
};
};
/* Libav compatibility API */
/* Libav compatibility API */
...
...
libavfilter/src_movie.c
View file @
2d9d4440
...
@@ -612,7 +612,7 @@ AVFilter avfilter_avsrc_movie = {
...
@@ -612,7 +612,7 @@ AVFilter avfilter_avsrc_movie = {
.
query_formats
=
movie_query_formats
,
.
query_formats
=
movie_query_formats
,
.
inputs
=
NULL
,
.
inputs
=
NULL
,
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
NULL
}}
,
.
outputs
=
NULL
,
.
priv_class
=
&
movie_class
,
.
priv_class
=
&
movie_class
,
};
};
...
@@ -636,8 +636,8 @@ AVFilter avfilter_avsrc_amovie = {
...
@@ -636,8 +636,8 @@ AVFilter avfilter_avsrc_amovie = {
.
uninit
=
movie_uninit
,
.
uninit
=
movie_uninit
,
.
query_formats
=
movie_query_formats
,
.
query_formats
=
movie_query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
NULL
}}
,
.
inputs
=
NULL
,
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
NULL
}}
,
.
outputs
=
NULL
,
.
priv_class
=
&
amovie_class
,
.
priv_class
=
&
amovie_class
,
};
};
...
...
libavfilter/vf_alphaextract.c
View file @
2d9d4440
...
@@ -94,24 +94,31 @@ static int draw_slice(AVFilterLink *inlink, int y0, int h, int slice_dir)
...
@@ -94,24 +94,31 @@ static int draw_slice(AVFilterLink *inlink, int y0, int h, int slice_dir)
return
ff_draw_slice
(
inlink
->
dst
->
outputs
[
0
],
y0
,
h
,
slice_dir
);
return
ff_draw_slice
(
inlink
->
dst
->
outputs
[
0
],
y0
,
h
,
slice_dir
);
}
}
static
const
AVFilterPad
alphaextract_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_input
,
.
draw_slice
=
draw_slice
,
.
min_perms
=
AV_PERM_READ
,
},
{
NULL
}
};
static
const
AVFilterPad
alphaextract_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
{
NULL
}
};
AVFilter
avfilter_vf_alphaextract
=
{
AVFilter
avfilter_vf_alphaextract
=
{
.
name
=
"alphaextract"
,
.
name
=
"alphaextract"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Extract an alpha channel as a "
.
description
=
NULL_IF_CONFIG_SMALL
(
"Extract an alpha channel as a "
"grayscale image component."
),
"grayscale image component."
),
.
priv_size
=
sizeof
(
AlphaExtractContext
),
.
priv_size
=
sizeof
(
AlphaExtractContext
),
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
alphaextract_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{
.
outputs
=
alphaextract_outputs
,
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_input
,
.
draw_slice
=
draw_slice
,
.
min_perms
=
AV_PERM_READ
},
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
{
.
name
=
NULL
}
},
};
};
libavfilter/vf_alphamerge.c
View file @
2d9d4440
...
@@ -176,36 +176,44 @@ static int request_frame(AVFilterLink *outlink)
...
@@ -176,36 +176,44 @@ static int request_frame(AVFilterLink *outlink)
return
0
;
return
0
;
}
}
AVFilter
avfilter_vf_alphamerge
=
{
static
const
AVFilterPad
alphamerge_inputs
[]
=
{
.
name
=
"alphamerge"
,
{
.
description
=
NULL_IF_CONFIG_SMALL
(
"Copy the luma value of the second "
.
name
=
"main"
,
"input into the alpha channel of the first input."
),
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
AlphaMergeContext
),
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"main"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_input_main
,
.
config_props
=
config_input_main
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
start_frame
=
start_frame
,
.
start_frame
=
start_frame
,
.
draw_slice
=
draw_slice
,
.
draw_slice
=
draw_slice
,
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_WRITE
|
AV_PERM_PRESERVE
},
.
min_perms
=
AV_PERM_READ
|
AV_PERM_WRITE
|
AV_PERM_PRESERVE
,
{
.
name
=
"alpha"
,
},{
.
name
=
"alpha"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
start_frame
=
start_frame
,
.
start_frame
=
start_frame
,
.
draw_slice
=
draw_slice
,
.
draw_slice
=
draw_slice
,
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
},
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
{
.
name
=
NULL
}
},
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
NULL
}
{
.
name
=
"default"
,
};
static
const
AVFilterPad
alphamerge_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_output
,
.
config_props
=
config_output
,
.
request_frame
=
request_frame
},
.
request_frame
=
request_frame
,
{
.
name
=
NULL
}
},
},
{
NULL
}
};
AVFilter
avfilter_vf_alphamerge
=
{
.
name
=
"alphamerge"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Copy the luma value of the second "
"input into the alpha channel of the first input."
),
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
AlphaMergeContext
),
.
query_formats
=
query_formats
,
.
inputs
=
alphamerge_inputs
,
.
outputs
=
alphamerge_outputs
,
};
};
libavfilter/vf_ass.c
View file @
2d9d4440
...
@@ -200,29 +200,36 @@ static int end_frame(AVFilterLink *inlink)
...
@@ -200,29 +200,36 @@ static int end_frame(AVFilterLink *inlink)
return
ff_end_frame
(
outlink
);
return
ff_end_frame
(
outlink
);
}
}
AVFilter
avfilter_vf_ass
=
{
static
const
AVFilterPad
ass_inputs
[]
=
{
.
name
=
"ass"
,
{
.
description
=
NULL_IF_CONFIG_SMALL
(
"Render subtitles onto input video using the libass library."
),
.
name
=
"default"
,
.
priv_size
=
sizeof
(
AssContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
start_frame
=
ff_null_start_frame
,
.
start_frame
=
ff_null_start_frame
,
.
draw_slice
=
null_draw_slice
,
.
draw_slice
=
null_draw_slice
,
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
.
config_props
=
config_input
,
.
config_props
=
config_input
,
.
min_perms
=
AV_PERM_WRITE
|
AV_PERM_READ
},
.
min_perms
=
AV_PERM_WRITE
|
AV_PERM_READ
,
{
.
name
=
NULL
}
},
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
NULL
}
{
.
name
=
"default"
,
};
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
{
.
name
=
NULL
}
static
const
AVFilterPad
ass_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
},
{
NULL
}
};
AVFilter
avfilter_vf_ass
=
{
.
name
=
"ass"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Render subtitles onto input video using the libass library."
),
.
priv_size
=
sizeof
(
AssContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
ass_inputs
,
.
outputs
=
ass_outputs
,
.
priv_class
=
&
ass_class
,
.
priv_class
=
&
ass_class
,
};
};
libavfilter/vf_bbox.c
View file @
2d9d4440
...
@@ -89,26 +89,32 @@ static int end_frame(AVFilterLink *inlink)
...
@@ -89,26 +89,32 @@ static int end_frame(AVFilterLink *inlink)
return
ff_end_frame
(
inlink
->
dst
->
outputs
[
0
]);
return
ff_end_frame
(
inlink
->
dst
->
outputs
[
0
]);
}
}
AVFilter
avfilter_vf_bbox
=
{
static
const
AVFilterPad
bbox_inputs
[]
=
{
.
name
=
"bbox"
,
{
.
description
=
NULL_IF_CONFIG_SMALL
(
"Compute bounding box for each frame."
),
.
name
=
"default"
,
.
priv_size
=
sizeof
(
BBoxContext
),
.
query_formats
=
query_formats
,
.
init
=
init
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
start_frame
=
ff_null_start_frame
,
.
start_frame
=
ff_null_start_frame
,
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
.
min_perms
=
AV_PERM_READ
,
},
.
min_perms
=
AV_PERM_READ
,
{
.
name
=
NULL
}
},
},
{
NULL
}
};
.
outputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
bbox_outputs
[]
=
{
{
.
name
=
"default"
,
{
.
type
=
AVMEDIA_TYPE_VIDEO
}
,
.
name
=
"default"
,
{
.
name
=
NULL
}
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
},
{
NULL
}
};
AVFilter
avfilter_vf_bbox
=
{
.
name
=
"bbox"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Compute bounding box for each frame."
),
.
priv_size
=
sizeof
(
BBoxContext
),
.
query_formats
=
query_formats
,
.
init
=
init
,
.
inputs
=
bbox_inputs
,
.
outputs
=
bbox_outputs
,
};
};
libavfilter/vf_blackdetect.c
View file @
2d9d4440
...
@@ -197,29 +197,35 @@ static int end_frame(AVFilterLink *inlink)
...
@@ -197,29 +197,35 @@ static int end_frame(AVFilterLink *inlink)
return
ff_end_frame
(
inlink
->
dst
->
outputs
[
0
]);
return
ff_end_frame
(
inlink
->
dst
->
outputs
[
0
]);
}
}
AVFilter
avfilter_vf_blackdetect
=
{
static
const
AVFilterPad
blackdetect_inputs
[]
=
{
.
name
=
"blackdetect"
,
{
.
description
=
NULL_IF_CONFIG_SMALL
(
"Detect video intervals that are (almost) black."
),
.
name
=
"default"
,
.
priv_size
=
sizeof
(
BlackDetectContext
),
.
init
=
init
,
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_input
,
.
config_props
=
config_input
,
.
draw_slice
=
draw_slice
,
.
draw_slice
=
draw_slice
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
start_frame
=
ff_null_start_frame
,
.
start_frame
=
ff_null_start_frame
,
.
end_frame
=
end_frame
,
},
.
end_frame
=
end_frame
,
{
.
name
=
NULL
}
},
},
{
NULL
}
};
.
outputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
blackdetect_outputs
[]
=
{
{
.
name
=
"default"
,
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
},
.
request_frame
=
request_frame
,
{
.
name
=
NULL
}
},
},
{
NULL
}
};
AVFilter
avfilter_vf_blackdetect
=
{
.
name
=
"blackdetect"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Detect video intervals that are (almost) black."
),
.
priv_size
=
sizeof
(
BlackDetectContext
),
.
init
=
init
,
.
query_formats
=
query_formats
,
.
inputs
=
blackdetect_inputs
,
.
outputs
=
blackdetect_outputs
,
.
priv_class
=
&
blackdetect_class
,
.
priv_class
=
&
blackdetect_class
,
};
};
libavfilter/vf_colormatrix.c
View file @
2d9d4440
...
@@ -369,25 +369,35 @@ static int end_frame(AVFilterLink *link)
...
@@ -369,25 +369,35 @@ static int end_frame(AVFilterLink *link)
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
AVFilter
avfilter_vf_colormatrix
=
{
static
const
AVFilterPad
colormatrix_inputs
[]
=
{
.
name
=
"colormatrix"
,
{
.
description
=
NULL_IF_CONFIG_SMALL
(
"Color matrix conversion"
),
.
name
=
"default"
,
.
priv_size
=
sizeof
(
ColorMatrixContext
),
.
init
=
init
,
.
query_formats
=
query_formats
,
.
inputs
=
(
AVFilterPad
[])
{{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_input
,
.
config_props
=
config_input
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_WRITE
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_WRITE
,
.
start_frame
=
start_frame
,
.
start_frame
=
start_frame
,
.
get_video_buffer
=
get_video_buffer
,
.
get_video_buffer
=
get_video_buffer
,
.
draw_slice
=
null_draw_slice
,
.
draw_slice
=
null_draw_slice
,
.
end_frame
=
end_frame
,
},
.
end_frame
=
end_frame
,
{
.
name
=
NULL
}},
},
{
NULL
}
};
.
outputs
=
(
AVFilterPad
[])
{{
.
name
=
"default"
,
static
const
AVFilterPad
colormatrix_outputs
[]
=
{
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
{
{
.
name
=
NULL
}},
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
{
NULL
}
};
AVFilter
avfilter_vf_colormatrix
=
{
.
name
=
"colormatrix"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Color matrix conversion"
),
.
priv_size
=
sizeof
(
ColorMatrixContext
),
.
init
=
init
,
.
query_formats
=
query_formats
,
.
inputs
=
colormatrix_inputs
,
.
outputs
=
colormatrix_outputs
,
};
};
libavfilter/vf_decimate.c
View file @
2d9d4440
...
@@ -235,16 +235,7 @@ static int request_frame(AVFilterLink *outlink)
...
@@ -235,16 +235,7 @@ static int request_frame(AVFilterLink *outlink)
return
ret
;
return
ret
;
}
}
AVFilter
avfilter_vf_decimate
=
{
static
const
AVFilterPad
decimate_inputs
[]
=
{
.
name
=
"decimate"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Remove near-duplicate frames."
),
.
init
=
init
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
DecimateContext
),
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
...
@@ -255,14 +246,26 @@ AVFilter avfilter_vf_decimate = {
...
@@ -255,14 +246,26 @@ AVFilter avfilter_vf_decimate = {
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
.
outputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
decimate_outputs
[]
=
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
request_frame
=
request_frame
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
AVFilter
avfilter_vf_decimate
=
{
.
name
=
"decimate"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Remove near-duplicate frames."
),
.
init
=
init
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
DecimateContext
),
.
query_formats
=
query_formats
,
.
inputs
=
decimate_inputs
,
.
outputs
=
decimate_outputs
,
};
};
libavfilter/vf_deshake.c
View file @
2d9d4440
...
@@ -538,6 +538,26 @@ static int draw_slice(AVFilterLink *link, int y, int h, int slice_dir)
...
@@ -538,6 +538,26 @@ static int draw_slice(AVFilterLink *link, int y, int h, int slice_dir)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
deshake_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
draw_slice
=
draw_slice
,
.
end_frame
=
end_frame
,
.
config_props
=
config_props
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
},
{
NULL
}
};
static
const
AVFilterPad
deshake_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
{
NULL
}
};
AVFilter
avfilter_vf_deshake
=
{
AVFilter
avfilter_vf_deshake
=
{
.
name
=
"deshake"
,
.
name
=
"deshake"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Stabilize shaky video."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Stabilize shaky video."
),
...
@@ -547,16 +567,6 @@ AVFilter avfilter_vf_deshake = {
...
@@ -547,16 +567,6 @@ AVFilter avfilter_vf_deshake = {
.
init
=
init
,
.
init
=
init
,
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
deshake_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
outputs
=
deshake_outputs
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
draw_slice
=
draw_slice
,
.
end_frame
=
end_frame
,
.
config_props
=
config_props
,
.
min_perms
=
AV_PERM_READ
|
AV_PERM_PRESERVE
,
},
{
.
name
=
NULL
}},
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
{
.
name
=
NULL
}},
};
};
libavfilter/vf_edgedetect.c
View file @
2d9d4440
...
@@ -299,29 +299,32 @@ static av_cold void uninit(AVFilterContext *ctx)
...
@@ -299,29 +299,32 @@ static av_cold void uninit(AVFilterContext *ctx)
av_freep
(
&
edgedetect
->
directions
);
av_freep
(
&
edgedetect
->
directions
);
}
}
AVFilter
avfilter_vf_edgedetect
=
{
static
const
AVFilterPad
edgedetect_inputs
[]
=
{
.
name
=
"edgedetect"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Detect and draw edge."
),
.
priv_size
=
sizeof
(
EdgeDetectContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_props
,
.
config_props
=
config_props
,
.
filter_frame
=
filter_frame
,
.
filter_frame
=
filter_frame
,
.
min_perms
=
AV_PERM_READ
.
min_perms
=
AV_PERM_READ
,
},
{
.
name
=
NULL
}
},
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
NULL
}
};
static
const
AVFilterPad
edgedetect_outputs
[]
=
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
AVFilter
avfilter_vf_edgedetect
=
{
.
name
=
"edgedetect"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Detect and draw edge."
),
.
priv_size
=
sizeof
(
EdgeDetectContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
edgedetect_inputs
,
.
outputs
=
edgedetect_outputs
,
};
};
libavfilter/vf_framestep.c
View file @
2d9d4440
...
@@ -111,13 +111,7 @@ static int request_frame(AVFilterLink *outlink)
...
@@ -111,13 +111,7 @@ static int request_frame(AVFilterLink *outlink)
return
ret
;
return
ret
;
}
}
AVFilter
avfilter_vf_framestep
=
{
static
const
AVFilterPad
framestep_inputs
[]
=
{
.
name
=
"framestep"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Select one frame every N frames."
),
.
init
=
init
,
.
priv_size
=
sizeof
(
FrameStepContext
),
.
inputs
=
(
const
AVFilterPad
[])
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
...
@@ -126,15 +120,24 @@ AVFilter avfilter_vf_framestep = {
...
@@ -126,15 +120,24 @@ AVFilter avfilter_vf_framestep = {
.
draw_slice
=
draw_slice
,
.
draw_slice
=
draw_slice
,
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
.
outputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
framestep_outputs
[]
=
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_output_props
,
.
config_props
=
config_output_props
,
.
request_frame
=
request_frame
,
.
request_frame
=
request_frame
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
AVFilter
avfilter_vf_framestep
=
{
.
name
=
"framestep"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Select one frame every N frames."
),
.
init
=
init
,
.
priv_size
=
sizeof
(
FrameStepContext
),
.
inputs
=
framestep_inputs
,
.
outputs
=
framestep_outputs
,
};
};
libavfilter/vf_hue.c
View file @
2d9d4440
...
@@ -396,18 +396,7 @@ static int process_command(AVFilterContext *ctx, const char *cmd, const char *ar
...
@@ -396,18 +396,7 @@ static int process_command(AVFilterContext *ctx, const char *cmd, const char *ar
return
AVERROR
(
ENOSYS
);
return
AVERROR
(
ENOSYS
);
}
}
AVFilter
avfilter_vf_hue
=
{
static
const
AVFilterPad
hue_inputs
[]
=
{
.
name
=
"hue"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Adjust the hue and saturation of the input video."
),
.
priv_size
=
sizeof
(
HueContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
process_command
=
process_command
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
...
@@ -416,14 +405,28 @@ AVFilter avfilter_vf_hue = {
...
@@ -416,14 +405,28 @@ AVFilter avfilter_vf_hue = {
.
config_props
=
config_props
,
.
config_props
=
config_props
,
.
min_perms
=
AV_PERM_READ
,
.
min_perms
=
AV_PERM_READ
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
.
outputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
hue_outputs
[]
=
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
AVFilter
avfilter_vf_hue
=
{
.
name
=
"hue"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Adjust the hue and saturation of the input video."
),
.
priv_size
=
sizeof
(
HueContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
process_command
=
process_command
,
.
inputs
=
hue_inputs
,
.
outputs
=
hue_outputs
,
.
priv_class
=
&
hue_class
,
.
priv_class
=
&
hue_class
,
};
};
libavfilter/vf_idet.c
View file @
2d9d4440
...
@@ -310,27 +310,37 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
...
@@ -310,27 +310,37 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
AVFilter
avfilter_vf_idet
=
{
static
const
AVFilterPad
idet_inputs
[]
=
{
.
name
=
"idet"
,
{
.
description
=
NULL_IF_CONFIG_SMALL
(
"Interlace detect Filter."
),
.
name
=
"default"
,
.
priv_size
=
sizeof
(
IDETContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
start_frame
=
start_frame
,
.
start_frame
=
start_frame
,
.
draw_slice
=
null_draw_slice
,
.
draw_slice
=
null_draw_slice
,
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
.
min_perms
=
AV_PERM_PRESERVE
},
.
min_perms
=
AV_PERM_PRESERVE
,
{
.
name
=
NULL
}},
},
{
NULL
}
};
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
static
const
AVFilterPad
idet_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
rej_perms
=
AV_PERM_WRITE
,
.
rej_perms
=
AV_PERM_WRITE
,
.
poll_frame
=
poll_frame
,
.
poll_frame
=
poll_frame
,
.
request_frame
=
request_frame
,
},
.
request_frame
=
request_frame
,
{
.
name
=
NULL
}},
},
{
NULL
}
};
AVFilter
avfilter_vf_idet
=
{
.
name
=
"idet"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Interlace detect Filter."
),
.
priv_size
=
sizeof
(
IDETContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
idet_inputs
,
.
outputs
=
idet_outputs
,
};
};
libavfilter/vf_mp.c
View file @
2d9d4440
...
@@ -863,25 +863,36 @@ static int end_frame(AVFilterLink *inlink)
...
@@ -863,25 +863,36 @@ static int end_frame(AVFilterLink *inlink)
return
0
;
return
0
;
}
}
AVFilter
avfilter_vf_mp
=
{
static
const
AVFilterPad
mp_inputs
[]
=
{
.
name
=
"mp"
,
{
.
description
=
NULL_IF_CONFIG_SMALL
(
"Apply a libmpcodecs filter to the input video."
),
.
name
=
"default"
,
.
init
=
init
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
MPContext
),
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
start_frame
=
start_frame
,
.
start_frame
=
start_frame
,
.
draw_slice
=
null_draw_slice
,
.
draw_slice
=
null_draw_slice
,
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
.
config_props
=
config_inprops
,
.
config_props
=
config_inprops
,
.
min_perms
=
AV_PERM_READ
,
},
.
min_perms
=
AV_PERM_READ
,
{
.
name
=
NULL
}},
},
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
{
NULL
}
};
static
const
AVFilterPad
mp_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
request_frame
=
request_frame
,
.
config_props
=
config_outprops
,
},
.
config_props
=
config_outprops
,
{
.
name
=
NULL
}},
},
{
NULL
}
};
AVFilter
avfilter_vf_mp
=
{
.
name
=
"mp"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Apply a libmpcodecs filter to the input video."
),
.
init
=
init
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
MPContext
),
.
query_formats
=
query_formats
,
.
inputs
=
mp_inputs
,
.
outputs
=
mp_outputs
,
};
};
libavfilter/vf_removelogo.c
View file @
2d9d4440
...
@@ -535,28 +535,35 @@ static void uninit(AVFilterContext *ctx)
...
@@ -535,28 +535,35 @@ static void uninit(AVFilterContext *ctx)
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
AVFilter
avfilter_vf_removelogo
=
{
static
const
AVFilterPad
removelogo_inputs
[]
=
{
.
name
=
"removelogo"
,
{
.
description
=
NULL_IF_CONFIG_SMALL
(
"Remove a TV logo based on a mask image."
),
.
name
=
"default"
,
.
priv_size
=
sizeof
(
RemovelogoContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
config_props
=
config_props_input
,
.
config_props
=
config_props_input
,
.
draw_slice
=
null_draw_slice
,
.
draw_slice
=
null_draw_slice
,
.
start_frame
=
start_frame
,
.
start_frame
=
start_frame
,
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
.
min_perms
=
AV_PERM_WRITE
|
AV_PERM_READ
},
.
min_perms
=
AV_PERM_WRITE
|
AV_PERM_READ
,
{
.
name
=
NULL
}
},
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
NULL
}
{
.
name
=
"default"
,
};
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
{
.
name
=
NULL
}
static
const
AVFilterPad
removelogo_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
},
{
NULL
}
};
AVFilter
avfilter_vf_removelogo
=
{
.
name
=
"removelogo"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Remove a TV logo based on a mask image."
),
.
priv_size
=
sizeof
(
RemovelogoContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
removelogo_inputs
,
.
outputs
=
removelogo_outputs
,
};
};
libavfilter/vf_setfield.c
View file @
2d9d4440
...
@@ -83,23 +83,30 @@ static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
...
@@ -83,23 +83,30 @@ static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
return
ff_start_frame
(
inlink
->
dst
->
outputs
[
0
],
outpicref
);
return
ff_start_frame
(
inlink
->
dst
->
outputs
[
0
],
outpicref
);
}
}
static
const
AVFilterPad
setfield_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
start_frame
=
start_frame
,
},
{
NULL
}
};
static
const
AVFilterPad
setfield_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
{
NULL
}
};
AVFilter
avfilter_vf_setfield
=
{
AVFilter
avfilter_vf_setfield
=
{
.
name
=
"setfield"
,
.
name
=
"setfield"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Force field for the output video frame."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Force field for the output video frame."
),
.
init
=
init
,
.
init
=
init
,
.
priv_size
=
sizeof
(
SetFieldContext
),
.
priv_size
=
sizeof
(
SetFieldContext
),
.
inputs
=
setfield_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{
.
outputs
=
setfield_outputs
,
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
start_frame
=
start_frame
,
},
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
{
.
name
=
NULL
}
},
};
};
libavfilter/vf_smartblur.c
View file @
2d9d4440
...
@@ -277,17 +277,7 @@ static int end_frame(AVFilterLink *inlink)
...
@@ -277,17 +277,7 @@ static int end_frame(AVFilterLink *inlink)
return
ff_end_frame
(
outlink
);
return
ff_end_frame
(
outlink
);
}
}
AVFilter
avfilter_vf_smartblur
=
{
static
const
AVFilterPad
smartblur_inputs
[]
=
{
.
name
=
"smartblur"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Blur the input video without impacting the outlines."
),
.
priv_size
=
sizeof
(
SmartblurContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
...
@@ -295,13 +285,26 @@ AVFilter avfilter_vf_smartblur = {
...
@@ -295,13 +285,26 @@ AVFilter avfilter_vf_smartblur = {
.
config_props
=
config_props
,
.
config_props
=
config_props
,
.
min_perms
=
AV_PERM_READ
,
.
min_perms
=
AV_PERM_READ
,
},
},
{
.
name
=
NULL
}
{
NULL
}
},
};
.
outputs
=
(
const
AVFilterPad
[])
{
static
const
AVFilterPad
smartblur_outputs
[]
=
{
{
{
.
name
=
"default"
,
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
},
{
.
name
=
NULL
}
{
NULL
}
}
};
AVFilter
avfilter_vf_smartblur
=
{
.
name
=
"smartblur"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Blur the input video without impacting the outlines."
),
.
priv_size
=
sizeof
(
SmartblurContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
smartblur_inputs
,
.
outputs
=
smartblur_outputs
,
};
};
libavfilter/vf_super2xsai.c
View file @
2d9d4440
...
@@ -318,25 +318,32 @@ static int end_frame(AVFilterLink *inlink)
...
@@ -318,25 +318,32 @@ static int end_frame(AVFilterLink *inlink)
return
ff_end_frame
(
outlink
);
return
ff_end_frame
(
outlink
);
}
}
AVFilter
avfilter_vf_super2xsai
=
{
static
const
AVFilterPad
super2xsai_inputs
[]
=
{
.
name
=
"super2xsai"
,
{
.
description
=
NULL_IF_CONFIG_SMALL
(
"Scale the input by 2x using the Super2xSaI pixel art algorithm."
),
.
name
=
"default"
,
.
priv_size
=
sizeof
(
Super2xSaIContext
),
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_input
,
.
config_props
=
config_input
,
.
draw_slice
=
null_draw_slice
,
.
draw_slice
=
null_draw_slice
,
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
.
min_perms
=
AV_PERM_READ
},
.
min_perms
=
AV_PERM_READ
,
{
.
name
=
NULL
}
},
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
NULL
}
{
.
name
=
"default"
,
};
static
const
AVFilterPad
super2xsai_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_output
},
.
config_props
=
config_output
,
{
.
name
=
NULL
}
},
},
{
NULL
}
};
AVFilter
avfilter_vf_super2xsai
=
{
.
name
=
"super2xsai"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Scale the input by 2x using the Super2xSaI pixel art algorithm."
),
.
priv_size
=
sizeof
(
Super2xSaIContext
),
.
query_formats
=
query_formats
,
.
inputs
=
super2xsai_inputs
,
.
outputs
=
super2xsai_outputs
,
};
};
libavfilter/vf_swapuv.c
View file @
2d9d4440
...
@@ -74,22 +74,29 @@ static int query_formats(AVFilterContext *ctx)
...
@@ -74,22 +74,29 @@ static int query_formats(AVFilterContext *ctx)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
swapuv_inputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
get_video_buffer
=
get_video_buffer
,
.
start_frame
=
start_frame
,
},
{
NULL
}
};
static
const
AVFilterPad
swapuv_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
{
NULL
}
};
AVFilter
avfilter_vf_swapuv
=
{
AVFilter
avfilter_vf_swapuv
=
{
.
name
=
"swapuv"
,
.
name
=
"swapuv"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Swap U and V components."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Swap U and V components."
),
.
priv_size
=
0
,
.
priv_size
=
0
,
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
swapuv_inputs
,
.
inputs
=
(
const
AVFilterPad
[])
{
.
outputs
=
swapuv_outputs
,
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
get_video_buffer
=
get_video_buffer
,
.
start_frame
=
start_frame
,
},
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
},
{
.
name
=
NULL
}
},
};
};
libavfilter/vf_thumbnail.c
View file @
2d9d4440
...
@@ -219,28 +219,36 @@ static int query_formats(AVFilterContext *ctx)
...
@@ -219,28 +219,36 @@ static int query_formats(AVFilterContext *ctx)
return
0
;
return
0
;
}
}
AVFilter
avfilter_vf_thumbnail
=
{
static
const
AVFilterPad
thumbnail_inputs
[]
=
{
.
name
=
"thumbnail"
,
{
.
description
=
NULL_IF_CONFIG_SMALL
(
"Select the most representative frame in a given sequence of consecutive frames."
),
.
name
=
"default"
,
.
priv_size
=
sizeof
(
ThumbContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
get_video_buffer
=
ff_null_get_video_buffer
,
.
min_perms
=
AV_PERM_PRESERVE
,
.
min_perms
=
AV_PERM_PRESERVE
,
.
start_frame
=
null_start_frame
,
.
start_frame
=
null_start_frame
,
.
draw_slice
=
draw_slice
,
.
draw_slice
=
draw_slice
,
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
},{
.
name
=
NULL
}
},
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
NULL
}
{
.
name
=
"default"
,
};
static
const
AVFilterPad
thumbnail_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
request_frame
=
request_frame
,
.
poll_frame
=
poll_frame
,
.
poll_frame
=
poll_frame
,
},{
.
name
=
NULL
}
},
},
{
NULL
}
};
AVFilter
avfilter_vf_thumbnail
=
{
.
name
=
"thumbnail"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Select the most representative frame in a given sequence of consecutive frames."
),
.
priv_size
=
sizeof
(
ThumbContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
thumbnail_inputs
,
.
outputs
=
thumbnail_outputs
,
};
};
libavfilter/vf_tile.c
View file @
2d9d4440
...
@@ -240,28 +240,35 @@ static int request_frame(AVFilterLink *outlink)
...
@@ -240,28 +240,35 @@ static int request_frame(AVFilterLink *outlink)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
tile_inputs
[]
=
{
AVFilter
avfilter_vf_tile
=
{
{
.
name
=
"tile"
,
.
name
=
"default"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Tile several successive frames together."
),
.
init
=
init
,
.
query_formats
=
query_formats
,
.
priv_size
=
sizeof
(
TileContext
),
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
start_frame
=
start_frame
,
.
start_frame
=
start_frame
,
.
draw_slice
=
draw_slice
,
.
draw_slice
=
draw_slice
,
.
end_frame
=
end_frame
,
.
end_frame
=
end_frame
,
.
min_perms
=
AV_PERM_READ
,
},
.
min_perms
=
AV_PERM_READ
,
{
.
name
=
NULL
}
},
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
NULL
}
{
.
name
=
"default"
,
};
static
const
AVFilterPad
tile_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_props
,
.
config_props
=
config_props
,
.
request_frame
=
request_frame
},
.
request_frame
=
request_frame
,
{
.
name
=
NULL
}
},
},
{
NULL
}
};
AVFilter
avfilter_vf_tile
=
{
.
name
=
"tile"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Tile several successive frames together."
),
.
init
=
init
,
.
query_formats
=
query_formats
,
.
priv_size
=
sizeof
(
TileContext
),
.
inputs
=
tile_inputs
,
.
outputs
=
tile_outputs
,
.
priv_class
=
&
tile_class
,
.
priv_class
=
&
tile_class
,
};
};
libavfilter/vf_tinterlace.c
View file @
2d9d4440
...
@@ -351,27 +351,34 @@ static int request_frame(AVFilterLink *outlink)
...
@@ -351,27 +351,34 @@ static int request_frame(AVFilterLink *outlink)
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
AVFilter
avfilter_vf_tinterlace
=
{
static
const
AVFilterPad
tinterlace_inputs
[]
=
{
.
name
=
"tinterlace"
,
{
.
description
=
NULL_IF_CONFIG_SMALL
(
"Perform temporal field interlacing."
),
.
name
=
"default"
,
.
priv_size
=
sizeof
(
TInterlaceContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
start_frame
=
start_frame
,
.
start_frame
=
start_frame
,
.
draw_slice
=
null_draw_slice
,
.
draw_slice
=
null_draw_slice
,
.
end_frame
=
end_frame
,
},
.
end_frame
=
end_frame
,
{
.
name
=
NULL
}
},
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
NULL
}
{
.
name
=
"default"
,
};
static
const
AVFilterPad
tinterlace_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
config_props
=
config_out_props
,
.
config_props
=
config_out_props
,
.
request_frame
=
request_frame
},
.
request_frame
=
request_frame
,
{
.
name
=
NULL
}
},
},
{
NULL
}
};
AVFilter
avfilter_vf_tinterlace
=
{
.
name
=
"tinterlace"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Perform temporal field interlacing."
),
.
priv_size
=
sizeof
(
TInterlaceContext
),
.
init
=
init
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
inputs
=
tinterlace_inputs
,
.
outputs
=
tinterlace_outputs
,
};
};
libavfilter/vsrc_cellauto.c
View file @
2d9d4440
...
@@ -335,6 +335,16 @@ static int query_formats(AVFilterContext *ctx)
...
@@ -335,6 +335,16 @@ static int query_formats(AVFilterContext *ctx)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
cellauto_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
config_props
,
},
{
NULL
}
};
AVFilter
avfilter_vsrc_cellauto
=
{
AVFilter
avfilter_vsrc_cellauto
=
{
.
name
=
"cellauto"
,
.
name
=
"cellauto"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Create pattern generated by an elementary cellular automaton."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Create pattern generated by an elementary cellular automaton."
),
...
@@ -342,16 +352,7 @@ AVFilter avfilter_vsrc_cellauto = {
...
@@ -342,16 +352,7 @@ AVFilter avfilter_vsrc_cellauto = {
.
init
=
init
,
.
init
=
init
,
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
NULL
,
.
inputs
=
(
const
AVFilterPad
[])
{
.
outputs
=
cellauto_outputs
,
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
config_props
},
{
.
name
=
NULL
}
},
.
priv_class
=
&
cellauto_class
,
.
priv_class
=
&
cellauto_class
,
};
};
libavfilter/vsrc_life.c
View file @
2d9d4440
...
@@ -464,6 +464,16 @@ static int query_formats(AVFilterContext *ctx)
...
@@ -464,6 +464,16 @@ static int query_formats(AVFilterContext *ctx)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
life_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
config_props
,
},
{
NULL
}
};
AVFilter
avfilter_vsrc_life
=
{
AVFilter
avfilter_vsrc_life
=
{
.
name
=
"life"
,
.
name
=
"life"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Create life."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Create life."
),
...
@@ -471,16 +481,7 @@ AVFilter avfilter_vsrc_life = {
...
@@ -471,16 +481,7 @@ AVFilter avfilter_vsrc_life = {
.
init
=
init
,
.
init
=
init
,
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
NULL
,
.
inputs
=
(
const
AVFilterPad
[])
{
.
outputs
=
life_outputs
,
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
config_props
},
{
.
name
=
NULL
}
},
.
priv_class
=
&
life_class
,
.
priv_class
=
&
life_class
,
};
};
libavfilter/vsrc_mandelbrot.c
View file @
2d9d4440
...
@@ -396,6 +396,16 @@ static int request_frame(AVFilterLink *link)
...
@@ -396,6 +396,16 @@ static int request_frame(AVFilterLink *link)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
mandelbrot_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
config_props
,
},
{
NULL
},
};
AVFilter
avfilter_vsrc_mandelbrot
=
{
AVFilter
avfilter_vsrc_mandelbrot
=
{
.
name
=
"mandelbrot"
,
.
name
=
"mandelbrot"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Render a Mandelbrot fractal."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Render a Mandelbrot fractal."
),
...
@@ -405,12 +415,6 @@ AVFilter avfilter_vsrc_mandelbrot = {
...
@@ -405,12 +415,6 @@ AVFilter avfilter_vsrc_mandelbrot = {
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
NULL
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
NULL
}},
.
outputs
=
mandelbrot_outputs
,
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
config_props
},
{
.
name
=
NULL
}},
};
};
libavfilter/vsrc_mptestsrc.c
View file @
2d9d4440
...
@@ -364,6 +364,16 @@ static int request_frame(AVFilterLink *outlink)
...
@@ -364,6 +364,16 @@ static int request_frame(AVFilterLink *outlink)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
mptestsrc_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
config_props
,
},
{
NULL
}
};
AVFilter
avfilter_vsrc_mptestsrc
=
{
AVFilter
avfilter_vsrc_mptestsrc
=
{
.
name
=
"mptestsrc"
,
.
name
=
"mptestsrc"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Generate various test pattern."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Generate various test pattern."
),
...
@@ -372,11 +382,6 @@ AVFilter avfilter_vsrc_mptestsrc = {
...
@@ -372,11 +382,6 @@ AVFilter avfilter_vsrc_mptestsrc = {
.
query_formats
=
query_formats
,
.
query_formats
=
query_formats
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
NULL
}},
.
inputs
=
NULL
,
.
outputs
=
mptestsrc_outputs
,
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
config_props
,
},
{
.
name
=
NULL
}},
};
};
libavfilter/vsrc_testsrc.c
View file @
2d9d4440
...
@@ -256,6 +256,16 @@ static int color_config_props(AVFilterLink *inlink)
...
@@ -256,6 +256,16 @@ static int color_config_props(AVFilterLink *inlink)
return
0
;
return
0
;
}
}
static
const
AVFilterPad
color_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
color_config_props
,
},
{
NULL
}
};
AVFilter
avfilter_vsrc_color
=
{
AVFilter
avfilter_vsrc_color
=
{
.
name
=
"color"
,
.
name
=
"color"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Provide an uniformly colored input."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Provide an uniformly colored input."
),
...
@@ -265,21 +275,8 @@ AVFilter avfilter_vsrc_color = {
...
@@ -265,21 +275,8 @@ AVFilter avfilter_vsrc_color = {
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
query_formats
=
color_query_formats
,
.
query_formats
=
color_query_formats
,
.
inputs
=
NULL
,
.
inputs
=
(
const
AVFilterPad
[])
{
.
outputs
=
color_outputs
,
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
color_config_props
,
},
{
.
name
=
NULL
}
},
.
priv_class
=
&
color_class
,
.
priv_class
=
&
color_class
,
};
};
...
@@ -301,19 +298,24 @@ static av_cold int nullsrc_init(AVFilterContext *ctx, const char *args)
...
@@ -301,19 +298,24 @@ static av_cold int nullsrc_init(AVFilterContext *ctx, const char *args)
return
init
(
ctx
,
args
);
return
init
(
ctx
,
args
);
}
}
static
const
AVFilterPad
nullsrc_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
config_props
,
},
{
NULL
},
};
AVFilter
avfilter_vsrc_nullsrc
=
{
AVFilter
avfilter_vsrc_nullsrc
=
{
.
name
=
"nullsrc"
,
.
name
=
"nullsrc"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Null video source, return unprocessed video frames."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Null video source, return unprocessed video frames."
),
.
init
=
nullsrc_init
,
.
init
=
nullsrc_init
,
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
priv_size
=
sizeof
(
TestSourceContext
),
.
priv_size
=
sizeof
(
TestSourceContext
),
.
inputs
=
NULL
,
.
inputs
=
(
const
AVFilterPad
[])
{{
.
name
=
NULL
}},
.
outputs
=
nullsrc_outputs
,
.
outputs
=
(
const
AVFilterPad
[])
{{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
config_props
,
},
{
.
name
=
NULL
}},
.
priv_class
=
&
nullsrc_class
,
.
priv_class
=
&
nullsrc_class
,
};
};
...
@@ -767,6 +769,16 @@ static int smptebars_config_props(AVFilterLink *outlink)
...
@@ -767,6 +769,16 @@ static int smptebars_config_props(AVFilterLink *outlink)
return
config_props
(
outlink
);
return
config_props
(
outlink
);
}
}
static
const
AVFilterPad
smptebars_outputs
[]
=
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
smptebars_config_props
,
},
{
NULL
}
};
AVFilter
avfilter_vsrc_smptebars
=
{
AVFilter
avfilter_vsrc_smptebars
=
{
.
name
=
"smptebars"
,
.
name
=
"smptebars"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Generate SMPTE color bars."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Generate SMPTE color bars."
),
...
@@ -775,21 +787,8 @@ AVFilter avfilter_vsrc_smptebars = {
...
@@ -775,21 +787,8 @@ AVFilter avfilter_vsrc_smptebars = {
.
uninit
=
uninit
,
.
uninit
=
uninit
,
.
query_formats
=
smptebars_query_formats
,
.
query_formats
=
smptebars_query_formats
,
.
inputs
=
NULL
,
.
inputs
=
(
const
AVFilterPad
[])
{
.
outputs
=
smptebars_outputs
,
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_VIDEO
,
.
request_frame
=
request_frame
,
.
config_props
=
smptebars_config_props
,
},
{
.
name
=
NULL
}
},
.
priv_class
=
&
smptebars_class
,
.
priv_class
=
&
smptebars_class
,
};
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment