|
@@ -2,7 +2,9 @@
|
|
|
//
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
+#ifndef _CRT_SECURE_NO_WARNINGS
|
|
|
#define _CRT_SECURE_NO_WARNINGS
|
|
|
+#endif
|
|
|
|
|
|
#include "libaudiorender.h"
|
|
|
#include "../../rvcmediacommon/rvc_media_common.h"
|
|
@@ -75,19 +77,19 @@ void AudioRenderImpl::LogRenderInfo()
|
|
|
uConvertRatio = (m_pwfx->nSamplesPerSec*m_pwfx->nChannels*m_pwfx->wBitsPerSample)/(m_frame_format->samplespersec*m_frame_format->nchannels*m_frame_format->bitspersample);
|
|
|
}
|
|
|
}
|
|
|
- RenderLog("current speaker render audio convert ratio is %d.", uConvertRatio);
|
|
|
+ RenderLog(AUDIORENDER_LOG_DEBUG, "current speaker render audio convert ratio is %d.", uConvertRatio);
|
|
|
|
|
|
eSpeakerSamplingDepthRate eSampleType = GetSpeakerSampleRate(m_pwfx->wBitsPerSample, m_pwfx->nSamplesPerSec);
|
|
|
- RenderLog("Speaker Sample Type is %d.", eSampleType);
|
|
|
+ RenderLog(AUDIORENDER_LOG_DEBUG, "Speaker Sample Type is %d.", eSampleType);
|
|
|
}
|
|
|
|
|
|
-void AudioRenderImpl::RenderLog( const char *fmt, ... )
|
|
|
+void AudioRenderImpl::RenderLog(audiorender_loglevel elevel, const char *fmt, ... )
|
|
|
{
|
|
|
if (m_audiorender_cb.debug){
|
|
|
va_list arg;
|
|
|
va_start(arg, fmt);
|
|
|
if (*m_audiorender_cb.debug){
|
|
|
- (*m_audiorender_cb.debug)(m_audiorender_cb.user_data, fmt, arg);
|
|
|
+ (*m_audiorender_cb.debug)(elevel, m_audiorender_cb.user_data, fmt, arg);
|
|
|
}
|
|
|
va_end(arg);
|
|
|
}
|
|
@@ -189,8 +191,8 @@ int AudioRenderImpl::StartRender(int iQueue, void* pFrameformat, const char* pSw
|
|
|
goto error;
|
|
|
}
|
|
|
else{
|
|
|
- RenderLog("speaker render format is %0x, channels is %d, samples rate is %d, buffer size is %d, block size of data is %d.",m_pwfx->wFormatTag, m_pwfx->nChannels, m_pwfx->nSamplesPerSec, m_pwfx->nAvgBytesPerSec, m_pwfx->nBlockAlign);
|
|
|
- RenderLog("destination audio frame format is %d, samples rate is %d, bits per sample is %d, channels number is %d.", m_frame_format->format, m_frame_format->samplespersec, m_frame_format->bitspersample, m_frame_format->nchannels);
|
|
|
+ RenderLog(AUDIORENDER_LOG_DEBUG, "speaker render format is %0x, channels is %d, samples rate is %d, buffer size is %d, block size of data is %d.",m_pwfx->wFormatTag, m_pwfx->nChannels, m_pwfx->nSamplesPerSec, m_pwfx->nAvgBytesPerSec, m_pwfx->nBlockAlign);
|
|
|
+ RenderLog(AUDIORENDER_LOG_DEBUG, "destination audio frame format is %d, samples rate is %d, bits per sample is %d, channels number is %d.", m_frame_format->format, m_frame_format->samplespersec, m_frame_format->bitspersample, m_frame_format->nchannels);
|
|
|
}
|
|
|
|
|
|
if (!AdjustFormatTo16Bits(m_pwfx)){
|
|
@@ -341,7 +343,7 @@ int AudioRenderImpl::InitQueueInfo(int iQueue)
|
|
|
m_audio_cap = new Clibaudioqueue(pQueueName);
|
|
|
if (NULL != m_audio_cap){
|
|
|
iRet = 0;
|
|
|
- RenderLog("audio render insert queue name is %s.", pQueueName);
|
|
|
+ RenderLog(AUDIORENDER_LOG_DEBUG, "audio render insert queue name is %s.", pQueueName);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -373,7 +375,7 @@ uint32_t AudioRenderImpl::TranslateBuffer2DestFrameFormat(spx_int16_t* pOutAudio
|
|
|
memcpy(pSingleChannelBuf, pCbBuffer, uBufferLen);
|
|
|
}
|
|
|
else{
|
|
|
- RenderLog("not support single channel convert to double channels.");
|
|
|
+ RenderLog(AUDIORENDER_LOG_INFO, "not support single channel convert to double channels.");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -421,15 +423,15 @@ void AudioRenderImpl::RenderFunc()
|
|
|
|
|
|
st = speex_resampler_init_frac(1, m_pwfx->nSamplesPerSec, m_frame_format->samplespersec, m_pwfx->nSamplesPerSec, m_frame_format->samplespersec, 0, &err);
|
|
|
|
|
|
- while (TRUE){
|
|
|
- dwWaitResult = WaitForMultipleObjects(sizeof(waitArray) / sizeof(waitArray[0]), waitArray, FALSE, INFINITE);
|
|
|
+ while (true){
|
|
|
+ dwWaitResult = WaitForMultipleObjects(sizeof(waitArray) / sizeof(waitArray[0]), waitArray, false, INFINITE);
|
|
|
if (WAIT_OBJECT_0 == dwWaitResult) {
|
|
|
- RenderLog("%s","exit circle for set event stop.");
|
|
|
+ RenderLog(AUDIORENDER_LOG_DEBUG, "exit circle for set event stop.");
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
if (WAIT_OBJECT_0 + 1 != dwWaitResult){
|
|
|
- RenderLog("%s","exit circle for time wake up.");
|
|
|
+ RenderLog(AUDIORENDER_LOG_DEBUG, "exit circle for time wake up.");
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -461,9 +463,9 @@ void AudioRenderImpl::RenderFunc()
|
|
|
if (0 != nNumFramesToRead){
|
|
|
uIndex = TranslateBuffer2DestFrameFormat((spx_int16_t*)((char*)OutAudioBuffer+uIndex), &uValidAudioLen, uLeftBufferLen, pData, nNumFramesToRead*m_pwfx->nBlockAlign, st, m_frame_format);
|
|
|
uLeftBufferLen -= uValidAudioLen;
|
|
|
- //Debug("translate valid audio len is %d,left buffer len is %d.", uValidAudioLen, uLeftBufferLen);
|
|
|
+ //RenderLog(AUDIORENDER_LOG_DEBUG, "translate valid audio len is %d,left buffer len is %d.", uValidAudioLen, uLeftBufferLen);
|
|
|
if (uLeftBufferLen <= RVC_AUDIO_BUFFER_LEN - m_frame_format->framesize){
|
|
|
- //Debug("audio len = %d.", RVC_AUDIO_BUFFER_LEN - uLeftBufferLen);
|
|
|
+ //RenderLog(AUDIORENDER_LOG_DEBUG, "audio len = %d.", RVC_AUDIO_BUFFER_LEN - uLeftBufferLen);
|
|
|
if (m_audio_cap){
|
|
|
audio_frame framedata;
|
|
|
framedata.bitspersample = m_frame_format->bitspersample;
|
|
@@ -476,11 +478,11 @@ void AudioRenderImpl::RenderFunc()
|
|
|
bool bRet = m_audio_cap->InsertAudio(&framedata);
|
|
|
if (bRet){
|
|
|
if (0 == framedata.iseriesnumber % 1000){
|
|
|
- RenderLog("speaker audio[%d] InsertAudio success.", framedata.iseriesnumber);
|
|
|
+ RenderLog(AUDIORENDER_LOG_DEBUG, "speaker audio[%d] InsertAudio success.", framedata.iseriesnumber);
|
|
|
}
|
|
|
}
|
|
|
else{
|
|
|
- RenderLog("%s","speaker audio InsertAudio failed.");
|
|
|
+ RenderLog(AUDIORENDER_LOG_INFO, "speaker audio InsertAudio failed.");
|
|
|
}
|
|
|
|
|
|
if (m_bRecordPCM){
|
|
@@ -495,7 +497,6 @@ void AudioRenderImpl::RenderFunc()
|
|
|
}
|
|
|
else{
|
|
|
uValidAudioLen = 0;
|
|
|
- //Debug("continue next capture.");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -514,9 +515,9 @@ void AudioRenderImpl::RenderFunc()
|
|
|
}
|
|
|
|
|
|
|
|
|
-BOOL AudioRenderImpl::AdjustFormatTo16Bits(WAVEFORMATEX *pwfx)
|
|
|
+bool AudioRenderImpl::AdjustFormatTo16Bits(WAVEFORMATEX *pwfx)
|
|
|
{
|
|
|
- BOOL bRet = FALSE;
|
|
|
+ bool bRet = false;
|
|
|
|
|
|
if (NULL != pwfx){
|
|
|
if (pwfx->wFormatTag == WAVE_FORMAT_IEEE_FLOAT){
|
|
@@ -524,7 +525,7 @@ BOOL AudioRenderImpl::AdjustFormatTo16Bits(WAVEFORMATEX *pwfx)
|
|
|
pwfx->wBitsPerSample = 16;
|
|
|
pwfx->nBlockAlign = pwfx->nChannels * pwfx->wBitsPerSample / 8;
|
|
|
pwfx->nAvgBytesPerSec = pwfx->nBlockAlign * pwfx->nSamplesPerSec;
|
|
|
- bRet = TRUE;
|
|
|
+ bRet = true;
|
|
|
}
|
|
|
else if (pwfx->wFormatTag == WAVE_FORMAT_EXTENSIBLE){
|
|
|
PWAVEFORMATEXTENSIBLE pEx = reinterpret_cast<PWAVEFORMATEXTENSIBLE>(pwfx);
|
|
@@ -534,7 +535,7 @@ BOOL AudioRenderImpl::AdjustFormatTo16Bits(WAVEFORMATEX *pwfx)
|
|
|
pwfx->wBitsPerSample = 16;
|
|
|
pwfx->nBlockAlign = pwfx->nChannels * pwfx->wBitsPerSample / 8;
|
|
|
pwfx->nAvgBytesPerSec = pwfx->nBlockAlign * pwfx->nSamplesPerSec;
|
|
|
- bRet = TRUE;
|
|
|
+ bRet = true;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -544,7 +545,7 @@ BOOL AudioRenderImpl::AdjustFormatTo16Bits(WAVEFORMATEX *pwfx)
|
|
|
|
|
|
int AudioRenderImpl::StopRender()
|
|
|
{
|
|
|
- RenderLog("%s","stop audio render.");
|
|
|
+ RenderLog(AUDIORENDER_LOG_DEBUG, "stop audio render.");
|
|
|
|
|
|
m_bRecordPCM = false;
|
|
|
memset(m_strFilePathName, 0, MAX_PATH);
|
|
@@ -554,7 +555,7 @@ int AudioRenderImpl::StopRender()
|
|
|
}
|
|
|
|
|
|
SetEvent(m_hEventStop);
|
|
|
- RenderLog("%s","m_hEventStop SetEvent.");
|
|
|
+ RenderLog(AUDIORENDER_LOG_DEBUG, "m_hEventStop SetEvent.");
|
|
|
WaitForSingleObject(m_hThread, -1);
|
|
|
|
|
|
if (m_audio_cap){
|