|
|
|
@ -126,7 +126,7 @@ enum { |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
typedef struct VideoState { |
|
|
|
|
SDL_Thread *parse_tid; |
|
|
|
|
SDL_Thread *read_tid; |
|
|
|
|
SDL_Thread *video_tid; |
|
|
|
|
SDL_Thread *refresh_tid; |
|
|
|
|
AVInputFormat *iformat; |
|
|
|
@ -1270,7 +1270,7 @@ static void stream_close(VideoState *is) |
|
|
|
|
int i; |
|
|
|
|
/* XXX: use a special url_shutdown call to abort parse cleanly */ |
|
|
|
|
is->abort_request = 1; |
|
|
|
|
SDL_WaitThread(is->parse_tid, NULL); |
|
|
|
|
SDL_WaitThread(is->read_tid, NULL); |
|
|
|
|
SDL_WaitThread(is->refresh_tid, NULL); |
|
|
|
|
|
|
|
|
|
/* free all pictures */ |
|
|
|
@ -2366,7 +2366,7 @@ static int decode_interrupt_cb(void) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* this thread gets the stream from the disk or the network */ |
|
|
|
|
static int decode_thread(void *arg) |
|
|
|
|
static int read_thread(void *arg) |
|
|
|
|
{ |
|
|
|
|
VideoState *is = arg; |
|
|
|
|
AVFormatContext *ic; |
|
|
|
@ -2637,8 +2637,8 @@ static VideoState *stream_open(const char *filename, AVInputFormat *iformat) |
|
|
|
|
is->subpq_cond = SDL_CreateCond(); |
|
|
|
|
|
|
|
|
|
is->av_sync_type = av_sync_type; |
|
|
|
|
is->parse_tid = SDL_CreateThread(decode_thread, is); |
|
|
|
|
if (!is->parse_tid) { |
|
|
|
|
is->read_tid = SDL_CreateThread(read_thread, is); |
|
|
|
|
if (!is->read_tid) { |
|
|
|
|
av_free(is); |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|