|
@@ -324,29 +324,6 @@ static struct termios oldtty;
|
|
|
|
|
|
#if CONFIG_AVFILTER
|
|
|
|
|
|
-static int get_filtered_video_pic(AVFilterContext *ctx,
|
|
|
- AVFilterBufferRef **picref, AVFrame *pic2,
|
|
|
- uint64_t *pts)
|
|
|
-{
|
|
|
- AVFilterBufferRef *pic;
|
|
|
-
|
|
|
- if(avfilter_request_frame(ctx->inputs[0]))
|
|
|
- return -1;
|
|
|
- if(!(pic = ctx->inputs[0]->cur_buf))
|
|
|
- return -1;
|
|
|
- *picref = pic;
|
|
|
- ctx->inputs[0]->cur_buf = NULL;
|
|
|
-
|
|
|
- *pts = pic->pts;
|
|
|
-
|
|
|
- memcpy(pic2->data, pic->data, sizeof(pic->data));
|
|
|
- memcpy(pic2->linesize, pic->linesize, sizeof(pic->linesize));
|
|
|
- pic2->interlaced_frame = pic->video->interlaced;
|
|
|
- pic2->top_field_first = pic->video->top_field_first;
|
|
|
-
|
|
|
- return 1;
|
|
|
-}
|
|
|
-
|
|
|
static int configure_filters(AVInputStream *ist, AVOutputStream *ost)
|
|
|
{
|
|
|
AVFilterContext *last_filter, *filter;
|
|
@@ -1600,8 +1577,11 @@ static int output_packet(AVInputStream *ist, int ist_index,
|
|
|
if (start_time == 0 || ist->pts >= start_time)
|
|
|
#if CONFIG_AVFILTER
|
|
|
while (frame_available) {
|
|
|
+ AVRational ist_pts_tb;
|
|
|
if (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO && ist->output_video_filter)
|
|
|
- get_filtered_video_pic(ist->output_video_filter, &ist->picref, &picture, &ist->pts);
|
|
|
+ get_filtered_video_frame(ist->output_video_filter, &picture, &ist->picref, &ist_pts_tb);
|
|
|
+ if (ist->picref)
|
|
|
+ ist->pts = ist->picref->pts;
|
|
|
#endif
|
|
|
for(i=0;i<nb_ostreams;i++) {
|
|
|
int frame_size;
|