// 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); }
/// <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); }
/// <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 ); }
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(); }