2 Copyright 2004-2005 Chris Tallon
4 This file is part of VOMP.
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.
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.
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
36 #define NEW_DS_MECHANISMENS
38 #ifdef NEW_DS_MECHANISMENS
39 struct VideoFilterDesc {
46 typedef vector<VideoFilterDesc> VideoFilterDescList;
52 class VideoWin : public Video
58 int init(UCHAR format);
61 int setFormat(UCHAR format);
62 int setConnection(UCHAR connection);
63 int setAspectRatio(UCHAR aspectRatio); // This one does the pin 8 scart widescreen switching
64 UCHAR getAspectRatio(){return aspectRatio;};
65 UCHAR getMode(){return mode;};
66 UCHAR getPseudoTVsize() {return pseudotvsize;};
67 int setMode(UCHAR mode);
68 int setTVsize(UCHAR size); // Is the TV a widescreen?
69 int setDefaultAspect();
71 int setPosition(int x, int y);
75 bool InIframemode() {return iframemode;};
89 int attachFrameBuffer(); // What does this do?
90 ULONG timecodeToFrameNumber(ULLONG timecode);
91 ULLONG frameNumberToTimecode(ULONG framenumber);
92 ULLONG getCurrentTimestamp();
94 bool loadOptionsfromServer(VDR* vdr);
95 bool saveOptionstoServer();
96 bool addOptionPagesToWTB(WTabBar *wtb);
97 bool addOptionsToPanes(int panenumber,Options *options,WOptionPane* pane);
98 bool handleOptionChanges(Option* option);
100 //Writing Data to Videodevice
101 virtual void PrepareMediaSample(const MediaPacketList&, UINT samplepos);
102 virtual UINT DeliverMediaSample(const UCHAR* buffer, UINT *samplepos);
103 UINT DeliverMediaPacket(MediaPacket packet, const UCHAR* buffer, UINT *samplepos);
107 virtual bool supportsAc3();
111 MediaPacket mediapacket;
114 int getCurrentAudioMediaSample(IMediaSample** ms);
115 int DeliverAudioMediaSample();
117 int getCurrentVideoMediaSample(IMediaSample** ms);
118 int DeliverVideoMediaSample();
119 int setAudioStreamType(UCHAR type);
121 virtual long long SetStartOffset(long long curreftime, bool *rsync);
122 long long SetStartAudioOffset(long long curreftime, bool *rsync);
123 virtual void ResetTimeOffsets();
125 void SetAudioState(bool state){audioon=state;};
126 void SetAudioVolume(long volume);
128 void turnVideoOn(){videoon=true;};
129 void turnVideoOff(){videoon=false;};
131 virtual void displayIFrame(const UCHAR* buffer, UINT length);
133 unsigned int getPosx() {return videoposx;};
134 unsigned int getPosy() {return videoposy;};
135 bool isVideoOn() {return videoon;};
136 bool isdsinited() {return dsinited;};
137 int lastAType() {return lastaudiomode;};
138 bool changeAType(int type,IMediaSample* ms);
141 const VideoFilterDescList *getVideoFilterList(int &selected);
142 bool selectVideoFilter(int filter);
143 DsSourceFilter* getSourceFilter() {return sourcefilter;};
150 int EnterIframePlayback();
151 #ifdef NEW_DS_MECHANISMENS
153 void initFilterDatabase();
154 IBaseFilter *getVideoFilter(); VideoFilterDescList videofilterlist;
155 int videofilterselected;
157 int dsInitVideoFilter();
158 IMediaControl* dsmediacontrol;
160 IGraphBuilder* dsgraphbuilder;
161 IMediaSample* cur_audio_media_sample;
162 IMediaSample* cur_video_media_sample;
163 IBaseFilter* dsvmrrenderer;
164 IVMRSurfaceAllocatorNotify9 *dsvmrsurfnotify;
165 IReferenceClock *dsrefclock;
166 IMediaFilter* dsmediafilter;
167 IBasicAudio* dsbasicaudio;
168 REFERENCE_TIME cr_time;
170 DsSourceFilter* sourcefilter;
171 DsAllocator* allocatorvmr;
175 bool offsetvideonotset;
176 bool offsetaudionotset;
177 long long startoffset;
178 long long lastrefvideotime;
179 long long lastrefaudiotime;
186 REFERENCE_TIME lastreftimeRT;
187 ULLONG lastreftimePTS;
188 unsigned int videoposx;
189 unsigned int videoposy;
193 unsigned int vmrdeinterlacing;
195 DWORD graphidentifier;