예제 #1
0
        // Dispose
        protected override void Dispose(bool disposing)
        {
            base.Dispose(true);

            // stop encoder
            if (vsEncoder != null)
            {
                vsEncoder.Dispose();
                vsEncoder = null;
            }
        }
예제 #2
0
        // ---------------------------------------------------------------
        // stop encoder
        public override void StopRecord()
        {
            if (vsEncoder != null && vsEncoder.Recording)
            {
                // stop timer
                timer.Stop();
                stimer.Stop();

                try
                {
                    // stop encoder
                    vsEncoder.StopRecord();

                    // already write and can be accessed by another?
                    // convert avi file to wmv
                    VsEncode vsEnc = new VsEncode(rawName, aviName);
                    EncodeOut(this, new VsEncodeEventArgs(vsEnc));
                    vsEnc.Dispose(); vsEnc = null;

                    // send data to database server
                    DataAlert();
                }
                catch (Exception err)
                {
                    // error log
                    logger.Log(LogLevel.Error, err.Message + " " + err.Source + " " + err.StackTrace); ;

                    // if can't stop 
                    // try to free memory
                    if (vsEncoder != null) 
                    {
                        vsEncoder.Dispose();
                        vsEncoder = null;
                    }

                    // and create new encoder
                    if (vsEncoder == null)
                    {
                        try
                        {
                            vsEncoder = new AviEncoder();
                        }
                        catch (Exception err1)
                        {
                            if (vsEncoder != null)
                            {
                                vsEncoder.Dispose();
                                vsEncoder = null;
                            }
                            logger.Log(LogLevel.Error, err1.Message + " " + err1.Source + " " + err1.StackTrace); ;
                        }
                    }                   
                }

                // start timer
                timer.Start();
            }
        }
예제 #3
0
        // ---------------------------------------------------------------
        // create new viddo file
        public override void StartRecord()
        {
            if (vsEncoder == null)
            {
                try
                {
                    vsEncoder = new AviEncoder();
                }
                catch (Exception err)
                {
                    if (vsEncoder != null)
                    {
                        vsEncoder.Dispose();
                        vsEncoder = null;
                    }
                    logger.Log(LogLevel.Error, err.Message + " " + err.Source + " " + err.StackTrace); ;
                }
            }

            if (vsEncoder != null && !vsEncoder.Recording)
            {
                // check & create directory
                process_DirName();

                try
                {
                    // create new file
                    vsEncoder.StartRecord(rawName, (int)(1000/syncTimer), width, height);

                    // initial parameters
                    timeMaxLength = 0;
                    thumbCount = 0;
                    thumbSave = false;
                    stimer.Start();
                }
                catch (Exception err)
                {
                    // error log
                    logger.Log(LogLevel.Error, err.Message + " " + err.Source + " " + err.StackTrace); ;

                    // stop encoder
                    StopRecord(false);
                }
            }
        }
예제 #4
0
        protected override void Dispose(bool disposing)
        {
            // stop timer
            timer.Stop();
            stimer.Stop();

            // stop convertor
            if (vsConvert != null)
            {
                vsConvert.Dispose();
                vsConvert = null;
            }

            // stop encoder
            if (vsEncoder != null)
            {
                vsEncoder.Dispose();
                vsEncoder = null;
            }

            base.Dispose(true);
        }
예제 #5
0
        public override void StartRecord()
        {
            if (vsEncoder == null)
            {
                try
                {
                    // new object
                    vsEncoder = new AviEncoder();
                }
                catch (Exception err)
                {
                    // error log
                    logger.Log(LogLevel.Error, err.Message + " " + err.Source + " " + err.StackTrace);
                }
            }
            else return;

            try
            {
                // check & create directory
                process_DirName();

                // create new file
                vsEncoder.StartRecord("wmv3", aviName, (int)(1000 / syncTimer), width, height);

                // init encoder
                InitEncoder();

                // start counter
                StartCounter();
            }
            catch (Exception err)
            {
                // error log
                logger.Log(LogLevel.Error, err.Message + " " + err.Source + " " + err.StackTrace);

                // if error stop record
                StopRecord();
            }
        }
예제 #6
0
        public override void StopRecord()
        {
            if (vsEncoder == null) return;

            // stop counter
            StopCounter();

            // stop timer
            StopEncoder();

            try
            {
                // stop encoder
                vsEncoder.StopRecord();
                vsEncoder.Dispose();
                vsEncoder = null;
            }
            catch (Exception err)
            {
                logger.Log(LogLevel.Error, err.Message + " " + err.Source + " " + err.StackTrace);

            }

            // send data to database server
            DataAlert();

            // start timer
            StartEncoder();
        }