Maestro Audio Framework v 1.5
NXP Semiconductors
streamer.c File Reference

Af Streamer implementation. More...

#include <string.h>
#include "streamer_element.h"
#include "pipeline.h"

Functions

void streamer_task (void *args)
 Streamer Task. More...
 
void streamer_init (STREAMER_T *streamer)
 Streamer Initialize. More...
 
int streamer_msg_handler (STREAMER_T *task_data, STREAMER_MSG_T *msg)
 Streamer Message Handler. More...
 
int streamer_process_pipelines (STREAMER_T *task_data)
 Streamer Process Pipelines. More...
 
static int32_t streamer_handle_msg (STREAMER_T *streamer, STREAMER_MSG_T *msg, bool block)
 Streamer handle message. 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...
 

Variables

char g_cci_meta_location [MAX_LOCATION_PATH_LENGTH]
 
#define MAX_MSG_RECV_PER_CYCLE   (5)
 Maximum messages received per streamer task cycle.
 
const STREAMER_MSG_HANDLER_T msg_handler_table []
 
 OSA_TASK_HANDLE_DEFINE (thread_hdl)
 Osa task handle object.
 
static int32_t streamer_deinit (STREAMER_T *streamer)
 Streamer deinit. More...
 
STREAMER_Tstreamer_create (STREAMER_CREATE_PARAM *task_param)
 Create a streamer. More...
 
int32_t streamer_destroy (STREAMER_T *streamer)
 Destroy a streamer object. More...
 

Function Documentation

◆ streamer_deinit()

int32_t streamer_deinit ( STREAMER_T streamer)
static

Deinit all data associated with Streamer Task

Parameters
[in]streamerPointer to streamer task data structure

◆ streamer_create()

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.

Parameters
task_paramparemeters for creating the core streamer task
Returns
STREAMER_T*

◆ streamer_destroy()

int32_t streamer_destroy ( STREAMER_T streamer)
Parameters
streamerThe streamer object to be destroyed

◆ streamer_task()

void streamer_task ( void *  arg)

This is the streamer task function that processes the main streamer loop. The loop will look to receive messages from the application and to initiate the processing of data through active pipelines.

Parameters
[in]argPointer to input argument structure (STREAMER_ARGS_T)
Returns
N/A

◆ streamer_init()

void streamer_init ( STREAMER_T streamer)

Initialize data structure associated with Streamer Task

Parameters
[in]streamerPointer to streamer task data structure

◆ streamer_msg_handler()

int streamer_msg_handler ( STREAMER_T streamer,
STREAMER_MSG_T msg 
)

Processes a single message that was received in the streamer task message queue. Messages should follow the format defined in STREAMER_MSG_T structure.

Parameters
[in]streamerPointer to streamer task data structure
[in]msgPointer to message data.
Return values
ERRCODE_NO_ERRORMessage was successfully processed
ERRCODE_INVALID_ARGUMENTInvalid Message
Returns
int

◆ streamer_process_pipelines()

int streamer_process_pipelines ( STREAMER_T streamer)

Loops through the pipelines present in the streamer task and if the pipeline is in Playing state calls the process pipeline function to start the flow of data.

Parameters
[in]streamerPointer to streamer task data structure
Return values
ERRCODE_NO_ERRORMessage was successfully processed
ERRCODE_INVALID_ARGUMENTInvalid Message
Returns
int

◆ streamer_handle_msg()

static int32_t streamer_handle_msg ( STREAMER_T streamer,
STREAMER_MSG_T msg,
bool  block 
)
static
Parameters
streamerPointer to a streamer object
msgStreamer message
blockBlocking/non-blocking
Returns
int32_t

◆ streamer_create_pipeline()

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 
)
Parameters
streamerstreamer object
pipeline_idunique pipeline ID
pipeline_typetype of the pipeline
in_dev_nameinput device name
out_dev_nameoutput device name
blockblocking / non-blocking creation of pipeline called directly
Returns
int32_t error code

◆ streamer_destroy_pipeline()

int32_t streamer_destroy_pipeline ( STREAMER_T streamer,
int32_t  pipeline_id,
bool  block 
)
Parameters
streamerstreamer object
pipeline_idunique pipeline ID
blockblocking / non-blocking destruction of pipeline
Returns
int32_t error code

◆ streamer_get_track_info()

int32_t streamer_get_track_info ( STREAMER_T streamer,
int32_t  pipeline_id,
TrackInfo info,
bool  block 
)
Parameters
streamerstreamer object
pipeline_idunique pipeline ID
infotrack information
blockblocking / non-blocking mode
Returns
int32_t error code

◆ streamer_set_state()

int32_t streamer_set_state ( STREAMER_T streamer,
int32_t  pipeline_id,
PipelineState  state,
bool  block 
)
Parameters
streamerstreamer object
pipeline_idunique pipeline ID
statestreamer state
blockblocking / non-blocking mode
Returns
int32_t error code

◆ streamer_get_state()

int32_t streamer_get_state ( STREAMER_T streamer,
int32_t  pipeline_id,
PipelineState state,
bool  block 
)
Parameters
streamerstreamer object
pipeline_idunique pipeline ID
statestreamer state
blockblocking / non-blocking mode
Returns
int32_t error code

