pjsip logo pjsip.org
Open source SIP stack and media stack for presence, im/instant messaging, and multimedia communication
Loading

HOME

SIP/media Features
High Performance SIP
Small Footprint SIP
Symbian Port

FAQ

Documentation

Licensing

Download

Development (Trac)

Projects using pjsip

Mailing List

Open Source Links


About: PJLIB, PJLIB-UTIL, PJSIP, and PJMEDIA are created by: Benny Prijono
<bennylp@pjsip.org>


 

Home --> Documentations --> PJMEDIA Reference

Audio Device API Reference
[Audio Device API]

API Reference.

Data Structures

struct  pjmedia_aud_dev_info
struct  pjmedia_aud_param

Typedefs

typedef pj_int32_t pjmedia_aud_dev_index
typedef pj_status_t(* pjmedia_aud_play_cb )(void *user_data, pjmedia_frame *frame)
typedef pj_status_t(* pjmedia_aud_rec_cb )(void *user_data, pjmedia_frame *frame)
typedef pjmedia_aud_dev_factory *(* pjmedia_aud_dev_factory_create_func_ptr )(pj_pool_factory *)

Enumerations

enum  {
  PJMEDIA_AUD_DEFAULT_CAPTURE_DEV = -1,
  PJMEDIA_AUD_DEFAULT_PLAYBACK_DEV = -2,
  PJMEDIA_AUD_INVALID_DEV = -3
}
enum  pjmedia_aud_dev_cap {
  PJMEDIA_AUD_DEV_CAP_EXT_FORMAT = 1,
  PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY = 2,
  PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY = 4,
  PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING = 8,
  PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING = 16,
  PJMEDIA_AUD_DEV_CAP_INPUT_SIGNAL_METER = 32,
  PJMEDIA_AUD_DEV_CAP_OUTPUT_SIGNAL_METER = 64,
  PJMEDIA_AUD_DEV_CAP_INPUT_ROUTE = 128,
  PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE = 256,
  PJMEDIA_AUD_DEV_CAP_EC = 512,
  PJMEDIA_AUD_DEV_CAP_EC_TAIL = 1024,
  PJMEDIA_AUD_DEV_CAP_VAD = 2048,
  PJMEDIA_AUD_DEV_CAP_CNG = 4096,
  PJMEDIA_AUD_DEV_CAP_PLC = 8192,
  PJMEDIA_AUD_DEV_CAP_MAX = 16384
}
enum  pjmedia_aud_dev_route {
  PJMEDIA_AUD_DEV_ROUTE_DEFAULT = 0,
  PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER = 1,
  PJMEDIA_AUD_DEV_ROUTE_EARPIECE = 2,
  PJMEDIA_AUD_DEV_ROUTE_BLUETOOTH = 4
}

Functions

const char * pjmedia_aud_dev_cap_name (pjmedia_aud_dev_cap cap, const char **p_desc)
pj_status_t pjmedia_aud_param_set_cap (pjmedia_aud_param *param, pjmedia_aud_dev_cap cap, const void *pval)
pj_status_t pjmedia_aud_param_get_cap (const pjmedia_aud_param *param, pjmedia_aud_dev_cap cap, void *pval)
pj_status_t pjmedia_aud_subsys_init (pj_pool_factory *pf)
pj_pool_factorypjmedia_aud_subsys_get_pool_factory (void)
pj_status_t pjmedia_aud_subsys_shutdown (void)
pj_status_t pjmedia_aud_register_factory (pjmedia_aud_dev_factory_create_func_ptr adf)
pj_status_t pjmedia_aud_unregister_factory (pjmedia_aud_dev_factory_create_func_ptr adf)
pj_status_t pjmedia_aud_dev_refresh (void)
unsigned pjmedia_aud_dev_count (void)
pj_status_t pjmedia_aud_dev_get_info (pjmedia_aud_dev_index id, pjmedia_aud_dev_info *info)
pj_status_t pjmedia_aud_dev_lookup (const char *drv_name, const char *dev_name, pjmedia_aud_dev_index *id)
pj_status_t pjmedia_aud_dev_default_param (pjmedia_aud_dev_index id, pjmedia_aud_param *param)
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)
pj_status_t pjmedia_aud_stream_get_param (pjmedia_aud_stream *strm, pjmedia_aud_param *param)
pj_status_t pjmedia_aud_stream_get_cap (pjmedia_aud_stream *strm, pjmedia_aud_dev_cap cap, void *value)
pj_status_t pjmedia_aud_stream_set_cap (pjmedia_aud_stream *strm, pjmedia_aud_dev_cap cap, const void *value)
pj_status_t pjmedia_aud_stream_start (pjmedia_aud_stream *strm)
pj_status_t pjmedia_aud_stream_stop (pjmedia_aud_stream *strm)
pj_status_t pjmedia_aud_stream_destroy (pjmedia_aud_stream *strm)

