mirror of https://github.com/asterisk/asterisk
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
720 lines
21 KiB
720 lines
21 KiB
/* $Id$ */
|
|
/*
|
|
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
|
|
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
#ifndef __PJMEDIA_AUDIODEV_AUDIODEV_H__
|
|
#define __PJMEDIA_AUDIODEV_AUDIODEV_H__
|
|
|
|
/**
|
|
* @file audiodev.h
|
|
* @brief Audio device API.
|
|
*/
|
|
#include <pjmedia-audiodev/config.h>
|
|
#include <pjmedia-audiodev/errno.h>
|
|
#include <pjmedia/format.h>
|
|
#include <pjmedia/frame.h>
|
|
#include <pjmedia/types.h>
|
|
#include <pj/pool.h>
|
|
|
|
|
|
PJ_BEGIN_DECL
|
|
|
|
/**
|
|
* @defgroup s2_audio_device_reference Audio Device API Reference
|
|
* @ingroup audio_device_api
|
|
* @brief API Reference
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* Type for device index.
|
|
*/
|
|
typedef pj_int32_t pjmedia_aud_dev_index;
|
|
|
|
/**
|
|
* Device index constants.
|
|
*/
|
|
enum
|
|
{
|
|
/**
|
|
* Constant to denote default capture device
|
|
*/
|
|
PJMEDIA_AUD_DEFAULT_CAPTURE_DEV = -1,
|
|
|
|
/**
|
|
* Constant to denote default playback device
|
|
*/
|
|
PJMEDIA_AUD_DEFAULT_PLAYBACK_DEV = -2,
|
|
|
|
/**
|
|
* Constant to denote invalid device index.
|
|
*/
|
|
PJMEDIA_AUD_INVALID_DEV = -3
|
|
};
|
|
|
|
|
|
/**
|
|
* This enumeration identifies various audio device capabilities. These audio
|
|
* capabilities indicates what features are supported by the underlying
|
|
* audio device implementation.
|
|
*
|
|
* Applications get these capabilities in the #pjmedia_aud_dev_info structure.
|
|
*
|
|
* Application can also set the specific features/capabilities when opening
|
|
* the audio stream by setting the \a flags member of #pjmedia_aud_param
|
|
* structure.
|
|
*
|
|
* Once audio stream is running, application can also retrieve or set some
|
|
* specific audio capability, by using #pjmedia_aud_stream_get_cap() and
|
|
* #pjmedia_aud_stream_set_cap() and specifying the desired capability. The
|
|
* value of the capability is specified as pointer, and application needs to
|
|
* supply the pointer with the correct value, according to the documentation
|
|
* of each of the capability.
|
|
*/
|
|
typedef enum pjmedia_aud_dev_cap
|
|
{
|
|
/**
|
|
* Support for audio formats other than PCM. The value of this capability
|
|
* is represented by #pjmedia_format structure.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_EXT_FORMAT = 1,
|
|
|
|
/**
|
|
* Support for audio input latency control or query. The value of this
|
|
* capability is an unsigned integer containing milliseconds value of
|
|
* the latency.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY = 2,
|
|
|
|
/**
|
|
* Support for audio output latency control or query. The value of this
|
|
* capability is an unsigned integer containing milliseconds value of
|
|
* the latency.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY = 4,
|
|
|
|
/**
|
|
* Support for setting/retrieving the audio input device volume level.
|
|
* The value of this capability is an unsigned integer representing
|
|
* the input audio volume setting in percent.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING = 8,
|
|
|
|
/**
|
|
* Support for setting/retrieving the audio output device volume level.
|
|
* The value of this capability is an unsigned integer representing
|
|
* the output audio volume setting in percent.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING = 16,
|
|
|
|
/**
|
|
* Support for monitoring the current audio input signal volume.
|
|
* The value of this capability is an unsigned integer representing
|
|
* the audio volume in percent.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_INPUT_SIGNAL_METER = 32,
|
|
|
|
/**
|
|
* Support for monitoring the current audio output signal volume.
|
|
* The value of this capability is an unsigned integer representing
|
|
* the audio volume in percent.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_OUTPUT_SIGNAL_METER = 64,
|
|
|
|
/**
|
|
* Support for audio input routing. The value of this capability is an
|
|
* integer containing #pjmedia_aud_dev_route enumeration.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_INPUT_ROUTE = 128,
|
|
|
|
/**
|
|
* Support for audio output routing (e.g. loudspeaker vs earpiece). The
|
|
* value of this capability is an integer containing #pjmedia_aud_dev_route
|
|
* enumeration.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE = 256,
|
|
|
|
/**
|
|
* The audio device has echo cancellation feature. The value of this
|
|
* capability is a pj_bool_t containing boolean PJ_TRUE or PJ_FALSE.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_EC = 512,
|
|
|
|
/**
|
|
* The audio device supports setting echo cancellation fail length. The
|
|
* value of this capability is an unsigned integer representing the
|
|
* echo tail in milliseconds.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_EC_TAIL = 1024,
|
|
|
|
/**
|
|
* The audio device has voice activity detection feature. The value
|
|
* of this capability is a pj_bool_t containing boolean PJ_TRUE or
|
|
* PJ_FALSE.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_VAD = 2048,
|
|
|
|
/**
|
|
* The audio device has comfort noise generation feature. The value
|
|
* of this capability is a pj_bool_t containing boolean PJ_TRUE or
|
|
* PJ_FALSE.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_CNG = 4096,
|
|
|
|
/**
|
|
* The audio device has packet loss concealment feature. The value
|
|
* of this capability is a pj_bool_t containing boolean PJ_TRUE or
|
|
* PJ_FALSE.
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_PLC = 8192,
|
|
|
|
/**
|
|
* End of capability
|
|
*/
|
|
PJMEDIA_AUD_DEV_CAP_MAX = 16384
|
|
|
|
} pjmedia_aud_dev_cap;
|
|
|
|
|
|
/**
|
|
* This enumeration describes audio routing setting.
|
|
*/
|
|
typedef enum pjmedia_aud_dev_route
|
|
{
|
|
/** Default route. */
|
|
PJMEDIA_AUD_DEV_ROUTE_DEFAULT = 0,
|
|
|
|
/** Route to loudspeaker */
|
|
PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER = 1,
|
|
|
|
/** Route to earpiece */
|
|
PJMEDIA_AUD_DEV_ROUTE_EARPIECE = 2,
|
|
|
|
/** Route to paired Bluetooth device */
|
|
PJMEDIA_AUD_DEV_ROUTE_BLUETOOTH = 4
|
|
|
|
} pjmedia_aud_dev_route;
|
|
|
|
|
|
/**
|
|
* Device information structure returned by #pjmedia_aud_dev_get_info().
|
|
*/
|
|
typedef struct pjmedia_aud_dev_info
|
|
{
|
|
/**
|
|
* The device name
|
|
*/
|
|
char name[64];
|
|
|
|
/**
|
|
* Maximum number of input channels supported by this device. If the
|
|
* value is zero, the device does not support input operation (i.e.
|
|
* it is a playback only device).
|
|
*/
|
|
unsigned input_count;
|
|
|
|
/**
|
|
* Maximum number of output channels supported by this device. If the
|
|
* value is zero, the device does not support output operation (i.e.
|
|
* it is an input only device).
|
|
*/
|
|
unsigned output_count;
|
|
|
|
/**
|
|
* Default sampling rate.
|
|
*/
|
|
unsigned default_samples_per_sec;
|
|
|
|
/**
|
|
* The underlying driver name
|
|
*/
|
|
char driver[32];
|
|
|
|
/**
|
|
* Device capabilities, as bitmask combination of #pjmedia_aud_dev_cap.
|
|
*/
|
|
unsigned caps;
|
|
|
|
/**
|
|
* Supported audio device routes, as bitmask combination of
|
|
* #pjmedia_aud_dev_route. The value may be zero if the device
|
|
* does not support audio routing.
|
|
*/
|
|
unsigned routes;
|
|
|
|
/**
|
|
* Number of audio formats supported by this device. The value may be
|
|
* zero if the device does not support non-PCM format.
|
|
*/
|
|
unsigned ext_fmt_cnt;
|
|
|
|
/**
|
|
* Array of supported extended audio formats
|
|
*/
|
|
pjmedia_format ext_fmt[8];
|
|
|
|
|
|
} pjmedia_aud_dev_info;
|
|
|
|
|
|
/**
|
|
* This callback is called by player stream when it needs additional data
|
|
* to be played by the device. Application must fill in the whole of output
|
|
* buffer with audio samples.
|
|
*
|
|
* The frame argument contains the following values:
|
|
* - timestamp Playback timestamp, in samples.
|
|
* - buf Buffer to be filled out by application.
|
|
* - size The size requested in bytes, which will be equal to
|
|
* the size of one whole packet.
|
|
*
|
|
* @param user_data User data associated with the stream.
|
|
* @param frame Audio frame, which buffer is to be filled in by
|
|
* the application.
|
|
*
|
|
* @return Returning non-PJ_SUCCESS will cause the audio stream
|
|
* to stop
|
|
*/
|
|
typedef pj_status_t (*pjmedia_aud_play_cb)(void *user_data,
|
|
pjmedia_frame *frame);
|
|
|
|
/**
|
|
* This callback is called by recorder stream when it has captured the whole
|
|
* packet worth of audio samples.
|
|
*
|
|
* @param user_data User data associated with the stream.
|
|
* @param frame Captured frame.
|
|
*
|
|
* @return Returning non-PJ_SUCCESS will cause the audio stream
|
|
* to stop
|
|
*/
|
|
typedef pj_status_t (*pjmedia_aud_rec_cb)(void *user_data,
|
|
pjmedia_frame *frame);
|
|
|
|
/**
|
|
* This structure specifies the parameters to open the audio stream.
|
|
*/
|
|
typedef struct pjmedia_aud_param
|
|
{
|
|
/**
|
|
* The audio direction. This setting is mandatory.
|
|
*/
|
|
pjmedia_dir dir;
|
|
|
|
/**
|
|
* The audio recorder device ID. This setting is mandatory if the audio
|
|
* direction includes input/capture direction.
|
|
*/
|
|
pjmedia_aud_dev_index rec_id;
|
|
|
|
/**
|
|
* The audio playback device ID. This setting is mandatory if the audio
|
|
* direction includes output/playback direction.
|
|
*/
|
|
pjmedia_aud_dev_index play_id;
|
|
|
|
/**
|
|
* Clock rate/sampling rate. This setting is mandatory.
|
|
*/
|
|
unsigned clock_rate;
|
|
|
|
/**
|
|
* Number of channels. This setting is mandatory.
|
|
*/
|
|
unsigned channel_count;
|
|
|
|
/**
|
|
* Number of samples per frame. This setting is mandatory.
|
|
*/
|
|
unsigned samples_per_frame;
|
|
|
|
/**
|
|
* Number of bits per sample. This setting is mandatory.
|
|
*/
|
|
unsigned bits_per_sample;
|
|
|
|
/**
|
|
* This flags specifies which of the optional settings are valid in this
|
|
* structure. The flags is bitmask combination of pjmedia_aud_dev_cap.
|
|
*/
|
|
unsigned flags;
|
|
|
|
/**
|
|
* Set the audio format. This setting is optional, and will only be used
|
|
* if PJMEDIA_AUD_DEV_CAP_EXT_FORMAT is set in the flags.
|
|
*/
|
|
pjmedia_format ext_fmt;
|
|
|
|
/**
|
|
* Input latency, in milliseconds. This setting is optional, and will
|
|
* only be used if PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY is set in the flags.
|
|
*/
|
|
unsigned input_latency_ms;
|
|
|
|
/**
|
|
* Input latency, in milliseconds. This setting is optional, and will
|
|
* only be used if PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY is set in the flags.
|
|
*/
|
|
unsigned output_latency_ms;
|
|
|
|
/**
|
|
* Input volume setting, in percent. This setting is optional, and will
|
|
* only be used if PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING is set in
|
|
* the flags.
|
|
*/
|
|
unsigned input_vol;
|
|
|
|
/**
|
|
* Output volume setting, in percent. This setting is optional, and will
|
|
* only be used if PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING is set in
|
|
* the flags.
|
|
*/
|
|
unsigned output_vol;
|
|
|
|
/**
|
|
* Set the audio input route. This setting is optional, and will only be
|
|
* used if PJMEDIA_AUD_DEV_CAP_INPUT_ROUTE is set in the flags.
|
|
*/
|
|
pjmedia_aud_dev_route input_route;
|
|
|
|
/**
|
|
* Set the audio output route. This setting is optional, and will only be
|
|
* used if PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE is set in the flags.
|
|
*/
|
|
pjmedia_aud_dev_route output_route;
|
|
|
|
/**
|
|
* Enable/disable echo canceller, if the device supports it. This setting
|
|
* is optional, and will only be used if PJMEDIA_AUD_DEV_CAP_EC is set in
|
|
* the flags.
|
|
*/
|
|
pj_bool_t ec_enabled;
|
|
|
|
/**
|
|
* Set echo canceller tail length in milliseconds, if the device supports
|
|
* it. This setting is optional, and will only be used if
|
|
* PJMEDIA_AUD_DEV_CAP_EC_TAIL is set in the flags.
|
|
*/
|
|
unsigned ec_tail_ms;
|
|
|
|
/**
|
|
* Enable/disable PLC. This setting is optional, and will only be used
|
|
* if PJMEDIA_AUD_DEV_CAP_PLC is set in the flags.
|
|
*/
|
|
pj_bool_t plc_enabled;
|
|
|
|
/**
|
|
* Enable/disable CNG. This setting is optional, and will only be used
|
|
* if PJMEDIA_AUD_DEV_CAP_CNG is set in the flags.
|
|
*/
|
|
pj_bool_t cng_enabled;
|
|
|
|
} pjmedia_aud_param;
|
|
|
|
|
|
/** Forward declaration for pjmedia_aud_stream */
|
|
typedef struct pjmedia_aud_stream pjmedia_aud_stream;
|
|
|
|
/** Forward declaration for audio device factory */
|
|
typedef struct pjmedia_aud_dev_factory pjmedia_aud_dev_factory;
|
|
|
|
/* typedef for factory creation function */
|
|
typedef pjmedia_aud_dev_factory*
|
|
(*pjmedia_aud_dev_factory_create_func_ptr)(pj_pool_factory*);
|
|
|
|
|
|
/**
|
|
* Get string info for the specified capability.
|
|
*
|
|
* @param cap The capability ID.
|
|
* @param p_desc Optional pointer which will be filled with longer
|
|
* description about the capability.
|
|
*
|
|
* @return Capability name.
|
|
*/
|
|
PJ_DECL(const char*) pjmedia_aud_dev_cap_name(pjmedia_aud_dev_cap cap,
|
|
const char **p_desc);
|
|
|
|
|
|
/**
|
|
* Set a capability field value in #pjmedia_aud_param structure. This will
|
|
* also set the flags field for the specified capability in the structure.
|
|
*
|
|
* @param param The structure.
|
|
* @param cap The audio capability which value is to be set.
|
|
* @param pval Pointer to value. Please see the type of value to
|
|
* be supplied in the pjmedia_aud_dev_cap documentation.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_param_set_cap(pjmedia_aud_param *param,
|
|
pjmedia_aud_dev_cap cap,
|
|
const void *pval);
|
|
|
|
|
|
/**
|
|
* Get a capability field value from #pjmedia_aud_param structure. This
|
|
* function will return PJMEDIA_EAUD_INVCAP error if the flag for that
|
|
* capability is not set in the flags field in the structure.
|
|
*
|
|
* @param param The structure.
|
|
* @param cap The audio capability which value is to be retrieved.
|
|
* @param pval Pointer to value. Please see the type of value to
|
|
* be supplied in the pjmedia_aud_dev_cap documentation.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_param_get_cap(const pjmedia_aud_param *param,
|
|
pjmedia_aud_dev_cap cap,
|
|
void *pval);
|
|
|
|
/**
|
|
* Initialize the audio subsystem. This will register all supported audio
|
|
* device factories to the audio subsystem. This function may be called
|
|
* more than once, but each call to this function must have the
|
|
* corresponding #pjmedia_aud_subsys_shutdown() call.
|
|
*
|
|
* @param pf The pool factory.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_subsys_init(pj_pool_factory *pf);
|
|
|
|
|
|
/**
|
|
* Get the pool factory registered to the audio subsystem.
|
|
*
|
|
* @return The pool factory.
|
|
*/
|
|
PJ_DECL(pj_pool_factory*) pjmedia_aud_subsys_get_pool_factory(void);
|
|
|
|
|
|
/**
|
|
* Shutdown the audio subsystem. This will destroy all audio device factories
|
|
* registered in the audio subsystem. Note that currently opened audio streams
|
|
* may or may not be closed, depending on the implementation of the audio
|
|
* device factories.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_subsys_shutdown(void);
|
|
|
|
|
|
/**
|
|
* Register a supported audio device factory to the audio subsystem. This
|
|
* function can only be called after calling #pjmedia_aud_subsys_init().
|
|
*
|
|
* @param adf The audio device factory.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t)
|
|
pjmedia_aud_register_factory(pjmedia_aud_dev_factory_create_func_ptr adf);
|
|
|
|
|
|
/**
|
|
* Unregister an audio device factory from the audio subsystem. This
|
|
* function can only be called after calling #pjmedia_aud_subsys_init().
|
|
* Devices from this factory will be unlisted. If a device from this factory
|
|
* is currently in use, then the behavior is undefined.
|
|
*
|
|
* @param adf The audio device factory.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t)
|
|
pjmedia_aud_unregister_factory(pjmedia_aud_dev_factory_create_func_ptr adf);
|
|
|
|
|
|
/**
|
|
* Refresh the list of sound devices installed in the system. This function
|
|
* will only refresh the list of audio device so all active audio streams will
|
|
* be unaffected. After refreshing the device list, application MUST make sure
|
|
* to update all index references to audio devices (i.e. all variables of type
|
|
* pjmedia_aud_dev_index) before calling any function that accepts audio device
|
|
* index as its parameter.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_dev_refresh(void);
|
|
|
|
|
|
/**
|
|
* Get the number of sound devices installed in the system.
|
|
*
|
|
* @return The number of sound devices installed in the system.
|
|
*/
|
|
PJ_DECL(unsigned) pjmedia_aud_dev_count(void);
|
|
|
|
|
|
/**
|
|
* Get device information.
|
|
*
|
|
* @param id The audio device ID.
|
|
* @param info The device information which will be filled in by this
|
|
* function once it returns successfully.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_dev_get_info(pjmedia_aud_dev_index id,
|
|
pjmedia_aud_dev_info *info);
|
|
|
|
|
|
/**
|
|
* Lookup device index based on the driver and device name.
|
|
*
|
|
* @param drv_name The driver name.
|
|
* @param dev_name The device name.
|
|
* @param id Pointer to store the returned device ID.
|
|
*
|
|
* @return PJ_SUCCESS if the device can be found.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_dev_lookup(const char *drv_name,
|
|
const char *dev_name,
|
|
pjmedia_aud_dev_index *id);
|
|
|
|
|
|
/**
|
|
* Initialize the audio device parameters with default values for the
|
|
* specified device.
|
|
*
|
|
* @param id The audio device ID.
|
|
* @param param The audio device parameters which will be initialized
|
|
* by this function once it returns successfully.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_dev_default_param(pjmedia_aud_dev_index id,
|
|
pjmedia_aud_param *param);
|
|
|
|
|
|
/**
|
|
* Open audio stream object using the specified parameters.
|
|
*
|
|
* @param param Sound device parameters to be used for the stream.
|
|
* @param rec_cb Callback to be called on every input frame captured.
|
|
* @param play_cb Callback to be called everytime the sound device needs
|
|
* audio frames to be played back.
|
|
* @param user_data Arbitrary user data, which will be given back in the
|
|
* callbacks.
|
|
* @param p_strm Pointer to receive the audio stream.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_stream_create(const pjmedia_aud_param *param,
|
|
pjmedia_aud_rec_cb rec_cb,
|
|
pjmedia_aud_play_cb play_cb,
|
|
void *user_data,
|
|
pjmedia_aud_stream **p_strm);
|
|
|
|
/**
|
|
* Get the running parameters for the specified audio stream.
|
|
*
|
|
* @param strm The audio stream.
|
|
* @param param Audio stream parameters to be filled in by this
|
|
* function once it returns successfully.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_stream_get_param(pjmedia_aud_stream *strm,
|
|
pjmedia_aud_param *param);
|
|
|
|
/**
|
|
* Get the value of a specific capability of the audio stream.
|
|
*
|
|
* @param strm The audio stream.
|
|
* @param cap The audio capability which value is to be retrieved.
|
|
* @param value Pointer to value to be filled in by this function
|
|
* once it returns successfully. Please see the type
|
|
* of value to be supplied in the pjmedia_aud_dev_cap
|
|
* documentation.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_stream_get_cap(pjmedia_aud_stream *strm,
|
|
pjmedia_aud_dev_cap cap,
|
|
void *value);
|
|
|
|
/**
|
|
* Set the value of a specific capability of the audio stream.
|
|
*
|
|
* @param strm The audio stream.
|
|
* @param cap The audio capability which value is to be set.
|
|
* @param value Pointer to value. Please see the type of value to
|
|
* be supplied in the pjmedia_aud_dev_cap documentation.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_stream_set_cap(pjmedia_aud_stream *strm,
|
|
pjmedia_aud_dev_cap cap,
|
|
const void *value);
|
|
|
|
/**
|
|
* Start the stream.
|
|
*
|
|
* @param strm The audio stream.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_stream_start(pjmedia_aud_stream *strm);
|
|
|
|
/**
|
|
* Stop the stream.
|
|
*
|
|
* @param strm The audio stream.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_stream_stop(pjmedia_aud_stream *strm);
|
|
|
|
/**
|
|
* Destroy the stream.
|
|
*
|
|
* @param strm The audio stream.
|
|
*
|
|
* @return PJ_SUCCESS on successful operation or the appropriate
|
|
* error code.
|
|
*/
|
|
PJ_DECL(pj_status_t) pjmedia_aud_stream_destroy(pjmedia_aud_stream *strm);
|
|
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
PJ_END_DECL
|
|
|
|
|
|
#endif /* __PJMEDIA_AUDIODEV_AUDIODEV_H__ */
|
|
|