Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Releases
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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Stefan Westerfeld
ffmpeg
Commits
ba856c0b
Commit
ba856c0b
authored
Jun 23, 2012
by
Nicolas George
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavfi: implement asettb filter.
parent
99622f66
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
57 additions
and
5 deletions
+57
-5
Changelog
Changelog
+1
-0
filters.texi
doc/filters.texi
+3
-2
Makefile
libavfilter/Makefile
+1
-0
allfilters.c
libavfilter/allfilters.c
+1
-0
version.h
libavfilter/version.h
+2
-2
vf_settb.c
libavfilter/vf_settb.c
+49
-1
No files found.
Changelog
View file @
ba856c0b
...
...
@@ -21,6 +21,7 @@ version next:
- RealText demuxer and decoder
- Heart Of Darkness PAF playback support
- iec61883 device
- asettb filter
version 0.11:
...
...
doc/filters.texi
View file @
ba856c0b
...
...
@@ -2937,14 +2937,15 @@ setpts=N/(25*TB)
setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
@end example
@section settb
@section settb
, asettb
Set the timebase to use for the output frames timestamps.
It is mainly useful for testing timebase configuration.
It accepts in input an arithmetic expression representing a rational.
The expression can contain the constants "AVTB" (the
default timebase), and "intb" (the input timebase).
default timebase), "intb" (the input timebase) and "sr" (the sample rate,
audio only).
The default value for the input is "intb".
...
...
libavfilter/Makefile
View file @
ba856c0b
...
...
@@ -53,6 +53,7 @@ OBJS-$(CONFIG_AMIX_FILTER) += af_amix.o
OBJS-$(CONFIG_ANULL_FILTER)
+=
af_anull.o
OBJS-$(CONFIG_ARESAMPLE_FILTER)
+=
af_aresample.o
OBJS-$(CONFIG_ASETNSAMPLES_FILTER)
+=
af_asetnsamples.o
OBJS-$(CONFIG_ASETTB_FILTER)
+=
vf_settb.o
OBJS-$(CONFIG_ASHOWINFO_FILTER)
+=
af_ashowinfo.o
OBJS-$(CONFIG_ASPLIT_FILTER)
+=
split.o
OBJS-$(CONFIG_ASTREAMSYNC_FILTER)
+=
af_astreamsync.o
...
...
libavfilter/allfilters.c
View file @
ba856c0b
...
...
@@ -42,6 +42,7 @@ void avfilter_register_all(void)
REGISTER_FILTER
(
ANULL
,
anull
,
af
);
REGISTER_FILTER
(
ARESAMPLE
,
aresample
,
af
);
REGISTER_FILTER
(
ASETNSAMPLES
,
asetnsamples
,
af
);
REGISTER_FILTER
(
ASETTB
,
asettb
,
af
);
REGISTER_FILTER
(
ASHOWINFO
,
ashowinfo
,
af
);
REGISTER_FILTER
(
ASPLIT
,
asplit
,
af
);
REGISTER_FILTER
(
ASTREAMSYNC
,
astreamsync
,
af
);
...
...
libavfilter/version.h
View file @
ba856c0b
...
...
@@ -29,8 +29,8 @@
#include "libavutil/avutil.h"
#define LIBAVFILTER_VERSION_MAJOR 3
#define LIBAVFILTER_VERSION_MINOR
0
#define LIBAVFILTER_VERSION_MICRO 10
1
#define LIBAVFILTER_VERSION_MINOR
1
#define LIBAVFILTER_VERSION_MICRO 10
0
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \
...
...
libavfilter/vf_settb.c
View file @
ba856c0b
...
...
@@ -29,17 +29,20 @@
#include "libavutil/rational.h"
#include "avfilter.h"
#include "internal.h"
#include "audio.h"
#include "video.h"
static
const
char
*
const
var_names
[]
=
{
"AVTB"
,
/* default timebase 1/AV_TIME_BASE */
"intb"
,
/* input timebase */
"sr"
,
/* sample rate */
NULL
};
enum
var_name
{
VAR_AVTB
,
VAR_INTB
,
VAR_SR
,
VAR_VARS_NB
};
...
...
@@ -70,6 +73,7 @@ static int config_output_props(AVFilterLink *outlink)
settb
->
var_values
[
VAR_AVTB
]
=
av_q2d
(
AV_TIME_BASE_Q
);
settb
->
var_values
[
VAR_INTB
]
=
av_q2d
(
inlink
->
time_base
);
settb
->
var_values
[
VAR_SR
]
=
inlink
->
sample_rate
;
outlink
->
w
=
inlink
->
w
;
outlink
->
h
=
inlink
->
h
;
...
...
@@ -113,9 +117,28 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref)
ff_start_frame
(
outlink
,
picref2
);
}
static
void
filter_samples
(
AVFilterLink
*
inlink
,
AVFilterBufferRef
*
insamples
)
{
AVFilterContext
*
ctx
=
inlink
->
dst
;
AVFilterLink
*
outlink
=
ctx
->
outputs
[
0
];
AVFilterBufferRef
*
outsamples
=
insamples
;
if
(
av_cmp_q
(
inlink
->
time_base
,
outlink
->
time_base
))
{
outsamples
=
avfilter_ref_buffer
(
insamples
,
~
0
);
outsamples
->
pts
=
av_rescale_q
(
insamples
->
pts
,
inlink
->
time_base
,
outlink
->
time_base
);
av_log
(
ctx
,
AV_LOG_DEBUG
,
"tb:%d/%d pts:%"
PRId64
" -> tb:%d/%d pts:%"
PRId64
"
\n
"
,
inlink
->
time_base
.
num
,
inlink
->
time_base
.
den
,
insamples
->
pts
,
outlink
->
time_base
.
num
,
outlink
->
time_base
.
den
,
outsamples
->
pts
);
avfilter_unref_buffer
(
insamples
);
}
ff_filter_samples
(
outlink
,
outsamples
);
}
#if CONFIG_SETTB_FILTER
AVFilter
avfilter_vf_settb
=
{
.
name
=
"settb"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Set timebase for the output link."
),
.
description
=
NULL_IF_CONFIG_SMALL
(
"Set timebase for the
video
output link."
),
.
init
=
init
,
.
priv_size
=
sizeof
(
SetTBContext
),
...
...
@@ -132,3 +155,28 @@ AVFilter avfilter_vf_settb = {
.
config_props
=
config_output_props
,
},
{
.
name
=
NULL
}},
};
#endif
#if CONFIG_ASETTB_FILTER
AVFilter
avfilter_af_asettb
=
{
.
name
=
"asettb"
,
.
description
=
NULL_IF_CONFIG_SMALL
(
"Set timebase for the audio output link."
),
.
init
=
init
,
.
priv_size
=
sizeof
(
SetTBContext
),
.
inputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
get_audio_buffer
=
ff_null_get_audio_buffer
,
.
filter_samples
=
filter_samples
,
},
{
.
name
=
NULL
}
},
.
outputs
=
(
const
AVFilterPad
[])
{
{
.
name
=
"default"
,
.
type
=
AVMEDIA_TYPE_AUDIO
,
.
config_props
=
config_output_props
,
},
{
.
name
=
NULL
}
},
};
#endif
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