File Format Comparison
Comparison of existing DVB file formats.
"Nokia" format.
Satellite/network/transponder/channel listing.
Example:
:SAT "Astra" 19.2 E :NET "Canal Sat :TRP 1074 1189500 275000 1 V 0 3/4 :CHN "Canal Sat :CHN "Hit List" 29461 R
- Can only represent DVBS.
- From libdvb - cannot find other examples.
- Can be edited in a text editor.
- Easy to parse.
- Appears to be the format used by an unknown nokia receiver (?)
- May not be the same across all nokia devices.
meztler bros' libdvb XML
Satellite/network/transponder/channel/etc listing.
Example:
<?xml version="1.0"?> <satellite> <transponder type="S" freq="11817000" srate="27500000" polarity="V" > <service id="8001" ca="1"> <description tag="0x48" type="1" provider_name="CANALSATELLITE" service_name="S$ <ca_descriptor tag="0x09" system_id="0x0500" ca_pid="2" /> <ca_descriptor tag="0x09" system_id="0x0500" ca_pid="5" /> <stream type="198" pid="1251"> </stream> </satellite>
- Can represent all FE types.
- Extensible
- Can be edited in a text editor, but XML reduces clarity.
- Easy to parse, but requires XML parser.
meztler bros' libdvb plaintext
Satellite/network/transponder/channel/etc listing.
Example:
LNB ID 2 TYPE 0 LOF1 9750000 LOF2 10600000 SLOF 11700000 DISEQCNR 2 SAT ID 3592 NAME "Thor 2,3 " LNBID 2 FMIN 10700000 FMAX 12700000 TRANSPONDER ID 0001 SATID 3592 TYPE 0 FREQ 11229000 POL H SRATE 24500000 FEC 7/8 CHANNEL ID 0 SATID 3592 TPID 1 SID ca TYPE 0 VPID 2bc APID 2bd ANAME "eng" TTPID c9 PCRPID 2bc CHANNEL ID 1 SATID 3592 TPID 1 SID cb TYPE 0 VPID 200 APID 280 TTPID 240 CHANNEL ID 2 SATID 3592 TPID 1 SID cd TYPE 0 VPID 258 APID 259 TTPID cb CHANNEL ID 3 SATID 3592 TPID 1 SID 196 TYPE 0 VPID 384 APID 385 TTPID 12d
- Can represent all FE types.
- Exact meaning of some values unclear.
- Extensible.
- Easy to edit in a text editor.
- Easy to parse.
satcodx
Channel oriented listing.
Example:
SATCODX103PANAMSAT 9 TDIC10037200001USA Amer3020PAN009CA______195103000000000000000030000100001ESP__________ica Latina SATCODX103PANAMSAT 9 TDIC10037200001Cino Lat3020PAN009CA______195103000000000000000040000100001ESP__________ino SATCODX103PANAMSAT 9 TDIC10037200001Exa TV 3020PAN009CA______195103000000000000000050000100001ESP__________ SATCODX103PANAMSAT 9 TDIC10037200001Hallmark3020PAN009CA______195103000000000000000060000100001ESP__________ Channel Mex SATCODX103PANAMSAT 9 TDIC10037200001MVS Empr3020PAN009CA______195103000000000000000070000100001ESP__________esarial
- Likely can only be able to represent DVBS.
- Not easily editable.. or understood :)
- Easy to parse.
- Not extensible.
zap
Channel oriented listing.
Example:
BBC Radio 1:658166670:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:6210:14336 BBC Radio 2:658166670:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:6226:14400 BBC Radio 3:658166670:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:6242:14464 BBC Radio 4:658166670:INVERSION_OFF:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:0:6258:14528
- Can represent all FE types - but exact FE type is not encoded in the file.
- Easily editable and understood.
- Easy to parse.
- Not easily extensible - you can keep adding on more stuff at the end, but this reduces clarity a great deal.
vdr sources.conf
This gives a standard identifier to each satellite cluster as there is no other such standard IDs for them defined anywhere.
Example:
S5E Sirius 2/3 S7E Eutelsat W3 S10E Eutelsat W1R S13E Hotbird 1-(5)-6 S16E Eutelsat W2
- Easy to parse
- Extensible (e.g. to -C and -T)
vdr disceqc.conf
This defines diseqc sequences for tuning to a particular channel.
Example:
S19.2E 11700 V 9750 t v W15 [E0 10 38 F0] W15 A W15 t S19.2E 99999 V 10600 t v W15 [E0 10 38 F1] W15 A W15 T S19.2E 11700 H 9750 t V W15 [E0 10 38 F2] W15 A W15 t S19.2E 99999 H 10600 t V W15 [E0 10 38 F3] W15 A W15 T
To find the diseqc sequence for a channel, find the source_id, the frequency, and the polarity. Using those, the entries in diseqc.conf are searched for a matching entry. When found, the associated command string is executed.
Command string example: S19.2E 11700 V 9750 t v W15 [E0 10 38 F0] W15 A W15 t
This matches channels which are from S19.2E, are less than 11700 frequency, V polarity. When matched, it says subtract 9750 from the base frequency, and execute the following diseqc sequence: turn the tone off, 13v, wait 15ms, send a disqec master command, wait 15ms, send tone burst A, wait 15 seconds, turn tone off.
- Very extensible.
- The nicest diseqc representation seen so far.
- Easily editable and understood.
vdr channels.conf
Channel definitions.
RTL Television,RTL;RTL World:12187:hC34:S19.2E:27500:163:104=deu:105:0:12003:1:1089:0 SAT.1;ProSiebenSat.1:12480:vC34:S19.2E:27500:1791:1792=deu;1795=deu:34:0:46:133:33:0 Sky News;BSkyB:11597:vC56:S19.2E:22000:305+131:306=eng:0:0:28707:1:1026:0
- Can represent all FE types.
- Derived from zap format.
- Hard to parse.
- Hard to extend without adding more complexity.
- Not easy to understand.
- Editable in text editor.
Andrew's vague ideas for alternative file formats.
An initial idea for channels:
:DVBCHANNELS-0.1 :TRANSPONDER <source_id> <DVBT|DVBC|DVBS|ATSC> <transport_stream_id> <original_network_id> fe <frequency> <polarization> <inversion> <symbol_rate> <fec_inner> # DVBS fe <frequency> <inversion> <symbol_rate> <fec_inner> <modulation> # DVBC fe <frequency> <inversion> <bandwidth> <code_rate_hp> <code_rate_lp> <constellation> <transmission_mode> <guard_interval> <hierarchy_information> # DVBT fe <frequency> <inversion> <modulation> # ATSC :CHANNEL <program_number> <order_in_channels_list> <group_id> name <name> shortname <shortname> ca <id> <id> ... es <pid> <type> [<language>] [pcr] .... (additional es entries)
- Use VDR diseqc.conf and sources.conf as-is, but with a redesigned channels file format.
- Keep file format as simple as possible, with just as much information as needed.
- Any other information can be retieved using the DVB library and parsing PMTs etc.
- es entries are not strictly necessary as all information can be derived from the PMT once you have the program_number. However, it is useful to store these to accelerate channel changing speed.
- <type> in ES is one of the codes defined in the ISO 13818-1 for elementary streams in PMT tables.