]> git.vomp.tv Git - vompclient.git/blob - videowin.h
Remove manual sync buttons
[vompclient.git] / videowin.h
1 /*
2     Copyright 2004-2005 Chris Tallon
3
4     This file is part of VOMP.
5
6     VOMP is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     VOMP is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with VOMP; if not, write to the Free Software
18     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 */
20
21 #ifndef VIDEOWIN_H
22 #define VIDEOWIN_H
23
24 #include <stdio.h>
25 #include <string.h>
26 #include <winsock2.h>
27 #include <dshow.h>
28
29 #include "defines.h"
30 #include "video.h"
31
32 #define DS_DEBUG
33
34 class DsSourceFilter;
35
36 class VideoWin : public Video
37 {
38   public:
39     VideoWin();
40     ~VideoWin();
41
42     int init(UCHAR format);
43     int shutdown();
44
45     int setFormat(UCHAR format);
46     int setConnection(UCHAR connection);
47     int setAspectRatio(UCHAR aspectRatio);   // This one does the pin 8 scart widescreen switching
48     int setMode(UCHAR mode);
49     int setTVsize(UCHAR size);               // Is the TV a widescreen?
50     int setDefaultAspect();
51     int setSource();
52     int setPosition(int x, int y);
53     int sync();
54     int play();
55     int stop();
56     int pause();
57     int unPause();
58     int fastForward();
59     int unFastForward();
60     int reset();
61     int blank();
62     int signalOn();
63     int signalOff();
64     int attachFrameBuffer(); // What does this do?
65     ULONG timecodeToFrameNumber(ULLONG timecode);
66     int getFD();
67     ULLONG getCurrentTimestamp();
68
69     //Writing Data to Videodevice
70     virtual UINT DeliverMediaSample(MediaPacket packet, UCHAR* buffer, UINT *samplepos);
71
72     int getCurrentAudioMediaSample(IMediaSample** ms);
73     int DeliverAudioMediaSample();
74
75     int getCurrentVideoMediaSample(IMediaSample** ms);
76     int DeliverVideoMediaSample();
77
78     long long SetStartOffset(long long curreftime, bool *rsync);
79     long long SetStartAudioOffset(long long curreftime, bool *rsync);
80
81     void SetAudioState(bool state){audioon=state;};
82
83     void turnVideoOn(){videoon=true;};
84     void turnVideoOff(){videoon=false;};
85
86 #ifdef DEV
87     int test();
88     int test2();
89 #endif
90 private:
91   IMediaControl* dsmediacontrol;
92   IGraphBuilder* dsgraphbuilder;
93   IMediaSample* cur_audio_media_sample;
94   IMediaSample* cur_video_media_sample;
95
96   DsSourceFilter* sourcefilter;
97   HANDLE filtermutex;
98   void CleanupDS();
99   bool offsetnotset;
100   bool offsetvideonotset;
101   bool offsetaudionotset;
102   long long startoffset;
103   long long lastrefvideotime;
104   long long lastrefaudiotime;
105
106   bool firstsynched;
107   bool audioon;
108   bool videoon;
109 #ifdef DS_DEBUG
110   DWORD graphidentifier;
111 #endif
112 };
113
114 #endif