◆ streamer_query_info()

int32_t streamer_query_info ( STREAMER_T streamer,
int32_t  pipeline_id,
StreamInfoType  infoType,
StreamData query_data,
bool  block 
)
Parameters
streamerstreamer object
pipeline_idunique pipeline ID
infoTypestreamer information type
query_dataquery data
blockblocking / non-blocking mode
Returns
int32_t error code

◆ streamer_seek_pipeline()

int32_t streamer_seek_pipeline ( STREAMER_T streamer,
int32_t  pipeline_id,
int32_t  seek_time_ms,
bool  block 
)
Parameters
streamerstreamer object
pipeline_idunique pipeline ID
seek_time_msdesired seek time in [ms]
blockblocking / non-blocking mode
Returns
int32_t error code

◆ streamer_set_property()

int32_t streamer_set_property ( STREAMER_T streamer,
ELEMENT_PROPERTY_T  prop,
bool  block 
)
Parameters
streamerstreamer object
propelement property
blockblocking / non-blocking mode
Returns
int32_t error code

◆ streamer_get_property()

int32_t streamer_get_property ( STREAMER_T streamer,
uint16_t  prop,
uint32_t *  val_ptr,
bool  block 
)
Parameters
streamerstreamer object
propelement property
val_ptrproperty value
blockblocking / non-blocking mode
Returns
int32_t error code

◆ streamer_set_file()

int32_t streamer_set_file ( STREAMER_T streamer,
int32_t  pipeline_id,
char *  path,
PipelineState  state,
bool  block 
)
Parameters
streamerstreamer object
pipeline_idunique pipeline ID
pathpath to the file
statestreamer state
blockblocking / non-blocking mode
Returns
int32_t error code

◆ streamer_set_repeat()

int32_t streamer_set_repeat ( STREAMER_T streamer,
int32_t  pipeline_id,
bool  repeat_on,
bool  block 
)
Parameters
streamerstreamer object
pipeline_idunique pipeline ID
repeat_onrepeat flag
blockblocking / non-blocking mode
Returns
int32_t error code

Variable Documentation

◆ msg_handler_table

const STREAMER_MSG_HANDLER_T msg_handler_table[]
Initial value:
int streamer_msg_seek_pipeline(STREAMER_T *streamer, void *data)
Streamer Seek Pipeline.
Definition: streamer_msg.c:437
int streamer_msg_set_property(STREAMER_T *streamer, void *data)
Streamer Set Property.
Definition: streamer_msg.c:515
int streamer_msg_set_repeat(STREAMER_T *streamer, void *msg_data)
Streamer Set Pipeline State.
Definition: streamer_msg.c:734
int streamer_msg_set_state(STREAMER_T *streamer, void *data)
Streamer Set Pipeline State.
Definition: streamer_msg.c:309
int streamer_msg_set_file(STREAMER_T *streamer, void *data)
Streamer message set file.
Definition: streamer_msg.c:591
int streamer_msg_send_query(STREAMER_T *streamer, void *data)
Streamer Send Query.
Definition: streamer_msg.c:394
int streamer_msg_get_state(STREAMER_T *streamer, void *data)
Streamer Get State.
Definition: streamer_msg.c:349
int streamer_msg_destroy_pipeline(STREAMER_T *streamer, void *data)
Streamer Destroy Pipeline.
Definition: streamer_msg.c:189
int streamer_msg_get_property(STREAMER_T *streamer, void *data)
Streamer Get Property.
Definition: streamer_msg.c:555
int streamer_msg_create_pipeline(STREAMER_T *streamer, void *data)
Streamer Create Pipeline.
Definition: streamer_msg.c:105
@ STREAM_MSG_GET_STATE
a Get Pipeline State
Definition: streamer_api.h:175
@ STREAM_MSG_SEEK_PIPELINE
f Seek the pipeline to a time
Definition: streamer_api.h:183
@ STREAM_MSG_QUERY_PIPELINE
10 Query the pipeline
Definition: streamer_api.h:184
@ STREAM_MSG_SET_STATE
9 Set Pipeline State
Definition: streamer_api.h:174
@ STREAM_MSG_DESTROY_PIPELINE
2 Destroy Pipeline
Definition: streamer_api.h:167
@ STREAM_MSG_GET_PROPERTY
d Get an Element specific property value
Definition: streamer_api.h:180
@ STREAM_MSG_SET_PROPERTY
c Set an Element specific property value
Definition: streamer_api.h:178
@ STREAM_MSG_SET_REPEAT
11 Set repeat mode of pipeline
Definition: streamer_api.h:185
@ STREAM_MSG_SET_FILE
b Set the file path and reconfigure the pipeline
Definition: streamer_api.h:176
@ STREAM_MSG_CREATE_PIPELINE
1 Create Pipeline
Definition: streamer_api.h:166

Streamer Message Handler Table Specifies the function to handle incoming message requests within the streamer task.

◆ g_cci_meta_location

char g_cci_meta_location[MAX_LOCATION_PATH_LENGTH]

TEMP - remove when CCI metadata is fixed