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

This file contains the implementation for the Memory Sink. More...

#include <string.h>
#include "mem_sink.h"
#include "pipeline.h"
#include "streamer_element_properties.h"

Functions

static uint8_t memsink_sink_pad_activation_handler (StreamPad *pad, uint8_t active)
 This function activates the sink pad and allocates memory for the memory sink element. More...
 
static FlowReturn memsink_sink_pad_chain_handler (StreamPad *pad, StreamBuffer *buf)
 This pad function accumulates data from the decoder and pushes it onto the selected audio driver. The audio sink maintains a double buffer and starts sending data once both the buffers are full. It blocks if the previous data is not sent out by the driver for some reason. More...
 
static uint8_t memsink_sink_pad_event_handler (StreamPad *pad, StreamEvent *event)
 This function is the calls the specified audio device driver implementation of the sink pad event handler. More...
 
static int32_t memsink_change_state (StreamElement *element_ptr, PipelineState new_state)
 This function changes the memory sink state and calls the appropriate apis for that state and takes the actions and then returns. PipelineState Transition: NULL to READY: Nothing to do READY to PAUSE: Activate sink pads and their peer pads PAUSE to PLAY: Start Writing PAUSE to READY: Deactivate sink pads and their peer pads READY to NULL: Nothing to do. More...
 
static uint8_t memsink_sink_pad_query_handler (StreamPad *pad, StreamQuery *query)
 This pad function handles query from the pipeline. If not able to handle the query then it pushes the query to its peer. More...
 
static int32_t memsink_set_property (StreamElement *element_ptr, uint16_t prop, uint32_t val)
 This function sets mem sink element's properties. More...
 
static int32_t memsink_get_property (StreamElement *element_ptr, uint16_t prop, uint32_t *val_ptr)
 This function gets mem sink element's properties. More...
 
int32_t memsink_init_element (StreamElement *element_ptr)
 This function initializes the memory sink element and sink pads. More...
 
int32_t memsink_set_buffer (ElementHandle element_hdl, char *location_ptr, uint32_t size)
 Set the location of the memory buffer to write to as well as the size. More...
 
int32_t memsink_set_raw_write_mode (ElementHandle element_hdl, uint8_t raw_write_mode)
 This function sets the raw write mode or the packet header mode to write to memory. (write_mode == true) means only data will be written (no packet headers) (write_mode == false) means packet header will be written aOSA_LONG with data. More...
 

Function Documentation

◆ memsink_sink_pad_activation_handler()

static uint8_t memsink_sink_pad_activation_handler ( StreamPad *  pad,
uint8_t  active 
)
static
Parameters
padpad handle
activeboolean activate/disactivate pad
Returns
true/false
Return values
truesuccess
falsefailed

◆ memsink_sink_pad_chain_handler()

static FlowReturn memsink_sink_pad_chain_handler ( StreamPad *  pad,
StreamBuffer buf 
)
static
Parameters
padpad handle
bufinput buffer
Returns
FlowReturn
Return values
FLOW_OKsuccess
FLOW_UNEXPECTEDbad paramesters
FLOW_ERRORwrite failed

◆ memsink_sink_pad_event_handler()

static uint8_t memsink_sink_pad_event_handler ( StreamPad *  pad,
StreamEvent event 
)
static
Parameters
padpad handle
eventevent enumeration
Returns
true/false
Return values
truesuccess
falsefailed

◆ memsink_change_state()

static int32_t memsink_change_state ( StreamElement *  element_ptr,
PipelineState  new_state 
)
static
Parameters
element_ptrelement
new_statememory sink state to be changed
Returns
StreamReturnType
Return values
STREAM_OKsuccess
STREAM_ERR_INVALID_ARGSinvalid arguments

◆ memsink_sink_pad_query_handler()

static uint8_t memsink_sink_pad_query_handler ( StreamPad *  pad,
StreamQuery query 
)
static
Parameters
padpad handle
queryinput buffer
Returns
: true/false

◆ memsink_set_property()

static int32_t memsink_set_property ( StreamElement *  element_ptr,
uint16_t  prop,
uint32_t  val 
)
static
Parameters
element_ptraudio sink element instance
propelement property
valvalue to be set
Returns
StreamReturnType
Return values
STREAM_OKsuccess
STREAM_ERR_INFO_ABSENTunknown property
STREAM_GENERALbad status to set the property

◆ memsink_get_property()

static int32_t memsink_get_property ( StreamElement *  element_ptr,
uint16_t  prop,
uint32_t *  val_ptr 
)
static
Parameters
element_ptraudio sink element instance
propelement property
val_ptrvalue to be acquired
Returns
AudioSinkStreamErrorType
Return values
STREAM_OKsuccess
STREAM_ERR_INVALID_ARGSbad arguments
STREAM_ERR_INFO_ABSENTunknown property

◆ memsink_init_element()

int32_t memsink_init_element ( StreamElement *  element_ptr)
Parameters
element_ptrpointer of memory sink element instance
Returns
StreamReturnType
Return values
STREAM_OKsuccess
STREAM_ERR_ELEMENT_NOT_FOUNDinvalid instance pointer of element_ptr

◆ memsink_set_buffer()

int32_t memsink_set_buffer ( ElementHandle  element_hdl,
char *  location_ptr,
uint32_t  size 
)
Parameters
element_hdlelement handle
location_ptrlocation path
sizememory buffer size
Returns
StreamReturnType
Return values
STREAM_OKsuccess
STREAM_ERR_INVALID_ARGSinvalid parameters
STREAM_ERR_GENERALstatus is bigger than or eque to STATE_PAUSED

◆ memsink_set_raw_write_mode()

int32_t memsink_set_raw_write_mode ( ElementHandle  element_hdl,
uint8_t  raw_write_mode 
)
Parameters
element_hdlelement handle
raw_write_modewrite mode raw (or) packet header
Returns
StreamReturnType
Return values
STREAM_OKsuccess
STREAM_ERR_INVALID_ARGSinvalid arguments
STREAM_ERR_GENERALvalue is bigger than or eque to STATE_PAUSED