From: Gildas Bazin Date: Fri, 21 Nov 2003 12:18:54 +0000 (+0000) Subject: * modules/demux/flac.c, modules/codec/flac.c: couple of fixes. X-Git-Tag: 0.7.0~452 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=662af912f9048257516fec844925f937db85dff6;p=vlc * modules/demux/flac.c, modules/codec/flac.c: couple of fixes. --- diff --git a/modules/codec/flac.c b/modules/codec/flac.c index 05ea8aa720..0b90e96ca1 100644 --- a/modules/codec/flac.c +++ b/modules/codec/flac.c @@ -2,7 +2,7 @@ * flac.c: flac decoder/packetizer module making use of libflac ***************************************************************************** * Copyright (C) 1999-2001 VideoLAN - * $Id: flac.c,v 1.1 2003/11/21 01:45:48 gbazin Exp $ + * $Id: flac.c,v 1.2 2003/11/21 12:18:54 gbazin Exp $ * * Authors: Gildas Bazin * Sigmund Augdal @@ -404,7 +404,17 @@ static aout_buffer_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) { decoder_state_error( p_dec, FLAC__stream_decoder_get_state( p_sys->p_flac ) ); + FLAC__stream_decoder_flush( p_dec->p_sys->p_flac ); } + + /* If the decoder is in the "aborted" state, + * FLAC__stream_decoder_process_single() won't return an error. */ + if( FLAC__stream_decoder_get_state(p_dec->p_sys->p_flac) + == FLAC__STREAM_DECODER_ABORTED ) + { + FLAC__stream_decoder_flush( p_dec->p_sys->p_flac ); + } + block_Release( p_sys->p_block ); } @@ -434,7 +444,6 @@ DecoderReadCallback( const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], decoder_t *p_dec = (decoder_t *)client_data; decoder_sys_t *p_sys = p_dec->p_sys; - msg_Err( p_dec, "buffer: %i", p_sys->p_block->i_buffer ); if( p_sys->p_block && p_sys->p_block->i_buffer ) { *bytes = __MIN(*bytes, (unsigned)p_sys->p_block->i_buffer); @@ -570,6 +579,8 @@ static void DecoderErrorCallback( const FLAC__StreamDecoder *decoder, default: msg_Err( p_dec, "got decoder error: %d", status ); } + + FLAC__stream_decoder_flush( p_dec->p_sys->p_flac ); return; } @@ -633,7 +644,6 @@ static void decoder_state_error( decoder_t *p_dec, case FLAC__STREAM_DECODER_UNPARSEABLE_STREAM: msg_Err( p_dec, "The decoder encountered reserved fields in use " "in the stream." ); - FLAC__stream_decoder_flush( p_dec->p_sys->p_flac ); break; case FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR: msg_Err( p_dec, "An error occurred allocating memory." ); diff --git a/modules/demux/flac.c b/modules/demux/flac.c index af232fdff3..08440e8041 100644 --- a/modules/demux/flac.c +++ b/modules/demux/flac.c @@ -2,7 +2,7 @@ * flac.c : FLAC demux module for vlc ***************************************************************************** * Copyright (C) 2001 VideoLAN - * $Id: flac.c,v 1.6 2003/11/21 01:45:48 gbazin Exp $ + * $Id: flac.c,v 1.7 2003/11/21 12:18:54 gbazin Exp $ * * Authors: Gildas Bazin * @@ -131,13 +131,13 @@ static int Open( vlc_object_t * p_this ) es_format_Init( &p_sys->p_packetizer->fmt_in, AUDIO_ES, VLC_FOURCC( 'f', 'l', 'a', 'c' ) ); - /* Store STREAMINFO for the decoder an packetizer */ + /* Store STREAMINFO for the decoder and packetizer */ p_sys->p_packetizer->fmt_in.i_extra = fmt.i_extra = STREAMINFO_SIZE; p_sys->p_packetizer->fmt_in.p_extra = malloc( STREAMINFO_SIZE ); stream_Read( p_input->s, p_sys->p_packetizer->fmt_in.p_extra, STREAMINFO_SIZE ); - /* Fake this a the last metadata block */ + /* Fake this as the last metadata block */ ((uint8_t*)p_sys->p_packetizer->fmt_in.p_extra)[0] |= 0x80; fmt.p_extra = malloc( STREAMINFO_SIZE ); memcpy( fmt.p_extra, p_sys->p_packetizer->fmt_in.p_extra, STREAMINFO_SIZE); @@ -179,7 +179,7 @@ static void Close( vlc_object_t * p_this ) demux_sys_t *p_sys = p_input->p_demux_data; /* Unneed module */ - module_Unneed( p_input, p_sys->p_packetizer->p_module ); + module_Unneed( p_sys->p_packetizer, p_sys->p_packetizer->p_module ); if( p_sys->p_packetizer->fmt_in.p_extra ) free( p_sys->p_packetizer->fmt_in.p_extra );