]> git.vomp.tv Git - vompclient.git/blob - audiowin.h
Display channel name, duration, resume point and size on recording info screen
[vompclient.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
82     virtual bool streamTypeSupported(int streamtype)
83     {
84         switch (streamtype) {
85         case 0x6A:
86         case 3:
87         case 4:
88                 return true;
89         default:
90                 return false;
91         };
92     }
93
94
95   private:
96     MediaPacket mediapacket;
97   public:
98     virtual long long SetStartOffset(long long curreftime, bool *rsync);
99   virtual void ResetTimeOffsets();
100
101 private:
102   IBaseFilter *getAudioFilter();
103   IBaseFilter *getMp3AudioFilter();
104   void initFilterDatabase();
105   void initMp3FilterDatabase();
106   AudioFilterDescList audiofilterlist;
107   AudioFilterDescList mp3audiofilterlist;
108   int  audiofilterselected;
109   int  mp3audiofilterselected;
110   bool firstsynched;
111   long winvolume;
112   UCHAR aud_type;
113 #ifdef DEV
114     int test();
115 #endif
116 };
117
118 #endif
119