コード例 #1
0
// ==========================================================================
//
// Function Name: csl_audvoc_render_configure
//
// Description: Configure the audio path render
//
// =========================================================================
Result_t csl_audio_render_configure ( AUDIO_SAMPLING_RATE_t    sampleRate, 
						AUDIO_CHANNEL_NUM_t    numChannels,
						AUDIO_BITS_PER_SAMPLE_t bitsPerSample,
						UInt8 *ringBuffer,
						UInt32 numBlocks,
						UInt32 blockSize,
						CSL_AUDRENDER_CB csl_audio_render_cb,
						UInt32 streamID
						)
{
	OSDAL_DMA_DWIDTH dataWidth = OSDAL_DMA_DATA_SIZE_16BIT; // default is 16
	OSDAL_DMA_CLIENT	dstClient = OSDAL_DMA_CLIENT_AUDIO_OUT_FIFO;
	CSL_AUDVOC_Drv_t	*audDrv = NULL;
	OSDAL_DMA_CALLBACK dmaCB = NULL;
	
	Log_DebugPrintf(LOGID_SOC_AUDIO, "csl_audvoc_render_configure:: streamID = 0x%x, sampleRate =0x%x, numChannels = 0x%x, numbBuffers = 0x%x, blockSize = 0x%x\n", 
					streamID, sampleRate, numChannels, numBlocks, blockSize);
	
	if (numChannels==AUDIO_CHANNEL_STEREO || numChannels==AUDIO_CHANNEL_STEREO_LEFT || numChannels==AUDIO_CHANNEL_STEREO_RIGHT)
	{
		dataWidth = OSDAL_DMA_DATA_SIZE_32BIT;
	}

	audDrv = GetDriverByType (streamID);

	if (audDrv == NULL)
		return RESULT_ERROR;	

	audDrv->dmaCB = csl_audio_render_cb;
	if (streamID == CSL_AUDVOC_STREAM_AUDIO)
	{
		dmaCB = (OSDAL_DMA_CALLBACK)AUDIO_DMA_CB;
		//chal_audioaopath_SetSampleRate (NULL, sampleRate );
	}
	else if (streamID == CSL_AUDVOC_STREAM_POLYRINGER)
	{
		dmaCB = (OSDAL_DMA_CALLBACK)PLR_DMA_CB;
		//chal_audiopopath_SetSampleRate (NULL, sampleRate );
		dstClient = OSDAL_DMA_CLIENT_POLYRING_OUT_FIFO;
	}
	
	if ( ConfigDMA (audDrv->dmaCH, ringBuffer, numBlocks, blockSize, dstClient, dataWidth, dmaCB) != RESULT_OK)
	{
		// do clean up
	}

	return RESULT_OK;
}
コード例 #2
0
// ==========================================================================
//
// Function Name: csl_audvoc_capture_configure
//
// Description: Configure audio path capture. 
//
// =========================================================================
Result_t csl_audio_capture_configure( AUDIO_SAMPLING_RATE_t    sampleRate, 
						AUDIO_CHANNEL_NUM_t    numChannels,
						AUDIO_BITS_PER_SAMPLE_t bitsPerSample,						
						UInt8 *ringBuffer,
						UInt32 numBlocks,
						UInt32 blockSize,
						CSL_AUDCAPTURE_CB csl_audio_capture_cb,
						UInt32 streamID
						)
{
	OSDAL_DMA_DWIDTH dataWidth = OSDAL_DMA_DATA_SIZE_16BIT; // default is 16
	OSDAL_DMA_CLIENT	srcClient = OSDAL_DMA_CLIENT_AUDIO_IN_FIFO;
	CSL_AUDVOC_Drv_t	*audDrv = NULL;
	OSDAL_DMA_CALLBACK dmaCB = NULL;

	Log_DebugPrintf(LOGID_SOC_AUDIO, "csl_audvoc_capture_configure:: DMA streamID = 0x%x, sampleRate =0x%x, numChannels = 0x%x, bits/sample = 0x%x numbBuffers = 0x%x, blockSize = 0x%x\n", 
					streamID, sampleRate, numChannels, bitsPerSample, numBlocks, blockSize);

	if (numChannels == AUDIO_CHANNEL_STEREO)
	{
		dataWidth = OSDAL_DMA_DATA_SIZE_32BIT;
	}

	audDrv = GetDriverByType (streamID);

	if (audDrv == NULL)
		return RESULT_ERROR;	

	audDrv->dmaCB = csl_audio_capture_cb;
	if (streamID == CSL_AUDVOC_STREAM_AUDIO)
	{
		dmaCB = (OSDAL_DMA_CALLBACK)AUDIO_DMA_CB;
	}
	else if (streamID == CSL_AUDVOC_STREAM_BTW)
	{
		dmaCB = (OSDAL_DMA_CALLBACK)BTW_DMA_CB;
		srcClient = OSDAL_DMA_CLIENT_AUDIO_WB_MIXERTAP;
	}
	if ( ConfigDMA (audDrv->dmaCH, ringBuffer, numBlocks, blockSize, srcClient, dataWidth, dmaCB) != RESULT_OK)
	{
		// do clean up
	}

	return RESULT_OK;
}