lavfi/afade: use AV_OPT_TYPE_DURATION

Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
Paul B Mahol 2013-04-19 00:50:23 +00:00
parent 7e57adb464
commit b63f7b3ac7
2 changed files with 24 additions and 13 deletions

View File

@ -612,15 +612,26 @@ volume as the input audio, at the end of the fade-out transition
the output audio will be silence. Default is 44100. the output audio will be silence. Default is 44100.
@item start_time, st @item start_time, st
Specify time in seconds for starting to apply the fade Specify time for starting to apply the fade effect. Default is 0.
effect. Default is 0. The accepted syntax is:
@example
[-]HH[:MM[:SS[.m...]]]
[-]S+[.m...]
@end example
See also the function @code{av_parse_time()}.
If set this option is used instead of @var{start_sample} one. If set this option is used instead of @var{start_sample} one.
@item duration, d @item duration, d
Specify the number of seconds for which the fade effect has to last. At Specify the duration for which the fade effect has to last. Default is 0.
the end of the fade-in effect the output audio will have the same The accepted syntax is:
@example
[-]HH[:MM[:SS[.m...]]]
[-]S+[.m...]
@end example
See also the function @code{av_parse_time()}.
At the end of the fade-in effect the output audio will have the same
volume as the input audio, at the end of the fade-out transition volume as the input audio, at the end of the fade-out transition
the output audio will be silence. Default is 0. the output audio will be silence.
If set this option is used instead of @var{nb_samples} one. If set this option is used instead of @var{nb_samples} one.
@item curve @item curve

View File

@ -34,8 +34,8 @@ typedef struct {
int curve; int curve;
int nb_samples; int nb_samples;
int64_t start_sample; int64_t start_sample;
double duration; int64_t duration;
double start_time; int64_t start_time;
void (*fade_samples)(uint8_t **dst, uint8_t * const *src, void (*fade_samples)(uint8_t **dst, uint8_t * const *src,
int nb_samples, int channels, int direction, int nb_samples, int channels, int direction,
@ -56,10 +56,10 @@ static const AVOption afade_options[] = {
{ "ss", "set expression of sample to start fading", OFFSET(start_sample), AV_OPT_TYPE_INT64, {.i64 = 0 }, 0, INT64_MAX, FLAGS }, { "ss", "set expression of sample to start fading", OFFSET(start_sample), AV_OPT_TYPE_INT64, {.i64 = 0 }, 0, INT64_MAX, FLAGS },
{ "nb_samples", "set expression for fade duration in samples", OFFSET(nb_samples), AV_OPT_TYPE_INT, {.i64 = 44100}, 1, INT32_MAX, FLAGS }, { "nb_samples", "set expression for fade duration in samples", OFFSET(nb_samples), AV_OPT_TYPE_INT, {.i64 = 44100}, 1, INT32_MAX, FLAGS },
{ "ns", "set expression for fade duration in samples", OFFSET(nb_samples), AV_OPT_TYPE_INT, {.i64 = 44100}, 1, INT32_MAX, FLAGS }, { "ns", "set expression for fade duration in samples", OFFSET(nb_samples), AV_OPT_TYPE_INT, {.i64 = 44100}, 1, INT32_MAX, FLAGS },
{ "start_time", "set expression of second to start fading", OFFSET(start_time), AV_OPT_TYPE_DOUBLE, {.dbl = 0. }, 0, 7*24*60*60,FLAGS }, { "start_time", "set expression of time to start fading", OFFSET(start_time), AV_OPT_TYPE_DURATION, {.i64 = 0. }, 0, INT32_MAX, FLAGS },
{ "st", "set expression of second to start fading", OFFSET(start_time), AV_OPT_TYPE_DOUBLE, {.dbl = 0. }, 0, 7*24*60*60,FLAGS }, { "st", "set expression of time to start fading", OFFSET(start_time), AV_OPT_TYPE_DURATION, {.i64 = 0. }, 0, INT32_MAX, FLAGS },
{ "duration", "set expression for fade duration in seconds", OFFSET(duration), AV_OPT_TYPE_DOUBLE, {.dbl = 0. }, 0, 24*60*60, FLAGS }, { "duration", "set expression for fade duration", OFFSET(duration), AV_OPT_TYPE_DURATION, {.i64 = 0. }, 0, INT32_MAX, FLAGS },
{ "d", "set expression for fade duration in seconds", OFFSET(duration), AV_OPT_TYPE_DOUBLE, {.dbl = 0. }, 0, 24*60*60, FLAGS }, { "d", "set expression for fade duration", OFFSET(duration), AV_OPT_TYPE_DURATION, {.i64 = 0. }, 0, INT32_MAX, FLAGS },
{ "curve", "set expression for fade curve", OFFSET(curve), AV_OPT_TYPE_INT, {.i64 = TRI }, TRI, CBR, FLAGS, "curve" }, { "curve", "set expression for fade curve", OFFSET(curve), AV_OPT_TYPE_INT, {.i64 = TRI }, TRI, CBR, FLAGS, "curve" },
{ "c", "set expression for fade curve", OFFSET(curve), AV_OPT_TYPE_INT, {.i64 = TRI }, TRI, CBR, FLAGS, "curve" }, { "c", "set expression for fade curve", OFFSET(curve), AV_OPT_TYPE_INT, {.i64 = TRI }, TRI, CBR, FLAGS, "curve" },
{ "tri", "linear slope", 0, AV_OPT_TYPE_CONST, {.i64 = TRI }, 0, 0, FLAGS, "curve" }, { "tri", "linear slope", 0, AV_OPT_TYPE_CONST, {.i64 = TRI }, 0, 0, FLAGS, "curve" },
@ -218,9 +218,9 @@ static int config_output(AVFilterLink *outlink)
} }
if (afade->duration) if (afade->duration)
afade->nb_samples = afade->duration * inlink->sample_rate; afade->nb_samples = afade->duration * inlink->sample_rate / AV_TIME_BASE;
if (afade->start_time) if (afade->start_time)
afade->start_sample = afade->start_time * inlink->sample_rate; afade->start_sample = afade->start_time * inlink->sample_rate / AV_TIME_BASE;
return 0; return 0;
} }