@ -65,9 +65,6 @@ typedef struct {
AVCodecContext * avctx ;
GetBitContext gb ;
/* init to 0; first frame decode should initialize from extradata and
* set this to 1 */
int context_initialized ;
int numchannels ;
int bytespersample ;
@ -471,21 +468,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
/* short-circuit null buffers */
if ( ! inbuffer | | ! input_buffer_size )
return input_buffer_size ;
/* initialize from the extradata */
if ( ! alac - > context_initialized ) {
if ( alac - > avctx - > extradata_size ! = ALAC_EXTRADATA_SIZE ) {
av_log ( avctx , AV_LOG_ERROR , " alac: expected %d extradata bytes \n " ,
ALAC_EXTRADATA_SIZE ) ;
return input_buffer_size ;
}
if ( alac_set_info ( alac ) ) {
av_log ( avctx , AV_LOG_ERROR , " alac: set_info failed \n " ) ;
return input_buffer_size ;
}
alac - > context_initialized = 1 ;
}
return - 1 ;
init_get_bits ( & alac - > gb , inbuffer , input_buffer_size * 8 ) ;
@ -493,7 +476,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
if ( channels > MAX_CHANNELS ) {
av_log ( avctx , AV_LOG_ERROR , " channels > %d not supported \n " ,
MAX_CHANNELS ) ;
return input_buffer_size ;
return - 1 ;
}
/* 2^result = something to do with output waiting.
@ -678,10 +661,19 @@ static av_cold int alac_decode_init(AVCodecContext * avctx)
{
ALACContext * alac = avctx - > priv_data ;
alac - > avctx = avctx ;
alac - > context_initialized = 0 ;
alac - > numchannels = alac - > avctx - > channels ;
/* initialize from the extradata */
if ( alac - > avctx - > extradata_size ! = ALAC_EXTRADATA_SIZE ) {
av_log ( avctx , AV_LOG_ERROR , " alac: expected %d extradata bytes \n " ,
ALAC_EXTRADATA_SIZE ) ;
return - 1 ;
}
if ( alac_set_info ( alac ) ) {
av_log ( avctx , AV_LOG_ERROR , " alac: set_info failed \n " ) ;
return - 1 ;
}
return 0 ;
}