コード例 #1
0
        public static MPDdata readXml(string XmlPath)
        {
            XmlDocument xmlDoc = new XmlDocument();

            if (!System.IO.File.Exists(XmlPath))
            {
                return(null);
            }
            xmlDoc.Load(XmlPath);
            //从Xml提取到data
            XmlNode nodeMPD          = xmlDoc.SelectSingleNode("MPD");
            XmlNode nodeTilePosition = nodeMPD.SelectSingleNode("tilePosition");
            XmlNode nodeTileLumi     = nodeMPD.SelectSingleNode("tileLumi");
            XmlNode nodeTileDoF      = nodeMPD.SelectSingleNode("tileDoF");
            XmlNode nodeObjectTraj   = nodeMPD.SelectSingleNode("objectTraj");
            XmlNode nodeLookupTable  = nodeMPD.SelectSingleNode("lookupTable");
            MPDdata data             = new MPDdata();

            data.tilePosition    = StringToUTF8ByteArray(((XmlCDataSection)nodeTilePosition).InnerText.Trim());
            data.tileLumi        = StringToUTF8ByteArray(((XmlCDataSection)nodeTileLumi).InnerText.Trim());
            data.tileDoF         = StringToUTF8ByteArray(((XmlCDataSection)nodeTileDoF).InnerText.Trim());
            data.tileObjectTraj  = StringToUTF8ByteArray(((XmlCDataSection)nodeObjectTraj).InnerText.Trim());
            data.tileLookupTable = StringToUTF8ByteArray(((XmlCDataSection)nodeLookupTable).InnerText.Trim());
            return(data);
        }
        static void Main(string[] args)
        {
            //server
            WebServer.Main();

            //clientMPDdata
            MPDdata data = MPDclient.requestMPDdata(1256);
        }
コード例 #3
0
ファイル: MPDserver.cs プロジェクト: yuesir137/PanoProject
 //根据文件名提取出客户端请求的MPD,存储到本地
 public static bool genFile(string sPhysicalFilePath)
 {
     try
     {
         int     fileNameStart = sPhysicalFilePath.LastIndexOf('/');
         int     videoID       = int.Parse(sPhysicalFilePath.Substring(fileNameStart + 1, 4));
         MPDdata data          = MPDdata.getServerData(videoID);
         return(WriteXml(data, sPhysicalFilePath));
     }
     catch
     {
         return(false);
     }
 }
コード例 #4
0
ファイル: MPDserver.cs プロジェクト: yuesir137/PanoProject
        public static bool WriteXml(MPDdata data, string sFilePath)
        {
            try
            {
                XmlTextWriter xml = new XmlTextWriter(sFilePath, Encoding.UTF8);
                xml.Formatting = Formatting.Indented;
                xml.WriteStartDocument();
                xml.WriteStartElement("MPD");

                xml.WriteStartElement("tilePosition");
                //CData可以防止特殊字符影响提取xml
                xml.WriteCData(UTF8ByteArrayToString(data.tilePosition));
                xml.WriteEndElement();

                xml.WriteStartElement("tileLumi");
                xml.WriteCData(UTF8ByteArrayToString(data.tileLumi));
                xml.WriteEndElement();

                xml.WriteStartElement("tileDoF");
                xml.WriteCData(UTF8ByteArrayToString(data.tileDoF));
                xml.WriteEndElement();

                xml.WriteStartElement("objectTraj");
                xml.WriteCData(UTF8ByteArrayToString(data.objectTraj));
                xml.WriteEndElement();

                xml.WriteStartElement("lookupTable");
                xml.WriteCData(UTF8ByteArrayToString(data.lookupTable));
                xml.WriteEndElement();

                xml.WriteEndElement();
                xml.WriteEndDocument();
                xml.Flush();
                xml.Close();

                return(true);
            }
            catch (Exception e)
            {
                return(false);
            }
        }
コード例 #5
0
        //在服务器上,给定videoID和sec,根据PSPNR等数据生成一个MPDdata
        public static MPDdata getServerData(int videoID)
        {
            //TODO
            MPDdata newData = new MPDdata(30, 10);

            try
            {
                string vidMatPath = matPath + "/" + videoID.ToString("D4");
                using (FileStream fs = new FileStream(vidMatPath + "/tilePosition.mat", FileMode.Open, FileAccess.Read))
                {
                    newData.tilePosition = new byte[fs.Length];
                    fs.Read(newData.tilePosition, 0, (int)fs.Length);
                }
                using (FileStream fs = new FileStream(vidMatPath + "/tileLumi.mat", FileMode.Open, FileAccess.Read))
                {
                    newData.tileLumi = new byte[fs.Length];
                    fs.Read(newData.tileLumi, 0, (int)fs.Length);
                }
                using (FileStream fs = new FileStream(vidMatPath + "/tileDoF.mat", FileMode.Open, FileAccess.Read))
                {
                    newData.tileDoF = new byte[fs.Length];
                    fs.Read(newData.tileDoF, 0, (int)fs.Length);
                }
                using (FileStream fs = new FileStream(vidMatPath + "/objectTraj.mat", FileMode.Open, FileAccess.Read))
                {
                    newData.objectTraj = new byte[fs.Length];
                    fs.Read(newData.objectTraj, 0, (int)fs.Length);
                }
                using (FileStream fs = new FileStream(vidMatPath + "/lookupTable.mat", FileMode.Open, FileAccess.Read))
                {
                    newData.lookupTable = new byte[fs.Length];
                    fs.Read(newData.lookupTable, 0, (int)fs.Length);
                }

                return(newData);
            }catch (Exception e)
            {
                Console.WriteLine(e);
                return(null);
            }
        }