[vlc-commits] avcodec: simplify picture references
Rémi Denis-Courmont
git at videolan.org
Sat Nov 1 13:31:09 CET 2014
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Nov 1 14:29:20 2014 +0200| [160b51a33dc5e96cb91b0efb83ae06bb76f8a759] | committer: Rémi Denis-Courmont
avcodec: simplify picture references
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=160b51a33dc5e96cb91b0efb83ae06bb76f8a759
---
modules/codec/avcodec/video.c | 22 ++++------------------
1 file changed, 4 insertions(+), 18 deletions(-)
diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
index b57fc3d..5ba6e2e 100644
--- a/modules/codec/avcodec/video.c
+++ b/modules/codec/avcodec/video.c
@@ -988,18 +988,11 @@ static int lavc_va_GetFrame(struct AVCodecContext *ctx, AVFrame *frame,
return 0;
}
-typedef struct
-{
- decoder_t *decoder;
- picture_t *picture;
-} lavc_pic_ref_t;
-
static void lavc_dr_ReleaseFrame(void *opaque, uint8_t *data)
{
- lavc_pic_ref_t *ref = opaque;
+ picture_t *picture = opaque;
- picture_Release(ref->picture);
- free(ref);
+ picture_Release(picture);
(void) data;
}
@@ -1062,21 +1055,14 @@ static picture_t *lavc_dr_GetFrame(struct AVCodecContext *ctx,
/* Allocate buffer references */
for (int i = 0; i < pic->i_planes; i++)
{
- lavc_pic_ref_t *ref = malloc(sizeof (*ref));
- if (ref == NULL)
- goto error;
- ref->decoder = dec;
- ref->picture = pic;
- picture_Hold(pic);
-
uint8_t *data = pic->p[i].p_pixels;
int size = pic->p[i].i_pitch * pic->p[i].i_lines;
frame->buf[i] = av_buffer_create(data, size, lavc_dr_ReleaseFrame,
- ref, 0);
+ picture_Hold(pic), 0);
if (unlikely(frame->buf[i] == NULL))
{
- lavc_dr_ReleaseFrame(ref, data);
+ lavc_dr_ReleaseFrame(pic, data);
goto error;
}
}
More information about the vlc-commits
mailing list