diff options
author | Martin Storsjö <martin@martin.st> | 2009-05-16 10:29:55 +0000 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@rainbow.studorg.tuwien.ac.at> | 2009-05-16 10:29:55 +0000 |
commit | 3ac56e28b0a3fc84ccac9ac7e359f0f29567f8a0 (patch) | |
tree | 93e841e174be7fc4d02c2c3110d55ae59c8827bb | |
parent | 7c5ab14540f9c3dd027dbaff5ab5153ca1c3ee75 (diff) | |
download | ffmpeg-streaming-3ac56e28b0a3fc84ccac9ac7e359f0f29567f8a0.zip ffmpeg-streaming-3ac56e28b0a3fc84ccac9ac7e359f0f29567f8a0.tar.gz |
Move img_convert_ctx to VideoState and free it in stream_close().
Patch by Martin Storsjö, martin martin st
Originally committed as revision 18854 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | ffplay.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -168,6 +168,7 @@ typedef struct VideoState { int pictq_size, pictq_rindex, pictq_windex; SDL_mutex *pictq_mutex; SDL_cond *pictq_cond; + struct SwsContext *img_convert_ctx; // QETimer *video_timer; char filename[1024]; @@ -1226,7 +1227,6 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts) { VideoPicture *vp; int dst_pix_fmt; - static struct SwsContext *img_convert_ctx; /* wait until we have space to put a new picture */ SDL_LockMutex(is->pictq_mutex); @@ -1283,16 +1283,16 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts) pict.linesize[1] = vp->bmp->pitches[2]; pict.linesize[2] = vp->bmp->pitches[1]; sws_flags = av_get_int(sws_opts, "sws_flags", NULL); - img_convert_ctx = sws_getCachedContext(img_convert_ctx, + is->img_convert_ctx = sws_getCachedContext(is->img_convert_ctx, is->video_st->codec->width, is->video_st->codec->height, is->video_st->codec->pix_fmt, is->video_st->codec->width, is->video_st->codec->height, dst_pix_fmt, sws_flags, NULL, NULL, NULL); - if (img_convert_ctx == NULL) { + if (is->img_convert_ctx == NULL) { fprintf(stderr, "Cannot initialize the conversion context\n"); exit(1); } - sws_scale(img_convert_ctx, src_frame->data, src_frame->linesize, + sws_scale(is->img_convert_ctx, src_frame->data, src_frame->linesize, 0, is->video_st->codec->height, pict.data, pict.linesize); /* update the bitmap content */ SDL_UnlockYUVOverlay(vp->bmp); @@ -2188,6 +2188,8 @@ static void stream_close(VideoState *is) SDL_DestroyCond(is->pictq_cond); SDL_DestroyMutex(is->subpq_mutex); SDL_DestroyCond(is->subpq_cond); + if (is->img_convert_ctx) + sws_freeContext(is->img_convert_ctx); av_free(is); } |