[FFmpeg-cvslog] lavfi/afade: use AV_OPT_TYPE_DURATION

Paul B Mahol git at videolan.org
Fri Apr 19 02:57:24 CEST 2013


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Fri Apr 19 00:50:23 2013 +0000| [b63f7b3ac7b95032ae8c3e074f26b6c6158582da] | committer: Paul B Mahol

lavfi/afade: use AV_OPT_TYPE_DURATION

Signed-off-by: Paul B Mahol <onemda at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b63f7b3ac7b95032ae8c3e074f26b6c6158582da
---

 doc/filters.texi       |   21 ++++++++++++++++-----
 libavfilter/af_afade.c |   16 ++++++++--------
 2 files changed, 24 insertions(+), 13 deletions(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index 43d7368..4c702a9 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -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.
 
 @item start_time, st
-Specify time in seconds for starting to apply the fade
-effect. Default is 0.
+Specify time for starting to apply the fade effect. Default is 0.
+The accepted syntax is:
+ at example
+[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+ at end example
+See also the function @code{av_parse_time()}.
 If set this option is used instead of @var{start_sample} one.
 
 @item duration, d
-Specify the number of seconds for which the fade effect has to last. At
-the end of the fade-in effect the output audio will have the same
+Specify the duration for which the fade effect has to last. Default is 0.
+The accepted syntax is:
+ at example
+[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+ at 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
-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.
 
 @item curve
diff --git a/libavfilter/af_afade.c b/libavfilter/af_afade.c
index c64d921..35c6537 100644
--- a/libavfilter/af_afade.c
+++ b/libavfilter/af_afade.c
@@ -34,8 +34,8 @@ typedef struct {
     int curve;
     int nb_samples;
     int64_t start_sample;
-    double duration;
-    double start_time;
+    int64_t duration;
+    int64_t start_time;
 
     void (*fade_samples)(uint8_t **dst, uint8_t * const *src,
                          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 },
     { "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 },
-    { "start_time",   "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 second to start fading",    OFFSET(start_time),   AV_OPT_TYPE_DOUBLE, {.dbl = 0.   }, 0, 7*24*60*60,FLAGS },
-    { "duration",     "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 in seconds", OFFSET(duration),     AV_OPT_TYPE_DOUBLE, {.dbl = 0.   }, 0, 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 time to start fading",      OFFSET(start_time),   AV_OPT_TYPE_DURATION, {.i64 = 0. }, 0, INT32_MAX, 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",            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" },
     { "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" },
@@ -218,9 +218,9 @@ static int config_output(AVFilterLink *outlink)
     }
 
     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)
-        afade->start_sample = afade->start_time * inlink->sample_rate;
+        afade->start_sample = afade->start_time * inlink->sample_rate / AV_TIME_BASE;
 
     return 0;
 }



More information about the ffmpeg-cvslog mailing list