Typedef Documentation

Type for device index.

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.
Parameters:
user_data User data associated with the stream.
frame Audio frame, which buffer is to be filled in by the application.
Returns:
Returning non-PJ_SUCCESS will cause the audio stream to stop

This callback is called by recorder stream when it has captured the whole packet worth of audio samples.

Parameters:
user_data User data associated with the stream.
frame Captured frame.
Returns:
Returning non-PJ_SUCCESS will cause the audio stream to stop

Enumeration Type Documentation

anonymous enum

Device index constants.

Enumerator:
PJMEDIA_AUD_DEFAULT_CAPTURE_DEV 

Constant to denote default capture device

PJMEDIA_AUD_DEFAULT_PLAYBACK_DEV 

Constant to denote default playback device

PJMEDIA_AUD_INVALID_DEV 

Constant to denote invalid device index.

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 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.

Enumerator:
PJMEDIA_AUD_DEV_CAP_EXT_FORMAT 

Support for audio formats other than PCM. The value of this capability is represented by pjmedia_format structure.

PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY 

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_OUTPUT_LATENCY 

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_INPUT_VOLUME_SETTING 

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_OUTPUT_VOLUME_SETTING 

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_INPUT_SIGNAL_METER 

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_OUTPUT_SIGNAL_METER 

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_INPUT_ROUTE 

Support for audio input routing. The value of this capability is an integer containing pjmedia_aud_dev_route enumeration.

PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE 

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_EC 

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_TAIL 

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_VAD 

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_CNG 

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_PLC 

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_MAX 

End of capability

This enumeration describes audio routing setting.

Enumerator:
PJMEDIA_AUD_DEV_ROUTE_DEFAULT 

Default route.

PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER 

Route to loudspeaker

PJMEDIA_AUD_DEV_ROUTE_EARPIECE 

Route to earpiece

PJMEDIA_AUD_DEV_ROUTE_BLUETOOTH 

Route to paired Bluetooth device


Function Documentation

const char* pjmedia_aud_dev_cap_name ( pjmedia_aud_dev_cap  cap,
const char **  p_desc 
)

Get string info for the specified capability.

Parameters:
cap The capability ID.
p_desc Optional pointer which will be filled with longer description about the capability.
Returns:
Capability name.
pj_status_t pjmedia_aud_param_set_cap ( pjmedia_aud_param param,
pjmedia_aud_dev_cap  cap,
const void *  pval 
)

Set a capability field value in pjmedia_aud_param structure. This will also set the flags field for the specified capability in the structure.

