![]() |
Maestro Audio Framework v 1.5
NXP Semiconductors
|
Streamer API header. Public APIs for using the maestro streamer framework. More...
Data Structures | |
struct | AlbumArt |
Album Art Object. More... | |
struct | TrackInfo |
Track Info Object. More... | |
struct | StreamImageType |
StreamImageType. More... | |
struct | StreamStringType |
StreamStringType. More... | |
union | StreamData |
StreamData. More... | |
struct | ELEMENT_PROPERTY_T |
Element Property structure. More... | |
struct | STREAMER_MSG_T |
Streamer Message Type. More... | |
struct | STREAMER_CREATE_PARAM |
Streamer Arguments. More... | |
struct | STREAMER_T |
Streamer Data Structure. More... | |
Macros | |
#define | AF_MESSAGE_SECTION 0x10000 |
Message ID prefix. | |
#define | STREAMER_MSG_START (0x0000 | AF_MESSAGE_SECTION) |
First message ID. | |
#define | STREAMER_MSG_END (0x00FF | AF_MESSAGE_SECTION) |
Last message ID. | |
#define | STREAMER_MQ_NAME_LENGTH (32) |
Message queue name length. | |
#define | CODEC_INFO_LEN 64 |
Codec information length. | |
#define | GET_BIT(Bit) (1 << (Bit)) |
Get bit on specified position. | |
#define | SET_BIT(Flag, Bit) ((Flag) |= GET_BIT(Bit)) |
Set bit on specified position. | |
#define | CLEAR_BIT(Flag, Bit) ((Flag) &= ~GET_BIT(Bit)) |
Clear bit on specified position. | |
#define | BUILD_ELEMENT(n_src, n_sink, id) (_SRC(n_src) | _SINK(n_sink) | id) |
Build element ID based on number of sources, sinks and element ID. | |
#define | _SINK(num) ((num & 0x3) << 14) |
Helper macro for building element ID with sink pad number. | |
#define | _SRC(num) ((num & 0x3) << 12) |
Helper macro for building element ID with source pad number. | |
#define | ELEMENT_ID(type) (type & 0x0FFF) |
Get element ID based on its type. | |
#define | PATHNAME_SIZE 256 |
Maximal path name size. | |
#define | EVENT_WAIT_BIT 1 |
Bit for waiting for streamer message response. | |
#define | MSG_POOL_NUM_MSGS 10 |
Maximum number of messages in streamer message queue. | |
#define | MAX_PIPELINES (1) |
The maximum number of Pipelines that may be created within a single streamer task. | |
#define | MAX_ELEMENTS (ELEMENT_LAST_INDEX) |
The maximum number of Elements that may be created within a single streamer task. | |
#define | WAIT_STREAMER_MSG_RESPONSE_TIME_OUT 8000 /* 8s */ |
The wait time out for streamer response of a message processing completion After streamer processed a message, it will signal the condition variable in the message to make the function call synchronized. | |
#define | TRACK_TITLE_LEN 64 |
Maximum track title length. | |
#define | TRACK_ARTIST_LEN 64 |
Maximum track artist length. | |
#define | TRACK_ALBUM_LEN 64 |
Maximum track album length. | |
#define | TRACK_GENRE_LEN 34 |
Maximum track genre length. | |
#define | TRACK_YEAR_LEN 5 |
Maximum track year length. | |
#define | STREAMER_MSG_SIZE (sizeof(STREAMER_MSG_T)) |
Size of streamer message structure. | |
Typedefs | |
typedef uintptr_t | ElementHandle |
Element handle. | |
typedef uintptr_t | PipelineHandle |
Pipeline handle. | |
typedef uintptr_t | APPHandle |
Application handle. | |
Enumerations | |
enum | StreamReturnType { STREAM_OK = 0 , STREAM_ERR_GENERAL = -1 , STREAM_ERR_INVALID_ARGS = -2 , STREAM_ERR_NO_MEM = -3 , STREAM_ERR_INVALID_SEEK_TIME = -4 , STREAM_ERR_NOT_SEEKABLE = -5 , STREAM_ERR_INFO_ABSENT = -6 , STREAM_ERR_ELEMENT_ALREADY_IN_PIPELINE = -7 , STREAM_ERR_ELEMENT_LINKED = -8 , STREAM_ERR_ELEMENT_NOT_FREE = -9 , STREAM_ERR_ELEMENT_NOT_FOUND = -10 , STREAM_ERR_ELEMENT_INVALID_PAD = -11 , STREAM_ERR_ELEMENT_PADS_NOT_LINKED = -12 , STREAM_ERR_ELEMENT_BAD_STATUS = -13 } |
enum | STREAMER_MSG_ID { STREAM_MSG_CLOSE_TASK = STREAMER_MSG_START , STREAM_MSG_CREATE_PIPELINE , STREAM_MSG_DESTROY_PIPELINE , STREAM_MSG_CREATE_ELEMENT , STREAM_MSG_DESTROY_ELEMENT , STREAM_MSG_ADD_ELEMENT , STREAM_MSG_REMOVE_ELEMENT , STREAM_MSG_LINK_ELEMENTS , STREAM_MSG_UNLINK_ELEMENTS , STREAM_MSG_SET_STATE , STREAM_MSG_GET_STATE , STREAM_MSG_SET_FILE , STREAM_MSG_SET_PROPERTY , STREAM_MSG_GET_PROPERTY , STREAM_MSG_GET_TRACK_INFO , STREAM_MSG_SEEK_PIPELINE , STREAM_MSG_QUERY_PIPELINE , STREAM_MSG_SET_REPEAT , STREAM_MSG_UPDATE_DURATION , STREAM_MSG_UPDATE_POSITION , STREAM_MSG_UPDATE_TRACK_INFO , STREAM_MSG_EOS , STREAM_MSG_ERROR , STREAM_MSG_LAST = STREAMER_MSG_END } |
enum | PipelineState { STATE_NULL , STATE_READY , STATE_PAUSED , STATE_PLAYING } |
PipelineState. More... | |
enum | StreamPipelineType { STREAM_PIPELINE_FILESYSTEM = 0 , STREAM_PIPELINE_MEM , STREAM_PIPELINE_NETBUF , STREAM_PIPELINE_PCM , STREAM_PIPELINE_OPUS_MEM2MEM , STREAM_PIPELINE_MIC2FILE , STREAM_PIPELINE_VIT , STREAM_PIPELINE_AUDIO_PROC , STREAM_PIPELINE_PCM_AUDIO , STREAM_PIPELINE_PCM_AUDIO_PROC_AUDIO , STREAM_PIPELINE_TEST_AUDIO_PROCFILE2FILE , STREAM_PIPELINE_MAX } |
StreamPipelineType. More... | |
enum | ElementIndex { ELEMENT_FILE_SRC_INDEX , ELEMENT_MEM_SRC_INDEX , ELEMENT_NETBUF_SRC_INDEX , ELEMENT_AUDIO_SRC_INDEX , ELEMENT_FILE_SINK_INDEX , ELEMENT_MEM_SINK_INDEX , ELEMENT_AUDIO_SINK_INDEX , ELEMENT_DECODER_INDEX , ELEMENT_ENCODER_INDEX , ELEMENT_VIT_INDEX , ELEMENT_AUDIO_PROC_INDEX , ELEMENT_LAST_INDEX } |
Element index for the lookup table. | |
enum | StreamElementType { TYPE_ELEMENT_FILE_SRC = BUILD_ELEMENT(1, 0, ELEMENT_FILE_SRC_INDEX) , TYPE_ELEMENT_MEM_SRC = BUILD_ELEMENT(1, 0, ELEMENT_MEM_SRC_INDEX) , TYPE_ELEMENT_NETBUF_SRC = BUILD_ELEMENT(1, 0, ELEMENT_NETBUF_SRC_INDEX) , TYPE_ELEMENT_AUDIO_SRC = BUILD_ELEMENT(1, 0, ELEMENT_AUDIO_SRC_INDEX) , TYPE_ELEMENT_FILE_SINK = BUILD_ELEMENT(0, 1, ELEMENT_FILE_SINK_INDEX) , TYPE_ELEMENT_MEM_SINK = BUILD_ELEMENT(0, 1, ELEMENT_MEM_SINK_INDEX) , TYPE_ELEMENT_AUDIO_SINK = BUILD_ELEMENT(0, 1, ELEMENT_AUDIO_SINK_INDEX) , TYPE_ELEMENT_DECODER = BUILD_ELEMENT(1, 1, ELEMENT_DECODER_INDEX) , TYPE_ELEMENT_ENCODER = BUILD_ELEMENT(1, 1, ELEMENT_ENCODER_INDEX) , TYPE_ELEMENT_VIT_SINK = BUILD_ELEMENT(0, 1, ELEMENT_VIT_INDEX) , TYPE_ELEMENT_AUDIO_PROC = BUILD_ELEMENT(1, 1, ELEMENT_AUDIO_PROC_INDEX) , TYPE_ELEMENT_LAST = ELEMENT_LAST_INDEX } |
StreamElementType. More... | |
enum | DecoderType { DECODER_TYPE_UNKNOWN , DECODER_TYPE_WAV , DECODER_TYPE_MP3 , DECODER_TYPE_MP2 , DECODER_TYPE_AAC , DECODER_TYPE_OGG , DECODER_TYPE_WMA , DECODER_TYPE_WMV , DECODER_TYPE_MPEG2 , DECODER_TYPE_MPEG4 , DECODER_TYPE_JPEG , DECODER_TYPE_CD_DA , DECODER_TYPE_MFI , DECODER_TYPE_FLAC , DECODER_TYPE_ALAC , DECODER_TYPE_AC3 , DECODER_TYPE_OPUS , DECODER_TYPE_OGG_OPUS , LAST_DECODER_TYPE } |
DecoderType. More... | |
enum | ParserType { PARSER_TYPE_ASF , PARSER_TYPE_MP4 , PARSER_TYPE_3GP , PARSER_TYPE_OGG , PARSER_TYPE_BY_PASS , LAST_PARSER_TYPE } |
ParserType. More... | |
enum | StreamInfoType { INFO_AUDIO_BITRATE , INFO_AUDIO_CHANNELS , INFO_AUDIO_SAMPLERATE , INFO_AUDIO_TYPE , INFO_CODEC_INFO , INFO_DURATION , INFO_POSITION , INFO_TIME_SEEKABLE , INFO_BYTE_SEEKABLE , INFO_STREAM_INFO_UPDATE , INFO_SIZE , INFO_BUFF_OCC , INFO_ALBUM , INFO_ARTIST , INFO_TITLE , INFO_GENRE , INFO_YEAR , INFO_TRACK , INFO_ALBUMART_IMAGE , INFO_META_INFO_UPDATE , INFO_ERROR , INFO_LAST } |
StreamInfoType. More... | |
enum | AudioSrcDeviceDriverType { AUDIOSRC_PCMRTOS , LAST_AUDIOSRC_DEVICE_DRIVER_TYPE } |
AudioSrcDeviceDriverType. More... | |
enum | AudioSinkDeviceDriverType { AUDIO_SINK_DEVICE_TYPE_PCMRTOS , LAST_AUDIO_SINK_DEVICE_DRIVER_TYPE } |
AudioSinkDeviceDriverType. More... | |
enum | StreamMsgType { MESSAGE_UNKNOWN = 0 , MESSAGE_EOS = GET_BIT(0) , MESSAGE_ERROR = GET_BIT(1) , MESSAGE_WARNING = GET_BIT(2) , MESSAGE_INFO = GET_BIT(3) , MESSAGE_BUFFERING = GET_BIT(4) , MESSAGE_STATE_CHANGED = GET_BIT(5) } |
StreamMsgType Different message types that are available. More... | |
enum | AlbumArtSource { ART_DEFAULT = 0 , ART_EMBEDDED , ART_FOLDER } |
Album Art Source. More... | |
enum | ImageFormat { IMG_RGB_555 = 0 , IMG_RGB_565 , IMG_RGB_666 , IMG_RGB_888 , IMG_GRAYSCALE } |
Image Format. More... | |
Functions | |
STREAMER_T * | streamer_create (STREAMER_CREATE_PARAM *task_param) |
Create a streamer. More... | |
int32_t | streamer_destroy (STREAMER_T *streamer) |
Destroy a streamer object. More... | |
int32_t | streamer_create_pipeline (STREAMER_T *streamer, int32_t pipeline_id, StreamPipelineType pipeline_type, const char *in_dev_name, const char *out_dev_name, bool block) |
Create a pipeline that will handle the different connected elements. More... | |
int32_t | streamer_destroy_pipeline (STREAMER_T *streamer, int32_t pipeline_id, bool block) |
Destroy a pipeline. More... | |
int32_t | streamer_get_track_info (STREAMER_T *streamer, int32_t pipeline_id, TrackInfo *info, bool block) |
Get track information. More... | |
int32_t | streamer_set_state (STREAMER_T *streamer, int32_t pipeline_id, PipelineState state, bool block) |
Set streamer state. More... | |
int32_t | streamer_get_state (STREAMER_T *streamer, int32_t pipeline_id, PipelineState *state, bool block) |
Get streamer state. More... | |
int32_t | streamer_query_info (STREAMER_T *streamer, int32_t pipeline_id, StreamInfoType infoType, StreamData *query_data, bool block) |
Query streamer information. More... | |
int32_t | streamer_seek_pipeline (STREAMER_T *streamer, int32_t pipeline_id, int32_t seek_time_ms, bool block) |
Seek pipeline. More... | |
int32_t | streamer_set_property (STREAMER_T *streamer, ELEMENT_PROPERTY_T prop, bool block) |
Set element property. More... | |
int32_t | streamer_get_property (STREAMER_T *streamer, uint16_t prop, uint32_t *val_ptr, bool block) |
Get element property. More... | |
int32_t | streamer_set_file (STREAMER_T *streamer, int32_t pipeline_id, char *path, PipelineState state, bool block) |
Set file source. More... | |
int32_t | streamer_set_repeat (STREAMER_T *streamer, int32_t pipeline_id, bool repeat_on, bool block) |
Set pipeline to repeat. More... | |
enum StreamReturnType |
StreamReturnType Handles return status from pipeline operations
enum STREAMER_MSG_ID |
Streamer Message Identifiers Enumeration of all streamer request messages
enum PipelineState |
States for pipeline and individual elements of the pipeline. In ideal condition all the elements will have the same state as the parent pipeline state.
enum StreamPipelineType |
The type of pipeline in streamer. These may not all be supported.
enum StreamElementType |
Holds an element type for pipeline operations. Type is built based on number of source pads, number of sink pads, and a unique index
enum DecoderType |
enum ParserType |
enum StreamInfoType |
Types of Information the pipeline may provide
enum StreamMsgType |
enum AlbumArtSource |
enum ImageFormat |
STREAMER_T * streamer_create | ( | STREAMER_CREATE_PARAM * | task_param | ) |
Function for creating of a streamer object serving as the core of the framework. A streamer task is created that is responsible for handling the messages between the framework and the application. Then a pipeline for audio processing is created using streamer_create_pipeline.
task_param | paremeters for creating the core streamer task |
int32_t streamer_destroy | ( | STREAMER_T * | streamer | ) |
streamer | The streamer object to be destroyed |
int32_t streamer_create_pipeline | ( | STREAMER_T * | streamer, |
int32_t | pipeline_id, | ||
StreamPipelineType | pipeline_type, | ||
const char * | in_dev_name, | ||
const char * | out_dev_name, | ||
bool | block | ||
) |
streamer | streamer object |
pipeline_id | unique pipeline ID |
pipeline_type | type of the pipeline |
in_dev_name | input device name |
out_dev_name | output device name |
block | blocking / non-blocking creation of pipeline called directly |
int32_t streamer_destroy_pipeline | ( | STREAMER_T * | streamer, |
int32_t | pipeline_id, | ||
bool | block | ||
) |
streamer | streamer object |
pipeline_id | unique pipeline ID |
block | blocking / non-blocking destruction of pipeline |
int32_t streamer_get_track_info | ( | STREAMER_T * | streamer, |
int32_t | pipeline_id, | ||
TrackInfo * | info, | ||
bool | block | ||
) |
streamer | streamer object |
pipeline_id | unique pipeline ID |
info | track information |
block | blocking / non-blocking mode |
int32_t streamer_set_state | ( | STREAMER_T * | streamer, |
int32_t | pipeline_id, | ||
PipelineState | state, | ||
bool | block | ||
) |
streamer | streamer object |
pipeline_id | unique pipeline ID |
state | streamer state |
block | blocking / non-blocking mode |
int32_t streamer_get_state | ( | STREAMER_T * | streamer, |
int32_t | pipeline_id, | ||
PipelineState * | state, | ||
bool | block | ||
) |
streamer | streamer object |
pipeline_id | unique pipeline ID |
state | streamer state |
block | blocking / non-blocking mode |
int32_t streamer_query_info | ( | STREAMER_T * | streamer, |
int32_t | pipeline_id, | ||
StreamInfoType | infoType, | ||
StreamData * | query_data, | ||
bool | block | ||
) |
streamer | streamer object |
pipeline_id | unique pipeline ID |
infoType | streamer information type |
query_data | query data |
block | blocking / non-blocking mode |
int32_t streamer_seek_pipeline | ( | STREAMER_T * | streamer, |
int32_t | pipeline_id, | ||
int32_t | seek_time_ms, | ||
bool | block | ||
) |
streamer | streamer object |
pipeline_id | unique pipeline ID |
seek_time_ms | desired seek time in [ms] |
block | blocking / non-blocking mode |
int32_t streamer_set_property | ( | STREAMER_T * | streamer, |
ELEMENT_PROPERTY_T | prop, | ||
bool | block | ||
) |
streamer | streamer object |
prop | element property |
block | blocking / non-blocking mode |
int32_t streamer_get_property | ( | STREAMER_T * | streamer, |
uint16_t | prop, | ||
uint32_t * | val_ptr, | ||
bool | block | ||
) |
streamer | streamer object |
prop | element property |
val_ptr | property value |
block | blocking / non-blocking mode |
int32_t streamer_set_file | ( | STREAMER_T * | streamer, |
int32_t | pipeline_id, | ||
char * | path, | ||
PipelineState | state, | ||
bool | block | ||
) |
streamer | streamer object |
pipeline_id | unique pipeline ID |
path | path to the file |
state | streamer state |
block | blocking / non-blocking mode |
int32_t streamer_set_repeat | ( | STREAMER_T * | streamer, |
int32_t | pipeline_id, | ||
bool | repeat_on, | ||
bool | block | ||
) |
streamer | streamer object |
pipeline_id | unique pipeline ID |
repeat_on | repeat flag |
block | blocking / non-blocking mode |