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