source: mainline/uspace/srv/audio/hound/audio_device.h@ 2cc5c835

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

Cleanup audio_pcm interface.

  • Property mode set to 100644
File size: 2.7 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#include <audio_pcm_iface.h>
46
47#include "audio_source.h"
48#include "audio_sink.h"
49
50typedef struct {
51 link_t link;
52 service_id_t id;
53 audio_pcm_sess_t *sess;
54 char *name;
55 struct {
56 fibril_mutex_t guard;
57 fibril_condvar_t wc;
58 void *base;
59 size_t size;
60 void *position;
61 } buffer;
62 audio_source_t source;
63 audio_sink_t sink;
64} audio_device_t;
65
66static inline audio_device_t * audio_device_list_instance(link_t *l)
67{
68 return list_get_instance(l, audio_device_t, link);
69};
70
71int audio_device_init(audio_device_t *dev, service_id_t id, const char *name);
72void audio_device_fini(audio_device_t *dev);
73static inline audio_source_t * audio_device_get_source(audio_device_t *dev)
74{
75 assert(dev);
76 return &dev->source;
77}
78
79static inline audio_sink_t * audio_device_get_sink(audio_device_t *dev)
80{
81 assert(dev);
82 return &dev->sink;
83}
84
85int audio_device_recorded_data(audio_device_t *dev, void **base, size_t *size);
86int audio_device_available_buffer(audio_device_t *dev, void **base, size_t *size);
87
88#endif
89
90/**
91 * @}
92 */
93
Note: See TracBrowser for help on using the repository browser.