public HlsItem(HlsManager manager, string sessionId, Dictionary <string, string> parameters, CultureInfo cultureInfo) { this.sessionId = sessionId; this.manager = manager; this.segmentTime = uint.Parse(parameters["hlsSegmentTime"]); this.streamItems.Add(0, new StreamItem() { Duration = this.segmentTime }); string playlistPipeName = "HMC_" + sessionId; parameters["hlsPlaylistUrl"] = "\\\\.\\pipe\\" + playlistPipeName; this.playlistPipe = CreatePipe(playlistPipeName); this.filePipe = CreatePipe("HMC_" + (this.nextFilePipeIdx++) + "_" + this.sessionId); parameters["hlsFileUrl"] = "\\\\.\\pipe\\HMC_%d_" + sessionId; this.encoder = EncoderBuilder.GetEncoder(parameters); this.playlistPipeThread = new Thread(new ThreadStart(ListenPlaylistPipe)); this.filePipeThread = new Thread(new ThreadStart(ListenFilePipe)); this.encoderThread = new Thread(new ThreadStart(Encoder)); if (cultureInfo != null) { this.playlistPipeThread.CurrentCulture = this.playlistPipeThread.CurrentUICulture = cultureInfo; this.filePipeThread.CurrentCulture = this.filePipeThread.CurrentUICulture = cultureInfo; this.encoderThread.CurrentCulture = this.encoderThread.CurrentUICulture = cultureInfo; } this.lastRequest = DateTime.Now; }
public MediaServerDevice(string dataDirectory) { this.dataDirectory = dataDirectory; this.settingsPath = Path.Combine(dataDirectory, "settings.xml"); this.databasePath = Path.Combine(dataDirectory, "database.db"); this.thumbnailsPath = Path.Combine(dataDirectory, "thumbnails"); this.prefDsDemux = new List <Guid>() { new Guid(0x171252A0, 0x8820, 0x4AFE, 0x9D, 0xF8, 0x5C, 0x92, 0xB2, 0xD6, 0x6B, 0x04) //LAV Splitter }; this.itemManager = new ItemManager(this); this.controlPoint = new UpnpControlPoint(this); Version ver = Assembly.GetExecutingAssembly().GetName().Version; this.udn = Guid.NewGuid(); this.friendlyName = "Home Media Center"; this.deviceType = "urn:schemas-upnp-org:device:MediaServer:1"; this.manufacturer = "Tomáš Pšenák"; this.modelName = "Home Media Center Server"; this.modelNumber = ver.Major + "." + ver.Minor; this.serialNumber = this.udn.ToString(); this.modelUrl = "http://hmc.codeplex.com"; this.services.Add(new ConnectionManagerService(this, this.server)); this.services.Add(new ContentDirectoryService(this, this.server)); this.services.Add(new MediaReceiverRegistrarService(this, this.server)); this.server.HttpServer.AddRoute("HEAD", "/Files/*", new HttpRouteDelegate(GetLibraryFile)); this.server.HttpServer.AddRoute("GET", "/Files/*", new HttpRouteDelegate(GetLibraryFile)); this.server.HttpServer.AddRoute("HEAD", "/Encode/*", new HttpRouteDelegate(GetLibraryEncode)); this.server.HttpServer.AddRoute("GET", "/Encode/*", new HttpRouteDelegate(GetLibraryEncode)); this.server.HttpServer.AddRoute("HEAD", "/Thumbnail/*", new HttpRouteDelegate(GetThumbnailFile)); this.server.HttpServer.AddRoute("GET", "/Thumbnail/*", new HttpRouteDelegate(GetThumbnailFile)); this.server.HttpServer.AddRoute("HEAD", "/Subtitle/*", new HttpRouteDelegate(GetSubtitleFile)); this.server.HttpServer.AddRoute("GET", "/Subtitle/*", new HttpRouteDelegate(GetSubtitleFile)); this.server.HttpServer.AddRoute("GET", "/", new HttpRouteDelegate(GetWeb)); this.server.HttpServer.AddRoute("GET", "/Web/*", new HttpRouteDelegate(GetWeb)); this.server.HttpServer.AddRoute("GET", "/favicon.ico", new HttpRouteDelegate(GetWebIco)); this.server.HttpServer.AddRoute("GET", "/Web/player.html", new HttpRouteDelegate(GetWebPlayer)); this.server.HttpServer.AddRoute("HEAD", "/Web/WebPlayer.xap", new HttpRouteDelegate(GetWebSilverlight)); this.server.HttpServer.AddRoute("GET", "/Web/WebPlayer.xap", new HttpRouteDelegate(GetWebSilverlight)); this.server.HttpServer.AddRoute("GET", "/Web/htmlstyle.css", new HttpRouteDelegate(GetWebStyle)); this.server.HttpServer.AddRoute("GET", "/Web/jquery.lightbox-0.5.css", new HttpRouteDelegate(GetWebStyle)); this.server.HttpServer.AddRoute("GET", "/Web/jquery-ui-1.11.1.custom.min.css", new HttpRouteDelegate(GetWebStyle)); this.server.HttpServer.AddRoute("GET", "/Web/control.js", new HttpRouteDelegate(GetWebJavascript)); this.server.HttpServer.AddRoute("GET", "/Web/player.js", new HttpRouteDelegate(GetWebJavascript)); this.server.HttpServer.AddRoute("GET", "/Web/jquery-1.11.1.min.js", new HttpRouteDelegate(GetWebJavascript)); this.server.HttpServer.AddRoute("GET", "/Web/jquery.lightbox-0.5.min.js", new HttpRouteDelegate(GetWebJavascript)); this.server.HttpServer.AddRoute("GET", "/Web/jquery-ui-1.11.1.custom.min.js", new HttpRouteDelegate(GetWebJavascript)); this.server.HttpServer.AddRoute("GET", "/Web/jquery.ui.touch-punch.min.js", new HttpRouteDelegate(GetWebJavascript)); this.server.HttpServer.AddRoute("GET", "/Web/Images/folder.png", new HttpRouteDelegate(GetWebPng)); this.server.HttpServer.AddRoute("GET", "/Web/Images/folderback.png", new HttpRouteDelegate(GetWebPng)); this.server.HttpServer.AddRoute("GET", "/Web/Images/htmllogo.png", new HttpRouteDelegate(GetWebPng)); this.server.HttpServer.AddRoute("GET", "/Web/Images/ui-icons_222222_256x240.png", new HttpRouteDelegate(GetWebPng)); this.server.HttpServer.AddRoute("GET", "/Web/Images/ui-icons_454545_256x240.png", new HttpRouteDelegate(GetWebPng)); this.server.HttpServer.AddRoute("GET", "/Web/Images/ui-icons_888888_256x240.png", new HttpRouteDelegate(GetWebPng)); this.server.HttpServer.AddRoute("GET", "/Web/Images/htmlarrow.gif", new HttpRouteDelegate(GetWebGif)); this.server.HttpServer.AddRoute("GET", "/Web/Images/htmlorangearrow.gif", new HttpRouteDelegate(GetWebGif)); this.server.HttpServer.AddRoute("GET", "/Web/Images/htmlleftcontent.gif", new HttpRouteDelegate(GetWebGif)); this.server.HttpServer.AddRoute("GET", "/Web/Images/htmlgreenbox.gif", new HttpRouteDelegate(GetWebGif)); this.server.HttpServer.AddRoute("GET", "/Web/Images/htmlrightnav.gif", new HttpRouteDelegate(GetWebGif)); this.server.HttpServer.AddRoute("GET", "/Web/Images/lightbox-blank.gif", new HttpRouteDelegate(GetWebGif)); this.server.HttpServer.AddRoute("GET", "/Web/Images/lightbox-btn-close.gif", new HttpRouteDelegate(GetWebGif)); this.server.HttpServer.AddRoute("GET", "/Web/Images/lightbox-btn-next.gif", new HttpRouteDelegate(GetWebGif)); this.server.HttpServer.AddRoute("GET", "/Web/Images/lightbox-btn-prev.gif", new HttpRouteDelegate(GetWebGif)); this.server.HttpServer.AddRoute("GET", "/Web/Images/lightbox-ico-loading.gif", new HttpRouteDelegate(GetWebGif)); this.server.HttpServer.AddRoute("GET", "/Web/flowplayer.min.js", new HttpRouteDelegate(GetWebJavascript)); this.server.HttpServer.AddRoute("HEAD", "/Web/flowplayer.swf", new HttpRouteDelegate(GetWebShockwave)); this.server.HttpServer.AddRoute("GET", "/Web/flowplayer.swf", new HttpRouteDelegate(GetWebShockwave)); this.server.HttpServer.AddRoute("HEAD", "/Web/flowplayer.controls.swf", new HttpRouteDelegate(GetWebShockwave)); this.server.HttpServer.AddRoute("GET", "/Web/flowplayer.controls.swf", new HttpRouteDelegate(GetWebShockwave)); this.server.HttpServer.AddRoute("POST", "/Web/devices.xml", new HttpRouteDelegate(GetWebDevices)); this.hlsManager = new HlsManager(this); }