public VideoPlayerViewModel(DisplayVideoFrameDelegate displayVideoFrameCallback, VideoLib.VideoPlayer.DecodedVideoFormat decodedVideoFormat) { this.displayVideoFrameCallback = displayVideoFrameCallback; this.decodedVideoFormat = decodedVideoFormat; videoDecoder = new VideoLib.VideoPlayer(); videoDecoder.setLogCallback(videoDecoderLogCallback, true, true); audioPlayer = new AudioPlayer(); videoRefreshTimer = HRTimerFactory.create(HRTimerFactory.TimerType.TIMER_QUEUE); videoRefreshTimer.Tick += new EventHandler(videoRefreshTimer_Tick); //videoRefreshTimer.SynchronizingObject = this; videoRefreshTimer.AutoReset = false; audioRefreshTimer = HRTimerFactory.create(HRTimerFactory.TimerType.TIMER_QUEUE); audioRefreshTimer.Tick += new EventHandler(audioRefreshTimer_Tick); audioRefreshTimer.AutoReset = false; //audioRefreshTimer.SynchronizingObject = null; audioDiffAvgCoef = Math.Exp(Math.Log(0.01) / AUDIO_DIFF_AVG_NB); syncMode = SyncMode.AUDIO_SYNCS_TO_VIDEO; VideoState = VideoState.CLOSED; playCommand = new Command(new Action(() => startPlay())); pauseCommand = new Command(new Action(() => pausePlay())); closeCommand = new Command(new Action(() => close())); DurationSeconds = 0; PositionSeconds = 0; }