X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fflac.c;h=86b61cef0379a53b762d2e1459459dc5c4b14ada;hb=827e70ec89be143e2b6ab89a63fa9528af7fb27a;hp=b1167cb3ea7d1fd3db00d5b36ac403856bd9c43f;hpb=bf7b2f4aefd9c83f75efc0f09607bd6fc1999b8d;p=platform%2Fupstream%2Flibsndfile.git diff --git a/src/flac.c b/src/flac.c index b1167cb..86b61ce 100644 --- a/src/flac.c +++ b/src/flac.c @@ -29,7 +29,7 @@ #include "sndfile.h" #include "common.h" -#if 0 /* HAVE_EXTERNAL_LIBS : Disable for TIZEN */ +#if HAVE_EXTERNAL_LIBS #include #include @@ -68,9 +68,9 @@ typedef struct unsigned bufferpos ; const FLAC__Frame *frame ; + FLAC__bool bufferbackup ; unsigned compression ; - } FLAC_PRIVATE ; typedef struct @@ -182,9 +182,10 @@ flac_buffer_copy (SF_PRIVATE *psf) if (pflac->ptr == NULL) { /* - ** This pointer is reset to NULL each time the current frame has been - ** decoded. Somehow its used during encoding and decoding. + ** Not sure why this code is here and not elsewhere. + ** Removing it causes valgrind errors. */ + pflac->bufferbackup = SF_TRUE ; for (i = 0 ; i < frame->header.channels ; i++) { if (pflac->rbuffer [i] == NULL) @@ -197,11 +198,6 @@ flac_buffer_copy (SF_PRIVATE *psf) return 0 ; } ; - if (pflac->remain % channels != 0) - { psf_log_printf (psf, "Error: pflac->remain %u channels %u\n", pflac->remain, channels) ; - return 0 ; - } ; - switch (pflac->pcmtype) { case PFLAC_PCM_SHORT : { short *retpcm = (short*) pflac->ptr ; @@ -362,6 +358,7 @@ sf_flac_write_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC pflac->frame = frame ; pflac->bufferpos = 0 ; + pflac->bufferbackup = SF_FALSE ; pflac->wbuffer = buffer ; flac_buffer_copy (psf) ; @@ -879,33 +876,18 @@ flac_init (SF_PRIVATE *psf) static unsigned flac_read_loop (SF_PRIVATE *psf, unsigned len) { FLAC_PRIVATE* pflac = (FLAC_PRIVATE*) psf->codec_data ; - FLAC__StreamDecoderState state ; pflac->pos = 0 ; pflac->len = len ; pflac->remain = len ; - - state = FLAC__stream_decoder_get_state (pflac->fsd) ; - if (state > FLAC__STREAM_DECODER_END_OF_STREAM) - { psf_log_printf (psf, "FLAC__stream_decoder_get_state returned %s\n", FLAC__StreamDecoderStateString [state]) ; - /* Current frame is busted, so NULL the pointer. */ - pflac->frame = NULL ; - } ; - - /* First copy data that has already been decoded and buffered. */ if (pflac->frame != NULL && pflac->bufferpos < pflac->frame->header.blocksize) flac_buffer_copy (psf) ; while (pflac->pos < pflac->len) { if (FLAC__stream_decoder_process_single (pflac->fsd) == 0) break ; - state = FLAC__stream_decoder_get_state (pflac->fsd) ; - if (state >= FLAC__STREAM_DECODER_END_OF_STREAM) - { psf_log_printf (psf, "FLAC__stream_decoder_get_state returned %s\n", FLAC__StreamDecoderStateString [state]) ; - /* Current frame is busted, so NULL the pointer. */ - pflac->frame = NULL ; + if (FLAC__stream_decoder_get_state (pflac->fsd) >= FLAC__STREAM_DECODER_END_OF_STREAM) break ; - } ; } ; pflac->ptr = NULL ;