[05/12] lavfi/testsrc: set output framerate

Message ID 1445978420-17559-1-git-send-email-stebbins@jetheaddev.com
State New
Headers show

Commit Message

John Stebbins Oct. 27, 2015, 8:40 p.m.
From: Stefano Sabatini <stefasab@gmail.com>

(cherry picked from commit 7cd5fa35fecc2717223459d04822faed6bbd40fa)
---
 libavfilter/vsrc_testsrc.c | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

Comments

Luca Barbato Oct. 27, 2015, 9:13 p.m. | #1
On 27/10/15 21:40, John Stebbins wrote:
> From: Stefano Sabatini <stefasab@gmail.com>
> 
> (cherry picked from commit 7cd5fa35fecc2717223459d04822faed6bbd40fa)
> ---
>  libavfilter/vsrc_testsrc.c | 23 +++++++++++------------
>  1 file changed, 11 insertions(+), 12 deletions(-)
> 

the bulk of the patch is a rename...
John Stebbins Oct. 27, 2015, 9:23 p.m. | #2
On Tue, 2015-10-27 at 22:13 +0100, Luca Barbato wrote:
> On 27/10/15 21:40, John Stebbins wrote:
> > From: Stefano Sabatini <stefasab@gmail.com>
> > 
> > (cherry picked from commit 7cd5fa35fecc2717223459d04822faed6bbd40fa)
> > ---
> >  libavfilter/vsrc_testsrc.c | 23 +++++++++++------------
> >  1 file changed, 11 insertions(+), 12 deletions(-)
> > 
> 
> the bulk of the patch is a rename...
> 
> 

Yes, I cherry-picked and kept as much of the original commit as
possible.  Would you prefer I revert the renaming?
Luca Barbato Oct. 27, 2015, 9:51 p.m. | #3
On 27/10/15 22:23, John Stebbins wrote:
> On Tue, 2015-10-27 at 22:13 +0100, Luca Barbato wrote:
>> On 27/10/15 21:40, John Stebbins wrote:
>>> From: Stefano Sabatini <stefasab@gmail.com>
>>>
>>> (cherry picked from commit 7cd5fa35fecc2717223459d04822faed6bbd40fa)
>>> ---
>>>  libavfilter/vsrc_testsrc.c | 23 +++++++++++------------
>>>  1 file changed, 11 insertions(+), 12 deletions(-)
>>>
>>
>> the bulk of the patch is a rename...
>>
>>
> 
> Yes, I cherry-picked and kept as much of the original commit as
> possible.  Would you prefer I revert the renaming?

Yes, it should be less confusing.

lu

Patch

diff --git a/libavfilter/vsrc_testsrc.c b/libavfilter/vsrc_testsrc.c
index e41625e..b6be2ea 100644
--- a/libavfilter/vsrc_testsrc.c
+++ b/libavfilter/vsrc_testsrc.c
@@ -46,10 +46,10 @@  typedef struct TestSourceContext {
     const AVClass *class;
     int h, w;
     unsigned int nb_frame;
-    AVRational time_base;
+    AVRational time_base, frame_rate;
     int64_t pts, max_pts;
     char *size;                 ///< video frame size
-    char *rate;                 ///< video frame rate
+    char *frame_rate_str;       ///< video frame rate
     char *duration;             ///< total duration of the generated video
     AVRational sar;             ///< sample aspect ratio
 
@@ -65,8 +65,8 @@  typedef struct TestSourceContext {
 static const AVOption testsrc_options[] = {
     { "size",     "set video size",     OFFSET(size),     AV_OPT_TYPE_STRING, {.str = "320x240"},     .flags = FLAGS },
     { "s",        "set video size",     OFFSET(size),     AV_OPT_TYPE_STRING, {.str = "320x240"},     .flags = FLAGS },
-    { "rate",     "set video rate",     OFFSET(rate),     AV_OPT_TYPE_STRING, {.str = "25"},          .flags = FLAGS },
-    { "r",        "set video rate",     OFFSET(rate),     AV_OPT_TYPE_STRING, {.str = "25"},          .flags = FLAGS },
+    { "rate",     "set video rate",     OFFSET(frame_rate_str), AV_OPT_TYPE_STRING, {.str = "25"},          .flags = FLAGS },
+    { "r",        "set video rate",     OFFSET(frame_rate_str), AV_OPT_TYPE_STRING, {.str = "25"},          .flags = FLAGS },
     { "duration", "set video duration", OFFSET(duration), AV_OPT_TYPE_STRING, {.str = NULL},          .flags = FLAGS },
     { "sar",      "set video sample aspect ratio", OFFSET(sar), AV_OPT_TYPE_RATIONAL, {.dbl = 1},  0, INT_MAX, FLAGS },
     { NULL },
@@ -75,7 +75,6 @@  static const AVOption testsrc_options[] = {
 static av_cold int init_common(AVFilterContext *ctx)
 {
     TestSourceContext *test = ctx->priv;
-    AVRational frame_rate_q;
     int64_t duration = -1;
     int ret = 0;
 
@@ -84,9 +83,9 @@  static av_cold int init_common(AVFilterContext *ctx)
         return ret;
     }
 
-    if ((ret = av_parse_video_rate(&frame_rate_q, test->rate)) < 0 ||
-        frame_rate_q.den <= 0 || frame_rate_q.num <= 0) {
-        av_log(ctx, AV_LOG_ERROR, "Invalid frame rate: '%s'\n", test->rate);
+    if ((ret = av_parse_video_rate(&test->frame_rate, test->frame_rate_str)) < 0 ||
+        test->frame_rate.den <= 0 || test->frame_rate.num <= 0) {
+        av_log(ctx, AV_LOG_ERROR, "Invalid frame rate: '%s'\n", test->frame_rate_str);
         return ret;
     }
 
@@ -95,15 +94,14 @@  static av_cold int init_common(AVFilterContext *ctx)
         return ret;
     }
 
-    test->time_base.num = frame_rate_q.den;
-    test->time_base.den = frame_rate_q.num;
+    test->time_base = av_inv_q(test->frame_rate);
     test->max_pts = duration >= 0 ?
         av_rescale_q(duration, AV_TIME_BASE_Q, test->time_base) : -1;
     test->nb_frame = 0;
     test->pts = 0;
 
     av_log(ctx, AV_LOG_DEBUG, "size:%dx%d rate:%d/%d duration:%f sar:%d/%d\n",
-           test->w, test->h, frame_rate_q.num, frame_rate_q.den,
+           test->w, test->h, test->frame_rate.num, test->frame_rate.den,
            duration < 0 ? -1 : test->max_pts * av_q2d(test->time_base),
            test->sar.num, test->sar.den);
     return 0;
@@ -116,7 +114,8 @@  static int config_props(AVFilterLink *outlink)
     outlink->w = test->w;
     outlink->h = test->h;
     outlink->sample_aspect_ratio = test->sar;
-    outlink->time_base = test->time_base;
+    outlink->frame_rate = test->frame_rate;
+    outlink->time_base  = test->time_base;
 
     return 0;
 }