Skip to content

Commit

Permalink
avplay: Do not try to allocate new frames when the player is closing
Browse files Browse the repository at this point in the history
The allocation event can trigger while the decoding thread is already
closing.

Bug-Id: 1052
CC: [email protected]
  • Loading branch information
lu-zero committed Apr 24, 2017
1 parent 4126249 commit 8c0cadd
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions avtools/avplay.c
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ typedef struct PlayerState {

AVFilterContext *in_video_filter; // the first filter in the video chain
AVFilterContext *out_video_filter; // the last filter in the video chain
SDL_mutex *video_filter_mutex;

float skip_frames;
float skip_frames_index;
Expand Down Expand Up @@ -1201,6 +1202,7 @@ static void player_close(PlayerState *is)
vp->bmp = NULL;
}
}
SDL_DestroyMutex(is->video_filter_mutex);
SDL_DestroyMutex(is->pictq_mutex);
SDL_DestroyCond(is->pictq_cond);
SDL_DestroyMutex(is->subpq_mutex);
Expand Down Expand Up @@ -1617,6 +1619,9 @@ static int video_thread(void *arg)
stream_pause(player);
}
the_end:
SDL_LockMutex(is->video_filter_mutex);
is->out_video_filter = NULL;
SDL_UnlockMutex(is->video_filter_mutex);
av_freep(&vfilters);
avfilter_graph_free(&graph);
av_packet_unref(&pkt);
Expand Down Expand Up @@ -2552,6 +2557,8 @@ static int stream_open(PlayerState *is,
return ret;
}

is->video_filter_mutex = SDL_CreateMutex();

/* start video display */
is->pictq_mutex = SDL_CreateMutex();
is->pictq_cond = SDL_CreateCond();
Expand Down Expand Up @@ -2827,8 +2834,12 @@ static void event_loop(void)
do_exit();
break;
case FF_ALLOC_EVENT:
video_open(event.user.data1);
alloc_picture(event.user.data1);
SDL_LockMutex(player->video_filter_mutex);
if (player->out_video_filter) {
video_open(event.user.data1);
alloc_picture(event.user.data1);
}
SDL_UnlockMutex(player->video_filter_mutex);
break;
case FF_REFRESH_EVENT:
video_refresh_timer(event.user.data1);
Expand Down

0 comments on commit 8c0cadd

Please sign in to comment.