[Ffmpeg-cvslog] CVS: ffmpeg/libavcodec dv.c,1.68,1.69
Roman Shaposhnick
romansh
Fri Jan 6 20:19:42 CET 2006
Update of /cvsroot/ffmpeg/ffmpeg/libavcodec
In directory mail:/var2/tmp/cvs-serv18030/libavcodec
Modified Files:
dv.c
Log Message:
Moving dv_anchor back to the global scope. This creates a tiny memory
leak for cases like dlopening libavcodec.so and such, but I still
don't know how to catch such events.
Index: dv.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavcodec/dv.c,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -d -r1.68 -r1.69
--- dv.c 25 Dec 2005 22:38:21 -0000 1.68
+++ dv.c 6 Jan 2006 19:19:39 -0000 1.69
@@ -49,11 +49,11 @@
void (*get_pixels)(DCTELEM *block, const uint8_t *pixels, int line_size);
void (*fdct[2])(DCTELEM *block);
void (*idct_put[2])(uint8_t *dest, int line_size, DCTELEM *block);
-
- /* MultiThreading */
- uint8_t** dv_anchor;
} DVVideoContext;
+/* MultiThreading - applies to entire DV codec, not just the avcontext */
+uint8_t** dv_anchor;
+
#define TEX_VLC_BITS 9
#ifdef DV_CODEC_TINY_TARGET
@@ -118,12 +118,12 @@
return -ENOMEM;
/* dv_anchor lets each thread know its Id */
- s->dv_anchor = av_malloc(12*27*sizeof(void*));
- if (!s->dv_anchor) {
+ dv_anchor = av_malloc(12*27*sizeof(void*));
+ if (!dv_anchor) {
return -ENOMEM;
}
for (i=0; i<12*27; i++)
- s->dv_anchor[i] = (void*)(size_t)i;
+ dv_anchor[i] = (void*)(size_t)i;
/* it's faster to include sign bit in a generic VLC parsing scheme */
for (i=0, j=0; i<NB_DV_VLC; i++, j++) {
@@ -150,10 +150,9 @@
new_dv_vlc_len, 1, 1, new_dv_vlc_bits, 2, 2, 0);
dv_rl_vlc = av_mallocz_static(dv_vlc.table_size * sizeof(RL_VLC_ELEM));
- if (!dv_rl_vlc) {
- av_free(s->dv_anchor);
+ if (!dv_rl_vlc)
return -ENOMEM;
- }
+
for(i = 0; i < dv_vlc.table_size; i++){
int code= dv_vlc.table[i][0];
int len = dv_vlc.table[i][1];
@@ -939,7 +938,7 @@
s->picture.top_field_first = 0;
s->buf = buf;
- avctx->execute(avctx, dv_decode_mt, (void**)&s->dv_anchor[0], NULL,
+ avctx->execute(avctx, dv_decode_mt, (void**)&dv_anchor[0], NULL,
s->sys->difseg_size * 27);
emms_c();
@@ -968,7 +967,7 @@
s->picture.pict_type = FF_I_TYPE;
s->buf = buf;
- c->execute(c, dv_encode_mt, (void**)&s->dv_anchor[0], NULL,
+ c->execute(c, dv_encode_mt, (void**)&dv_anchor[0], NULL,
s->sys->difseg_size * 27);
emms_c();
@@ -977,9 +976,6 @@
static int dvvideo_close(AVCodecContext *c)
{
- DVVideoContext *s = c->priv_data;
-
- av_free(s->dv_anchor);
return 0;
}
More information about the ffmpeg-cvslog
mailing list