[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 14/49] coreaudio: port to -audiodev config
From: |
Kővágó, Zoltán |
Subject: |
[Qemu-devel] [PATCH v2 14/49] coreaudio: port to -audiodev config |
Date: |
Fri, 21 Aug 2015 17:37:10 +0200 |
Signed-off-by: Kővágó, Zoltán <address@hidden>
---
audio/audio_legacy.c | 10 ++++++++++
audio/coreaudio.c | 47 ++++++++++-------------------------------------
2 files changed, 20 insertions(+), 37 deletions(-)
diff --git a/audio/audio_legacy.c b/audio/audio_legacy.c
index bc830c5..4be972e 100644
--- a/audio/audio_legacy.c
+++ b/audio/audio_legacy.c
@@ -58,6 +58,14 @@ SimpleEnvMap alsa_map[] = {
{ /* End of list */ }
};
+SimpleEnvMap coreaudio_map[] = {
+ { "QEMU_COREAUDIO_BUFFER_SIZE", "buffer-len",
+ ENV_TRANSFORM_FRAMES_TO_USECS_OUT },
+ { "QEMU_COREAUDIO_BUFFER_COUNT", "buffer-count" },
+
+ { /* End of list */ }
+};
+
static unsigned long long toull(const char *str)
{
unsigned long long ret;
@@ -228,6 +236,8 @@ static void legacy_opt(const char *drv)
if (strcmp(drv, "alsa") == 0) {
handle_env_opts(opts, alsa_map);
handle_alsa(opts);
+ } else if (strcmp(drv, "coreaudio") == 0) {
+ handle_env_opts(opts, coreaudio_map);
}
}
diff --git a/audio/coreaudio.c b/audio/coreaudio.c
index 3612511..dfa5e79 100644
--- a/audio/coreaudio.c
+++ b/audio/coreaudio.c
@@ -34,11 +34,6 @@
static int isAtexit;
-typedef struct {
- int buffer_frames;
- int nbuffers;
-} CoreaudioConf;
-
typedef struct coreaudioVoiceOut {
HWVoiceOut hw;
pthread_mutex_t mutex;
@@ -292,7 +287,9 @@ static int coreaudio_init_out(HWVoiceOut *hw, struct
audsettings *as,
int err;
const char *typ = "playback";
AudioValueRange frameRange;
- CoreaudioConf *conf = drv_opaque;
+ Audiodev *dev = drv_opaque;
+ AudiodevPerDirectionOptions *pdo = dev->out;
+ int frames;
/* create mutex */
err = pthread_mutex_init(&core->mutex, NULL);
@@ -334,16 +331,17 @@ static int coreaudio_init_out(HWVoiceOut *hw, struct
audsettings *as,
return -1;
}
- if (frameRange.mMinimum > conf->buffer_frames) {
+ frames = audio_buffer_frames(pdo, as, 11610);
+ if (frameRange.mMinimum > frames) {
core->audioDevicePropertyBufferFrameSize = (UInt32)
frameRange.mMinimum;
dolog ("warning: Upsizing Buffer Frames to %f\n", frameRange.mMinimum);
}
- else if (frameRange.mMaximum < conf->buffer_frames) {
+ else if (frameRange.mMaximum < frames) {
core->audioDevicePropertyBufferFrameSize = (UInt32)
frameRange.mMaximum;
dolog ("warning: Downsizing Buffer Frames to %f\n",
frameRange.mMaximum);
}
else {
- core->audioDevicePropertyBufferFrameSize = conf->buffer_frames;
+ core->audioDevicePropertyBufferFrameSize = frames;
}
/* set Buffer Frame Size */
@@ -377,7 +375,8 @@ static int coreaudio_init_out(HWVoiceOut *hw, struct
audsettings *as,
"Could not get device buffer frame size\n");
return -1;
}
- hw->samples = conf->nbuffers * core->audioDevicePropertyBufferFrameSize;
+ hw->samples = (pdo->has_buffer_count ? pdo->buffer_count : 4) *
+ core->audioDevicePropertyBufferFrameSize;
/* get StreamFormat */
propertySize = sizeof(core->outputStreamBasicDescription);
@@ -497,41 +496,16 @@ static int coreaudio_ctl_out (HWVoiceOut *hw, int cmd,
...)
return 0;
}
-static CoreaudioConf glob_conf = {
- .buffer_frames = 512,
- .nbuffers = 4,
-};
-
static void *coreaudio_audio_init(Audiodev *dev)
{
- CoreaudioConf *conf = g_malloc(sizeof(CoreaudioConf));
- *conf = glob_conf;
-
atexit(coreaudio_atexit);
- return conf;
+ return dev;
}
static void coreaudio_audio_fini (void *opaque)
{
- g_free(opaque);
}
-static struct audio_option coreaudio_options[] = {
- {
- .name = "BUFFER_SIZE",
- .tag = AUD_OPT_INT,
- .valp = &glob_conf.buffer_frames,
- .descr = "Size of the buffer in frames"
- },
- {
- .name = "BUFFER_COUNT",
- .tag = AUD_OPT_INT,
- .valp = &glob_conf.nbuffers,
- .descr = "Number of buffers"
- },
- { /* End of list */ }
-};
-
static struct audio_pcm_ops coreaudio_pcm_ops = {
.init_out = coreaudio_init_out,
.fini_out = coreaudio_fini_out,
@@ -543,7 +517,6 @@ static struct audio_pcm_ops coreaudio_pcm_ops = {
struct audio_driver coreaudio_audio_driver = {
.name = "coreaudio",
.descr = "CoreAudio
http://developer.apple.com/audio/coreaudio.html",
- .options = coreaudio_options,
.init = coreaudio_audio_init,
.fini = coreaudio_audio_fini,
.pcm_ops = &coreaudio_pcm_ops,
--
2.5.0
- [Qemu-devel] [PATCH v2 00/49] audio: -audiodev option, multiple options, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 02/49] qapi: support implicit structs in OptsVisitor, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 04/49] net: remove NetLegacy struct, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 03/49] qapi: convert NumaOptions into a flat union, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 07/49] qapi: reorder NetdevBase and Netdev, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 05/49] net: use Netdev instead of NetClientOptions in client init, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 01/49] opts: produce valid command line in qemu_opts_print, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 08/49] qapi: qapi for audio backends, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 09/49] qapi: support nested structs in OptsVisitor, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 11/49] audio: -audiodev command line option: documentation, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 14/49] coreaudio: port to -audiodev config,
Kővágó, Zoltán <=
- [Qemu-devel] [PATCH v2 06/49] qapi: change Netdev into a flat union, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 16/49] noaudio: port to -audiodev config, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 15/49] dsoundaudio: port to -audiodev config, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 13/49] alsaaudio: port to -audiodev config, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 10/49] audio: use qapi AudioFormat instead of audfmt_e, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 20/49] spiceaudio: port to -audiodev config, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 17/49] ossaudio: port to -audiodev config, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 19/49] sdlaudio: port to -audiodev config, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 12/49] audio: -audiodev command line option basic implementation, Kővágó, Zoltán, 2015/08/21
- [Qemu-devel] [PATCH v2 21/49] wavaudio: port to -audiodev config, Kővágó, Zoltán, 2015/08/21