提交 a38cdfde 编写于 作者: M Michael Niedermayer

vsrc_buffer: Set output size

Signed-off-by: NMichael Niedermayer <michaelni@gmx.at>
上级 ad0193bf
......@@ -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
}
}
}
......
......@@ -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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册