コード例 #1
0
ファイル: ItemVideoStream.cs プロジェクト: tomaspsenak/hmc
 public ItemVideoStream(ItemContainer parent, string path, string title, EncoderBuilder settings)
     : base(string.Format("{0} {1} {2}kBps {3}", title, settings.Resolution, settings.VidBitrate, settings.Audio), parent)
 {
     this.path        = path;
     this.mime        = settings.GetMime();
     this.date        = DateTime.Now;
     this.bitrate     = settings.VidBitrate;
     this.resolution  = settings.Resolution;
     this.queryString = settings.GetParamString();
     this.dlnaType    = settings.GetDlnaType();
 }
コード例 #2
0
ファイル: ItemStream.cs プロジェクト: tomaspsenak/hmc
        public override void BrowseMetadata(XmlWriter writer, MediaSettings settings, string host, string idParams, HashSet <string> filterSet, int parentId)
        {
            EncoderBuilder encBuilder = EncoderBuilder.GetEncoder(this.SubtitlesPath);

            writer.WriteStartElement("item");

            writer.WriteAttributeString("id", this.Id.ToString());
            writer.WriteAttributeString("restricted", "true");
            writer.WriteAttributeString("parentID", parentId + "_" + (this.Audio ? AudioIndex : VideoIndex));

            //Povinne hodnoty
            writer.WriteElementString("dc", "title", null, this.Title);
            writer.WriteElementString("upnp", "class", null, this.Audio ? "object.item.audioItem" : "object.item.videoItem");

            //Volitelne hodnoty
            if (filterSet == null || filterSet.Contains("dc:date"))
            {
                writer.WriteElementString("dc", "date", null, this.Date.ToString("yyyy-MM-dd"));
            }

            if (filterSet == null || filterSet.Any(a => a.StartsWith("res")))
            {
                writer.WriteStartElement("res");

                if (filterSet == null || filterSet.Contains("res@duration"))
                {
                    writer.WriteAttributeString("duration", "0:00:00.000");
                }

                if (this.Audio)
                {
                    if (encBuilder.AudBitrate != null && (filterSet == null || filterSet.Contains("res@bitrate")))
                    {
                        writer.WriteAttributeString("bitrate", encBuilder.AudBitrate);
                    }

                    writer.WriteAttributeString("protocolInfo", string.Format("http-get:*:{0}:{1}{2}", this.Mime, encBuilder.GetDlnaType(), settings.Audio.StreamFeature));
                    writer.WriteValue(host + "/encode/audio?id=" + this.Id + this.SubtitlesPath);
                }
                else
                {
                    if (encBuilder.VidBitrate != null && (filterSet == null || filterSet.Contains("res@bitrate")))
                    {
                        writer.WriteAttributeString("bitrate", encBuilder.VidBitrate);
                    }

                    if (this.Resolution != null && (filterSet == null || filterSet.Contains("res@resolution")))
                    {
                        writer.WriteAttributeString("resolution", this.Resolution);
                    }

                    writer.WriteAttributeString("protocolInfo", string.Format("http-get:*:{0}:{1}{2}", this.Mime, encBuilder.GetDlnaType(), settings.Video.StreamFeature));
                    writer.WriteValue(host + "/encode/video?id=" + this.Id + this.SubtitlesPath);
                }
                writer.WriteEndElement();
            }

            writer.WriteEndElement();
        }