Пример #1
0
 public void goon5(LinearTimeCode ltc)
 {
     Console.WriteLine();
     Console.WriteLine(ltc.fps.ToString());
     Console.WriteLine(ltc.ToString());
     for (int i = 1; i < 5; i++)
     {
         ltc.nextFrame();
         Console.WriteLine(ltc.ToString());
     }
 }
Пример #2
0
 public void StartPopulate()
 {
     if (_numDays <= 0)
     {
         throw new ArgumentOutOfRangeException("Number of Days must be >0");
     }
     if (_numChannels <= 0)
     {
         throw new ArgumentOutOfRangeException("Number of Channels must be >0");
     }
     if (_progList.Length == 0)
     {
         throw new ArgumentNullException("ProgList", "No programmes in programme list");
     }
     iChannel    = 1;
     iltc        = new LinearTimeCode(25, "2000-01-01 00:00:00:00");
     iSeconds    = 0;
     iTitleIndex = 0;
     iRecIndex++;
 }
Пример #3
0
 public void StartPopulate()
 {
     if (_numDays <= 0)
     {
         throw new ArgumentOutOfRangeException("Number of Days must be >0");
     }
     if (_numChannels <= 0)
     {
         throw new ArgumentOutOfRangeException("Number of Channels must be >0");
     }
     if (_chunkSize <= 0)
     {
         throw new ArgumentOutOfRangeException("Chunk Size must be >0");
     }
     iChannel = 1;
     iltc     = new LinearTimeCode(25, "2000-01-01 00:00:00:00");
     iSeconds = 0;
     idur     = new Duration(25, ChunkSize * 60 * 25);
     iRecIndex++;
 }
