author | Petr Sumbera <petr.sumbera@oracle.com> |
Mon, 14 Nov 2016 04:25:50 -0800 | |
branch | s11u3-sru |
changeset 7364 | 1ac24a377555 |
parent 7035 | 4c2f26e9d5ab |
permissions | -rw-r--r-- |
7035
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
1 |
For SunAudio audio playback. We need to investigate whether we care about |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
2 |
this or whether we are just going to support PulseAudio. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
3 |
|
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
4 |
diff --git a/media/libcubeb/src/cubeb.c b/media/libcubeb/src/cubeb.c |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
5 |
--- a/media/libcubeb/src/cubeb.c |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
6 |
+++ b/media/libcubeb/src/cubeb.c |
7364
1ac24a377555
25034529 Upgrade Firefox to version 45.5.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
7035
diff
changeset
|
7 |
@@ -60,6 +60,9 @@ |
1ac24a377555
25034529 Upgrade Firefox to version 45.5.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
7035
diff
changeset
|
8 |
#if defined(USE_KAI) |
1ac24a377555
25034529 Upgrade Firefox to version 45.5.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
7035
diff
changeset
|
9 |
int kai_init(cubeb ** context, char const * context_name); |
7035
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
10 |
#endif |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
11 |
+#if defined(USE_SUN) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
12 |
+int sunaudio_init(cubeb ** context, char const * context_name); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
13 |
+#endif |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
14 |
|
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
15 |
int |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
16 |
validate_stream_params(cubeb_stream_params stream_params) |
7364
1ac24a377555
25034529 Upgrade Firefox to version 45.5.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
7035
diff
changeset
|
17 |
@@ -129,6 +132,9 @@ |
1ac24a377555
25034529 Upgrade Firefox to version 45.5.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
7035
diff
changeset
|
18 |
#if defined(USE_KAI) |
1ac24a377555
25034529 Upgrade Firefox to version 45.5.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
7035
diff
changeset
|
19 |
kai_init, |
7035
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
20 |
#endif |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
21 |
+#if defined(USE_SUN) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
22 |
+ sunaudio_init, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
23 |
+#endif |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
24 |
}; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
25 |
int i; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
26 |
|
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
27 |
diff --git a/media/libcubeb/src/moz.build b/media/libcubeb/src/moz.build |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
28 |
--- a/media/libcubeb/src/moz.build |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
29 |
+++ b/media/libcubeb/src/moz.build |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
30 |
@@ -31,6 +31,12 @@ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
31 |
] |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
32 |
DEFINES['USE_SNDIO'] = True |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
33 |
|
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
34 |
+if CONFIG['OS_ARCH'] == 'SunOS': |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
35 |
+ SOURCES += [ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
36 |
+ 'cubeb_sun.c', |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
37 |
+ ] |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
38 |
+ DEFINES['USE_SUN'] = True |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
39 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
40 |
if CONFIG['OS_TARGET'] == 'Darwin': |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
41 |
SOURCES += [ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
42 |
'cubeb_audiounit.c', |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
43 |
diff --git a/media/libcubeb/src/cubeb_sun.c b/media/libcubeb/src/cubeb_sun.c |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
44 |
new file mode 100644 |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
45 |
--- /dev/null |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
46 |
+++ b/media/libcubeb/src/cubeb_sun.c |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
47 |
@@ -0,0 +1,500 @@ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
48 |
+/* |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
49 |
+ * Copyright (c) 2013 Ginn Chen <[email protected]> |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
50 |
+ * |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
51 |
+ * This program is made available under an ISC-style license. See the |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
52 |
+ * accompanying file LICENSE for details. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
53 |
+ */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
54 |
+#include <poll.h> |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
55 |
+#include <pthread.h> |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
56 |
+#include <stdlib.h> |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
57 |
+#include <stdio.h> |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
58 |
+#include <errno.h> |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
59 |
+#include <fcntl.h> |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
60 |
+#include <sys/audio.h> |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
61 |
+#include <sys/stat.h> |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
62 |
+#include <unistd.h> |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
63 |
+#include <sys/stropts.h> |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
64 |
+#include "cubeb/cubeb.h" |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
65 |
+#include "cubeb-internal.h" |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
66 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
67 |
+/* Macros copied from audio_oss.h */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
68 |
+/* |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
69 |
+ * CDDL HEADER START |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
70 |
+ * |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
71 |
+ * The contents of this file are subject to the terms of the |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
72 |
+ * Common Development and Distribution License (the "License"). |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
73 |
+ * You may not use this file except in compliance with the License. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
74 |
+ * |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
75 |
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
76 |
+ * or http://www.opensolaris.org/os/licensing. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
77 |
+ * See the License for the specific language governing permissions |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
78 |
+ * and limitations under the License. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
79 |
+ * |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
80 |
+ * When distributing Covered Code, include this CDDL HEADER in each |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
81 |
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
82 |
+ * If applicable, add the following below this CDDL HEADER, with the |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
83 |
+ * fields enclosed by brackets "[]" replaced with your own identifying |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
84 |
+ * information: Portions Copyright [yyyy] [name of copyright owner] |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
85 |
+ * |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
86 |
+ * CDDL HEADER END |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
87 |
+ */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
88 |
+/* |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
89 |
+ * Copyright (C) 4Front Technologies 1996-2008. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
90 |
+ * |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
91 |
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
92 |
+ * Use is subject to license terms. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
93 |
+ */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
94 |
+#define OSSIOCPARM_MASK 0x1fff /* parameters must be < 8192 bytes */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
95 |
+#define OSSIOC_VOID 0x00000000 /* no parameters */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
96 |
+#define OSSIOC_OUT 0x20000000 /* copy out parameters */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
97 |
+#define OSSIOC_IN 0x40000000 /* copy in parameters */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
98 |
+#define OSSIOC_INOUT (OSSIOC_IN|OSSIOC_OUT) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
99 |
+#define OSSIOC_SZ(t) ((sizeof (t) & OSSIOCPARM_MASK) << 16) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
100 |
+#define __OSSIO(x, y) ((int)(OSSIOC_VOID|(x<<8)|y)) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
101 |
+#define __OSSIOR(x, y, t) ((int)(OSSIOC_OUT|OSSIOC_SZ(t)|(x<<8)|y)) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
102 |
+#define __OSSIOWR(x, y, t) ((int)(OSSIOC_INOUT|OSSIOC_SZ(t)|(x<<8)|y)) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
103 |
+#define SNDCTL_DSP_SPEED __OSSIOWR('P', 2, int) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
104 |
+#define SNDCTL_DSP_CHANNELS __OSSIOWR('P', 6, int) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
105 |
+#define SNDCTL_DSP_SETFMT __OSSIOWR('P', 5, int) /* Selects ONE fmt */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
106 |
+#define SNDCTL_DSP_GETODELAY __OSSIOR('P', 23, int) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
107 |
+#define SNDCTL_DSP_HALT_OUTPUT __OSSIO('P', 34) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
108 |
+#define AFMT_S16_LE 0x00000010 |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
109 |
+#define AFMT_S16_BE 0x00000020 |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
110 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
111 |
+#if defined(WORDS_BIGENDIAN) || defined(__BIG_ENDIAN__) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
112 |
+#define AFMT_S16_NE AFMT_S16_BE |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
113 |
+#else |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
114 |
+#define AFMT_S16_NE AFMT_S16_LE |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
115 |
+#endif |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
116 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
117 |
+#define DEFAULT_AUDIO_DEVICE "/dev/audio" |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
118 |
+#define DEFAULT_DSP_DEVICE "/dev/dsp" |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
119 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
120 |
+#define BUF_SIZE_MS 10 |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
121 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
122 |
+#if defined(CUBEB_SUNAUDIO_DEBUG) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
123 |
+#define DPR(...) fprintf(stderr, __VA_ARGS__); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
124 |
+#else |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
125 |
+#define DPR(...) do {} while(0) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
126 |
+#endif |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
127 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
128 |
+static struct cubeb_ops const sunaudio_ops; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
129 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
130 |
+struct cubeb { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
131 |
+ struct cubeb_ops const * ops; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
132 |
+}; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
133 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
134 |
+struct cubeb_stream { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
135 |
+ cubeb * context; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
136 |
+ pthread_t th; /* to run real-time audio i/o */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
137 |
+ pthread_mutex_t mutex; /* protects fd and frm_played */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
138 |
+ int fd; /* link us to sunaudio */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
139 |
+ int active; /* cubec_start() called */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
140 |
+ int conv; /* need float->s16 conversion */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
141 |
+ int using_oss; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
142 |
+ unsigned char *buf; /* data is prepared here */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
143 |
+ unsigned int rate; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
144 |
+ unsigned int n_channles; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
145 |
+ unsigned int bytes_per_ch; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
146 |
+ unsigned int n_frm; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
147 |
+ unsigned int buffer_size; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
148 |
+ int64_t frm_played; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
149 |
+ cubeb_data_callback data_cb; /* cb to preapare data */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
150 |
+ cubeb_state_callback state_cb; /* cb to notify about state changes */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
151 |
+ void *arg; /* user arg to {data,state}_cb */ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
152 |
+}; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
153 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
154 |
+static void |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
155 |
+float_to_s16(void *ptr, long nsamp) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
156 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
157 |
+ int16_t *dst = ptr; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
158 |
+ float *src = ptr; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
159 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
160 |
+ while (nsamp-- > 0) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
161 |
+ *(dst++) = *(src++) * 32767; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
162 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
163 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
164 |
+static void * |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
165 |
+sunaudio_mainloop(void *arg) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
166 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
167 |
+ struct cubeb_stream *s = arg; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
168 |
+ int state; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
169 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
170 |
+ DPR("sunaudio_mainloop()\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
171 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
172 |
+ s->state_cb(s, s->arg, CUBEB_STATE_STARTED); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
173 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
174 |
+ pthread_mutex_lock(&s->mutex); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
175 |
+ DPR("sunaudio_mainloop(), started\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
176 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
177 |
+ for (;;) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
178 |
+ if (!s->active) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
179 |
+ DPR("sunaudio_mainloop() stopped\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
180 |
+ state = CUBEB_STATE_STOPPED; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
181 |
+ break; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
182 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
183 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
184 |
+ if (!s->using_oss) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
185 |
+ audio_info_t info; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
186 |
+ ioctl(s->fd, AUDIO_GETINFO, &info); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
187 |
+ if (s->frm_played > info.play.samples + 3 * s->n_frm) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
188 |
+ pthread_mutex_unlock(&s->mutex); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
189 |
+ struct timespec ts = {0, 10000}; // 10 ms |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
190 |
+ nanosleep(&ts, NULL); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
191 |
+ pthread_mutex_lock(&s->mutex); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
192 |
+ continue; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
193 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
194 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
195 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
196 |
+ pthread_mutex_unlock(&s->mutex); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
197 |
+ unsigned int got = s->data_cb(s, s->arg, s->buf, s->n_frm); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
198 |
+ DPR("sunaudio_mainloop() ask %d got %d\n", s->n_frm, got); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
199 |
+ pthread_mutex_lock(&s->mutex); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
200 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
201 |
+ if (got < 0) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
202 |
+ DPR("sunaudio_mainloop() cb err\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
203 |
+ state = CUBEB_STATE_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
204 |
+ break; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
205 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
206 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
207 |
+ if (s->conv) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
208 |
+ float_to_s16(s->buf, got * s->n_channles); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
209 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
210 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
211 |
+ unsigned int avail = got * 2 * s->n_channles; // coverted to s16 |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
212 |
+ unsigned int pos = 0; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
213 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
214 |
+ while (avail > 0 && s->active) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
215 |
+ int written = write(s->fd, s->buf + pos, avail); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
216 |
+ if (written == -1) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
217 |
+ if (errno != EINTR && errno != EWOULDBLOCK) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
218 |
+ DPR("sunaudio_mainloop() write err\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
219 |
+ state = CUBEB_STATE_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
220 |
+ break; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
221 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
222 |
+ pthread_mutex_unlock(&s->mutex); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
223 |
+ struct timespec ts = {0, 10000}; // 10 ms |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
224 |
+ nanosleep(&ts, NULL); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
225 |
+ pthread_mutex_lock(&s->mutex); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
226 |
+ } else { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
227 |
+ pos += written; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
228 |
+ DPR("sunaudio_mainloop() write %d pos %d\n", written, pos); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
229 |
+ s->frm_played += written / 2 / s->n_channles; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
230 |
+ avail -= written; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
231 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
232 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
233 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
234 |
+ if ((got < s->n_frm)) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
235 |
+ DPR("sunaudio_mainloop() drained\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
236 |
+ state = CUBEB_STATE_DRAINED; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
237 |
+ break; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
238 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
239 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
240 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
241 |
+ pthread_mutex_unlock(&s->mutex); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
242 |
+ s->state_cb(s, s->arg, state); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
243 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
244 |
+ return NULL; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
245 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
246 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
247 |
+/*static*/ int |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
248 |
+sunaudio_init(cubeb **context, char const *context_name) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
249 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
250 |
+ DPR("sunaudio_init(%s)\n", context_name); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
251 |
+ *context = malloc(sizeof(*context)); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
252 |
+ (*context)->ops = &sunaudio_ops; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
253 |
+ (void)context_name; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
254 |
+ return CUBEB_OK; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
255 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
256 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
257 |
+static char const * |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
258 |
+sunaudio_get_backend_id(cubeb *context) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
259 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
260 |
+ return "sunaudio"; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
261 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
262 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
263 |
+static void |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
264 |
+sunaudio_destroy(cubeb *context) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
265 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
266 |
+ DPR("sunaudio_destroy()\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
267 |
+ free(context); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
268 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
269 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
270 |
+static int |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
271 |
+sunaudio_stream_init(cubeb *context, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
272 |
+ cubeb_stream **stream, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
273 |
+ char const *stream_name, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
274 |
+ cubeb_stream_params stream_params, unsigned int latency, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
275 |
+ cubeb_data_callback data_callback, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
276 |
+ cubeb_state_callback state_callback, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
277 |
+ void *user_ptr) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
278 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
279 |
+ struct cubeb_stream *s; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
280 |
+ DPR("sunaudio_stream_init(%s)\n", stream_name); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
281 |
+ size_t size; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
282 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
283 |
+ s = malloc(sizeof(struct cubeb_stream)); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
284 |
+ if (s == NULL) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
285 |
+ return CUBEB_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
286 |
+ s->context = context; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
287 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
288 |
+ // If UTAUDIODEV is set, use it with Sun Audio interface |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
289 |
+ char * sa_device_name = getenv("UTAUDIODEV"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
290 |
+ char * dsp_device_name = NULL; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
291 |
+ if (!sa_device_name) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
292 |
+ dsp_device_name = getenv("AUDIODSP"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
293 |
+ if (!dsp_device_name) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
294 |
+ dsp_device_name = DEFAULT_DSP_DEVICE; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
295 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
296 |
+ sa_device_name = getenv("AUDIODEV"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
297 |
+ if (!sa_device_name) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
298 |
+ sa_device_name = DEFAULT_AUDIO_DEVICE; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
299 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
300 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
301 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
302 |
+ s->using_oss = 0; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
303 |
+ // Try to use OSS if available |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
304 |
+ if (dsp_device_name) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
305 |
+ s->fd = open(dsp_device_name, O_WRONLY | O_NONBLOCK); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
306 |
+ if (s->fd >= 0) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
307 |
+ s->using_oss = 1; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
308 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
309 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
310 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
311 |
+ // Try Sun Audio |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
312 |
+ if (!s->using_oss) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
313 |
+ s->fd = open(sa_device_name, O_WRONLY | O_NONBLOCK); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
314 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
315 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
316 |
+ if (s->fd < 0) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
317 |
+ free(s); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
318 |
+ DPR("sunaudio_stream_init(), open() failed\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
319 |
+ return CUBEB_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
320 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
321 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
322 |
+ if (s->using_oss) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
323 |
+ if (ioctl(s->fd, SNDCTL_DSP_SPEED, &stream_params.rate) < 0) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
324 |
+ DPR("ioctl SNDCTL_DSP_SPEED failed.\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
325 |
+ close(s->fd); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
326 |
+ free(s); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
327 |
+ return CUBEB_ERROR_INVALID_FORMAT; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
328 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
329 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
330 |
+ if (ioctl(s->fd, SNDCTL_DSP_CHANNELS, &stream_params.channels) < 0) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
331 |
+ DPR("ioctl SNDCTL_DSP_CHANNELS failed.\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
332 |
+ close(s->fd); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
333 |
+ free(s); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
334 |
+ return CUBEB_ERROR_INVALID_FORMAT; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
335 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
336 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
337 |
+ int format = AFMT_S16_NE; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
338 |
+ if (ioctl(s->fd, SNDCTL_DSP_SETFMT, &format) < 0) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
339 |
+ DPR("ioctl SNDCTL_DSP_SETFMT failed.\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
340 |
+ close(s->fd); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
341 |
+ free(s); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
342 |
+ return CUBEB_ERROR_INVALID_FORMAT; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
343 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
344 |
+ } else { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
345 |
+ audio_info_t audio_info; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
346 |
+ AUDIO_INITINFO(&audio_info) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
347 |
+ audio_info.play.sample_rate = stream_params.rate; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
348 |
+ audio_info.play.channels = stream_params.channels; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
349 |
+ audio_info.play.encoding = AUDIO_ENCODING_LINEAR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
350 |
+ audio_info.play.precision = 16; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
351 |
+ if (ioctl(s->fd, AUDIO_SETINFO, &audio_info) == -1) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
352 |
+ DPR("ioctl AUDIO_SETINFO failed.\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
353 |
+ close(s->fd); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
354 |
+ free(s); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
355 |
+ return CUBEB_ERROR_INVALID_FORMAT; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
356 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
357 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
358 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
359 |
+ s->conv = 0; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
360 |
+ switch (stream_params.format) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
361 |
+ case CUBEB_SAMPLE_S16NE: |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
362 |
+ s->bytes_per_ch = 2; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
363 |
+ break; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
364 |
+ case CUBEB_SAMPLE_FLOAT32NE: |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
365 |
+ s->bytes_per_ch = 4; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
366 |
+ s->conv = 1; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
367 |
+ break; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
368 |
+ default: |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
369 |
+ DPR("sunaudio_stream_init() unsupported format\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
370 |
+ close(s->fd); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
371 |
+ free(s); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
372 |
+ return CUBEB_ERROR_INVALID_FORMAT; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
373 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
374 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
375 |
+ s->active = 0; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
376 |
+ s->rate = stream_params.rate; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
377 |
+ s->n_channles = stream_params.channels; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
378 |
+ s->data_cb = data_callback; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
379 |
+ s->state_cb = state_callback; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
380 |
+ s->arg = user_ptr; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
381 |
+ if (pthread_mutex_init(&s->mutex, NULL) != 0) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
382 |
+ free(s); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
383 |
+ return CUBEB_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
384 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
385 |
+ s->frm_played = 0; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
386 |
+ s->n_frm = s->rate * BUF_SIZE_MS / 1000; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
387 |
+ s->buffer_size = s->bytes_per_ch * s->n_channles * s->n_frm; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
388 |
+ s->buf = malloc(s->buffer_size); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
389 |
+ if (s->buf == NULL) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
390 |
+ close(s->fd); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
391 |
+ free(s); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
392 |
+ return CUBEB_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
393 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
394 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
395 |
+ *stream = s; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
396 |
+ DPR("sunaudio_stream_init() end, ok\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
397 |
+ return CUBEB_OK; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
398 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
399 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
400 |
+static void |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
401 |
+sunaudio_stream_destroy(cubeb_stream *s) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
402 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
403 |
+ DPR("sunaudio_stream_destroy()\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
404 |
+ if (s->fd > 0) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
405 |
+ // Flush buffer |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
406 |
+ if (s->using_oss) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
407 |
+ ioctl(s->fd, SNDCTL_DSP_HALT_OUTPUT); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
408 |
+ } else { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
409 |
+ ioctl(s->fd, I_FLUSH); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
410 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
411 |
+ close(s->fd); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
412 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
413 |
+ free(s->buf); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
414 |
+ free(s); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
415 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
416 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
417 |
+static int |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
418 |
+sunaudio_stream_start(cubeb_stream *s) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
419 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
420 |
+ int err; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
421 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
422 |
+ DPR("sunaudio_stream_start()\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
423 |
+ s->active = 1; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
424 |
+ err = pthread_create(&s->th, NULL, sunaudio_mainloop, s); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
425 |
+ if (err) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
426 |
+ s->active = 0; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
427 |
+ return CUBEB_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
428 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
429 |
+ return CUBEB_OK; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
430 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
431 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
432 |
+static int |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
433 |
+sunaudio_stream_stop(cubeb_stream *s) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
434 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
435 |
+ void *dummy; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
436 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
437 |
+ DPR("sunaudio_stream_stop()\n"); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
438 |
+ if (s->active) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
439 |
+ s->active = 0; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
440 |
+ pthread_join(s->th, &dummy); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
441 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
442 |
+ return CUBEB_OK; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
443 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
444 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
445 |
+static int |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
446 |
+sunaudio_stream_get_position(cubeb_stream *s, uint64_t *p) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
447 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
448 |
+ int rv = CUBEB_OK; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
449 |
+ pthread_mutex_lock(&s->mutex); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
450 |
+ if (s->active && s->fd > 0) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
451 |
+ if (s->using_oss) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
452 |
+ int delay; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
453 |
+ ioctl(s->fd, SNDCTL_DSP_GETODELAY, &delay); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
454 |
+ int64_t t = s->frm_played - delay / s->n_channles / 2; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
455 |
+ if (t < 0) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
456 |
+ *p = 0; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
457 |
+ } else { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
458 |
+ *p = t; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
459 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
460 |
+ } else { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
461 |
+ audio_info_t info; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
462 |
+ ioctl(s->fd, AUDIO_GETINFO, &info); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
463 |
+ *p = info.play.samples; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
464 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
465 |
+ DPR("sunaudio_stream_get_position() %lld\n", *p); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
466 |
+ } else { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
467 |
+ rv = CUBEB_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
468 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
469 |
+ pthread_mutex_unlock(&s->mutex); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
470 |
+ return rv; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
471 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
472 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
473 |
+static int |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
474 |
+sunaudio_get_max_channel_count(cubeb * ctx, uint32_t * max_channels) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
475 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
476 |
+ if (!ctx || !max_channels) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
477 |
+ return CUBEB_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
478 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
479 |
+ *max_channels = 2; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
480 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
481 |
+ return CUBEB_OK; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
482 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
483 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
484 |
+static int |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
485 |
+sunaudio_get_preferred_sample_rate(cubeb * ctx, uint32_t * rate) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
486 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
487 |
+ if (!ctx || !rate) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
488 |
+ return CUBEB_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
489 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
490 |
+ // XXX Not yet implemented. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
491 |
+ *rate = 44100; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
492 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
493 |
+ return CUBEB_OK; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
494 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
495 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
496 |
+static int |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
497 |
+sunaudio_get_min_latency(cubeb * ctx, cubeb_stream_params params, uint32_t * latency_ms) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
498 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
499 |
+ if (!ctx || !latency_ms) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
500 |
+ return CUBEB_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
501 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
502 |
+ // XXX Not yet implemented. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
503 |
+ *latency_ms = 20; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
504 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
505 |
+ return CUBEB_OK; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
506 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
507 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
508 |
+static int |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
509 |
+sunaudio_stream_get_latency(cubeb_stream * s, uint32_t * latency) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
510 |
+{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
511 |
+ if (!s || !latency) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
512 |
+ return CUBEB_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
513 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
514 |
+ int rv = CUBEB_OK; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
515 |
+ pthread_mutex_lock(&s->mutex); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
516 |
+ if (s->active && s->fd > 0) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
517 |
+ if (s->using_oss) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
518 |
+ int delay; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
519 |
+ ioctl(s->fd, SNDCTL_DSP_GETODELAY, &delay); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
520 |
+ *latency = delay / s->n_channles / 2 / s->rate; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
521 |
+ } else { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
522 |
+ audio_info_t info; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
523 |
+ ioctl(s->fd, AUDIO_GETINFO, &info); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
524 |
+ *latency = (s->frm_played - info.play.samples) / s->rate; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
525 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
526 |
+ DPR("sunaudio_stream_get_position() %lld\n", *p); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
527 |
+ } else { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
528 |
+ rv = CUBEB_ERROR; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
529 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
530 |
+ pthread_mutex_unlock(&s->mutex); |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
531 |
+ return rv; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
532 |
+} |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
533 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
534 |
+static struct cubeb_ops const sunaudio_ops = { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
535 |
+ .init = sunaudio_init, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
536 |
+ .get_backend_id = sunaudio_get_backend_id, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
537 |
+ .destroy = sunaudio_destroy, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
538 |
+ .get_preferred_sample_rate = sunaudio_get_preferred_sample_rate, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
539 |
+ .stream_init = sunaudio_stream_init, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
540 |
+ .stream_destroy = sunaudio_stream_destroy, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
541 |
+ .stream_start = sunaudio_stream_start, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
542 |
+ .stream_stop = sunaudio_stream_stop, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
543 |
+ .stream_get_position = sunaudio_stream_get_position, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
544 |
+ .get_max_channel_count = sunaudio_get_max_channel_count, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
545 |
+ .get_min_latency = sunaudio_get_min_latency, |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
546 |
+ .stream_get_latency = sunaudio_stream_get_latency |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
547 |
+}; |