|
|
|
@ -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; |
|
|
|
|
} |
|
|
|
|