/***************************************************************************** * FUNCTION * daf_seek * DESCRIPTION * * PARAMETERS * input_stream [?] * offset [?] * aud_info_struct *info_p(?) * RETURNS * kal_bool *****************************************************************************/ kal_bool daf_seek(audio_input_stream_struct *input_stream, kal_uint32 *offset) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ kal_int32 v2_tag_size; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ if (*offset == 0) { /* skip id3v2 tag */ if (audio_input_stream_read(input_stream, 10) != 10) { return KAL_FALSE; } if ((v2_tag_size = id3_tag_parse_v2_tag_size(input_stream->ptr)) > 0) { *offset = v2_tag_size; } } audio_input_stream_seek(input_stream, (kal_int32) * offset); if (!daf_parse(input_stream, offset, NULL)) { return KAL_FALSE; } audio_input_stream_seek(input_stream, (kal_int32) * offset); return KAL_TRUE; }
/***************************************************************************** * FUNCTION * daf_seek * DESCRIPTION * * IMPACT * * PARAMETERS * aud_info_struct *info_p * kal_uint32* offset * RETURNS * kal_bool * GLOBALS AFFECTED * *****************************************************************************/ kal_bool daf_seek( audio_input_stream_struct *input_stream, kal_uint32* offset ) { kal_int32 v2_tag_size; if( *offset == 0 ) { // skip id3v2 tag if( audio_input_stream_read( input_stream, 10 ) != 10 ) return KAL_FALSE; if( ( v2_tag_size = id3_tag_parse_v2_tag_size( input_stream->ptr )) > 0 ) *offset = v2_tag_size; } audio_input_stream_seek( input_stream, (kal_int32) *offset ); if( !daf_parse( input_stream, offset, NULL ) ) return KAL_FALSE; audio_input_stream_seek( input_stream, (kal_int32) *offset ); return KAL_TRUE; }