ffplay: factor out picture freeing code

Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
Marton Balint 2013-10-19 01:18:41 +02:00
parent 060c42bc3d
commit 2d059d8de1
1 changed files with 11 additions and 10 deletions

View File

@ -785,6 +785,14 @@ static void blend_subrect(AVPicture *dst, const AVSubtitleRect *rect, int imgw,
} }
} }
static void free_picture(VideoPicture *vp)
{
if (vp->bmp) {
SDL_FreeYUVOverlay(vp->bmp);
vp->bmp = NULL;
}
}
static void free_subpicture(SubPicture *sp) static void free_subpicture(SubPicture *sp)
{ {
avsubtitle_free(&sp->sub); avsubtitle_free(&sp->sub);
@ -1013,7 +1021,6 @@ static void video_audio_display(VideoState *s)
static void stream_close(VideoState *is) static void stream_close(VideoState *is)
{ {
VideoPicture *vp;
int i; int i;
/* XXX: use a special url_shutdown call to abort parse cleanly */ /* XXX: use a special url_shutdown call to abort parse cleanly */
is->abort_request = 1; is->abort_request = 1;
@ -1023,13 +1030,8 @@ static void stream_close(VideoState *is)
packet_queue_destroy(&is->subtitleq); packet_queue_destroy(&is->subtitleq);
/* free all pictures */ /* free all pictures */
for (i = 0; i < VIDEO_PICTURE_QUEUE_SIZE; i++) { for (i = 0; i < VIDEO_PICTURE_QUEUE_SIZE; i++)
vp = &is->pictq[i]; free_picture(&is->pictq[i]);
if (vp->bmp) {
SDL_FreeYUVOverlay(vp->bmp);
vp->bmp = NULL;
}
}
for (i = 0; i < SUBPICTURE_QUEUE_SIZE; i++) for (i = 0; i < SUBPICTURE_QUEUE_SIZE; i++)
free_subpicture(&is->subpq[i]); free_subpicture(&is->subpq[i]);
SDL_DestroyMutex(is->pictq_mutex); SDL_DestroyMutex(is->pictq_mutex);
@ -1505,8 +1507,7 @@ static void alloc_picture(VideoState *is)
vp = &is->pictq[is->pictq_windex]; vp = &is->pictq[is->pictq_windex];
if (vp->bmp) free_picture(vp);
SDL_FreeYUVOverlay(vp->bmp);
video_open(is, 0, vp); video_open(is, 0, vp);