summaryrefslogtreecommitdiff
path: root/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp
diff options
context:
space:
mode:
authormethodus <methodus@web.de>2012-10-31 16:09:42 +0100
committermethodus <methodus@web.de>2012-10-31 16:09:42 +0100
commitd054d60aa495b513744eb3fcd59af952dbc0c1aa (patch)
tree2c78b37270c99b3f89187f34548c48526d3fc839 /plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp
parent459052ebbc27e93285c11de71eb2d26810e932d3 (diff)
downloadvdr-plugin-upnp-d054d60aa495b513744eb3fcd59af952dbc0c1aa.tar.gz
vdr-plugin-upnp-d054d60aa495b513744eb3fcd59af952dbc0c1aa.tar.bz2
Added initial radio support. Unfortunatelly, I cannot test it, because I have no capable device...
Diffstat (limited to 'plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp')
-rw-r--r--plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp88
1 files changed, 65 insertions, 23 deletions
diff --git a/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp b/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp
index 51c6802..6a9c4d1 100644
--- a/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp
+++ b/plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp
@@ -73,7 +73,6 @@ private:
metadata.SetObjectIDByUri(uri);
metadata.SetParentIDByUri(fs);
- metadata.SetProperty(cMetadata::Property(property::object::KEY_CLASS, string("object.item.videoItem.videoBroadcast")));
metadata.SetProperty(cMetadata::Property(property::object::KEY_RESTRICTED, true));
metadata.SetProperty(cMetadata::Property(property::object::KEY_TITLE, string(info->Title()?info->Title():recording->Title())));
@@ -122,32 +121,75 @@ private:
// TODO: implement check for radio stations
DLNA4thField fourthfield;
- switch (parser.Vtype()) {
- case 0x02:
- fourthfield = DLNA4thField("MPEG_TS_SD_EU_ISO", DLNA_OPERATION_RANGE,
- DLNA_PLAYSPEEDS_NONE, DLNA_CONVERSION_NONE,
- DLNA_FLAG_STREAMING_TRANSFER |
- DLNA_FLAG_BYTE_BASED_SEEK |
- DLNA_FLAG_BACKGROUND_TRANSFER |
- DLNA_FLAG_CONNECTION_STALLING |
- DLNA_FLAG_VERSION_1_5 );
- break;
- case 0x1B:
- fourthfield = DLNA4thField("AVC_TS_HD_EU_ISO", DLNA_OPERATION_RANGE,
- DLNA_PLAYSPEEDS_NONE, DLNA_CONVERSION_NONE,
- DLNA_FLAG_STREAMING_TRANSFER |
- DLNA_FLAG_BYTE_BASED_SEEK |
- DLNA_FLAG_BACKGROUND_TRANSFER |
- DLNA_FLAG_CONNECTION_STALLING |
- DLNA_FLAG_VERSION_1_5 );
- break;
- default:
- return false;
+ string contentType, upnpclass;
+ if(parser.Vtype() != 0){
+ switch (parser.Vtype()) {
+ case 0x02:
+ fourthfield = DLNA4thField("MPEG_TS_SD_EU_ISO", DLNA_OPERATION_RANGE,
+ DLNA_PLAYSPEEDS_NONE, DLNA_CONVERSION_NONE,
+ DLNA_FLAG_STREAMING_TRANSFER |
+ DLNA_FLAG_BYTE_BASED_SEEK |
+ DLNA_FLAG_BACKGROUND_TRANSFER |
+ DLNA_FLAG_CONNECTION_STALLING |
+ DLNA_FLAG_VERSION_1_5 );
+ break;
+ case 0x1B:
+ fourthfield = DLNA4thField("AVC_TS_HD_EU_ISO", DLNA_OPERATION_RANGE,
+ DLNA_PLAYSPEEDS_NONE, DLNA_CONVERSION_NONE,
+ DLNA_FLAG_STREAMING_TRANSFER |
+ DLNA_FLAG_BYTE_BASED_SEEK |
+ DLNA_FLAG_BACKGROUND_TRANSFER |
+ DLNA_FLAG_CONNECTION_STALLING |
+ DLNA_FLAG_VERSION_1_5 );
+ break;
+ default:
+ return false;
+ }
+ contentType = "video/mpeg";
+ upnpclass = "object.item.videoItem.videoBroadcast";
+ } else {
+ int Atype = 0;
+ for(int i = 0; (Atype = parser.Atype(i)) != 0; ++i){
+ switch(Atype){
+ case 0x03:
+ case 0x04:
+#ifdef DLNA_STRICT
+ fourthfield = DLNA4thField("MP2_MPS", DLNA_OPERATION_RANGE,
+ DLNA_PLAYSPEEDS_NONE, DLNA_CONVERSION_NONE,
+ DLNA_FLAG_STREAMING_TRANSFER |
+ DLNA_FLAG_BYTE_BASED_SEEK |
+ DLNA_FLAG_BACKGROUND_TRANSFER |
+ DLNA_FLAG_CONNECTION_STALLING |
+ DLNA_FLAG_VERSION_1_5 );
+ contentType = "audio/mpeg";
+ upnpclass = "object.item.audioItem.audioBroadcast";
+#else
+ fourthfield = DLNA4thField("MPEG_TS_SD_EU_ISO", DLNA_OPERATION_RANGE,
+ DLNA_PLAYSPEEDS_NONE, DLNA_CONVERSION_NONE,
+ DLNA_FLAG_STREAMING_TRANSFER |
+ DLNA_FLAG_BYTE_BASED_SEEK |
+ DLNA_FLAG_BACKGROUND_TRANSFER |
+ DLNA_FLAG_CONNECTION_STALLING |
+ DLNA_FLAG_VERSION_1_5 );
+ contentType = "video/mpeg";
+ upnpclass = "object.item.videoItem.videoBroadcast";
+#endif
+ goto validProfile;
+ default:
+ break;
+ }
+ }
+
+ // No compatible audio codec found.
+ return false;
}
+ // Found a valid profile
+ validProfile:
+ metadata.SetProperty(cMetadata::Property(property::object::KEY_CLASS, upnpclass));
+ resource.SetProtocolInfo(ProtocolInfo(contentType, fourthfield).ToString());
resource.SetSize(size);
resource.SetResourceUri(u);
- resource.SetProtocolInfo(ProtocolInfo("video/mpeg", fourthfield).ToString());
int seconds = 0;
const cEvent* event = info->GetEvent();