]> git.vomp.tv Git - vompclient-marten.git/blob - audiovpe.h
Switch back to system libav and add audio options
[vompclient-marten.git] / audiovpe.h
1 /*\r
2     Copyright 2004-2005 Chris Tallon, 2009 Marten Richter\r
3 \r
4     This file is part of VOMP.\r
5 \r
6     VOMP is free software; you can redistribute it and/or modify\r
7     it under the terms of the GNU General Public License as published by\r
8     the Free Software Foundation; either version 2 of the License, or\r
9     (at your option) any later version.\r
10 \r
11     VOMP is distributed in the hope that it will be useful,\r
12     but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14     GNU General Public License for more details.\r
15 \r
16     You should have received a copy of the GNU General Public License\r
17     along with VOMP; if not, write to the Free Software\r
18     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\r
19 */\r
20 \r
21 #ifndef AUDIOVPE_H\r
22 #define AUDIOVPE_H\r
23 \r
24 #include <stdio.h>\r
25 #include <unistd.h>\r
26 #include <fcntl.h>\r
27 #include <sys/ioctl.h>\r
28 \r
29 #include "defines.h"\r
30 #include "audio.h"\r
31 \r
32 \r
33 \r
34 \r
35 \r
36 class AudioVPE : public Audio\r
37 {\r
38   public:\r
39     AudioVPE();\r
40     virtual ~AudioVPE();\r
41 \r
42     int init(UCHAR streamType);\r
43     int shutdown();\r
44 \r
45     int setStreamType(UCHAR streamType);\r
46     int setChannel();\r
47     int setSource();\r
48     int sync();\r
49     int play();\r
50     int stop();\r
51     int pause();\r
52     int unPause();\r
53     int reset();\r
54     int setVolume(int volume);\r
55     int mute();\r
56     int unMute();\r
57     bool supportsAc3() { return true; }\r
58 \r
59     //Writing Data to Audiodevice\r
60     virtual void PrepareMediaSample(const MediaPacketList&, UINT samplepos);\r
61     virtual UINT DeliverMediaSample(UCHAR* buffer, UINT *samplepos);\r
62     virtual long long SetStartOffset(long long curreftime, bool *rsync) { return 0; };\r
63     virtual void ResetTimeOffsets();\r
64 \r
65         int getLastPacketNum() {return lastpacketnum;}; \r
66         int getCurrentPacketNum(){return currentpacketnum;};\r
67         UCHAR getLastAType() {return lastAType;}\r
68 \r
69         bool loadOptionsfromServer(VDR* vdr);\r
70         bool saveOptionstoServer();\r
71         bool addOptionsToPanes(int panenumber,Options *options,WOptionPane* pane);\r
72         bool handleOptionChanges(Option* option);\r
73 \r
74 \r
75 #ifdef DEV\r
76     int test();\r
77 #endif\r
78 \r
79   private:\r
80     int initAllParams();\r
81     UCHAR streamType;\r
82         UCHAR lastAType;\r
83     int lastpacketnum;\r
84         int currentpacketnum;\r
85 \r
86     MediaPacket packet;\r
87     UINT packetpos;\r
88 \r
89     bool hdmi; // use hdmi as audio output\r
90     bool passthrough; // use audio passthrough for the current audio type\r
91 \r
92     bool canpass_ac3;\r
93     bool canpass_mp2;\r
94     bool canpass_mp3;\r
95     bool canpass_pcm_mch;\r
96 \r
97 \r
98     int prefered_ac3; //0 stereo PCM, 1 passthrough 2 Multichannel PCM\r
99     int prefered_mp2;\r
100     int prefered_mp3;\r
101 };\r
102 \r
103 #endif\r