]> git.vomp.tv Git - vompclient-marten.git/blob - audiowin.h
Windows HDTV
[vompclient-marten.git] / audiowin.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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19 */
20
21 #ifndef AUDIOWIN_H
22 #define AUDIOWIN_H
23
24 #include "defines.h"
25 #include "log.h"
26 #include "audio.h"
27 #include <winsock2.h>
28 #include <dshow.h>
29 #include "dssourcefilter.h"
30
31 #include <vector>
32
33 struct AudioFilterDesc {
34     char * displayname;
35     char * friendlyname;
36 };
37 using namespace std;
38 typedef vector<AudioFilterDesc> AudioFilterDescList;
39
40 class AudioWin : public Audio
41 {
42   public:
43     AudioWin();
44     ~AudioWin();
45
46     int init(UCHAR streamType);
47     int shutdown();
48
49     int setStreamType(UCHAR streamType);
50     int setChannel();
51     int setSource();
52     int sync();
53     int play();
54     int stop();
55     int pause();
56     int unPause();
57     int reset();
58     int setVolume(int volume);
59     int mute();
60     int unMute();
61     int write(char *buf, int len);
62
63     bool loadOptionsfromServer(VDR* vdr);
64     bool saveOptionstoServer();
65     bool addOptionPagesToWTB(WTabBar *wtb);
66
67     // Writing Data to Audiodevice
68     virtual void PrepareMediaSample(const MediaPacketList&, UINT samplepos);
69     virtual UINT DeliverMediaSample(UCHAR* buffer, UINT *samplepos);
70     UINT DeliverMediaPacket(MediaPacket packet, UCHAR* buffer, UINT *samplepos);
71     
72     int dsInitAudioFilter(IGraphBuilder* dsgraphbuilder);
73     const AudioFilterDescList *getAudioFilterList(int &selected);
74      bool selectAudioFilter(int filter);
75
76      const AudioFilterDescList *getMp3AudioFilterList(int &selected);
77      bool selectMp3AudioFilter(int filter);
78
79     virtual bool supportsAc3();
80     virtual bool maysupportAc3(){return true;} // We are not sure maybe we support this, allows the player to select ac3, if there is no other option
81   private:
82     MediaPacket mediapacket;
83   public:
84     virtual long long SetStartOffset(long long curreftime, bool *rsync);
85   virtual void ResetTimeOffsets();
86
87 private:
88   IBaseFilter *getAudioFilter();
89   IBaseFilter *getMp3AudioFilter();
90   void initFilterDatabase();
91   void initMp3FilterDatabase();
92   AudioFilterDescList audiofilterlist;
93   AudioFilterDescList mp3audiofilterlist;
94   int  audiofilterselected;
95   int  mp3audiofilterselected;
96   bool firstsynched;
97   long winvolume;
98   UCHAR aud_type;
99 #ifdef DEV
100     int test();
101 #endif
102 };
103
104 #endif
105