English
Language : 

VS1033 Datasheet, PDF (49/70 Pages) List of Unclassifed Manufacturers – MP3/AAC/WMA/MIDI AUDIO CODEC
VLSI
Solution y
VS1033a PRELIMINARY
VS1033A
9. OPERATION
9.9 Fast Forward / Rewind
9.9.1 MP3
MPEG1.0 and MPEG2.0 layer 3 defines a stream format suitable for random-access. When you want to
skip forward or backwards in the file, first send 2048 zeros, then continue sending the file from the new
location.
By sending zeros you make certain a partial frame does not cause loud artefacts in the sound. The normal
file type checking then finds a new MP3 header and continues decoding.
9.9.2 AAC - ADTS
MPEG2.0 Advanced Audio Coded (AAC) defines a stream format suitable for random-access (ADTS).
When you want to skip forward or backwards in the file, first send 2048 zeros, then continue sending the
file from the new location.
By sending zeros you make certain a partial frame does not cause loud artefacts in the sound. The normal
file type checking then finds a new ADTS header and continues decoding.
9.9.3 AAC - ADIF, MP4
MPEG4.0 Advanced Audio Codec (AAC) specifies a multimedia file format (.mp4 / .m4a) but does not
specify a stream format and MPEG2.0 AAC specifies a file 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 files. The
easiest way is to use the resync field (see section 9.8.1):
• Write 8192 to resync
– Write 0x1969 to SCI WRAMADDR, Write 0x2000 to SCI WRAM
• Send 2048 zeroes
• Make a seek X in the file (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 file 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.6, 2005-01-05
49