~diwic/ubuntu/lucid/pulseaudio/bugfixes

« back to all changes in this revision

Viewing changes to src/pulse/scache.h

  • Committer: Bazaar Package Importer
  • Author(s): Oliver Grawert
  • Date: 2006-11-12 20:00:18 UTC
  • Revision ID: james.westby@ubuntu.com-20061112200018-oji9njq7rr3te53k
Tags: upstream-0.9.5
ImportĀ upstreamĀ versionĀ 0.9.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef fooscachehfoo
 
2
#define fooscachehfoo
 
3
 
 
4
/* $Id: scache.h 1033 2006-06-19 21:53:48Z lennart $ */
 
5
 
 
6
/***
 
7
  This file is part of PulseAudio.
 
8
 
 
9
  PulseAudio is free software; you can redistribute it and/or modify
 
10
  it under the terms of the GNU Lesser General Public License as published
 
11
  by the Free Software Foundation; either version 2 of the License,
 
12
  or (at your option) any later version.
 
13
 
 
14
  PulseAudio is distributed in the hope that it will be useful, but
 
15
  WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 
17
  General Public License for more details.
 
18
 
 
19
  You should have received a copy of the GNU Lesser General Public License
 
20
  along with PulseAudio; if not, write to the Free Software
 
21
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 
22
  USA.
 
23
***/
 
24
 
 
25
#include <sys/types.h>
 
26
 
 
27
#include <pulse/context.h>
 
28
#include <pulse/stream.h>
 
29
#include <pulse/cdecl.h>
 
30
 
 
31
/** \page scache Sample Cache
 
32
 *
 
33
 * \section overv_sec Overview
 
34
 *
 
35
 * The sample cache provides a simple way of overcoming high network latencies
 
36
 * and reducing bandwidth. Instead of streaming a sound precisely when it
 
37
 * should be played, it is stored on the server and only the command to start
 
38
 * playing it needs to be sent.
 
39
 *
 
40
 * \section create_sec Creation
 
41
 *
 
42
 * To create a sample, the normal stream API is used (see \ref streams). The
 
43
 * function pa_stream_connect_upload() will make sure the stream is stored as
 
44
 * a sample on the server.
 
45
 *
 
46
 * To complete the upload, pa_stream_finish_upload() is called and the sample
 
47
 * will receive the same name as the stream. If the upload should be aborted,
 
48
 * simply call pa_stream_disconnect().
 
49
 *
 
50
 * \section play_sec Playing samples
 
51
 *
 
52
 * To play back a sample, simply call pa_context_play_sample():
 
53
 *
 
54
 * \code
 
55
 * pa_operation *o;
 
56
 *
 
57
 * o = pa_context_play_sample(my_context,
 
58
 *                            "sample2",       // Name of my sample
 
59
 *                            NULL,            // Use default sink
 
60
 *                            PA_VOLUME_NORM,  // Full volume
 
61
 *                            NULL,            // Don't need a callback
 
62
 *                            NULL
 
63
 *                            );
 
64
 * if (o)
 
65
 *     pa_operation_unref(o);
 
66
 * \endcode
 
67
 *
 
68
 * \section rem_sec Removing samples
 
69
 *
 
70
 * When a sample is no longer needed, it should be removed on the server to
 
71
 * save resources. The sample is deleted using pa_context_remove_sample().
 
72
 */
 
73
 
 
74
/** \file
 
75
 * All sample cache related routines */
 
76
 
 
77
PA_C_DECL_BEGIN
 
78
 
 
79
/** Make this stream a sample upload stream */
 
80
int pa_stream_connect_upload(pa_stream *s, size_t length);
 
81
 
 
82
/** Finish the sample upload, the stream name will become the sample name. You cancel a samp
 
83
 * le upload by issuing pa_stream_disconnect() */
 
84
int pa_stream_finish_upload(pa_stream *s);
 
85
 
 
86
/** Play a sample from the sample cache to the specified device. If the latter is NULL use the default sink. Returns an operation object */
 
87
pa_operation* pa_context_play_sample(
 
88
        pa_context *c               /**< Context */,
 
89
        const char *name            /**< Name of the sample to play */,
 
90
        const char *dev             /**< Sink to play this sample on */,
 
91
        pa_volume_t volume          /**< Volume to play this sample with */ ,
 
92
        pa_context_success_cb_t cb  /**< Call this function after successfully starting playback, or NULL */,
 
93
        void *userdata              /**< Userdata to pass to the callback */);
 
94
 
 
95
/** Remove a sample from the sample cache. Returns an operation object which may be used to cancel the operation while it is running */
 
96
pa_operation* pa_context_remove_sample(pa_context *c, const char *name, pa_context_success_cb_t, void *userdata);
 
97
 
 
98
PA_C_DECL_END
 
99
 
 
100
#endif