diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-07-01 02:44:22 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-07-01 02:44:28 +0200 |
commit | f7cba736bada4fcdd776617bf2df0b10ad8a44f8 (patch) | |
tree | d5bdf4ee53d6715deb938f5a4a31e316a0063b7e /ffplay.c | |
parent | 64b25938e90253432d28ffd7d971f085c560a523 (diff) | |
parent | 58f22f70121c2c9f4bf9935d00c7ba7948fbe5c0 (diff) | |
download | ffmpeg-f7cba736bada4fcdd776617bf2df0b10ad8a44f8.tar.gz |
Merge remote-tracking branch 'cus/stable'
* cus/stable:
ffplay: only configure video filters after we got the first frame
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'ffplay.c')
-rw-r--r-- | ffplay.c | 33 |
1 files changed, 14 insertions, 19 deletions
@@ -1625,13 +1625,6 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c is->in_video_filter = filt_src; is->out_video_filter = filt_out; - if (codec->codec->capabilities & CODEC_CAP_DR1) { - is->use_dr1 = 1; - codec->get_buffer = codec_get_buffer; - codec->release_buffer = codec_release_buffer; - codec->opaque = &is->buffer_pool; - } - return ret; } @@ -1646,28 +1639,26 @@ static int video_thread(void *arg) int ret; #if CONFIG_AVFILTER + AVCodecContext *codec = is->video_st->codec; AVFilterGraph *graph = avfilter_graph_alloc(); AVFilterContext *filt_out = NULL, *filt_in = NULL; - int last_w = is->video_st->codec->width; - int last_h = is->video_st->codec->height; - enum PixelFormat last_format = is->video_st->codec->pix_fmt; + int last_w = 0; + int last_h = 0; + enum PixelFormat last_format = -2; - if ((ret = configure_video_filters(graph, is, vfilters)) < 0) { - SDL_Event event; - event.type = FF_QUIT_EVENT; - event.user.data1 = is; - SDL_PushEvent(&event); - goto the_end; + if (codec->codec->capabilities & CODEC_CAP_DR1) { + is->use_dr1 = 1; + codec->get_buffer = codec_get_buffer; + codec->release_buffer = codec_release_buffer; + codec->opaque = &is->buffer_pool; } - filt_in = is->in_video_filter; - filt_out = is->out_video_filter; #endif for (;;) { AVPacket pkt; #if CONFIG_AVFILTER AVFilterBufferRef *picref; - AVRational tb = filt_out->inputs[0]->time_base; + AVRational tb; #endif while (is->paused && !is->videoq.abort_request) SDL_Delay(10); @@ -1691,6 +1682,10 @@ static int video_thread(void *arg) avfilter_graph_free(&graph); graph = avfilter_graph_alloc(); if ((ret = configure_video_filters(graph, is, vfilters)) < 0) { + SDL_Event event; + event.type = FF_QUIT_EVENT; + event.user.data1 = is; + SDL_PushEvent(&event); av_free_packet(&pkt); goto the_end; } |