Mercurial > mplayer.hg
annotate libao2/ao_ivtv.c @ 33884:514016233368
build: drop BeOS support
BeOS is dead and support has been dropped from FFmpeg/Libav a long time ago.
The support code that was added years ago adds considerable clutter while
not providing any benefit, so it's better to drop it outright.
Support for Haiku, the FOSS replacement of BeOS remains unaffected.
author | diego |
---|---|
date | Thu, 11 Aug 2011 17:45:43 +0000 |
parents | dd75bae40633 |
children |
rev | line source |
---|---|
19224 | 1 /* |
26743
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
2 * audio output for WinTV PVR-150/250/350 (a.k.a IVTV) cards |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
3 * through Connexant hardware MPEG decoder |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
4 * See http://ivtvdriver.org/index.php/Main_Page for more details on the |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
5 * cards supported by the ivtv driver. |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
6 * |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
7 * WARNING: You need to force -ac hwmpa for audio output to work. |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
8 * |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
9 * Copyright (C) 2006 Benjamin Zores |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
10 * |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
11 * This file is part of MPlayer. |
19224 | 12 * |
26743
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
13 * MPlayer is free software; you can redistribute it and/or modify |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
14 * it under the terms of the GNU General Public License as published by |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
15 * the Free Software Foundation; either version 2 of the License, or |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
16 * (at your option) any later version. |
19224 | 17 * |
26743
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
18 * MPlayer is distributed in the hope that it will be useful, |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
21 * GNU General Public License for more details. |
19224 | 22 * |
26743
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
23 * You should have received a copy of the GNU General Public License along |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
24 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
0f42fb42843c
Use standard license headers with standard formatting.
diego
parents:
19224
diff
changeset
|
25 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
19224 | 26 */ |
27 | |
28 #include <inttypes.h> | |
29 | |
30 #include "config.h" | |
31 | |
32 #include "mp_msg.h" | |
33 #include "help_mp.h" | |
34 | |
35 #include "audio_out.h" | |
36 #include "audio_out_internal.h" | |
37 #include "libaf/af_format.h" | |
38 #include "libmpdemux/mpeg_packetizer.h" | |
31353
a465b54b0897
Add header for ivtv_write() instead of forward declaring it.
diego
parents:
31352
diff
changeset
|
39 #include "libvo/vo_ivtv.h" |
32087
dd75bae40633
Add explanatory comment for video_out.h #inclusion in libao2/.
diego
parents:
32075
diff
changeset
|
40 #include "libvo/video_out.h" /* only for vo_pts */ |
19224 | 41 |
42 #define MPEG_AUDIO_ID 0x1C0 | |
43 | |
44 static int freq = 0; | |
45 | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28823
diff
changeset
|
46 static const ao_info_t info = |
19224 | 47 { |
48 "IVTV MPEG Audio Decoder output", | |
49 "ivtv", | |
50 "Benjamin Zores", | |
51 "" | |
52 }; | |
53 | |
54 LIBAO_EXTERN(ivtv) | |
55 | |
56 /* to set/get/query special features/parameters */ | |
57 static int | |
58 control (int cmd,void *arg) | |
59 { | |
60 return CONTROL_UNKNOWN; | |
61 } | |
62 | |
63 /* open & setup audio device */ | |
64 static int | |
65 init (int rate, int channels, int format, int flags) | |
66 { | |
67 if (ivtv_fd < 0) | |
68 return 0; | |
69 | |
70 if (format != AF_FORMAT_MPEG2) | |
71 { | |
72 mp_msg (MSGT_AO, MSGL_FATAL, | |
73 "AO: [ivtv] can only handle MPEG audio streams.\n"); | |
74 return 0; | |
75 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28823
diff
changeset
|
76 |
19224 | 77 ao_data.outburst = 2048; |
78 ao_data.samplerate = rate; | |
79 ao_data.channels = channels; | |
80 ao_data.format = AF_FORMAT_MPEG2; | |
81 ao_data.buffersize = 2048; | |
82 ao_data.bps = rate * 2 * 2; | |
83 ao_data.pts = 0; | |
84 freq = rate; | |
85 | |
86 /* check for supported audio rate */ | |
87 if (rate != 32000 || rate != 41000 || rate != 48000) | |
88 { | |
89 mp_msg (MSGT_AO, MSGL_ERR, MSGTR_AO_MPEGPES_UnsupSamplerate, rate); | |
90 rate = 48000; | |
91 } | |
92 | |
93 return 1; | |
94 } | |
95 | |
96 /* close audio device */ | |
97 static void | |
98 uninit (int immed) | |
99 { | |
100 /* nothing to do */ | |
101 } | |
102 | |
103 /* stop playing and empty buffers (for seeking/pause) */ | |
104 static void | |
105 reset (void) | |
106 { | |
107 /* nothing to do */ | |
108 } | |
109 | |
110 /* stop playing, keep buffers (for pause) */ | |
111 static void | |
112 audio_pause (void) | |
113 { | |
114 reset (); | |
115 } | |
116 | |
117 /* resume playing, after audio_pause() */ | |
118 static void | |
119 audio_resume (void) | |
120 { | |
121 /* nothing to do */ | |
122 } | |
123 | |
124 /* how many bytes can be played without blocking */ | |
125 static int | |
126 get_space (void) | |
127 { | |
128 float x; | |
129 int y; | |
130 | |
131 x = (float) (vo_pts - ao_data.pts) / 90000.0; | |
132 if (x <= 0) | |
133 return 0; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28823
diff
changeset
|
134 |
19224 | 135 y = freq * 4 * x; |
136 y /= ao_data.outburst; | |
137 y *= ao_data.outburst; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28823
diff
changeset
|
138 |
19224 | 139 if (y > 32000) |
140 y = 32000; | |
141 | |
142 return y; | |
143 } | |
144 | |
145 /* number of bytes played */ | |
146 static int | |
147 play (void *data, int len, int flags) | |
148 { | |
149 if (ao_data.format != AF_FORMAT_MPEG2) | |
150 return 0; | |
151 | |
152 send_mpeg_pes_packet (data, len, MPEG_AUDIO_ID, ao_data.pts, 2, ivtv_write); | |
153 | |
154 return len; | |
155 } | |
156 | |
157 /* delay in seconds between first and last sample in buffer */ | |
158 static float | |
159 get_delay (void) | |
160 { | |
161 return 0.0; | |
162 } |