]> git.vomp.tv Git - vompclient-marten.git/blob - audiowin.h
*** empty log message ***
[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(const UCHAR* buffer, UINT *samplepos);
70     UINT DeliverMediaPacket(MediaPacket packet, const 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   private:
81     MediaPacket mediapacket;
82   public:
83     virtual long long SetStartOffset(long long curreftime, bool *rsync);
84   virtual void ResetTimeOffsets();
85
86 private:
87   IBaseFilter *getAudioFilter();
88   IBaseFilter *getMp3AudioFilter();
89   void initFilterDatabase();
90   void initMp3FilterDatabase();
91   AudioFilterDescList audiofilterlist;
92   AudioFilterDescList mp3audiofilterlist;
93   int  audiofilterselected;
94   int  mp3audiofilterselected;
95   bool firstsynched;
96   long winvolume;
97   UCHAR aud_type;
98 #ifdef DEV
99     int test();
100 #endif
101 };
102
103 #endif
104