source: mainline/uspace/srv/audio/hound/audio_device.h@ 992ef56

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 992ef56 was 992ef56, checked in by Jan Vesely <jano.vesely@…>, 13 years ago

hound: Implement device playback backend

  • Property mode set to 100644
File size: 2.9 KB
Line 
1/*
2 * Copyright (c) 2012 Jan Vesely
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup audio
30 * @brief HelenOS sound server
31 * @{
32 */
33/** @file
34 */
35
36#ifndef AUDIO_DEVICE_H_
37#define AUDIO_DEVICE_H_
38
39#include <adt/list.h>
40#include <bool.h>
41#include <async.h>
42#include <fibril_synch.h>
43#include <errno.h>
44#include <ipc/loc.h>
45
46#include "audio_format.h"
47#include "audio_source.h"
48#include "audio_sink.h"
49
50typedef struct {
51 link_t link;
52 service_id_t id;
53 async_sess_t *sess;
54 char *name;
55 struct {
56 fibril_mutex_t guard;
57 fibril_condvar_t wc;
58 unsigned id;
59 void *base;
60 size_t size;
61 void *position;
62 } buffer;
63 audio_source_t source;
64 audio_sink_t sink;
65} audio_device_t;
66
67static inline audio_device_t * list_audio_device_instance(link_t *l)
68{
69 return list_get_instance(l, audio_device_t, link);
70};
71
72int audio_device_init(audio_device_t *dev, service_id_t id, const char *name);
73
74static inline audio_source_t * audio_device_get_source(audio_device_t *dev)
75{
76 assert(dev);
77 return &dev->source;
78}
79
80static inline audio_sink_t * audio_device_get_sink(audio_device_t *dev)
81{
82 assert(dev);
83 return &dev->sink;
84}
85
86int audio_device_recorded_data(audio_device_t *dev, void **base, size_t *size);
87int audio_device_available_buffer(audio_device_t *dev, void **base, size_t *size);
88
89int audio_device_playback_start(audio_device_t *dev, const audio_format_t *format, unsigned latency);
90int audio_device_record_start(audio_device_t *dev, const audio_format_t *format, unsigned latency);
91int audio_device_playback_stop(audio_device_t *dev);
92int audio_device_record_stop(audio_device_t *dev);
93
94#endif
95
96/**
97 * @}
98 */
99
Note: See TracBrowser for help on using the repository browser.