summaryrefslogtreecommitdiffstats
path: root/ffplay.c
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2009-05-16 10:29:55 +0000
committerCarl Eugen Hoyos <cehoyos@rainbow.studorg.tuwien.ac.at>2009-05-16 10:29:55 +0000
commit3ac56e28b0a3fc84ccac9ac7e359f0f29567f8a0 (patch)
tree93e841e174be7fc4d02c2c3110d55ae59c8827bb /ffplay.c
parent7c5ab14540f9c3dd027dbaff5ab5153ca1c3ee75 (diff)
downloadffmpeg-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
Diffstat (limited to 'ffplay.c')
-rw-r--r--ffplay.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/ffplay.c b/ffplay.c
index 299f4a0..092a088 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -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);
}
OpenPOWER on IntegriCloud