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