Description of the iriver playlist file
This is NOT a official description of the file format. The file format is determined by reverse engineering and trial and error. Please understand that you are using this information at your own risk (see the license). Lots of thanks to Martin Owen for this wonderful page.General format
The file usually has *.pla extension and it appears to be comprised of 512 bytes blocks.Header
The first 512 bytes block is the header. The first 4 bytes are the number of tracks in the file is some kind of big-endian (???) format. For example if we have 24 tracks in the playlist the first 4 bytes will be:0x00 | 0x00 | 0x00 | 0x18 |
0x69 | 0x72 | 0x69 | 0x76 | 0x65 | 0x72 | 0x20 | 0x55 | 0x4d | 0x53 | 0x20 | 0x50 | 0x4c | 0x41 |
Track entry
The track entry appears to be in bigendian 16-bit format. That is each character is coded in 2 bytes. Usually - if there are only ASCII characters - one character will be encoded as 0x00 0xcc (where 0xcc is the ASCII code). The extra byte may be used for non-latin character sets but furter testing is necessary. This format limits the track path to 255 characters ((512 characters per block - 2 bytes file name index)/2 = 255). I have tried to generate a playlist with an entry that has more than 255 characters in it's path and the iriver plus 3 software crashes shamefully.
The first 2 bytes represent the index in the path where the file name starts. For example if the path for a file is "/folder1/subfolder2/song.mp3" the file name starts at index 20 and the first 2 bytes are:
0x00 | 0x14 |
The total size of the playlist file will be 512*(n + 1) bytes where n is the number of tracks in the playlist.