ffplay: remove global video state
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
1d0ae92a25
commit
708df4ac66
14
ffplay.c
14
ffplay.c
@ -2421,13 +2421,10 @@ static void stream_component_close(VideoState *is, int stream_index)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* since we have only one decoding thread, we can use a global
|
|
||||||
variable instead of a thread local variable */
|
|
||||||
static VideoState *global_video_state;
|
|
||||||
|
|
||||||
static int decode_interrupt_cb(void *ctx)
|
static int decode_interrupt_cb(void *ctx)
|
||||||
{
|
{
|
||||||
return (global_video_state && global_video_state->abort_request);
|
VideoState *is = ctx;
|
||||||
|
return is->abort_request;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* this thread gets the stream from the disk or the network */
|
/* this thread gets the stream from the disk or the network */
|
||||||
@ -2449,10 +2446,9 @@ static int read_thread(void *arg)
|
|||||||
is->audio_stream = -1;
|
is->audio_stream = -1;
|
||||||
is->subtitle_stream = -1;
|
is->subtitle_stream = -1;
|
||||||
|
|
||||||
global_video_state = is;
|
|
||||||
|
|
||||||
ic = avformat_alloc_context();
|
ic = avformat_alloc_context();
|
||||||
ic->interrupt_callback.callback = decode_interrupt_cb;
|
ic->interrupt_callback.callback = decode_interrupt_cb;
|
||||||
|
ic->interrupt_callback.opaque = is;
|
||||||
err = avformat_open_input(&ic, is->filename, is->iformat, &format_opts);
|
err = avformat_open_input(&ic, is->filename, is->iformat, &format_opts);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
print_error(is->filename, err);
|
print_error(is->filename, err);
|
||||||
@ -2669,9 +2665,6 @@ static int read_thread(void *arg)
|
|||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
fail:
|
fail:
|
||||||
/* disable interrupting */
|
|
||||||
global_video_state = NULL;
|
|
||||||
|
|
||||||
/* close each stream */
|
/* close each stream */
|
||||||
if (is->audio_stream >= 0)
|
if (is->audio_stream >= 0)
|
||||||
stream_component_close(is, is->audio_stream);
|
stream_component_close(is, is->audio_stream);
|
||||||
@ -2682,7 +2675,6 @@ static int read_thread(void *arg)
|
|||||||
if (is->ic) {
|
if (is->ic) {
|
||||||
avformat_close_input(&is->ic);
|
avformat_close_input(&is->ic);
|
||||||
}
|
}
|
||||||
avio_set_interrupt_cb(NULL);
|
|
||||||
|
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user