|
VS1033C Datasheet, PDF (53/74 Pages) List of Unclassifed Manufacturers – MP3/AAC/WMA/MIDI AUDIO CODEC | |||
|
◁ |
VLSI
Solution y
VS1033c PRELIMINARY
VS1033C
9. OPERATION
9.10 Fast Forward / Rewind
9.10.1 MP3
MPEG1.0 and MPEG2.0 layer 3 deï¬nes a stream format suitable for random-access. When you want to
skip forward or backwards in the ï¬le, ï¬rst send 2048 zeros, then continue sending the ï¬le from the new
location.
By sending zeros you make certain a partial frame does not cause loud artefacts in the sound. The normal
ï¬le type checking then ï¬nds a new MP3 header and continues decoding.
9.10.2 AAC - ADTS
MPEG2.0 Advanced Audio Coded (AAC) deï¬nes a stream format suitable for random-access (ADTS).
When you want to skip forward or backwards in the ï¬le, ï¬rst send 2048 zeros, then continue sending the
ï¬le from the new location.
By sending zeros you make certain a partial frame does not cause loud artefacts in the sound. The normal
ï¬le type checking then ï¬nds a new ADTS header and continues decoding.
9.10.3 AAC - ADIF, MP4
MPEG4.0 Advanced Audio Codec (AAC) speciï¬es a multimedia ï¬le format (.mp4 / .m4a) but does not
specify a stream format and MPEG2.0 AAC speciï¬es a ï¬le format (ADIF) in addition to the streamable
ADTS format. ADIF and .mp4 / .m4a are not suitable for random-access and it is recommended that
they are converted to ADTS format for playback.
However, it is also possible to implement fast forward and rewind for ADIF and .mp4 / .m4a ï¬les. The
easiest way is to use the resync ï¬eld (see section 9.9.1):
⢠Write 8192 to resync
â Write 0x1969 to SCI WRAMADDR, Write 0x2000 to SCI WRAM
⢠Send 2048 zeroes
⢠Make a seek X in the ï¬le (X > 0 for forward seek)
⢠Indicate the low part of the seek amount by writing to seek1
â Write 0x1967 to SCI WRAMADDR, Write (X â 2048)&1023 to SCI WRAM
⢠Indicate the high part of the seek amount by writing to seek2
â Write 0x1968 to SCI WRAMADDR, Write (X â 2048)/1024 to SCI WRAM
⢠Continue sending the ï¬le from the new location
Perfect fast forward and rewind can be implemented by using the jumpPoints table and making seeks
only on packet or data block boundaries.
Version 0.9, 2006-08-15
53
|
▷ |