vsrc_buffer: Set output size
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 26 Apr 2011 16:16:48 +0000 (18:16 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 26 Apr 2011 16:16:48 +0000 (18:16 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
ffmpeg.c
libavfilter/vsrc_buffer.c

index 2c69608..bf0133e 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1638,7 +1638,7 @@ static int output_packet(AVInputStream *ist, int ist_index,
                     av_vsrc_buffer_add_frame2(ost->input_video_filter, &picture,
                                              ist->pts,
                                              sar, ist->st->codec->width, ist->st->codec->height,
-                                             ist->st->codec->pix_fmt, "0:0"); //TODO user setable params
+                                             ist->st->codec->pix_fmt, ""); //TODO user setable params
                 }
             }
         }
index 3e7fe97..797cc98 100644 (file)
@@ -35,6 +35,7 @@ typedef struct {
     enum PixelFormat  pix_fmt;
     AVRational        time_base;     ///< time_base to set in the output link
     AVRational        pixel_aspect;
+    char              sws_param[256];
 } BufferSourceContext;
 
 int av_vsrc_buffer_add_frame2(AVFilterContext *buffer_filter, AVFrame *frame,
@@ -53,6 +54,10 @@ int av_vsrc_buffer_add_frame2(AVFilterContext *buffer_filter, AVFrame *frame,
         //return -1;
     }
 
+    if(!c->sws_param[0]){
+        snprintf(c->sws_param, 255, "%d:%d:%s", c->w, c->h, sws_param);
+    }
+
     if(width != c->w || height != c->h || pix_fmt != c->pix_fmt){
         AVFilterContext *scale= buffer_filter->outputs[0]->dst;
         AVFilterLink *link;
@@ -67,7 +72,7 @@ int av_vsrc_buffer_add_frame2(AVFilterContext *buffer_filter, AVFrame *frame,
             if(avfilter_open(&scale, f, "Input equalizer") < 0)
                 return -1;
 
-            if((ret=avfilter_init_filter(scale, sws_param, NULL))<0){
+            if((ret=avfilter_init_filter(scale, c->sws_param, NULL))<0){
                 avfilter_free(scale);
                 return ret;
             }