Added support for HbbTV to libsi

This commit is contained in:
Klaus Schmidinger 2011-12-10 15:51:35 +01:00
parent 96160f91db
commit 76b6ae2cab
7 changed files with 86 additions and 8 deletions

View File

@ -2260,6 +2260,7 @@ Christoph Haubrich <christoph1.haubrich@arcor.de>
for suggesting to implement a function to determine the length of a recording's for suggesting to implement a function to determine the length of a recording's
index file index file
for fixing setting the start time of an edited recording for fixing setting the start time of an edited recording
for adding support for HbbTV to libsi
Pekka Mauno <pekka.mauno@iki.fi> Pekka Mauno <pekka.mauno@iki.fi>
for fixing cSchedule::GetFollowingEvent() in case there is currently no present for fixing cSchedule::GetFollowingEvent() in case there is currently no present

View File

@ -6795,3 +6795,4 @@ Video Disk Recorder Revision History
- Added HasSnr to the DEBUG_SIGNALQUALITY output in cDvbTuner::GetSignalQuality() - Added HasSnr to the DEBUG_SIGNALQUALITY output in cDvbTuner::GetSignalQuality()
(triggered by Ville Skyttä pointing out that the variable HasSnr was unused). (triggered by Ville Skyttä pointing out that the variable HasSnr was unused).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Added support for HbbTV to libsi (thanks to Christoph Haubrich).

View File

@ -6,7 +6,7 @@
* the Free Software Foundation; either version 2 of the License, or * * the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. * * (at your option) any later version. *
* * * *
* $Id: descriptor.c 2.2 2011/06/15 21:26:00 kls Exp $ * $Id: descriptor.c 2.3 2011/12/10 15:47:15 kls Exp $
* * * *
***************************************************************************/ ***************************************************************************/
@ -1005,8 +1005,14 @@ int MHP_TransportProtocolDescriptor::getComponentTag() const {
return componentTag; return componentTag;
} }
char *MHP_TransportProtocolDescriptor::getUrlBase(char *buffer, int size) {
return UrlBase.getText(buffer, size);
}
void MHP_TransportProtocolDescriptor::Parse() { void MHP_TransportProtocolDescriptor::Parse() {
int offset=0; int offset=0;
remote=false;
componentTag=-1;
data.setPointerAndOffset<const descr_transport_protocol>(s, offset); data.setPointerAndOffset<const descr_transport_protocol>(s, offset);
if (getProtocolId() == ObjectCarousel) { if (getProtocolId() == ObjectCarousel) {
const transport_via_oc *oc; const transport_via_oc *oc;
@ -1021,12 +1027,24 @@ void MHP_TransportProtocolDescriptor::Parse() {
data.setPointerAndOffset<const transport_via_oc_end>(rem, offset); data.setPointerAndOffset<const transport_via_oc_end>(rem, offset);
componentTag=rem->component_tag; componentTag=rem->component_tag;
} }
} else { //unimplemented } else if (getProtocolId() == HTTPoverInteractionChannel) {
remote=false; const transport_via_http *http;
componentTag=-1; data.setPointerAndOffset<const transport_via_http>(http, offset);
UrlBase.setDataAndOffset(data+offset, http->url_base_length, offset);
// fill URL Extension,
UrlExtensionLoop.setData(data+offset, getLength()-offset);
} else {
//unimplemented
} }
} }
void MHP_TransportProtocolDescriptor::UrlExtensionEntry::Parse() {
const descr_url_extension_entry *s;
s=data.getData<const descr_url_extension_entry>();
UrlExtension.setData(data, s->url_extension_length);
}
void MHP_DVBJApplicationDescriptor::Parse() { void MHP_DVBJApplicationDescriptor::Parse() {
applicationLoop.setData(data+sizeof(descr_dvbj_application), getLength()-sizeof(descr_dvbj_application)); applicationLoop.setData(data+sizeof(descr_dvbj_application), getLength()-sizeof(descr_dvbj_application));
} }
@ -1059,6 +1077,17 @@ void MHP_ApplicationIconsDescriptor::Parse() {
data.setPointerAndOffset<const descr_application_icons_descriptor_end>(s, offset); data.setPointerAndOffset<const descr_application_icons_descriptor_end>(s, offset);
} }
char *MHP_SimpleApplicationLocationDescriptor::getLocation(char *buffer, int size) {
return location.getText(buffer, size);
}
void MHP_SimpleApplicationLocationDescriptor::Parse() {
int offset=0;
const descr_simple_application_location_descriptor *loc;
data.setPointerAndOffset<const descr_simple_application_location_descriptor>(loc, offset);
location.setDataAndOffset(data+offset, loc->descriptor_length, offset);
}
int RegistrationDescriptor::getFormatIdentifier() const { int RegistrationDescriptor::getFormatIdentifier() const {
return HILOHILO(s->format_identifier); return HILOHILO(s->format_identifier);
} }

