2 * Copyright (C) 2003-2006 Gabest
3 * http://www.gabest.org
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with GNU Make; see the file COPYING. If not, write to
17 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
18 * http://www.gnu.org/copyleft/gpl.html
26 #include "ChildView.h"
27 #include "PlayerSeekBar.h"
28 #include "PlayerToolBar.h"
29 #include "PlayerInfoBar.h"
30 #include "PlayerStatusBar.h"
31 #include "PlayerSubresyncBar.h"
32 #include "PlayerPlaylistBar.h"
33 #include "PlayerCaptureBar.h"
34 #include "PlayerShaderEditorBar.h"
35 #include "PPageSheet.h"
36 #include "PPageFileInfoSheet.h"
37 #include "OpenCapDeviceDlg.h"
39 #include "FileDropTarget.h"
41 #include "KeyProvider.h"
43 #include "..\..\subpic\ISubPic.h"
45 #include "IGraphBuilder2.h"
47 #include "RealMediaGraph.h"
48 #include "QuicktimeGraph.h"
49 #include "ShockwaveGraph.h"
51 #include "..\..\..\include\IChapterInfo.h"
52 #include "..\..\..\include\IKeyFrameInfo.h"
53 #include "..\..\..\include\IBufferInfo.h"
55 #include "WebServer.h"
57 enum {PM_NONE
, PM_FILE
, PM_DVD
, PM_CAPTURE
};
63 virtual ~OpenMediaData() {} // one virtual funct is needed to enable rtti
65 CAtlList
<CString
> subs
;
68 class OpenFileData
: public OpenMediaData
71 OpenFileData() : rtStart(0) {}
72 CAtlList
<CString
> fns
;
73 REFERENCE_TIME rtStart
;
76 class OpenDVDData
: public OpenMediaData
81 CComPtr
<IDvdState
> pDvdState
;
84 class OpenDeviceData
: public OpenMediaData
87 OpenDeviceData() {vinput
= vchannel
= ainput
= -1;}
88 CStringW DisplayName
[2];
89 int vinput
, vchannel
, ainput
;
94 class CGraphThread
: public CWinThread
96 CMainFrame
* m_pMainFrame
;
98 DECLARE_DYNCREATE(CGraphThread
);
101 CGraphThread() : m_pMainFrame(NULL
) {}
103 void SetMainFrame(CMainFrame
* pMainFrame
) {m_pMainFrame
= pMainFrame
;}
108 enum {TM_EXIT
=WM_APP
, TM_OPEN
, TM_CLOSE
};
109 DECLARE_MESSAGE_MAP()
110 afx_msg
void OnExit(WPARAM wParam
, LPARAM lParam
);
111 afx_msg
void OnOpen(WPARAM wParam
, LPARAM lParam
);
112 afx_msg
void OnClose(WPARAM wParam
, LPARAM lParam
);
115 class CKeyFrameFinderThread : public CWinThread, public CCritSec
117 DECLARE_DYNCREATE(CKeyFrameFinderThread);
120 CKeyFrameFinderThread() {}
122 CUIntArray m_kfs; // protected by (CCritSec*)this
127 enum {TM_EXIT=WM_APP, TM_INDEX, TM_BREAK};
128 DECLARE_MESSAGE_MAP()
129 afx_msg void OnExit(WPARAM wParam, LPARAM lParam);
130 afx_msg void OnIndex(WPARAM wParam, LPARAM lParam);
131 afx_msg void OnBreak(WPARAM wParam, LPARAM lParam);
136 class CMainFrame
: public CFrameWnd
, public CDropTarget
140 TIMER_STREAMPOSPOLLER
= 1,
141 TIMER_STREAMPOSPOLLER2
,
142 TIMER_FULLSCREENCONTROLBARHIDER
,
143 TIMER_FULLSCREENMOUSEHIDER
,
149 friend class CPPageFileInfoSheet
;
150 friend class CPPageLogo
;
152 // TODO: wrap these graph objects into a class to make it look cleaner
156 CComPtr
<IGraphBuilder2
> pGB
;
157 CComQIPtr
<IMediaControl
> pMC
;
158 CComQIPtr
<IMediaEventEx
> pME
;
159 CComQIPtr
<IVideoWindow
> pVW
;
160 CComQIPtr
<IBasicVideo
> pBV
;
161 CComQIPtr
<IBasicAudio
> pBA
;
162 CComQIPtr
<IMediaSeeking
> pMS
;
163 CComQIPtr
<IVideoFrameStep
> pFS
;
164 CComQIPtr
<IQualProp
, &IID_IQualProp
> pQP
;
165 CComQIPtr
<IBufferInfo
> pBI
;
166 CComQIPtr
<IAMOpenProgress
> pAMOP
;
168 CComQIPtr
<IDvdControl2
> pDVDC
;
169 CComQIPtr
<IDvdInfo2
> pDVDI
;
171 CComPtr
<ICaptureGraphBuilder2
> pCGB
;
172 CStringW m_VidDispName
, m_AudDispName
;
173 CComPtr
<IBaseFilter
> pVidCap
, pAudCap
;
174 CComPtr
<IAMVideoCompression
> pAMVCCap
, pAMVCPrev
;
175 CComPtr
<IAMStreamConfig
> pAMVSCCap
, pAMVSCPrev
, pAMASC
;
176 CComPtr
<IAMCrossbar
> pAMXBar
;
177 CComPtr
<IAMTVTuner
> pAMTuner
;
178 CComPtr
<IAMDroppedFrames
> pAMDF
;
180 CComPtr
<ISubPicAllocatorPresenter
> m_pCAP
;
182 void SetBalance(int balance
);
186 CCritSec m_csSubLock
;
187 CInterfaceList
<ISubStream
> m_pSubStreams
;
188 int m_iSubtitleSel
; // if(m_iSubtitleSel&(1<<31)): disabled
189 DWORD_PTR m_nSubtitleId
;
191 friend class CTextPassThruFilter
;
195 CRect m_lastWindowRect
;
196 CPoint m_lastMouseMove
;
200 void ShowControls(int nCS
, bool fSave
= true);
202 void SetDefaultWindowRect(int iMonitor
= 0);
203 void RestoreDefaultWindowRect();
204 void ZoomVideoWindow(double scale
= -1);
205 double GetZoomAutoFitScale();
207 void SetAlwaysOnTop(int i
);
211 void SetupOpenCDSubMenu();
212 void SetupFiltersSubMenu();
213 void SetupAudioSwitcherSubMenu();
214 void SetupSubtitlesSubMenu();
215 void SetupNavAudioSubMenu();
216 void SetupNavSubtitleSubMenu();
217 void SetupNavAngleSubMenu();
218 void SetupNavChaptersSubMenu();
219 void SetupFavoritesSubMenu();
220 void SetupShadersSubMenu();
222 void SetupNavStreamSelectSubMenu(CMenu
* pSub
, UINT id
, DWORD dwSelGroup
);
223 void OnNavStreamSelectSubMenu(UINT id
, DWORD dwSelGroup
);
225 CMenu m_popupmain
, m_popup
;
227 CMenu m_filters
, m_subtitles
, m_audios
;
228 CAutoPtrArray
<CMenu
> m_filterpopups
;
229 CMenu m_navaudio
, m_navsubtitle
, m_navangle
;
230 CMenu m_navchapters
, m_navtitles
;
234 CInterfaceArray
<IUnknown
, &IID_IUnknown
> m_pparray
;
235 CInterfaceArray
<IAMStreamSelect
> m_ssarray
;
237 // chapters (file mode)
238 CComPtr
<IDSMChapterBag
> m_pCB
;
239 void SetupChapters();
243 void SetupIViAudReg();
245 void AddTextPassThruFilter();
250 bool m_fRealMediaGraph
, m_fShockwaveGraph
, m_fQuicktimeGraph
;
252 CComPtr
<ISubClock
> m_pSubClock
;
254 int m_fFrameSteppingActive
;
255 int m_VolumeBeforeFrameStepping
;
263 bool m_fUpdateInfoBar
;
265 void SendStatusMessage(CString msg
, int nTimeOut
);
266 CString m_playingmsg
, m_closingmsg
;
268 REFERENCE_TIME m_rtDurationOverride
;
270 CComPtr
<IUnknown
> m_pProv
;
274 CComPtr
<IBaseFilter
> pAudioDubSrc
;
276 void ShowOptions(int idPage
= 0);
278 bool GetDIB(BYTE
** ppData
, long& size
, bool fSilent
= false);
279 void SaveDIB(LPCTSTR fn
, BYTE
* pData
, long size
);
280 BOOL
IsRendererCompatibleWithSaveImage();
281 void SaveImage(LPCTSTR fn
);
282 void SaveThumbnails(LPCTSTR fn
);
286 friend class CWebClientSocket
;
287 friend class CWebServer
;
288 CAutoPtr
<CWebServer
> m_pWebServer
;
291 void StartWebServer(int nPort
);
292 void StopWebServer();
294 CString
GetStatusMessage();
295 bool IsMuted() {return m_wndToolBar
.GetVolume() == -10000;}
296 int GetVolume() {return m_wndToolBar
.m_volctrl
.GetPos();}
301 DECLARE_DYNAMIC(CMainFrame
)
310 bool IsFrameLessWindow() {return(m_fFullScreen
|| AfxGetAppSettings().fHideCaptionMenu
);}
311 bool IsCaptionMenuHidden() {return(!m_fFullScreen
&& AfxGetAppSettings().fHideCaptionMenu
);}
312 bool IsSomethingLoaded() {return(m_iMediaLoadState
!= MLS_CLOSED
);}
313 bool IsPlaylistEmpty() {return(m_wndPlaylistBar
.GetCount() == 0);}
314 bool IsInteractiveVideo() {return(AfxGetAppSettings().fIntRealMedia
&& m_fRealMediaGraph
|| m_fShockwaveGraph
);}
316 CControlBar
* m_pLastBar
;
319 enum {MLS_CLOSED
, MLS_LOADING
, MLS_LOADED
, MLS_CLOSING
};
320 int m_iMediaLoadState
;
323 dispmode m_dmBeforeFullscreen
;
325 DVD_DOMAIN m_iDVDDomain
;
329 double m_ZoomX
, m_ZoomY
, m_PosX
, m_PosY
;
330 int m_AngleX
, m_AngleY
, m_AngleZ
;
333 bool OpenMediaPrivate(CAutoPtr
<OpenMediaData
> pOMD
);
334 void CloseMediaPrivate();
336 void SendNowPlayingToMSN();
337 void SendNowPlayingTomIRC();
339 void OpenCreateGraphObject(OpenMediaData
* pOMD
);
340 void OpenFile(OpenFileData
* pOFD
);
341 void OpenDVD(OpenDVDData
* pODD
);
342 void OpenCapture(OpenDeviceData
* pODD
);
343 void OpenCustomizeGraph();
344 void OpenSetupVideo();
345 void OpenSetupAudio();
346 void OpenSetupInfoBar();
347 void OpenSetupStatsBar();
348 void OpenSetupStatusBar();
349 // void OpenSetupToolBar();
350 void OpenSetupCaptureBar();
351 void OpenSetupWindowTitle(CString fn
= _T(""));
353 friend class CGraphThread
;
354 CGraphThread
* m_pGraphThread
;
356 CAtlArray
<REFERENCE_TIME
> m_kfs
;
358 bool m_fOpeningAborted
;
361 void OpenCurPlaylistItem(REFERENCE_TIME rtStart
= 0);
362 void OpenMedia(CAutoPtr
<OpenMediaData
> pOMD
);
365 void AddCurDevToPlaylist();
368 void ShowTrayIcon(bool fShow
);
369 void SetTrayTip(CString str
);
371 CSize
GetVideoSize();
372 void ToggleFullscreen(bool fToNearest
, bool fSwitchScreenResWhenHasTo
);
373 void MoveVideoWindow(bool fShowStats
= false);
376 OAFilterState
GetMediaState();
377 REFERENCE_TIME
GetPos(), GetDur();
378 void SeekTo(REFERENCE_TIME rt
, bool fSeekToKeyFrame
= false);
380 bool LoadSubtitle(CString fn
);
381 void UpdateSubtitle(bool fApplyDefStyle
= false);
382 void SetSubtitle(ISubStream
* pSubStream
, bool fApplyDefStyle
= false);
383 void ReplaceSubtitle(ISubStream
* pSubStreamOld
, ISubStream
* pSubStreamNew
);
384 void InvalidateSubtitle(DWORD_PTR nSubtitleId
= -1, REFERENCE_TIME rtInvalidate
= -1);
385 void ReloadSubtitle();
388 CAtlList
<CString
> m_shaderlabels
;
390 void UpdateShaders(CString label
);
394 HRESULT
BuildCapture(IPin
* pPin
, IBaseFilter
* pBF
[3], const GUID
& majortype
, AM_MEDIA_TYPE
* pmt
); // pBF: 0 buff, 1 enc, 2 mux, pmt is for 1 enc
395 bool BuildToCapturePreviewPin(
396 IBaseFilter
* pVidCap
, IPin
** pVidCapPin
, IPin
** pVidPrevPin
,
397 IBaseFilter
* pAudCap
, IPin
** pAudCapPin
, IPin
** pAudPrevPin
);
398 bool BuildGraphVideoAudio(int fVPreview
, bool fVCapture
, int fAPreview
, bool fACapture
);
399 bool DoCapture(), StartCapture(), StopCapture();
401 bool DoAfterPlaybackEvent();
403 virtual BOOL
PreCreateWindow(CREATESTRUCT
& cs
);
404 virtual BOOL
PreTranslateMessage(MSG
* pMsg
);
405 virtual BOOL
OnCmdMsg(UINT nID
, int nCode
, void* pExtra
, AFX_CMDHANDLERINFO
* pHandlerInfo
);
406 virtual void RecalcLayout(BOOL bNotify
= TRUE
);
410 virtual ~CMainFrame();
412 virtual void AssertValid() const;
413 virtual void Dump(CDumpContext
& dc
) const;
416 protected: // control bar embedded members
418 CChildView m_wndView
;
420 CPlayerSeekBar m_wndSeekBar
;
421 CPlayerToolBar m_wndToolBar
;
422 CPlayerInfoBar m_wndInfoBar
;
423 CPlayerInfoBar m_wndStatsBar
;
424 CPlayerStatusBar m_wndStatusBar
;
425 CList
<CControlBar
*> m_bars
;
427 CPlayerSubresyncBar m_wndSubresyncBar
;
428 CPlayerPlaylistBar m_wndPlaylistBar
;
429 CPlayerCaptureBar m_wndCaptureBar
;
430 CPlayerShaderEditorBar m_wndShaderEditorBar
;
431 CList
<CSizingControlBar
*> m_dockingbars
;
433 CFileDropTarget m_fileDropTarget
;
435 DROPEFFECT
OnDragEnter(COleDataObject
* pDataObject
, DWORD dwKeyState
, CPoint point
);
436 DROPEFFECT
OnDragOver(COleDataObject
* pDataObject
, DWORD dwKeyState
, CPoint point
);
437 BOOL
OnDrop(COleDataObject
* pDataObject
, DROPEFFECT dropEffect
, CPoint point
);
438 DROPEFFECT
OnDropEx(COleDataObject
* pDataObject
, DROPEFFECT dropDefault
, DROPEFFECT dropList
, CPoint point
);
440 DROPEFFECT
OnDragScroll(DWORD dwKeyState
, CPoint point
);
442 friend class CPPagePlayback
; // TODO
443 friend class CMPlayerCApp
; // TODO
445 void LoadControlBar(CControlBar
* pBar
, UINT defDockBarID
);
446 void RestoreFloatingControlBars();
447 void SaveControlBars();
449 // Generated message map functions
451 DECLARE_MESSAGE_MAP()
454 afx_msg
int OnCreate(LPCREATESTRUCT lpCreateStruct
);
455 afx_msg
void OnDestroy();
457 afx_msg LRESULT
OnTaskBarRestart(WPARAM
, LPARAM
);
458 afx_msg LRESULT
OnNotifyIcon(WPARAM
, LPARAM
);
460 afx_msg
void OnSetFocus(CWnd
* pOldWnd
);
461 afx_msg
void OnGetMinMaxInfo(MINMAXINFO
* lpMMI
);
462 afx_msg
void OnMove(int x
, int y
);
463 afx_msg
void OnMoving(UINT fwSide
, LPRECT pRect
);
464 afx_msg
void OnSize(UINT nType
, int cx
, int cy
);
465 afx_msg
void OnSizing(UINT fwSide
, LPRECT pRect
);
466 afx_msg
void OnDisplayChange();
468 afx_msg
void OnSysCommand(UINT nID
, LPARAM lParam
);
469 afx_msg
void OnActivateApp(BOOL bActive
, DWORD dwThreadID
);
470 afx_msg LRESULT
OnAppCommand(WPARAM wParam
, LPARAM lParam
);
472 afx_msg
void OnTimer(UINT nIDEvent
);
474 afx_msg LRESULT
OnGraphNotify(WPARAM wParam
, LPARAM lParam
);
475 afx_msg LRESULT
OnRepaintRenderLess(WPARAM wParam
, LPARAM lParam
);
476 afx_msg LRESULT
OnResumeFromState(WPARAM wParam
, LPARAM lParam
);
478 BOOL
OnButton(UINT id
, UINT nFlags
, CPoint point
);
479 afx_msg
void OnLButtonDown(UINT nFlags
, CPoint point
);
480 afx_msg
void OnLButtonUp(UINT nFlags
, CPoint point
);
481 afx_msg
void OnLButtonDblClk(UINT nFlags
, CPoint point
);
482 afx_msg
void OnMButtonDown(UINT nFlags
, CPoint point
);
483 afx_msg
void OnMButtonUp(UINT nFlags
, CPoint point
);
484 afx_msg
void OnMButtonDblClk(UINT nFlags
, CPoint point
);
485 afx_msg
void OnRButtonDown(UINT nFlags
, CPoint point
);
486 afx_msg
void OnRButtonUp(UINT nFlags
, CPoint point
);
487 afx_msg
void OnRButtonDblClk(UINT nFlags
, CPoint point
);
488 afx_msg LRESULT
OnXButtonDown(WPARAM wParam
, LPARAM lParam
);
489 afx_msg LRESULT
OnXButtonUp(WPARAM wParam
, LPARAM lParam
);
490 afx_msg LRESULT
OnXButtonDblClk(WPARAM wParam
, LPARAM lParam
);
491 afx_msg BOOL
OnMouseWheel(UINT nFlags
, short zDelta
, CPoint pt
);
492 afx_msg
void OnMouseMove(UINT nFlags
, CPoint point
);
494 afx_msg LRESULT
OnNcHitTest(CPoint point
);
496 afx_msg
void OnHScroll(UINT nSBCode
, UINT nPos
, CScrollBar
* pScrollBar
);
498 afx_msg
void OnInitMenu(CMenu
* pMenu
);
499 afx_msg
void OnInitMenuPopup(CMenu
* pPopupMenu
, UINT nIndex
, BOOL bSysMenu
);
501 BOOL
OnMenu(CMenu
* pMenu
);
502 afx_msg
void OnMenuPlayerShort();
503 afx_msg
void OnMenuPlayerLong();
504 afx_msg
void OnMenuFilters();
506 afx_msg
void OnUpdatePlayerStatus(CCmdUI
* pCmdUI
);
508 afx_msg
void OnFilePostOpenmedia();
509 afx_msg
void OnUpdateFilePostOpenmedia(CCmdUI
* pCmdUI
);
510 afx_msg
void OnFilePostClosemedia();
511 afx_msg
void OnUpdateFilePostClosemedia(CCmdUI
* pCmdUI
);
513 afx_msg
void OnBossKey();
515 afx_msg
void OnStreamAudio(UINT nID
);
516 afx_msg
void OnStreamSub(UINT nID
);
517 afx_msg
void OnStreamSubOnOff();
518 afx_msg
void OnOgmAudio(UINT nID
);
519 afx_msg
void OnOgmSub(UINT nID
);
520 afx_msg
void OnDvdAngle(UINT nID
);
521 afx_msg
void OnDvdAudio(UINT nID
);
522 afx_msg
void OnDvdSub(UINT nID
);
523 afx_msg
void OnDvdSubOnOff();
526 // menu item handlers
528 afx_msg
void OnFileOpenQuick();
529 afx_msg
void OnFileOpenmedia();
530 afx_msg
void OnUpdateFileOpen(CCmdUI
* pCmdUI
);
531 afx_msg BOOL
OnCopyData(CWnd
* pWnd
, COPYDATASTRUCT
* pCopyDataStruct
);
532 afx_msg
void OnFileOpendvd();
533 afx_msg
void OnFileOpendevice();
534 afx_msg
void OnFileOpenCD(UINT nID
);
535 afx_msg
void OnDropFiles(HDROP hDropInfo
); // no menu item
536 afx_msg
void OnFileSaveAs();
537 afx_msg
void OnUpdateFileSaveAs(CCmdUI
* pCmdUI
);
538 afx_msg
void OnFileSaveImage();
539 afx_msg
void OnFileSaveImageAuto();
540 afx_msg
void OnUpdateFileSaveImage(CCmdUI
* pCmdUI
);
541 afx_msg
void OnFileSaveThumbnails();
542 afx_msg
void OnUpdateFileSaveThumbnails(CCmdUI
* pCmdUI
);
543 afx_msg
void OnFileConvert();
544 afx_msg
void OnUpdateFileConvert(CCmdUI
* pCmdUI
);
545 afx_msg
void OnFileLoadsubtitle();
546 afx_msg
void OnUpdateFileLoadsubtitle(CCmdUI
* pCmdUI
);
547 afx_msg
void OnFileSavesubtitle();
548 afx_msg
void OnUpdateFileSavesubtitle(CCmdUI
* pCmdUI
);
549 afx_msg
void OnFileISDBSearch();
550 afx_msg
void OnUpdateFileISDBSearch(CCmdUI
* pCmdUI
);
551 afx_msg
void OnFileISDBUpload();
552 afx_msg
void OnUpdateFileISDBUpload(CCmdUI
* pCmdUI
);
553 afx_msg
void OnFileISDBDownload();
554 afx_msg
void OnUpdateFileISDBDownload(CCmdUI
* pCmdUI
);
555 afx_msg
void OnFileProperties();
556 afx_msg
void OnUpdateFileProperties(CCmdUI
* pCmdUI
);
557 afx_msg
void OnFileClosePlaylist();
558 afx_msg
void OnFileCloseMedia(); // no menu item
559 afx_msg
void OnUpdateFileClose(CCmdUI
* pCmdUI
);
561 afx_msg
void OnViewCaptionmenu();
562 afx_msg
void OnUpdateViewCaptionmenu(CCmdUI
* pCmdUI
);
563 afx_msg
void OnViewControlBar(UINT nID
);
564 afx_msg
void OnUpdateViewControlBar(CCmdUI
* pCmdUI
);
565 afx_msg
void OnViewSubresync();
566 afx_msg
void OnUpdateViewSubresync(CCmdUI
* pCmdUI
);
567 afx_msg
void OnViewPlaylist();
568 afx_msg
void OnUpdateViewPlaylist(CCmdUI
* pCmdUI
);
569 afx_msg
void OnViewCapture();
570 afx_msg
void OnUpdateViewCapture(CCmdUI
* pCmdUI
);
571 afx_msg
void OnViewShaderEditor();
572 afx_msg
void OnUpdateViewShaderEditor(CCmdUI
* pCmdUI
);
573 afx_msg
void OnViewMinimal();
574 afx_msg
void OnUpdateViewMinimal(CCmdUI
* pCmdUI
);
575 afx_msg
void OnViewCompact();
576 afx_msg
void OnUpdateViewCompact(CCmdUI
* pCmdUI
);
577 afx_msg
void OnViewNormal();
578 afx_msg
void OnUpdateViewNormal(CCmdUI
* pCmdUI
);
579 afx_msg
void OnViewFullscreen();
580 afx_msg
void OnViewFullscreenSecondary();
581 afx_msg
void OnUpdateViewFullscreen(CCmdUI
* pCmdUI
);
582 afx_msg
void OnViewZoom(UINT nID
);
583 afx_msg
void OnUpdateViewZoom(CCmdUI
* pCmdUI
);
584 afx_msg
void OnViewZoomAutoFit();
585 afx_msg
void OnViewDefaultVideoFrame(UINT nID
);
586 afx_msg
void OnUpdateViewDefaultVideoFrame(CCmdUI
* pCmdUI
);
587 afx_msg
void OnViewKeepaspectratio();
588 afx_msg
void OnUpdateViewKeepaspectratio(CCmdUI
* pCmdUI
);
589 afx_msg
void OnViewCompMonDeskARDiff();
590 afx_msg
void OnUpdateViewCompMonDeskARDiff(CCmdUI
* pCmdUI
);
591 afx_msg
void OnViewPanNScan(UINT nID
);
592 afx_msg
void OnUpdateViewPanNScan(CCmdUI
* pCmdUI
);
593 afx_msg
void OnViewPanNScanPresets(UINT nID
);
594 afx_msg
void OnUpdateViewPanNScanPresets(CCmdUI
* pCmdUI
);
595 afx_msg
void OnViewRotate(UINT nID
);
596 afx_msg
void OnUpdateViewRotate(CCmdUI
* pCmdUI
);
597 afx_msg
void OnViewAspectRatio(UINT nID
);
598 afx_msg
void OnUpdateViewAspectRatio(CCmdUI
* pCmdUI
);
599 afx_msg
void OnViewAspectRatioNext();
600 afx_msg
void OnViewOntop(UINT nID
);
601 afx_msg
void OnUpdateViewOntop(CCmdUI
* pCmdUI
);
602 afx_msg
void OnViewOptions();
604 afx_msg
void OnPlayPlay();
605 afx_msg
void OnPlayPause();
606 afx_msg
void OnPlayPauseI();
607 afx_msg
void OnPlayPlaypause();
608 afx_msg
void OnPlayStop();
609 afx_msg
void OnUpdatePlayPauseStop(CCmdUI
* pCmdUI
);
610 afx_msg
void OnPlayFramestep(UINT nID
);
611 afx_msg
void OnUpdatePlayFramestep(CCmdUI
* pCmdUI
);
612 afx_msg
void OnPlaySeek(UINT nID
);
613 afx_msg
void OnPlaySeekKey(UINT nID
); // no menu item
614 afx_msg
void OnUpdatePlaySeek(CCmdUI
* pCmdUI
);
615 afx_msg
void OnPlayGoto();
616 afx_msg
void OnUpdateGoto(CCmdUI
* pCmdUI
);
617 afx_msg
void OnPlayChangeRate(UINT nID
);
618 afx_msg
void OnUpdatePlayChangeRate(CCmdUI
* pCmdUI
);
619 afx_msg
void OnPlayResetRate();
620 afx_msg
void OnUpdatePlayResetRate(CCmdUI
* pCmdUI
);
621 afx_msg
void OnPlayChangeAudDelay(UINT nID
);
622 afx_msg
void OnUpdatePlayChangeAudDelay(CCmdUI
* pCmdUI
);
623 afx_msg
void OnPlayFilters(UINT nID
);
624 afx_msg
void OnUpdatePlayFilters(CCmdUI
* pCmdUI
);
625 afx_msg
void OnPlayShaders(UINT nID
);
626 afx_msg
void OnUpdatePlayShaders(CCmdUI
* pCmdUI
);
627 afx_msg
void OnPlayAudio(UINT nID
);
628 afx_msg
void OnUpdatePlayAudio(CCmdUI
* pCmdUI
);
629 afx_msg
void OnPlaySubtitles(UINT nID
);
630 afx_msg
void OnUpdatePlaySubtitles(CCmdUI
* pCmdUI
);
631 afx_msg
void OnPlayLanguage(UINT nID
);
632 afx_msg
void OnUpdatePlayLanguage(CCmdUI
* pCmdUI
);
633 afx_msg
void OnPlayVolume(UINT nID
);
634 afx_msg
void OnPlayVolumeBoost(UINT nID
);
635 afx_msg
void OnUpdatePlayVolumeBoost(CCmdUI
* pCmdUI
);
636 afx_msg
void OnAfterplayback(UINT nID
);
637 afx_msg
void OnUpdateAfterplayback(CCmdUI
* pCmdUI
);
639 afx_msg
void OnSubtitleDelay(UINT nID
);
641 afx_msg
void OnNavigateSkip(UINT nID
);
642 afx_msg
void OnUpdateNavigateSkip(CCmdUI
* pCmdUI
);
643 afx_msg
void OnNavigateSkipPlaylistItem(UINT nID
);
644 afx_msg
void OnUpdateNavigateSkipPlaylistItem(CCmdUI
* pCmdUI
);
645 afx_msg
void OnNavigateMenu(UINT nID
);
646 afx_msg
void OnUpdateNavigateMenu(CCmdUI
* pCmdUI
);
647 afx_msg
void OnNavigateAudio(UINT nID
);
648 afx_msg
void OnNavigateSubpic(UINT nID
);
649 afx_msg
void OnNavigateAngle(UINT nID
);
650 afx_msg
void OnNavigateChapters(UINT nID
);
651 afx_msg
void OnNavigateMenuItem(UINT nID
);
652 afx_msg
void OnUpdateNavigateMenuItem(CCmdUI
* pCmdUI
);
654 afx_msg
void OnFavoritesAdd();
655 afx_msg
void OnUpdateFavoritesAdd(CCmdUI
* pCmdUI
);
656 afx_msg
void OnFavoritesOrganize();
657 afx_msg
void OnUpdateFavoritesOrganize(CCmdUI
* pCmdUI
);
658 afx_msg
void OnFavoritesFile(UINT nID
);
659 afx_msg
void OnUpdateFavoritesFile(CCmdUI
* pCmdUI
);
660 afx_msg
void OnFavoritesDVD(UINT nID
);
661 afx_msg
void OnUpdateFavoritesDVD(CCmdUI
* pCmdUI
);
662 afx_msg
void OnFavoritesDevice(UINT nID
);
663 afx_msg
void OnUpdateFavoritesDevice(CCmdUI
* pCmdUI
);
665 afx_msg
void OnHelpHomepage();
666 afx_msg
void OnHelpDocumentation();
668 afx_msg
void OnClose();
670 void SetSubtitleDelay(int delay_ms
);