Mercurial > libavcodec.hg
diff mpegvideo.c @ 9155:9e66ada64b76 libavcodec
Add private HW accel data infrastructure.
author | gb |
---|---|
date | Mon, 09 Mar 2009 08:04:41 +0000 |
parents | 7f0d34340349 |
children | 3a54ad453dbf |
line wrap: on
line diff
--- a/mpegvideo.c Sun Mar 08 17:43:12 2009 +0000 +++ b/mpegvideo.c Mon Mar 09 08:04:41 2009 +0000 @@ -170,6 +170,7 @@ static void free_frame_buffer(MpegEncContext *s, Picture *pic) { s->avctx->release_buffer(s->avctx, (AVFrame*)pic); + av_freep(&pic->hwaccel_data_private); } /** @@ -179,10 +180,22 @@ { int r; + if (s->avctx->hwaccel) { + assert(!pic->hwaccel_data_private); + if (s->avctx->hwaccel->priv_data_size) { + pic->hwaccel_data_private = av_malloc(s->avctx->hwaccel->priv_data_size); + if (!pic->hwaccel_data_private) { + av_log(s->avctx, AV_LOG_ERROR, "alloc_frame_buffer() failed (hwaccel private data allocation)\n"); + return -1; + } + } + } + r = s->avctx->get_buffer(s->avctx, (AVFrame*)pic); if (r<0 || !pic->age || !pic->type || !pic->data[0]) { av_log(s->avctx, AV_LOG_ERROR, "get_buffer() failed (%d %d %d %p)\n", r, pic->age, pic->type, pic->data[0]); + av_freep(&pic->hwaccel_data_private); return -1; }