// not implemented private static UPnPError OnPrevious(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context) { TraceLogger.DebugLogParams(inParams); outParams = action.OutArguments.Select(outArgument => outArgument.RelatedStateVar.Value).ToList(); return(null); }
private void OnPlay() { TraceLogger.WriteLine("Event Fired! - Play -- "); VolumeChanged(); var avTransportUri = _transportServiceImpl.StateVariables["AVTransportURI"].Value.ToString(); var avTransportUriMetadata = _transportServiceImpl.StateVariables["AVTransportURIMetaData"].Value.ToString(); switch (_playerType) { case ContentType.Audio: if (_isPaused) { ChangeUPnPAVTransportServiceStateToPlaying(); ResumePlayer <UPnPRendererAudioPlayer>(); break; } StopPlayer <UPnPRendererAudioPlayer>(); var audioItem = UPnPMediaItemFactory.CreateAudioItem(avTransportUri); audioItem.AddMetaDataToMediaItem(avTransportUriMetadata); PlayItemsModel.CheckQueryPlayAction(audioItem); break; case ContentType.Image: var imageItem = UPnPMediaItemFactory.CreateImageItem(avTransportUri); imageItem.AddMetaDataToMediaItem(avTransportUriMetadata); var ic = GetPlayerContext <UPnPRendererImagePlayer>(); if (ic != null) { ic.DoPlay(imageItem); } else { PlayItemsModel.CheckQueryPlayAction(imageItem); } break; case ContentType.Video: if (_isPaused) { Logger.Debug("Resume!!"); ChangeUPnPAVTransportServiceStateToPlaying(); ResumePlayer <UPnPRendererVideoPlayer>(); break; } Logger.Debug("NO Resume!!"); StopPlayer <UPnPRendererVideoPlayer>(); var videoItem = UPnPMediaItemFactory.CreateVideoItem(avTransportUri); videoItem.AddMetaDataToMediaItem(avTransportUriMetadata); PlayItemsModel.CheckQueryPlayAction(videoItem); break; case ContentType.Unknown: Logger.Warn("Can't play because of unknown player type"); return; // we don't want to start the timer } _timer.Enabled = true; _timer.AutoReset = true; }
public static string GetMimeFromUrl(string url, string metaData = null) { // if we have metaData, use that! if (metaData != null) { using (XmlReader reader = XmlReader.Create(new StringReader(metaData))) { reader.ReadToFollowing("upnp:class"); string output = reader.ReadElementContentAsString(); if (output.IndexOf("videoItem", StringComparison.OrdinalIgnoreCase) >= 0) { Logger.Debug("found mime from MetaData: Video"); return("video/*"); } if (output.IndexOf("audioItem", StringComparison.OrdinalIgnoreCase) >= 0) { Logger.Debug("found mime from MetaData: Audio"); return("audio/*"); } if (output.IndexOf("imageItem", StringComparison.OrdinalIgnoreCase) >= 0) { Logger.Debug("found mime from MetaData: Image"); return("image/*"); } Logger.Debug("couldn't find mime from MetaData"); } } //we don't have any meta Data or couldn't find something WebRequest request = WebRequest.Create(url) as HttpWebRequest; byte[] buffer = new byte[256]; // Try to get the mime type from the registry, works only if the server sends a file extension Uri uri = new Uri(url); string fileName = uri.Segments.Last(); var mime = GetMimeFromRegistry(fileName); TraceLogger.WriteLine("Mime from registry: " + GetMimeFromRegistry(fileName)); if (mime == "application/octet-stream") { using (WebResponse response = request.GetResponse()) { using (Stream stream = response.GetResponseStream()) { int count = stream.Read(buffer, 0, 256); TraceLogger.WriteLine("Bufer: " + BitConverter.ToString(buffer)); TraceLogger.WriteLine(response.ContentType); TraceLogger.WriteLine("Sytem Mimemapping" + MimeMapping.GetMimeMapping(url)); try { UInt32 mimetype; FindMimeFromData(0, null, buffer, 256, null, 0, out mimetype, 0); IntPtr mimeTypePtr = new IntPtr(mimetype); mime = Marshal.PtrToStringUni(mimeTypePtr); Marshal.FreeCoTaskMem(mimeTypePtr); TraceLogger.WriteLine("MimeType from urlmon.dll: " + mime); // if we get application/octet-stream => unknown mime type if (mime == "application/octet-stream") { TraceLogger.WriteLine("urlmon.dll couldn't find mime type"); mime = response.ContentType; TraceLogger.WriteLine("MimeType from response.ContentType: " + mime); if (mime == "application/octet-stream") { TraceLogger.WriteLine("response.ContentType couldn't find mime type"); mime = MimeMapping.GetMimeMapping(url); TraceLogger.WriteLine("MimeType from GetMimeMapping: " + mime); if (mime == "application/octet-stream") { throw new Exception("no mime type found"); } } } return(mime); } catch (Exception) { return("unknown/unknown"); } } } } else { return(mime); } }