View File

@ -6,7 +6,7 @@
* the Free Software Foundation; either version 2 of the License, or * * the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. * * (at your option) any later version. *
* * * *
* $Id: descriptor.h 2.2 2011/06/15 21:26:00 kls Exp $ * $Id: descriptor.h 2.3 2011/12/10 15:47:15 kls Exp $
* * * *
***************************************************************************/ ***************************************************************************/
@ -639,17 +639,29 @@ protected:
class MHP_TransportProtocolDescriptor : public Descriptor { class MHP_TransportProtocolDescriptor : public Descriptor {
public: public:
class UrlExtensionEntry : public LoopElement {
public:
virtual int getLength() { return sizeof(descr_url_extension_entry)+UrlExtension.getLength(); }
String UrlExtension;
protected:
virtual void Parse();
};
enum Protocol { ObjectCarousel = 0x01, IPviaDVB = 0x02, HTTPoverInteractionChannel = 0x03 }; enum Protocol { ObjectCarousel = 0x01, IPviaDVB = 0x02, HTTPoverInteractionChannel = 0x03 };
int getProtocolId() const; int getProtocolId() const;
int getProtocolLabel() const; int getProtocolLabel() const;
bool isRemote() const; bool isRemote() const;
int getComponentTag() const; int getComponentTag() const;
char *getUrlBase(char *buffer, int size);
StructureLoop<UrlExtensionEntry> UrlExtensionLoop;
protected: protected:
virtual void Parse(); virtual void Parse();
private: private:
const descr_transport_protocol *s; const descr_transport_protocol *s;
bool remote; bool remote;
int componentTag; int componentTag;
String UrlBase;
}; };
class MHP_DVBJApplicationDescriptor : public Descriptor { class MHP_DVBJApplicationDescriptor : public Descriptor {
@ -685,6 +697,15 @@ private:
const descr_application_icons_descriptor_end *s; const descr_application_icons_descriptor_end *s;
}; };
class MHP_SimpleApplicationLocationDescriptor : public Descriptor {
public:
char *getLocation(char *buffer, int size);
protected:
virtual void Parse();
private:
String location;
};
class RegistrationDescriptor : public Descriptor { class RegistrationDescriptor : public Descriptor {
public: public:
int getFormatIdentifier() const; int getFormatIdentifier() const;

View File

@ -10,7 +10,7 @@
* the Free Software Foundation; either version 2 of the License, or * * the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. * * (at your option) any later version. *
* * * *
* $Id: headers.h 2.2 2011/06/15 21:26:00 kls Exp $ * $Id: headers.h 2.3 2011/12/10 15:47:15 kls Exp $
* * * *
***************************************************************************/ ***************************************************************************/
@ -1907,6 +1907,11 @@ struct descr_transport_protocol {
/* protocol_id-specific selector bytes follow */ /* protocol_id-specific selector bytes follow */
}; };
struct descr_url_extension_entry {
u_char url_extension_length :8;
/* URL extension string */
};
#define TRANSPORT_VIA_OC_LEN 1 #define TRANSPORT_VIA_OC_LEN 1
struct transport_via_oc { struct transport_via_oc {
@ -1940,6 +1945,12 @@ struct transport_via_oc_end {
u_char component_tag :8; u_char component_tag :8;
}; };
#define TRANSPORT_VIA_HTTP_LEN 1
struct transport_via_http {
u_char url_base_length :8;
};
/* 0x03 dvb_j_application_descriptor() */ /* 0x03 dvb_j_application_descriptor() */
#define DESCR_DVBJ_APPLICATION_LEN 2 #define DESCR_DVBJ_APPLICATION_LEN 2
@ -1991,6 +2002,16 @@ struct descr_application_icons_descriptor_end {
u_char icon_flags_lo :8; u_char icon_flags_lo :8;
}; };
/* 0x15 simple application location descrptor */
#define DESCR_SIMPLE_APPLICATION_LOCATION_LEN 3
struct descr_simple_application_location_descriptor {
u_char descriptor_tag :8;
u_char descriptor_length :8;
/* inital_path_bytes */
};
// Private DVB Descriptor Premiere.de // Private DVB Descriptor Premiere.de
// 0xF2 Content Transmission Descriptor // 0xF2 Content Transmission Descriptor
// http://dvbsnoop.sourceforge.net/examples/example-private-section.html // http://dvbsnoop.sourceforge.net/examples/example-private-section.html

View File

@ -6,7 +6,7 @@
* the Free Software Foundation; either version 2 of the License, or * * the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. * * (at your option) any later version. *
* * * *
* $Id: si.c 2.5 2011/12/04 15:06:18 kls Exp $ * $Id: si.c 2.6 2011/12/10 15:47:15 kls Exp $
* * * *
***************************************************************************/ ***************************************************************************/
@ -690,6 +690,9 @@ Descriptor *Descriptor::getDescriptor(CharArray da, DescriptorTagDomain domain,
case MHP_DVBJApplicationLocationDescriptorTag: case MHP_DVBJApplicationLocationDescriptorTag:
d=new MHP_DVBJApplicationLocationDescriptor(); d=new MHP_DVBJApplicationLocationDescriptor();
break; break;
case MHP_SimpleApplicationLocationDescriptorTag:
d=new MHP_SimpleApplicationLocationDescriptor();
break;
// 0x05 - 0x0A is unimplemented this library // 0x05 - 0x0A is unimplemented this library
case MHP_ExternalApplicationAuthorisationDescriptorTag: case MHP_ExternalApplicationAuthorisationDescriptorTag:
case MHP_IPv4RoutingDescriptorTag: case MHP_IPv4RoutingDescriptorTag:

View File

@ -6,7 +6,7 @@
* the Free Software Foundation; either version 2 of the License, or * * the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. * * (at your option) any later version. *
* * * *
* $Id: si.h 2.3 2010/02/13 10:31:34 kls Exp $ * $Id: si.h 2.4 2011/12/10 15:47:15 kls Exp $
* * * *
***************************************************************************/ ***************************************************************************/
@ -153,6 +153,8 @@ enum DescriptorTag {
MHP_PrefetchDescriptorTag = 0x0C, MHP_PrefetchDescriptorTag = 0x0C,
MHP_DelegatedApplicationDescriptorTag = 0x0E, MHP_DelegatedApplicationDescriptorTag = 0x0E,
MHP_ApplicationStorageDescriptorTag = 0x10, MHP_ApplicationStorageDescriptorTag = 0x10,
MHP_SimpleApplicationLocationDescriptorTag = 0x15,
MHP_SimpleApplicationBoundaryDescriptorTag = 0x17,
// Premiere private Descriptor Tags // Premiere private Descriptor Tags
PremiereContentTransmissionDescriptorTag = 0xF2, PremiereContentTransmissionDescriptorTag = 0xF2,