From: Dan D. <dde...@us...> - 2003-10-29 17:02:22
|
Update of /cvsroot/libdv/libdv/libdv In directory sc8-pr-cvs1:/tmp/cvs-serv10768/libdv Modified Files: dv.c dv_types.h encode.c parse.c Log Message: memory bugfixes and remove encoder allocations and initialization from decoder init path Index: dv.c =================================================================== RCS file: /cvsroot/libdv/libdv/libdv/dv.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -r1.19 -r1.20 *** dv.c 20 Oct 2003 19:46:49 -0000 1.19 --- dv.c 29 Oct 2003 17:02:18 -0000 1.20 *************** *** 171,174 **** --- 171,175 ---- if (decoder->audio != NULL) free(decoder->audio); if (decoder->video != NULL) free(decoder->video); + if (decoder->bs != NULL) free(decoder->bs); free(decoder); } *************** *** 193,200 **** dv_YUY2_init(clamp_luma, clamp_chroma); dv_YV12_init(clamp_luma, clamp_chroma); - _dv_init_vlc_test_lookup(); - _dv_init_vlc_encode_lookup(); - _dv_init_qno_start(); - _dv_prepare_reorder_tables(); done=TRUE; --- 194,197 ---- *************** *** 455,459 **** if(!seg->bs) { ! seg->bs = _dv_bitstream_init(); if(!seg->bs) goto no_mem; --- 452,456 ---- if(!seg->bs) { ! dv->bs = seg->bs = _dv_bitstream_init(); if(!seg->bs) goto no_mem; Index: dv_types.h =================================================================== RCS file: /cvsroot/libdv/libdv/libdv/dv_types.h,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -r1.21 -r1.22 *** dv_types.h 20 Oct 2003 19:46:50 -0000 1.21 --- dv_types.h 29 Oct 2003 17:02:18 -0000 1.22 *************** *** 476,479 **** --- 476,480 ---- uint8_t ssyb_pack [256]; uint8_t ssyb_data [45][4]; + bitstream_t *bs; #if HAVE_LIBPOPT Index: encode.c =================================================================== RCS file: /cvsroot/libdv/libdv/libdv/encode.c,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -r1.16 -r1.17 *** encode.c 27 Oct 2003 17:21:25 -0000 1.16 --- encode.c 29 Oct 2003 17:02:18 -0000 1.17 *************** *** 470,481 **** }; void _dv_prepare_reorder_tables(void) { ! int i; ! for (i = 0; i < 64; i++) { ! reorder_88[i]--; ! reorder_88[i] *= 2; ! reorder_248[i]--; ! reorder_248[i] *= 2; } } --- 470,486 ---- }; + void _dv_prepare_reorder_tables(void) { ! static int done = 0; ! if (done == 0) { ! int i; ! for (i = 0; i < 64; i++) { ! reorder_88[i]--; ! reorder_88[i] *= 2; ! reorder_248[i]--; ! reorder_248[i] *= 2; ! } ! done = 1; } } *************** *** 1495,1498 **** --- 1500,1507 ---- dv_init( clamp_luma, clamp_chroma); + _dv_init_vlc_test_lookup(); + _dv_init_vlc_encode_lookup(); + _dv_init_qno_start(); + _dv_prepare_reorder_tables(); result->frame_count = 0; *************** *** 1527,1530 **** --- 1536,1543 ---- free(encoder); } + if (vlc_encode_lookup != NULL) + free(vlc_encode_lookup); + if (vlc_num_bits_lookup != NULL) + free(vlc_num_bits_lookup); } /* dv_encoder_free */ Index: parse.c =================================================================== RCS file: /cvsroot/libdv/libdv/libdv/parse.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -r1.10 -r1.11 *** parse.c 20 Oct 2003 19:46:50 -0000 1.10 --- parse.c 29 Oct 2003 17:02:18 -0000 1.11 *************** *** 887,890 **** --- 887,891 ---- parse_error: no_bitstream: + free( bs ); return(-1); } /* dv_parse_header */ |