Initial setup for CLion
This commit is contained in:
176
MediaClient/media/audio_capture_android.cpp
Normal file
176
MediaClient/media/audio_capture_android.cpp
Normal file
@@ -0,0 +1,176 @@
|
||||
/***************************************************************************************
|
||||
*
|
||||
* IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
|
||||
*
|
||||
* By downloading, copying, installing or using the software you agree to this license.
|
||||
* If you do not agree to this license, do not download, install,
|
||||
* copy or use the software.
|
||||
*
|
||||
* Copyright (C) 2014-2024, Happytimesoft Corporation, all rights reserved.
|
||||
*
|
||||
* Redistribution and use in binary forms, with or without modification, are permitted.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software distributed
|
||||
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
****************************************************************************************/
|
||||
|
||||
#include "sys_inc.h"
|
||||
#include "lock.h"
|
||||
#include "audio_capture_android.h"
|
||||
|
||||
|
||||
void dataCallback(uint8 * pdata, int len, void * puser)
|
||||
{
|
||||
CAAudioCapture * pthis = (CAAudioCapture *) puser;
|
||||
|
||||
pthis->dataCallback(pdata, len);
|
||||
}
|
||||
|
||||
CAAudioCapture::CAAudioCapture()
|
||||
: CAudioCapture()
|
||||
, m_pInput(0)
|
||||
{
|
||||
}
|
||||
|
||||
CAAudioCapture::~CAAudioCapture()
|
||||
{
|
||||
stopCapture();
|
||||
}
|
||||
|
||||
CAudioCapture * CAAudioCapture::getInstance(int devid)
|
||||
{
|
||||
if (devid < 0 || devid >= MAX_AUDIO_DEV_NUMS)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sys_os_mutex_enter(m_pInstMutex);
|
||||
|
||||
if (NULL == m_pInstance[devid])
|
||||
{
|
||||
m_pInstance[devid] = new CAAudioCapture;
|
||||
if (m_pInstance[devid])
|
||||
{
|
||||
m_pInstance[devid]->m_nRefCnt++;
|
||||
m_pInstance[devid]->m_nDevIndex = devid;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pInstance[devid]->m_nRefCnt++;
|
||||
}
|
||||
|
||||
sys_os_mutex_leave(m_pInstMutex);
|
||||
|
||||
return m_pInstance[devid];
|
||||
}
|
||||
|
||||
int CAAudioCapture::getDeviceNums()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
void CAAudioCapture::listDevice()
|
||||
{
|
||||
}
|
||||
|
||||
int CAAudioCapture::getDeviceIndex(const char * name)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL CAAudioCapture::getDeviceName(int index, char * name, int namesize)
|
||||
{
|
||||
strncpy(name, "Default", namesize);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CAAudioCapture::initCapture(int codec, int samplerate, int channels, int bitrate)
|
||||
{
|
||||
CLock lock(m_pMutex);
|
||||
|
||||
if (m_bInited)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
m_nChannels = channels;
|
||||
m_nSampleRate = samplerate;
|
||||
m_nBitrate = bitrate;
|
||||
|
||||
AudioEncoderParam params;
|
||||
memset(¶ms, 0, sizeof(params));
|
||||
|
||||
params.SrcChannels = 2;
|
||||
params.SrcSamplefmt = AV_SAMPLE_FMT_S16;
|
||||
params.SrcSamplerate = samplerate;
|
||||
params.DstChannels = channels;
|
||||
params.DstSamplefmt = AV_SAMPLE_FMT_S16;
|
||||
params.DstSamplerate = samplerate;
|
||||
params.DstBitrate = bitrate;
|
||||
params.DstCodec = codec;
|
||||
|
||||
if (m_encoder.init(¶ms) == FALSE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
m_bInited = TRUE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CAAudioCapture::startCapture()
|
||||
{
|
||||
CLock lock(m_pMutex);
|
||||
|
||||
if (!m_bInited)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (m_pInput)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
m_pInput = new GlesInput();
|
||||
if (NULL == m_pInput)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
m_pInput->setCallback(::dataCallback, this);
|
||||
if (!m_pInput->start(m_nSampleRate))
|
||||
{
|
||||
log_print(HT_LOG_ERR, "%s, start audio recoding failed\r\n", __FUNCTION__);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CAAudioCapture::stopCapture(void)
|
||||
{
|
||||
CLock lock(m_pMutex);
|
||||
|
||||
if (m_pInput)
|
||||
{
|
||||
delete m_pInput;
|
||||
m_pInput = NULL;
|
||||
}
|
||||
|
||||
m_bInited = FALSE;
|
||||
}
|
||||
|
||||
void CAAudioCapture::dataCallback(uint8 * pdata, int len)
|
||||
{
|
||||
m_encoder.encode(pdata, len);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user