Support unrar64.dll
[xy_vsfilter.git] / src / apps / mplayerc / MainFrm.h
blob2a676135ae860100c10207e12b3642d6b8156ddb
1 /*
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)
8 * any later version.
9 *
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
22 #pragma once
24 #include <atlbase.h>
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};
59 class OpenMediaData
61 public:
62 // OpenMediaData() {}
63 virtual ~OpenMediaData() {} // one virtual funct is needed to enable rtti
64 CString title;
65 CAtlList<CString> subs;
68 class OpenFileData : public OpenMediaData
70 public:
71 OpenFileData() : rtStart(0) {}
72 CAtlList<CString> fns;
73 REFERENCE_TIME rtStart;
76 class OpenDVDData : public OpenMediaData
78 public:
79 // OpenDVDData() {}
80 CString path;
81 CComPtr<IDvdState> pDvdState;
84 class OpenDeviceData : public OpenMediaData
86 public:
87 OpenDeviceData() {vinput = vchannel = ainput = -1;}
88 CStringW DisplayName[2];
89 int vinput, vchannel, ainput;
92 class CMainFrame;
94 class CGraphThread : public CWinThread
96 CMainFrame* m_pMainFrame;
98 DECLARE_DYNCREATE(CGraphThread);
100 public:
101 CGraphThread() : m_pMainFrame(NULL) {}
103 void SetMainFrame(CMainFrame* pMainFrame) {m_pMainFrame = pMainFrame;}
105 BOOL InitInstance();
106 int ExitInstance();
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);
119 public:
120 CKeyFrameFinderThread() {}
122 CUIntArray m_kfs; // protected by (CCritSec*)this
124 BOOL InitInstance();
125 int ExitInstance();
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);
134 interface ISubClock;
136 class CMainFrame : public CFrameWnd, public CDropTarget
138 enum
140 TIMER_STREAMPOSPOLLER = 1,
141 TIMER_STREAMPOSPOLLER2,
142 TIMER_FULLSCREENCONTROLBARHIDER,
143 TIMER_FULLSCREENMOUSEHIDER,
144 TIMER_STATS,
145 TIMER_LEFTCLICK,
146 TIMER_STATUSERASER
149 friend class CPPageFileInfoSheet;
150 friend class CPPageLogo;
152 // TODO: wrap these graph objects into a class to make it look cleaner
154 DWORD m_dwRegister;
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);
184 // subtitles
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;
193 // windowing
195 CRect m_lastWindowRect;
196 CPoint m_lastMouseMove;
198 CRect m_rcDesktop;
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);
209 // dynamic menus
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;
226 CMenu m_opencds;
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;
231 CMenu m_favorites;
232 CMenu m_shaders;
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();
247 int m_nLoops;
249 bool m_fCustomGraph;
250 bool m_fRealMediaGraph, m_fShockwaveGraph, m_fQuicktimeGraph;
252 CComPtr<ISubClock> m_pSubClock;
254 int m_fFrameSteppingActive;
255 int m_VolumeBeforeFrameStepping;
257 bool m_fEndOfStream;
259 bool m_fBuffering;
261 bool m_fLiveWM;
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;
272 void CleanGraph();
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;
290 public:
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();}
298 public:
299 CMainFrame();
301 DECLARE_DYNAMIC(CMainFrame)
303 // Attributes
304 public:
305 int m_iPlaybackMode;
307 bool m_fFullScreen;
308 bool m_fHideCursor;
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;
318 protected:
319 enum {MLS_CLOSED, MLS_LOADING, MLS_LOADED, MLS_CLOSING};
320 int m_iMediaLoadState;
322 bool m_fAudioOnly;
323 dispmode m_dmBeforeFullscreen;
325 DVD_DOMAIN m_iDVDDomain;
326 DWORD m_iDVDTitle;
327 int m_iSpeedLevel;
329 double m_ZoomX, m_ZoomY, m_PosX, m_PosY;
330 int m_AngleX, m_AngleY, m_AngleZ;
332 // Operations
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;
360 public:
361 void OpenCurPlaylistItem(REFERENCE_TIME rtStart = 0);
362 void OpenMedia(CAutoPtr<OpenMediaData> pOMD);
363 void CloseMedia();
365 void AddCurDevToPlaylist();
367 bool m_fTrayIcon;
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);
374 void RepaintVideo();
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();
387 // shaders
388 CAtlList<CString> m_shaderlabels;
389 void SetShaders();
390 void UpdateShaders(CString label);
392 // capturing
393 bool m_fCapturing;
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);
408 // Implementation
409 public:
410 virtual ~CMainFrame();
411 #ifdef _DEBUG
412 virtual void AssertValid() const;
413 virtual void Dump(CDumpContext& dc) const;
414 #endif
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;
434 // TODO
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);
439 void OnDragLeave();
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()
453 public:
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);