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