Parameters:
param The structure.
cap The audio capability which value is to be set.
pval Pointer to value. Please see the type of value to be supplied in the pjmedia_aud_dev_cap documentation.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_status_t pjmedia_aud_param_get_cap ( const pjmedia_aud_param param,
pjmedia_aud_dev_cap  cap,
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.

Parameters:
param The structure.
cap The audio capability which value is to be retrieved.
pval Pointer to value. Please see the type of value to be supplied in the pjmedia_aud_dev_cap documentation.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_status_t pjmedia_aud_subsys_init ( pj_pool_factory pf  ) 

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.

Parameters:
pf The pool factory.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_pool_factory* pjmedia_aud_subsys_get_pool_factory ( void   ) 

Get the pool factory registered to the audio subsystem.

Returns:
The pool factory.
pj_status_t pjmedia_aud_subsys_shutdown ( 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.

Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_status_t pjmedia_aud_register_factory ( pjmedia_aud_dev_factory_create_func_ptr  adf  ) 

Register a supported audio device factory to the audio subsystem. This function can only be called after calling pjmedia_aud_subsys_init().

Parameters:
adf The audio device factory.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_status_t pjmedia_aud_unregister_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.

Parameters:
adf The audio device factory.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_status_t pjmedia_aud_dev_refresh ( void   ) 

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.

Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
unsigned pjmedia_aud_dev_count ( void   ) 

Get the number of sound devices installed in the system.

Returns:
The number of sound devices installed in the system.
pj_status_t pjmedia_aud_dev_get_info ( pjmedia_aud_dev_index  id,
pjmedia_aud_dev_info info 
)

Get device information.

Parameters:
id The audio device ID.
info The device information which will be filled in by this function once it returns successfully.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_status_t pjmedia_aud_dev_lookup ( const char *  drv_name,
const char *  dev_name,
pjmedia_aud_dev_index id 
)

Lookup device index based on the driver and device name.

Parameters:
drv_name The driver name.
dev_name The device name.
id Pointer to store the returned device ID.
Returns:
PJ_SUCCESS if the device can be found.
pj_status_t pjmedia_aud_dev_default_param ( pjmedia_aud_dev_index  id,
pjmedia_aud_param param 
)

Initialize the audio device parameters with default values for the specified device.

Parameters:
id The audio device ID.
param The audio device parameters which will be initialized by this function once it returns successfully.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
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 
)

Open audio stream object using the specified parameters.

Parameters:
param Sound device parameters to be used for the stream.
rec_cb Callback to be called on every input frame captured.
play_cb Callback to be called everytime the sound device needs audio frames to be played back.
user_data Arbitrary user data, which will be given back in the callbacks.
p_strm Pointer to receive the audio stream.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_status_t pjmedia_aud_stream_get_param ( pjmedia_aud_stream strm,
pjmedia_aud_param param 
)

Get the running parameters for the specified audio stream.

Parameters:
strm The audio stream.
param Audio stream parameters to be filled in by this function once it returns successfully.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_status_t pjmedia_aud_stream_get_cap ( pjmedia_aud_stream strm,
pjmedia_aud_dev_cap  cap,
void *  value 
)

Get the value of a specific capability of the audio stream.

Parameters:
strm The audio stream.
cap The audio capability which value is to be retrieved.
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.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_status_t pjmedia_aud_stream_set_cap ( pjmedia_aud_stream strm,
pjmedia_aud_dev_cap  cap,
const void *  value 
)

Set the value of a specific capability of the audio stream.

Parameters:
strm The audio stream.
cap The audio capability which value is to be set.
value Pointer to value. Please see the type of value to be supplied in the pjmedia_aud_dev_cap documentation.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_status_t pjmedia_aud_stream_start ( pjmedia_aud_stream strm  ) 

Start the stream.

Parameters:
strm The audio stream.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_status_t pjmedia_aud_stream_stop ( pjmedia_aud_stream strm  ) 

Stop the stream.

Parameters:
strm The audio stream.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.
pj_status_t pjmedia_aud_stream_destroy ( pjmedia_aud_stream strm  ) 

Destroy the stream.

Parameters:
strm The audio stream.
Returns:
PJ_SUCCESS on successful operation or the appropriate error code.

 


PJMEDIA small footprint Open Source media stack
Copyright (C) 2006-2008 Teluu Inc.