This chapter illustrates the TV Anytime
data format currently used in the STORit project. Experience gained while using it has
taught us some weaknesses of this approach, which we plan to remove in the format we will
submit to the TV Anytime forum.
We have chosen an XML-like notation for all data, because it's readable and reasonably
self-explaining. In these early stages of concept validation and debugging that is
extremely valuable, as practise has proved once more. In commercial application,
efficiency in terms of the amount of bytes spent on the data will become more important,
and a more byte-efficient coding scheme will probably be required.
Crucial to the concept of TV Anytime is the ability to refer to content, say a television programme, uniquely and independently of its channel and time of broadcasting. To this end we use the Unique Programme Identifier, or upi. It takes the following shape:
upi:<authority>:<unique code> e.g. |
box 1: the unique programme identifier, or upi
Here the 'unique code' is meant to be
unique within the name space of the 'authority', i.e. each broadcasting company can be in
charge of its own upis, and no global institution handing our unique codes is required.
In addition to the reference to a particular piece of content by means of a upi, we also
need the ability to refer to a particular time slot on a particular channel in order to
reveal where and when a programme can be obtained. In the future we may also wish to
indicate where it can be downloaded. In view of such future extensions, it seems logical
to use some form of a url (uniform resource locator). The one we use for pointing to DVB
locations is an extension of the one proposed by Nokia in DAVIC, and takes the following
shape:
dvb://<original_network_id>.[<transport_stream_id>][.<service_id> e.g. dvb://bbc..bbc1;1a639f@19991129T201500D013000 |
box 2: a url to indicate the location in channel and time of a programme in DVB
where we have used a textual format for network and service ids. The notation used for date, time and duration is in line with iso 8601. This time indication is used for showing schedules in user interfaces, and for approximate timing of recordings. The event code can be used for more accurate timing of recording if desired, we do not currently use it in STORit.
The information required for TV Anytime functionality includes the following:
In STORit we have chosen to use four separate tables according to the list above. This does have some disadvantages, as will be pointed out further on. But first, let's have a look at the tables. We have used an XML-like notation, as in this early stage human readability is a strong advantage. More about efficiency further on in this document.
Location Resolution table
This table gives the location(s) where programmes can be obtained, i.e. it links upis to urls. The example below should be sufficiently self-explaining. It contains only one programme, which is repeated the next morning.
| <LOCATION_RESOLUTION_TABLE> <PROGLOC ID="upi:bbc:1317419966" TITLE="Ready, Steady, Cook"> "dvb://bbc..bbc2;19990916T1501D0028" "dvb://bbc..bbc2;19990917T0901D0028" </PROGLOC> </LOCATION_RESOLUTION_TABLE> |
box 3: a location resolution table with one entry
Metadata table
This table gives descriptive information about programmes. The self-explaining example below again contains only one programme.
| < META_DATA_TABLE> <PROGMD ID="upi:bbc:1317419966" TITLE="Ready, Steady, Cook"> <SYNOPSIS> "Who will triumph today? The Red Tomatoes and the Green Peppers battle it out over the pots and pans in Fern Britton's studio kitchen." </SYNOPSIS> <GENRE> "Entertainment:Game Shows" </GENRE> </PROGMD> </ META_DATA_TABLE> |
box 4: a metadata table with one basic entry
This example contains the metadata that is automatically generated by BBC R&D. We do use other meta data fields for series etc. but those are generated by hand. Here's an example, in which you'll recognise the cast, some keywords, a link to the series' web site and a link to a related television programme.
| < META_DATA_TABLE> <PROGMD ID="upi:bbc:B1ENeastenders" TITLE="Series: EastEnders"> <SYNOPSIS> "All episodes of this London soap shown on BBC Television." </SYNOPSIS> <GENRE> "Entertainment:Soaps" </GENRE> <PERSONNEL> <PERSON ROLE="Bianca Butcher" NAME="Patsy Palmer" /> <PERSON ROLE="Dan Sullivan" NAME="Craig Fairbrass" /> </PERSONNEL> <MM_LINK TYPE=WEB TITLE="The Eastenders WWW site" URL="http://www.bbc.co.uk/eastenders/" /> <MM_LINK TYPE=WEB TITLE="Eastenders revealed- behind the scenes." URL="http://www.bbc.co.uk/choice/eastenders/" /> <PROG_LINK TITLE="EastEnders Revealed" ID="upi:bbc:CHENeastenders" /> <KEYWORDS> "EastEnders" "London" </KEYWORDS> </PROGMD> </ META_DATA_TABLE> |
box 5: a metadata table with one more elaborate entry
Group resolution table
This table reveals the composition of programme groups. The example below contains a group of programmes. Three are listed, but there are more (complete=false). The order in this series is irrelevant (ordered=false) and the episodes do replace one another as news bulletins would (replace=false). A group may also contain other groups.
| <
GROUP_RESOLUTION_TABLE> </GROUP> <GROUP ID="upi:bbc:readycook" TITLE="BBC2 series: Ready, Steady, Cook" COMPLETE="FALSE" ORDERED="FALSE" REPLACE="FALSE"> "upi:bbc:1317419209" "upi:bbc:1317419966" "upi:bbc:1317420220" </GROUP> </ GROUP_RESOLUTION_TABLE> |
box 6: a group resolution table with one entry
Segmentation table
This table gives information about segments in programmes. The example below again contains only one programme, containing three segments. Each has a title, number and co-ordinates. These co-ordinates are currently expressed in bytes with respect to the beginning of the programme, clearly a better solution is required. In STORit, segmentation has only been used for recorded programmes, table entries being manually constructed afterwards.
| <
PROGRAM_SEGMENTATION_TABLE> <PROGSEG ID="upi:bbc:12345" TITLE="Tomorrow's World" > <SEGMENT NUMBER="1" TITLE="Computer made from living nerve cells" STARTTIME="37000000" ENDTIME="276800000" /> <SEGMENT NUMBER="2" TITLE="A bloodless blood test for diabetics" STARTTIME="276800000" ENDTIME="580000000" /> <SEGMENT NUMBER="3" TITLE="21st century video recorder" STARTTIME="580000000" ENDTIME="1126400000" /> </PROGSEG> </ PROGRAM_SEGMENTATION_TABLE> |
box 7: a segmentation table with one entry