diff options
author | methodus <methodus@web.de> | 2012-10-31 16:09:42 +0100 |
---|---|---|
committer | methodus <methodus@web.de> | 2012-10-31 16:09:42 +0100 |
commit | d054d60aa495b513744eb3fcd59af952dbc0c1aa (patch) | |
tree | 2c78b37270c99b3f89187f34548c48526d3fc839 /plugins/profiler/vdrDVBProfiler/dvbProfiler.cpp | |
parent | 459052ebbc27e93285c11de71eb2d26810e932d3 (diff) | |
download | vdr-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.cpp | 88 |
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(); |