Types of VideoList 2 file
There are three types of VideoList file:
- VideoList 1 file
This is used by the RISC OS version of VideoList. It is to be considered obsolete.
- VideoList 2 file
This is used by the Windows version of VideoList 2. This is deprecated as no software using it was publically released, and this format should not be used.
- VideoList 2 file, revision 2
This is slightly extended version of the VideoList 2 file format. Must be supported.
File format compliance
In order to be considered VideoList 2 compatible, you must be
able to read and write the VideoList 2 revision 2 file (hereafter referred to as VLF2R2).
You should not use the earlier VideoList 2 format (VLF2). Compatibility
is not required as no software legitimately creates this type of file.
There is no requirement to support the earlier VideoList for RISC OS file format (VLF1).
Whether you do, or not, is entirely up to you.
The VideoList file, though freely available, is only defined here. Any extensions added to the file format that are not defined in the specification available here is an unofficial extension and its effect on other software is undefined; additionally other software is entitled to reject the file as being invalid or to slice out stuff it doesn't recognise. If you have an extension, you must contact me to see about adding it to the base specification.
Licence conditions relating to the use of the VideoList file formats
Really simple:
File format description (all)
Download the complete annotated description of all VideoList file formats. Windows help file, 64K.
File format description (VLF2R2)
Here is a brief outline for those unable to view Windows help files.
It is very important to realise that the values given (for example, DVD = media
type 7) is for VideoList 2 as supplied. Because most things are read from
tables held on disc, the user could totally alter these settings. This
may be addressed in a future version of the file format; for now you can either assume
default the values given below or you could read the VideoList .dat files (if
you have access to them).
VideoList 2 file format (draft)
Original: March Y2K2
Revised : October Y2K4 / May Y2K5
FILE HEADER
<byte> Version (&02)
<halfword> Number of videos in database
<byte> Flags:
Bit 0 : Set if a revision 2 format file.
Bits 1 to 5 : Reserved, should be zero.
Bit 6 : Reserved for a future enhancement.
Bit 7 : FastLoad data present (unsupported).
You should fault the loading of the data file if any of the
flags values are unexpected. Don't just look for the flags
that you support, ensure the rest are zero.
<data> 64 bytes for creator identity, zero padded.
<data> 4028 NULL bytes to pad to 4K boundary.
VIDEO ENTRY (repeats for each video)
<string> Video title (32 chars)
<byte> Flags byte 1:
Bits 0 to 3 - Media type
0 - Video Home System
1 - Betamax, BetaSP, DigitalBeta
2 - 8mm, Hi8, Digital8
3 - Digital Video Cassette
4 - VideoCD (VCD)
5 - Super VideoCD (SVCD)
6 - DivX/XviD/3ivx on removable media
7 - Digital Versatile Disc
8 - Other (ciné, etc)
Bit 4 - Unused
Bit 5 - Media is read-only (DVD, VideoCD...)
Bit 6 - Media is hi-band (S-VHS, Hi8 etc)
Bit 7 - Media is prerecorded
<byte> Filter flag: Is 0 if not matched, 1 if matched. All other
values reserved, is set to '0' prior to any filtering.
(INTERNAL USE; value in file is ignored)
<halfword> Media length (upper byte is hours, lower byte is minutes)
<halfword> Time free on media (format as for media length)
<halfword> Fixed identity number (media ID)
<halfword> Index lookup number (INTERNAL USE; value in file is ignored)
<byte> Number of programmes currently on this media (max. 20)
<byte> Unused
<word> Reserved (VS/PVIM)
<word> Reserved (VS/LCOT)
<word> Reserved (VS/LRT)
<word> Reserved (VS/BN)
<byte> Reserved (VS/LDA)
<3 bytes> Reserved (VS/unused)
[header = 64 bytes]
PROGRAMME DATA (repeats 20 times, once for each programme)
<string> Programme title (32 chars)
<string> Programme details (128 chars)
<halfword> Length (upper byte is hours, lower byte is minutes)
<byte> Date (day)
<byte> Date (month in lower 4 bits, century from 1900 in upper 4)
<byte> Date (year, offset from 1900)
<byte> Flags byte 1: Bit 0 - Locked
Bit 1 - Reserved
Bit 2 - Programme is Closed Captioned
(subtitled)
Bit 3 - Programme recorded in Long Play
Bit 4 - Programme flagged as "To be watched".
Bit 5 - Extended data is valid
(clear if not defined)
Bits 6 to 7 - Unused
<word> Genre (extended data):
Byte 0 - Primary genre
Byte 1 - Secondary genre
Byte 2 - Tertiary genre
Byte 3 - Unused
0 - No specific genre 1 - Action
2 - Adventure 3 - Adult
4 - Animation 5 - Comedy
6 - Crime 7 - Documentary
8 - Drama 9 - Fantasy
10 - Family 11 - Film noir
12 - Horror 13 - Kids
14 - Music video 15 - Musical
16 - Mystery 17 - Romance
18 - Sci-Fi 19 - Short film
20 - Sport 21 - Thriller
22 - War 23 - Western
24 to 255 - Undefined, can be user-altered
<byte> Aspect (extended data):
Bits 0 to 2 - Aspect ratio
0 - 4:3 (standard - 1.33:1)
1 - 14:9 (1.56 fake 'widescreen')
2 - 16:9 / 1.85:1
4 - 21:9 / 2.35:1
5-7 - Undefined
Bits 3 - 7 - Reserved
<byte> Primary Audio mode (extended data):
Bits 0 to 7 : 0 - None
1 - Linear mono
2 - Linear stereo
3 - HiFi (PCM) mono
4 - HiFi (PCM) stereo
5 - MPEG audio
6 - Digital mono
7 - Digital stereo (2.0)
8 - Digital surround (5.1)
9 - DTS
10- THX
<byte> Rating (extended):
Bits 0 to 3 - Rating
0 - No rating
1 - U ; Universal
2 - C ; Children
3 - PG-U * ; PG-U (unoff. '10')
4 - 12 ; Age 12 or more
5 - PG-12 * ; 12, with guidance
6 - PG ; Parental Guidance
7 - 13 * ; 13+ (unofficial)
8 - 15 ; 15 or older
9 - 16 * ; 16+ (unofficial)
10 - 18 ; 18 or older
11 - 21 * ; 21+ (EU cert.)
12 - Uncertified
13 to 15 undefined
Bits 4 to 7 - Reserved
<byte> Secondary Audio mode (extended data):
Bits 0 to 7 : 0 - None
1 - Linear mono
2 - Linear stereo
3 - HiFi (PCM) mono
4 - HiFi (PCM) stereo
5 - MPEG audio
6 - Digital mono
7 - Digital stereo (2.0)
8 - Digital surround (5.1)
9 - DTS
10- THX
11- Multilingual same
<word> IMDb identity number
<string> Channel (22 characters)
[each programme = 200 bytes]
[REPEAT programme data]
[all programmes = 200 bytes x 20 programmes = 4000 bytes]
<data> Unused, 28 bytes to pad each entry to 4092 bytes in length. <word> "#!V!", to aid automatic recovery. [REPEAT video data]
[each video = 4096 bytes]
Notes
This video data file is a more recent revision than is supported by
this version of <appname>. Loading this file may cause incorrect results or possible
data loss. Continue loading?actualyear = 1900 + (century * 100) +
year(1900 + 255).(1900 + (15 * 100) +
255).offset = (which_entry * 4096) + 4096