// TODO: combine to decode use case (same code in TimecodeDisplayController)
        private TimecodeData OffsetFilter(TimecodeData inputTimecode)
        {
            var setting = globalFrameOffsetSettingUseCase.GetCurrent();
            var info    = new FrameRateInfo((FrameRateType)Enum.ToObject(typeof(FrameRateType), setting.FrameRateType));
            var timecodeForCalculator = new TimeCode
            {
                DropFrame = info.DropFrame, Hour = inputTimecode.hour, Minute = inputTimecode.minute,
                Second    = inputTimecode.second,
                Frame     = inputTimecode.frame
            };
            var num = TimeCodeCalculator.TimeCodeToNumber(timecodeForCalculator, info);

            num += setting.Offset;

            // if smaller than zero by minus offset, return zero
            if (num < 0)
            {
                return(new TimecodeData(0, 0, 0, 0, inputTimecode.dropFrame));
            }

            var filteredTc = TimeCodeCalculator.FrameNumberToTimeCode(num, info);

            // avoid reference data override
            var result = new TimecodeData(filteredTc.Hour, filteredTc.Minute, filteredTc.Second, filteredTc.Frame,
                                          info.DropFrame);

            return(result);
        }
Esempio n. 2
0
 /// <summary>
 /// Load the frame rate code table.
 /// </summary>
 static FrameRateInfo()
 {
     // Load all
     m_RateMap[0x0] = new FrameRateInfo(1, 1);
     m_RateMap[0x1] = new FrameRateInfo(24000, 1001);
     m_RateMap[0x2] = new FrameRateInfo(24, 1);
     m_RateMap[0x3] = new FrameRateInfo(25, 1);
     m_RateMap[0x4] = new FrameRateInfo(30000, 1001);
     m_RateMap[0x5] = new FrameRateInfo(30, 1);
     m_RateMap[0x6] = new FrameRateInfo(50, 1);
     m_RateMap[0x7] = new FrameRateInfo(60000, 1001);
     m_RateMap[0x8] = new FrameRateInfo(60, 1);
     m_RateMap[0x9] = new FrameRateInfo(15, 1001);
     m_RateMap[0xa] = new FrameRateInfo(5, 1001);
     m_RateMap[0xb] = new FrameRateInfo(10, 1001);
     m_RateMap[0xc] = new FrameRateInfo(12, 1001);
     m_RateMap[0xd] = new FrameRateInfo(15, 1001);
     m_RateMap[0xe] = new FrameRateInfo(1, 1);
     m_RateMap[0xf] = new FrameRateInfo(1, 1);
 }
Esempio n. 3
0
 /// <summary>
 /// Load the frame rate code table.
 /// </summary>
 static FrameRateInfo()
 {
     // Load all
     m_RateMap[0x0] = new FrameRateInfo( 1, 1 );
     m_RateMap[0x1] = new FrameRateInfo( 24000, 1001 );
     m_RateMap[0x2] = new FrameRateInfo( 24, 1 );
     m_RateMap[0x3] = new FrameRateInfo( 25, 1 );
     m_RateMap[0x4] = new FrameRateInfo( 30000, 1001 );
     m_RateMap[0x5] = new FrameRateInfo( 30, 1 );
     m_RateMap[0x6] = new FrameRateInfo( 50, 1 );
     m_RateMap[0x7] = new FrameRateInfo( 60000, 1001 );
     m_RateMap[0x8] = new FrameRateInfo( 60, 1 );
     m_RateMap[0x9] = new FrameRateInfo( 15, 1001 );
     m_RateMap[0xa] = new FrameRateInfo( 5, 1001 );
     m_RateMap[0xb] = new FrameRateInfo( 10, 1001 );
     m_RateMap[0xc] = new FrameRateInfo( 12, 1001 );
     m_RateMap[0xd] = new FrameRateInfo( 15, 1001 );
     m_RateMap[0xe] = new FrameRateInfo( 1, 1 );
     m_RateMap[0xf] = new FrameRateInfo( 1, 1 );
 }
Esempio n. 4
0
 private void LoadDefaultConfig()
 {
     VideoVolume      = 30;
     MicrophoneVolume = 50;
     UseMicrophoneID  = 0;
     RecordingStatusChangesAccordingToLiveBroadcastStatus = false;
     UploadCompletedAutoDeleteLocalFile = false;
     IsAutoUpload      = false;
     AutoDelayDuration = 10;
     UseResolutionInfo = new ResolutionInfo {
         ID = 2, DisplayName = "960*540", Width = 960, Height = 540
     };
     UseRateInfo = new RateInfo {
         ID = 3, DisplayName = "1500kbps", Value = 1500
     };
     UseFrameRateInfo = new FrameRateInfo {
         ID = 1, DisplayName = "25Fps", Value = 25
     };
     if (!Directory.Exists(AllDataSavePath))
     {
         Directory.CreateDirectory(AllDataSavePath);
     }
     Save();
 }