Пример #4
0
        public int Populate()
        {
            // Populate part of the database, returning after a while
            // to update the progress meter.
            DataSet ds = new DataSet("asrun");

            ds.ReadXmlSchema("C:\\Program Files\\sony\\MediaWatchDatabase\\populate\\AsRunSchema.xsd");
            int numRecords = 0;

            string[] insTitles = { "Fimbles",    "Pingu",     "Captain Abercromby", "Chuckle Vision", "Tom and Jerry Kids",
                                   "Taz-Mania",  "UBOS",      "Arthur",             "Rugrats",        "The Saturday Show", "12noon BBC News",
                                   "Grandstand", "Athletics", "Focus",              "British Superbikes" };

            long numSeconds = _numDays * 86400;

            for (int i = 0; i < 10; i++)           // Do 10 chunks before returning.
            {
                if (iSeconds < numSeconds)
                {
                    for (int progIndex = 0; ((progIndex < ProgList.Length) && (iSeconds < numSeconds)); progIndex++)
                    {
                        Duration idur = new Duration(25, ProgList[progIndex] * 25);
                        iTitleIndex = ((iTitleIndex + 1) % insTitles.Length);
                        DataRow dr = ds.Tables["asrun"].NewRow();

                        dr["startDate"]     = iltc.dt.ToString("yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo);
                        dr["startTimeCode"] = iltc.dt.ToString("HH:mm:ss:ff", DateTimeFormatInfo.InvariantInfo);
                        dr["duration"]      = idur.ToString();
                        dr["channel"]       = "CH" + iChannel.ToString();
                        dr["title"]         = insTitles[iTitleIndex];
                        dr["id"]            = "id column";
                        dr["s"]             = "s column";
                        dr["status"]        = "status column";
                        dr["ch"]            = "ch column";
                        dr["reconcile"]     = "reconcile column";
                        dr["ty"]            = "ty column";
                        ds.Tables["asrun"].Rows.Add(dr);

                        string fname = "C:\\Program Files\\sony\\MediaWatchServer\\asrunhotfolder\\PROG-{0}.xml";
                        fname = String.Format(fname, iRecIndex.ToString());
                        iRecIndex++;
                        ds.WriteXml(fname, XmlWriteMode.IgnoreSchema);
                        ds.Clear();
                        numRecords++;

                        // Now calculate next date and time
                        iSeconds += idur.getSeconds();
                        iltc.dt   = iltc.dt.AddSeconds((double)(idur.getSeconds()));
                    }
                }
                else
                {
                    iSeconds = 0;
                    iltc     = new LinearTimeCode(25, "2000-01-01 00:00:00:00");
                    if (iChannel++ >= _numChannels)
                    {
                        return(-1);
                    }
                }
            }
            return(numRecords);
        }
Пример #5
0
        public int Populate()
        {
            // Populate part of the database, returning after a while
            // to update the progress meter.
            DataSet ds = new DataSet("chunk");

            ds.ReadXmlSchema("C:\\Program Files\\sony\\MediaWatchDatabase\\populate\\ChunkSchema.xsd");
            int numRecords = 0;

            string[] insurls = { "asseta", "assetb", "assetc", "assetd", "assete", "assetf", "assetg", "asseth", "asseti",
                                 "assetj", "assetk", "assetl", "assetm", "assetn", "asseto", "assetp", "assetq", "assetr",
                                 "assets", "assett", "assetu", "assetv", "assetw", "assetx", "assety", "assetz" };
            int      urlIndex = 0;

            long numSeconds = _numDays * 86400;

            for (int i = 0; i < 10; i++)           // Do 10 chunks before returning.
            {
                if (iSeconds < numSeconds)
                {
                    urlIndex = ((urlIndex + 1) % insurls.Length);
                    DataRow dr = ds.Tables["asset"].NewRow();

                    dr["fileName"]         = insurls[urlIndex];
                    dr["fileDuration"]     = idur.ToString();
                    dr["startDate"]        = iltc.dt.ToString("yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo);
                    dr["startYear"]        = iltc.dt.ToString("yyyy", DateTimeFormatInfo.InvariantInfo);
                    dr["startMonth"]       = iltc.dt.ToString("MM", DateTimeFormatInfo.InvariantInfo);
                    dr["startDay"]         = iltc.dt.ToString("dd", DateTimeFormatInfo.InvariantInfo);
                    dr["startMonthAsText"] = iltc.dt.ToString("MMM", DateTimeFormatInfo.InvariantInfo);
                    dr["startTimeCode"]    = iltc.dt.ToString("HH:mm:ss:ff", DateTimeFormatInfo.InvariantInfo);
                    dr["startTime"]        = iltc.dt.ToString("HH:mm:ss", DateTimeFormatInfo.InvariantInfo);
                    dr["sessionID"]        = "14";
                    dr["recorderName"]     = "gbbprlbasws141";
                    dr["inputID"]          = iChannel.ToString();
                    dr["userID"]           = "CH" + iChannel.ToString();

                    ds.Tables["asset"].Rows.Add(dr);

                    string fname = "C:\\Program Files\\sony\\MediaWatchServer\\OutputHotFolder\\PROG-{0}.xml";
                    fname = String.Format(fname, iRecIndex.ToString());
                    iRecIndex++;
                    ds.WriteXml(fname, XmlWriteMode.IgnoreSchema);
                    ds.Clear();

                    numRecords++;
                    // Now calculate next date and time
                    iSeconds += _chunkSize * 60;
                    iltc.dt   = iltc.dt.AddSeconds((double)(_chunkSize * 60));
                }
                else
                {
                    iSeconds = 0;
                    iltc     = new LinearTimeCode(25, "2000-01-01 00:00:00:00");
                    if (iChannel++ >= _numChannels)
                    {
                        return(-1);
                    }
                }
            }
            return(numRecords);
        }
        private void NewAsrunEvent(object sender, System.IO.FileSystemEventArgs e)
        {
            int numFilesInThisPass = 0;

            do
            {
                DirectoryInfo di = new DirectoryInfo(Path.GetDirectoryName(e.FullPath));
                // Create an array representing the files in the current directory.
                FileInfo[] fi = di.GetFiles();
                foreach (FileInfo fiTemp in fi)
                {
                    if (fiTemp.Extension.Equals(".xml"))
                    {
                        string  thisFilePath = fiTemp.FullName;
                        DataSet dsAsrun      = new DataSet("asrun");
                        int     fps;
                        try
                        {
                            dsAsrun.ReadXml(thisFilePath, XmlReadMode.InferSchema);
                            // TODO: Look at good way of getting round this.
                            // currently user is Local Service, which can't delete files.
                            File.Delete(thisFilePath);
                            archiveDataset(dsAsrun);
                            numberOfAsrunFiles++;
                            numFilesInThisPass++;
                            // Look up channel name against dsChannels dataset
                            DataView dvChannel = new DataView(dsChannels.Tables["channels"], "",
                                                              "name", DataViewRowState.CurrentRows);
                            DataTable dtAsrun = dsAsrun.Tables["AsRun"];
                            foreach (DataRow drAsrun in dtAsrun.Rows)
                            {                             // There can be more than one row entered in one file on asrun log.
                                int rowIndex = dvChannel.Find(drAsrun["channel"].ToString());
                                if (rowIndex == -1)
                                {
                                    WriteLogEntry("error", "Invalid Channel : " + thisFilePath);
                                }
                                else
                                {
                                    int channel_id = Int32.Parse(dvChannel[rowIndex]["id"].ToString());
                                    fps = Int32.Parse(dvChannel[rowIndex]["fps"].ToString());
                                    DateTime start_tc = new LinearTimeCode(fps,
                                                                           drAsrun["startDate"].ToString(),
                                                                           drAsrun["startTimeCode"].ToString()).dt;
                                    DateTime end_tc = new LinearTimeCode(fps,
                                                                         drAsrun["startDate"].ToString(),
                                                                         drAsrun["startTimeCode"].ToString()).dt;
                                    long   duration  = ConvertToFrames(drAsrun["duration"].ToString(), fps);
                                    int    offset    = 0;                               // The offset will be added later.
                                    int    isblank   = 0;                               // Not blank, obviously!
                                    string id        = drAsrun["id"].ToString();
                                    string title     = drAsrun["title"].ToString();
                                    string s         = drAsrun["s"].ToString();
                                    string status    = drAsrun["status"].ToString();
                                    string ch        = drAsrun["ch"].ToString();
                                    string reconcile = drAsrun["reconcile"].ToString();
                                    string ty        = drAsrun["ty"].ToString();
                                    // Execute the stored procedure with these parameters.
                                    // @start_tc datetime, @channel_id int, @end_tc datetime, @duration bigint,
                                    // @offset int, @isblank bit, @id varchar(64), @title varchar(64), @s varchar(64),
                                    // @status varchar(64), @ch varchar(64), @reconcile varchar(64), @ty varchar(64)
                                    mwConnection.Open();
                                    SqlCommand insCmd = new SqlCommand("dbo.InsertAsrun", mwConnection);
                                    insCmd.CommandType = CommandType.StoredProcedure;
                                    insCmd.Parameters.Add("@start_tc", SqlDbType.DateTime, 8);
                                    insCmd.Parameters["@start_tc"].Value = start_tc;
                                    insCmd.Parameters.Add("@channel_id", SqlDbType.Int, 4);
                                    insCmd.Parameters["@channel_id"].Value = channel_id;
                                    insCmd.Parameters.Add("@duration", SqlDbType.Int, 8);
                                    insCmd.Parameters["@duration"].Value = duration;
                                    insCmd.Parameters.Add("@offset", SqlDbType.Int, 4);
                                    insCmd.Parameters["@offset"].Value = offset;
                                    insCmd.Parameters.Add("@isblank", SqlDbType.TinyInt);
                                    insCmd.Parameters["@isblank"].Value = isblank;
                                    insCmd.Parameters.Add("@id", SqlDbType.NVarChar, 64);
                                    insCmd.Parameters["@id"].Value = id;
                                    insCmd.Parameters.Add("@title", SqlDbType.NVarChar, 64);
                                    insCmd.Parameters["@title"].Value = title;
                                    insCmd.Parameters.Add("@s", SqlDbType.NVarChar, 64);
                                    insCmd.Parameters["@s"].Value = s;
                                    insCmd.Parameters.Add("@status", SqlDbType.NVarChar, 64);
                                    insCmd.Parameters["@status"].Value = status;
                                    insCmd.Parameters.Add("@ch", SqlDbType.NVarChar, 64);
                                    insCmd.Parameters["@ch"].Value = ch;
                                    insCmd.Parameters.Add("@reconcile", SqlDbType.NVarChar, 64);
                                    insCmd.Parameters["@reconcile"].Value = reconcile;
                                    insCmd.Parameters.Add("@ty", SqlDbType.NVarChar, 64);
                                    insCmd.Parameters["@ty"].Value = ty;
                                    insCmd.ExecuteNonQuery();
                                    mwConnection.Close();
                                    insCmd.Dispose();
                                    WriteLogEntry("info", String.Format("dbo.InsertAsrun {0},{1},{2}", start_tc.ToString(), channel_id.ToString(), title));
                                    if ((numberOfAsrunFiles < 64) || (numberOfAsrunFiles % 64 == 0))
                                    {
                                        messageListBox.Items.Add("INFO: Asrun Watcher at point " + numberOfAsrunFiles.ToString());
                                    }
                                }
                            }
                        }
                        catch (System.IO.IOException ex)
                        {
                            WriteLogEntry("error", ex.ToString());
                        }
                        catch (System.ArgumentException ex)
                        {
                            WriteLogEntry("error", ex.ToString());
                        }
                        catch (SqlException ex)
                        {
                            WriteLogEntry("error", ex.ToString());
                        }
                        finally
                        {
                            mwConnection.Close();
                        }
                    }
                }
            } while (numFilesInThisPass > 0);
        }
        private void NewChunkEvent(object sender, System.IO.FileSystemEventArgs e)
        {
            int numFilesInThisPass = 0;

            do
            {
                numFilesInThisPass = 0;
                DirectoryInfo di = new DirectoryInfo(Path.GetDirectoryName(e.FullPath));
                // Create an array representing the files in the current directory.
                FileInfo[] fi = di.GetFiles();
                foreach (FileInfo fiTemp in fi)
                {
                    if (fiTemp.Extension.Equals(".xml"))
                    {
                        string  thisFilePath = fiTemp.FullName;
                        DataSet dsChunk      = new DataSet("assets");
                        try
                        {
                            dsChunk.ReadXml(thisFilePath, XmlReadMode.InferSchema);
                            File.Delete(thisFilePath);
                            archiveDataset(dsChunk);
                            numberOfChunkFiles++;
                            numFilesInThisPass++;
                            // Look up channel name against dsChannels dataset.
                            DataView  dvChannel = new DataView(dsChannels.Tables["channels"], "", "name", DataViewRowState.CurrentRows);
                            DataTable dtChunk   = dsChunk.Tables["Asset"];
                            foreach (DataRow drChunk in dtChunk.Rows)
                            {
                                int rowIndex = dvChannel.Find(drChunk["userID"].ToString());
                                if (rowIndex == -1)
                                {
                                    WriteLogEntry("error", "Invalid Channel : " + thisFilePath);
                                }
                                else
                                {
                                    int      channelID = Int32.Parse(dvChannel[rowIndex]["id"].ToString());
                                    int      fps       = Int32.Parse(dvChannel[rowIndex]["fps"].ToString());
                                    DateTime start_tc  = new LinearTimeCode(fps, drChunk["startDate"].ToString(), drChunk["startTimeCode"].ToString()).dt;
                                    DateTime end_tc    = new LinearTimeCode(fps, drChunk["startDate"].ToString(), drChunk["startTimeCode"].ToString()).dt;
                                    long     duration  = ConvertToFrames(drChunk["fileDuration"].ToString(), fps);
                                    int      offset    = 0;
                                    int      isblank   = 0;
                                    String   url       = urlPrefix + drChunk["fileName"].ToString() + ".mpg";
                                    mwConnection.Open();
                                    SqlCommand insCmd = new SqlCommand("dbo.InsertChunk", mwConnection);
                                    insCmd.CommandType = CommandType.StoredProcedure;
                                    insCmd.Parameters.Add("@start_tc", SqlDbType.DateTime, 8);
                                    insCmd.Parameters["@start_tc"].Value = start_tc;
                                    insCmd.Parameters.Add("@channel_id", SqlDbType.Int, 4);
                                    insCmd.Parameters["@channel_id"].Value = channelID;
                                    insCmd.Parameters.Add("@duration", SqlDbType.Int, 8);
                                    insCmd.Parameters["@duration"].Value = duration;
                                    insCmd.Parameters.Add("@offset", SqlDbType.Int, 4);
                                    insCmd.Parameters["@offset"].Value = offset;
                                    insCmd.Parameters.Add("@isblank", SqlDbType.TinyInt);
                                    insCmd.Parameters["@isblank"].Value = isblank;
                                    insCmd.Parameters.Add("@url", SqlDbType.NVarChar, 512);
                                    insCmd.Parameters["@url"].Value = url;
                                    insCmd.ExecuteNonQuery();
                                    mwConnection.Close();
                                    insCmd.Dispose();
                                    WriteLogEntry("info", String.Format("dbo.InsertChunk {0},{1},{2}", start_tc.ToString(), channelID.ToString(), url));
                                }
                            }
                            if ((numberOfChunkFiles < 64) || (numberOfChunkFiles % 64 == 0))
                            {
                                messageListBox.Items.Add("INFO: Chunk Watcher at point " + numberOfChunkFiles.ToString());
                            }
                        }
                        catch (System.IO.FileNotFoundException ex)
                        {
                            WriteLogEntry("error", ex.ToString());
                        }
                        catch (System.IO.IOException ex)
                        {
                            WriteLogEntry("error", ex.ToString());
                        }
                        catch (System.ArgumentException ex)
                        {
                            WriteLogEntry("error", ex.ToString());
                        }
                        catch (System.Data.SqlClient.SqlException ex)
                        {
                            WriteLogEntry("error", ex.ToString());
                        }
                        finally
                        {
                            mwConnection.Close();
                        }
                    }
                }
            } while (numFilesInThisPass > 0);
        }
Пример #8
0
        static void Main(string[] args)
        {
            Class1         c     = new Class1();
            LinearTimeCode myltc = new LinearTimeCode(25, "2000-06-23", "01:15:23:21");

            c.goon5(myltc);
            myltc = new LinearTimeCode(25, "2000-06-23", "20:24:36:23");
            Console.WriteLine(myltc.ToString());
            myltc.addFrames(2);
            Console.WriteLine("2 frames, Should take it onto next second.");
            Console.WriteLine(myltc.ToString());
            myltc.addFrames(600);
            Console.WriteLine("600 frames, 24 seconds, should take it onto next minute.");
            Console.WriteLine(myltc.ToString());
            myltc.addFrames(52500);
            Console.WriteLine("52,500 frames, 35 minutes, should take it onto next hour.");
            Console.WriteLine(myltc.ToString());
            myltc.addFrames(270000);
            Console.WriteLine("270,000 frames, 3 hours, should take it onto next day.");
            Console.WriteLine(myltc.ToString());
            Console.WriteLine("Now lets try to go back!");
            try
            {
                myltc.addFrames(-270000);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            // myltc = new LinearTimeCode(30,"2000-06-23","01:01:59:28");
            // c.goon5(myltc);
            // myltc = new LinearTimeCode(30,"2000-06-23","01:00:59:28");
            // c.goon5(myltc);
            // myltc = new LinearTimeCode(30,"2000-06-23","01:09:59:28");
            // c.goon5(myltc);
            // Console.WriteLine("This should result in a drop frame exception");
            // try
            // {
            //  myltc = new LinearTimeCode(30,"2000-06-23","01:01:00:00");
            // }
            // catch (ArgumentException ae)
            // {
            //  Console.WriteLine(ae.ToString());
            // }
            // Console.WriteLine("and this.");
            // try
            // {
            // myltc = new LinearTimeCode(30,"2000-06-23","01:01:00:01");
            // }
            // catch (ArgumentException ae)
            // {
            //  Console.WriteLine(ae.ToString());
            // }
            // Console.WriteLine("but not this.");
            // try
            // {
            //  myltc = new LinearTimeCode(30,"2000-06-23","01:01:00:02");
            // }
            //     catch (ArgumentException ae)
//			{
//				Console.WriteLine(ae.ToString());
//			}
//			Console.WriteLine("frame out of range.");
//			try
//			{
//				myltc = new LinearTimeCode(30,"2000-06-23","01:09:59:36");
//			}
//			catch (ArgumentException ae)
//			{
//				Console.WriteLine(ae.ToString());
//			}
//			try
//			{
//				myltc = new LinearTimeCode(25,"2000-06-23","01:09:59:26");
//			}
//			catch (ArgumentException ae)
//			{
//				Console.WriteLine(ae.ToString());
//			}
//			Console.WriteLine("wrong fps");
//			try
//			{
//				myltc = new LinearTimeCode(29,"2000-06-23","01:09:59:21");
//			}
//			catch (ArgumentException ae)
//			{
//				Console.WriteLine(ae.ToString());
//			}
//			Console.WriteLine("wrong date");
//			try
//			{
//				myltc = new LinearTimeCode(30,"frefsafsdf-06-23","01:09:59:21");
//			}
//			catch (ArgumentException ae)
//			{
//				Console.WriteLine(ae.ToString());
//			}
            String wait = Console.ReadLine();
        }