38 #include <sys/socket.h>
47 #if defined(USE_AC_RMF)
48 #include "rmfAudioCapture.h"
55 #include "audiocapturemgr_iarm.h"
58 #include "btrMgr_logger.h"
59 #ifdef RDK_LOGGER_ENABLED
60 int b_rdk_logger_enabled = 0;
71 #define IARM_BUS_BTRMGR_NAME "BTRMgrBus"
74 #if defined(BUILD_SKY)
75 #define TV_CUSTOM_DELAY_COMP 1
80 typedef enum _eBTRMgrACAcmDCOp {
92 #if defined(USE_AC_RMF)
93 RMF_AudioCaptureHandle hBTRMgrRmfAcHdl;
100 GThread* pBtrMgrAcmDataCapGThread;
101 GAsyncQueue* pBtrMgrAcmDataCapGAOpQueue;
102 session_id_t hBtrMgrIarmAcmHdl;
106 char pcBtrMgrAcmSockPath[MAX_OUTPUT_PATH_LEN];
107 int i32BtrMgrAcmDCSockFd;
108 int i32BtrMgrAcmExternalIARMMode;
111 tBTRMgrAcType pcBTRMgrAcType;
113 fPtr_BTRMgr_AC_DataReadyCb fpcBBtrMgrAcDataReady;
114 void* vpBtrMgrAcDataReadyUserData;
116 fPtr_BTRMgr_AC_StatusCb fpcBBtrMgrAcStatus;
117 void* vpBtrMgrAcStatusUserData;
125 static gpointer btrMgr_AC_acmDataCapture_InTask (gpointer user_data);
129 #if defined(USE_AC_RMF)
130 static rmf_Error btrMgr_AC_rmfBufferReadyCb (
void* pContext,
void* pInDataBuf,
unsigned int inBytesToEncode);
131 static rmf_Error btrMgr_AC_rmfStatusChangeCb (
void* pContext);
140 btrMgr_AC_acmDataCapture_InTask (
144 gint64 li64usTimeout = 0;
145 guint16 lui16msTimeout = 500;
146 eBTRMgrACAcmDCOp leBtrMgrAcmDCPrvOp = eBTRMgrACAcmDCUnknown;
147 eBTRMgrACAcmDCOp leBtrMgrAcmDCCurOp = eBTRMgrACAcmDCUnknown;
148 gpointer lpeBtrMgrAcmDCOp = NULL;
149 void* lpInDataBuf = NULL;
152 if (pstBtrMgrAcHdl == NULL) {
153 BTRMGRLOG_ERROR(
"Fail - eBTRMgrFailInArg\n");
157 BTRMGRLOG_DEBUG (
"Enter\n");
162 li64usTimeout = lui16msTimeout * G_TIME_SPAN_MILLISECOND;
163 if ((lpeBtrMgrAcmDCOp = g_async_queue_timeout_pop(pstBtrMgrAcHdl->pBtrMgrAcmDataCapGAOpQueue, li64usTimeout)) != NULL) {
164 leBtrMgrAcmDCCurOp = *((eBTRMgrACAcmDCOp*)lpeBtrMgrAcmDCOp);
165 g_free(lpeBtrMgrAcmDCOp);
166 BTRMGRLOG_DEBUG (
"g_async_queue_timeout_pop %d\n", leBtrMgrAcmDCCurOp);
172 if (leBtrMgrAcmDCPrvOp != leBtrMgrAcmDCCurOp) {
173 leBtrMgrAcmDCPrvOp = leBtrMgrAcmDCCurOp;
176 if (leBtrMgrAcmDCCurOp == eBTRMgrACAcmDCStart) {
177 struct sockaddr_un lstBtrMgrAcmDCSockAddr;
178 int li32BtrMgrAcmDCSockFd = -1;
179 int li32BtrMgrAcmDCSockFlags;
183 BTRMGRLOG_INFO (
"eBTRMgrACAcmDCStart\n");
185 if (!strlen(pstBtrMgrAcHdl->pcBtrMgrAcmSockPath)) {
186 BTRMGRLOG_ERROR(
"eBTRMgrACAcmDCStart - Invalid Socket Path\n");
189 BTRMGRLOG_DEBUG (
"pcBtrMgrAcmSockPath = %s\n", pstBtrMgrAcHdl->pcBtrMgrAcmSockPath);
191 lstBtrMgrAcmDCSockAddr.sun_family = AF_UNIX;
192 strncpy(lstBtrMgrAcmDCSockAddr.sun_path, pstBtrMgrAcHdl->pcBtrMgrAcmSockPath,
193 strlen(pstBtrMgrAcHdl->pcBtrMgrAcmSockPath) < (
sizeof(lstBtrMgrAcmDCSockAddr.sun_path) - 1) ?
194 strlen(pstBtrMgrAcHdl->pcBtrMgrAcmSockPath) + 1 :
sizeof(lstBtrMgrAcmDCSockAddr.sun_path));
197 if ((li32BtrMgrAcmDCSockFd = socket(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK, 0)) == -1) {
199 BTRMGRLOG_ERROR(
"eBTRMgrACAcmDCStart - Unable to create socket :FAILURE - %d\n", lerrno);
202 if ((li32BtrMgrAcmDCSockFd != -1) &&
203 ((li32BtrMgrAcmDCSockFlags = fcntl(li32BtrMgrAcmDCSockFd, F_GETFL, 0)) != -1) &&
204 (fcntl(li32BtrMgrAcmDCSockFd, F_SETFL, li32BtrMgrAcmDCSockFlags | O_NONBLOCK) != -1)) {
205 BTRMGRLOG_DEBUG(
"eBTRMgrACAcmDCStart - Socket O_NONBLOCK : SUCCESS\n");
208 if ((li32BtrMgrAcmDCSockFd != -1) &&
209 (connect(li32BtrMgrAcmDCSockFd, (
const struct sockaddr*)&lstBtrMgrAcmDCSockAddr,
sizeof(lstBtrMgrAcmDCSockAddr)) == -1)) {
211 BTRMGRLOG_ERROR(
"eBTRMgrACAcmDCStart - Unable to connect socket :FAILURE - %d\n", lerrno);
212 if( li32BtrMgrAcmDCSockFd > 0 ) {
213 close(li32BtrMgrAcmDCSockFd);
214 li32BtrMgrAcmDCSockFd = -1;
220 if (!(lpInDataBuf = malloc(pstBtrMgrAcHdl->pstBtrMgrAcmSettings->threshold))) {
221 BTRMGRLOG_ERROR(
"eBTRMgrACAcmDCStart - Unable to alloc\n");
227 pstBtrMgrAcHdl->i32BtrMgrAcmDCSockFd = li32BtrMgrAcmDCSockFd;
228 BTRMGRLOG_INFO (
"eBTRMgrACAcmDCStart - Read socket : %d - %d\n", pstBtrMgrAcHdl->i32BtrMgrAcmDCSockFd, lerrno);
231 else if (leBtrMgrAcmDCCurOp == eBTRMgrACAcmDCStop) {
233 BTRMGRLOG_INFO (
"eBTRMgrACAcmDCStop\n");
235 if (pstBtrMgrAcHdl->i32BtrMgrAcmDCSockFd == -1) {
236 BTRMGRLOG_ERROR(
"eBTRMgrACAcmDCStop :FAILURE\n");
240 IARM_Result_t leBtrMgIarmAcmRet = IARM_RESULT_SUCCESS;
244 int li32InDataBufBytesRead = 0;
245 unsigned int lui32EmptyDataIdx = 8;
248 li32InDataBufBytesRead = (int)read( pstBtrMgrAcHdl->i32BtrMgrAcmDCSockFd,
250 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->threshold);
251 }
while ((li32InDataBufBytesRead > 0) && --lui32EmptyDataIdx);
257 if (pstBtrMgrAcHdl->i32BtrMgrAcmDCSockFd > 0) {
258 close(pstBtrMgrAcHdl->i32BtrMgrAcmDCSockFd);
259 pstBtrMgrAcHdl->i32BtrMgrAcmDCSockFd = -1;
263 lstBtrMgrIarmAcmArgs.session_id = pstBtrMgrAcHdl->hBtrMgrIarmAcmHdl;
265 if ((leBtrMgIarmAcmRet =
IARM_Bus_Call (IARMBUS_AUDIOCAPTUREMGR_NAME,
266 IARMBUS_AUDIOCAPTUREMGR_STOP,
267 (
void *)&lstBtrMgrIarmAcmArgs,
268 sizeof(lstBtrMgrIarmAcmArgs))) != IARM_RESULT_SUCCESS) {
269 BTRMGRLOG_ERROR(
"IARMBUS_AUDIOCAPTUREMGR_STOP:Return Status = %d\n", leBtrMgIarmAcmRet);
272 if (lstBtrMgrIarmAcmArgs.result != 0) {
273 BTRMGRLOG_ERROR(
"lstBtrMgrIarmAcmArgs:Return Status = %d\n", lstBtrMgrIarmAcmArgs.result);
279 else if (leBtrMgrAcmDCCurOp == eBTRMgrACAcmDCPause) {
280 lui16msTimeout = 500;
281 BTRMGRLOG_INFO (
"eBTRMgrACAcmDCPause\n");
285 else if (leBtrMgrAcmDCCurOp == eBTRMgrACAcmDCResume) {
287 BTRMGRLOG_INFO (
"eBTRMgrACAcmDCResume\n");
291 else if (leBtrMgrAcmDCCurOp == eBTRMgrACAcmDCExit) {
292 BTRMGRLOG_INFO (
"eBTRMgrACAcmDCExit\n");
296 else if (leBtrMgrAcmDCCurOp == eBTRMgrACAcmDCUnknown) {
305 if (leBtrMgrAcmDCCurOp == eBTRMgrACAcmDCStart) {
306 int li32InDataBufBytesRead = 0;
308 if((pstBtrMgrAcHdl->i32BtrMgrAcmDCSockFd >= 0) && (lpInDataBuf)) {
309 li32InDataBufBytesRead = (int)read( pstBtrMgrAcHdl->i32BtrMgrAcmDCSockFd,
311 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->threshold);
315 if (pstBtrMgrAcHdl->fpcBBtrMgrAcDataReady && (li32InDataBufBytesRead > 0)) {
316 if (pstBtrMgrAcHdl->fpcBBtrMgrAcDataReady(lpInDataBuf,
317 li32InDataBufBytesRead,
318 pstBtrMgrAcHdl->vpBtrMgrAcDataReadyUserData) != eBTRMgrSuccess) {
319 BTRMGRLOG_ERROR(
"AC Data Ready Callback Failed\n");
324 else if (leBtrMgrAcmDCCurOp == eBTRMgrACAcmDCStop) {
328 else if (leBtrMgrAcmDCCurOp == eBTRMgrACAcmDCPause) {
331 else if (leBtrMgrAcmDCCurOp == eBTRMgrACAcmDCResume) {
334 else if (leBtrMgrAcmDCCurOp == eBTRMgrACAcmDCExit) {
338 else if (leBtrMgrAcmDCCurOp == eBTRMgrACAcmDCUnknown) {
345 if(lpInDataBuf != NULL) {
348 BTRMGRLOG_DEBUG (
"Exit\n");
358 tBTRMgrAcHdl* phBTRMgrAcHdl,
359 tBTRMgrAcType api8BTRMgrAcType
364 #if defined(USE_AC_RMF)
365 rmf_Error leBtrMgrRmfAcRet = RMF_SUCCESS;
366 RMF_AudioCaptureType lrmfAcType;
371 IARM_Result_t leBtrMgIarmAcmRet = IARM_RESULT_SUCCESS;
372 const char* lpcProcessName = IARM_BUS_BTRMGR_NAME;
376 BTRMGRLOG_ERROR(
"Unable to allocate memory\n");
377 return eBTRMgrInitFailure;
380 #if defined(USE_AC_RMF)
381 if ((api8BTRMgrAcType != NULL) &&
382 (!strncmp(api8BTRMgrAcType, BTRMGR_AC_TYPE_AUXILIARY, strlen(BTRMGR_AC_TYPE_AUXILIARY)))) {
383 lrmfAcType = RMF_AC_TYPE_AUXILIARY;
385 BTRMGRLOG_ERROR(
"RMF_AudioCapture_Open:Return Status = %d\n", leBtrMgrRmfAcRet);
386 leBtrMgrAcRet = eBTRMgrInitFailure;
392 if ((api8BTRMgrAcType == NULL) ||
393 (!strncmp(api8BTRMgrAcType, BTRMGR_AC_TYPE_PRIMARY, strlen(BTRMGR_AC_TYPE_PRIMARY)))) {
394 memset(pstBtrMgrAcHdl->pcBtrMgrAcmSockPath,
'\0', MAX_OUTPUT_PATH_LEN);
395 pstBtrMgrAcHdl->i32BtrMgrAcmDCSockFd = -1;
398 BTRMGRLOG_TRACE(
"Error in IARM_Bus_IsConnected\n");
401 if (!pstBtrMgrAcHdl->i32BtrMgrAcmExternalIARMMode) {
407 pstBtrMgrAcHdl->hBtrMgrIarmAcmHdl = -1;
413 lstBtrMgrIarmAcmArgs.details.arg_open.source = 0;
414 lstBtrMgrIarmAcmArgs.details.arg_open.output_type = REALTIME_SOCKET;
416 if ((leBtrMgIarmAcmRet =
IARM_Bus_Call (IARMBUS_AUDIOCAPTUREMGR_NAME,
417 IARMBUS_AUDIOCAPTUREMGR_OPEN,
418 (
void *)&lstBtrMgrIarmAcmArgs,
419 sizeof(lstBtrMgrIarmAcmArgs))) != IARM_RESULT_SUCCESS) {
420 BTRMGRLOG_ERROR(
"IARMBUS_AUDIOCAPTUREMGR_OPEN:Return Status = %d\n", leBtrMgIarmAcmRet);
421 leBtrMgrAcRet = eBTRMgrInitFailure;
424 if ((leBtrMgrAcRet != eBTRMgrSuccess) || (lstBtrMgrIarmAcmArgs.result != 0)) {
425 BTRMGRLOG_ERROR(
"lstBtrMgrIarmAcmArgs:Return Status = %d\n", lstBtrMgrIarmAcmArgs.result);
426 leBtrMgrAcRet = eBTRMgrInitFailure;
429 pstBtrMgrAcHdl->hBtrMgrIarmAcmHdl = lstBtrMgrIarmAcmArgs.session_id;
431 if (((pstBtrMgrAcHdl->pBtrMgrAcmDataCapGAOpQueue = g_async_queue_new()) == NULL) ||
432 ((pstBtrMgrAcHdl->pBtrMgrAcmDataCapGThread = g_thread_new(
"btrMgr_AC_acmDataCapture_InTask", btrMgr_AC_acmDataCapture_InTask, pstBtrMgrAcHdl)) == NULL)) {
433 leBtrMgrAcRet = eBTRMgrInitFailure;
436 BTRMGRLOG_DEBUG (
"btrMgr_AC_acmDataCapture_InTask : %p\n", pstBtrMgrAcHdl->pBtrMgrAcmDataCapGThread);
439 #elif defined(USE_AC_RMF)
440 else if ((api8BTRMgrAcType == NULL) ||
441 (!strncmp(api8BTRMgrAcType, BTRMGR_AC_TYPE_PRIMARY, strlen(BTRMGR_AC_TYPE_PRIMARY)))) {
442 lrmfAcType = RMF_AC_TYPE_PRIMARY;
444 BTRMGRLOG_ERROR(
"RMF_AudioCapture_Open:Return Status = %d\n", leBtrMgrRmfAcRet);
445 leBtrMgrAcRet = eBTRMgrInitFailure;
450 if (api8BTRMgrAcType)
451 pstBtrMgrAcHdl->pcBTRMgrAcType = g_strndup(api8BTRMgrAcType, 32);
453 if (leBtrMgrAcRet != eBTRMgrSuccess) {
455 return leBtrMgrAcRet;
458 *phBTRMgrAcHdl = (tBTRMgrAcHdl)pstBtrMgrAcHdl;
460 return leBtrMgrAcRet;
466 tBTRMgrAcHdl hBTRMgrAcHdl
471 #if defined(USE_AC_RMF)
472 rmf_Error leBtrMgrRmfAcRet = RMF_SUCCESS;
477 IARM_Result_t leBtrMgIarmAcmRet = IARM_RESULT_SUCCESS;
480 if (pstBtrMgrAcHdl == NULL) {
481 return eBTRMgrNotInitialized;
484 #if defined(USE_AC_RMF)
485 if ((pstBtrMgrAcHdl->pcBTRMgrAcType != NULL) &&
486 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_AUXILIARY, strlen(BTRMGR_AC_TYPE_AUXILIARY))) &&
487 (pstBtrMgrAcHdl->hBTRMgrRmfAcHdl != NULL)) {
489 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrRmfAcRet);
490 leBtrMgrAcRet = eBTRMgrFailure;
493 pstBtrMgrAcHdl->hBTRMgrRmfAcHdl = NULL;
498 if ((pstBtrMgrAcHdl->pcBTRMgrAcType == NULL) ||
499 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_PRIMARY, strlen(BTRMGR_AC_TYPE_PRIMARY)))) {
500 if (pstBtrMgrAcHdl->pBtrMgrAcmDataCapGThread) {
501 gpointer lpeBtrMgrAcmDCOp = NULL;
502 if ((lpeBtrMgrAcmDCOp = g_malloc0(
sizeof(eBTRMgrACAcmDCOp))) != NULL) {
503 *((eBTRMgrACAcmDCOp*)lpeBtrMgrAcmDCOp) = eBTRMgrACAcmDCExit;
504 g_async_queue_push(pstBtrMgrAcHdl->pBtrMgrAcmDataCapGAOpQueue, lpeBtrMgrAcmDCOp);
505 BTRMGRLOG_DEBUG (
"g_async_queue_push: eBTRMgrACAcmDCExit\n");
509 BTRMGRLOG_ERROR(
"pBtrMgrAcmDataCapGThread: eBTRMgrACAcmDCExit - FAILED\n");
510 leBtrMgrAcRet = eBTRMgrFailure;
513 if (pstBtrMgrAcHdl->pBtrMgrAcmDataCapGThread) {
514 g_thread_join(pstBtrMgrAcHdl->pBtrMgrAcmDataCapGThread);
515 pstBtrMgrAcHdl->pBtrMgrAcmDataCapGThread = NULL;
518 if (pstBtrMgrAcHdl->pBtrMgrAcmDataCapGAOpQueue) {
519 g_async_queue_unref(pstBtrMgrAcHdl->pBtrMgrAcmDataCapGAOpQueue);
520 pstBtrMgrAcHdl->pBtrMgrAcmDataCapGAOpQueue = NULL;
525 lstBtrMgrIarmAcmArgs.session_id = pstBtrMgrAcHdl->hBtrMgrIarmAcmHdl;
527 if ((lstBtrMgrIarmAcmArgs.session_id != 0) &&
528 ((leBtrMgIarmAcmRet =
IARM_Bus_Call (IARMBUS_AUDIOCAPTUREMGR_NAME,
529 IARMBUS_AUDIOCAPTUREMGR_CLOSE,
530 (
void *)&lstBtrMgrIarmAcmArgs,
531 sizeof(lstBtrMgrIarmAcmArgs))) != IARM_RESULT_SUCCESS)) {
532 BTRMGRLOG_ERROR(
"IARMBUS_AUDIOCAPTUREMGR_CLOSE:Return Status = %d\n", leBtrMgIarmAcmRet);
533 leBtrMgrAcRet = eBTRMgrFailure;
536 if ((leBtrMgrAcRet != eBTRMgrSuccess) || (lstBtrMgrIarmAcmArgs.result != 0)) {
537 BTRMGRLOG_ERROR(
"lstBtrMgrIarmAcmArgs:Return Status = %d\n", lstBtrMgrIarmAcmArgs.result);
538 leBtrMgrAcRet = eBTRMgrFailure;
543 pstBtrMgrAcHdl->hBtrMgrIarmAcmHdl = -1;
546 if (!pstBtrMgrAcHdl->i32BtrMgrAcmExternalIARMMode) {
551 pstBtrMgrAcHdl->i32BtrMgrAcmDCSockFd = -1;
552 memset(pstBtrMgrAcHdl->pcBtrMgrAcmSockPath,
'\0', MAX_OUTPUT_PATH_LEN);
554 #elif defined(USE_AC_RMF)
555 else if (((pstBtrMgrAcHdl->pcBTRMgrAcType == NULL) ||
556 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_PRIMARY, strlen(BTRMGR_AC_TYPE_PRIMARY)))) &&
557 (pstBtrMgrAcHdl->hBTRMgrRmfAcHdl != NULL)) {
559 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrRmfAcRet);
560 leBtrMgrAcRet = eBTRMgrFailure;
563 pstBtrMgrAcHdl->hBTRMgrRmfAcHdl = NULL;
567 if (pstBtrMgrAcHdl->pcBTRMgrAcType) {
568 g_free(pstBtrMgrAcHdl->pcBTRMgrAcType);
569 pstBtrMgrAcHdl->pcBTRMgrAcType = NULL;
572 g_free((
void*)pstBtrMgrAcHdl);
573 pstBtrMgrAcHdl = NULL;
575 return leBtrMgrAcRet;
581 tBTRMgrAcHdl hBTRMgrAcHdl,
587 #if defined(USE_AC_RMF)
588 rmf_Error leBtrMgrRmfAcRet = RMF_SUCCESS;
593 IARM_Result_t leBtrMgIarmAcmRet = IARM_RESULT_SUCCESS;
596 if (pstBtrMgrAcHdl == NULL) {
597 return eBTRMgrNotInitialized;
600 if ((apstBtrMgrAcOutASettings == NULL) || (apstBtrMgrAcOutASettings->pstBtrMgrOutCodecInfo == NULL)) {
601 return eBTRMgrFailInArg;
605 #if defined(USE_AC_RMF)
606 if ((pstBtrMgrAcHdl->pcBTRMgrAcType != NULL) &&
607 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_AUXILIARY, strlen(BTRMGR_AC_TYPE_AUXILIARY)))) {
609 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrRmfAcRet);
610 leBtrMgrAcRet = eBTRMgrFailure;
613 BTRMGRLOG_TRACE (
"Default CBBufferReady = %p\n", pstBtrMgrAcHdl->stBtrMgrRmfAcDefSettings.cbBufferReady);
614 BTRMGRLOG_TRACE (
"Default Fifosize = %d\n", (
int)pstBtrMgrAcHdl->stBtrMgrRmfAcDefSettings.fifoSize);
615 BTRMGRLOG_TRACE (
"Default Threshold = %d\n", (
int)pstBtrMgrAcHdl->stBtrMgrRmfAcDefSettings.threshold);
618 apstBtrMgrAcOutASettings->eBtrMgrOutAType = eBTRMgrATypePCM;
620 if (apstBtrMgrAcOutASettings->eBtrMgrOutAType == eBTRMgrATypePCM) {
623 switch (pstBtrMgrAcHdl->stBtrMgrRmfAcDefSettings.format) {
625 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
626 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
629 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt24bit;
630 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
633 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
634 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
637 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
638 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
641 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
642 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
645 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt24bit;
646 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChan5_1;
649 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmtUnknown;
650 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanUnknown;
653 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
654 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
658 switch (pstBtrMgrAcHdl->stBtrMgrRmfAcDefSettings.samplingFreq) {
660 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq16K;
663 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq32K;
666 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq44_1K;
669 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq48K;
672 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreqUnknown;
675 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq48K;
680 leBtrMgrAcRet = eBTRMgrFailure;
686 if ((pstBtrMgrAcHdl->pcBTRMgrAcType == NULL) ||
687 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_PRIMARY, strlen(BTRMGR_AC_TYPE_PRIMARY)))) {
689 lstBtrMgrIarmAcmArgs.session_id = pstBtrMgrAcHdl->hBtrMgrIarmAcmHdl;
691 if ((leBtrMgIarmAcmRet =
IARM_Bus_Call (IARMBUS_AUDIOCAPTUREMGR_NAME,
692 IARMBUS_AUDIOCAPTUREMGR_GET_DEFAULT_AUDIO_PROPS,
693 (
void *)&lstBtrMgrIarmAcmArgs,
694 sizeof(lstBtrMgrIarmAcmArgs))) != IARM_RESULT_SUCCESS) {
695 BTRMGRLOG_ERROR(
"IARMBUS_AUDIOCAPTUREMGR_GET_DEFAULT_AUDIO_PROPS:Return Status = %d\n", leBtrMgIarmAcmRet);
696 leBtrMgrAcRet = eBTRMgrFailure;
699 if ((leBtrMgrAcRet != eBTRMgrSuccess) || (lstBtrMgrIarmAcmArgs.result != 0)) {
700 BTRMGRLOG_ERROR(
"lstBtrMgrIarmAcmArgs:Return Status = %d\n", lstBtrMgrIarmAcmArgs.result);
701 leBtrMgrAcRet = eBTRMgrFailure;
705 if (leBtrMgrAcRet == eBTRMgrSuccess) {
706 memcpy(&pstBtrMgrAcHdl->stBtrMgrAcmDefSettings, &lstBtrMgrIarmAcmArgs.details.arg_audio_properties,
sizeof(
audio_properties_ifce_t));
708 BTRMGRLOG_TRACE (
"Default Fifosize = %d\n", (
int)pstBtrMgrAcHdl->stBtrMgrAcmDefSettings.fifo_size);
709 BTRMGRLOG_TRACE (
"Default Threshold= %d\n", (
int)pstBtrMgrAcHdl->stBtrMgrAcmDefSettings.threshold);
710 BTRMGRLOG_TRACE (
"Default DelayComp= %d\n", pstBtrMgrAcHdl->stBtrMgrAcmDefSettings.delay_compensation_ms);
713 apstBtrMgrAcOutASettings->eBtrMgrOutAType = eBTRMgrATypePCM;
715 if (apstBtrMgrAcOutASettings->eBtrMgrOutAType == eBTRMgrATypePCM) {
718 switch (pstBtrMgrAcHdl->stBtrMgrAcmDefSettings.format) {
719 case acmFormate16BitStereo:
720 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
721 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
723 case acmFormate24BitStereo:
724 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt24bit;
725 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
727 case acmFormate16BitMonoLeft:
728 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
729 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
731 case acmFormate16BitMonoRight:
732 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
733 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
735 case acmFormate16BitMono:
736 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
737 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
739 case acmFormate24Bit5_1:
740 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt24bit;
741 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChan5_1;
744 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmtUnknown;
745 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanUnknown;
748 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
749 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
753 switch (pstBtrMgrAcHdl->stBtrMgrAcmDefSettings.sampling_frequency) {
755 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq16K;
758 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq32K;
761 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq44_1K;
764 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq48K;
767 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreqUnknown;
770 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq48K;
775 leBtrMgrAcRet = eBTRMgrFailure;
779 #elif defined(USE_AC_RMF)
780 else if ((pstBtrMgrAcHdl->pcBTRMgrAcType == NULL) ||
781 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_PRIMARY, strlen(BTRMGR_AC_TYPE_PRIMARY)))) {
783 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrRmfAcRet);
784 leBtrMgrAcRet = eBTRMgrFailure;
787 BTRMGRLOG_TRACE (
"Default CBBufferReady = %p\n", pstBtrMgrAcHdl->stBtrMgrRmfAcDefSettings.cbBufferReady);
788 BTRMGRLOG_TRACE (
"Default Fifosize = %d\n", pstBtrMgrAcHdl->stBtrMgrRmfAcDefSettings.fifoSize);
789 BTRMGRLOG_TRACE (
"Default Threshold = %d\n", pstBtrMgrAcHdl->stBtrMgrRmfAcDefSettings.threshold);
792 apstBtrMgrAcOutASettings->eBtrMgrOutAType = eBTRMgrATypePCM;
794 if (apstBtrMgrAcOutASettings->eBtrMgrOutAType == eBTRMgrATypePCM) {
797 switch (pstBtrMgrAcHdl->stBtrMgrRmfAcDefSettings.format) {
799 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
800 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
803 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt24bit;
804 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
807 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
808 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
811 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
812 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
815 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
816 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
819 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt24bit;
820 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChan5_1;
823 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmtUnknown;
824 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanUnknown;
827 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
828 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
832 switch (pstBtrMgrAcHdl->stBtrMgrRmfAcDefSettings.samplingFreq) {
834 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq16K;
837 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq32K;
840 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq44_1K;
843 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq48K;
846 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreqUnknown;
849 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq48K;
854 leBtrMgrAcRet = eBTRMgrFailure;
859 return leBtrMgrAcRet;
864 tBTRMgrAcHdl hBTRMgrAcHdl,
870 #if defined(USE_AC_RMF)
871 rmf_Error leBtrMgrRmfAcRet = RMF_SUCCESS;
876 IARM_Result_t leBtrMgIarmAcmRet = IARM_RESULT_SUCCESS;
879 if (pstBtrMgrAcHdl == NULL) {
880 return eBTRMgrNotInitialized;
883 if (apstBtrMgrAcOutASettings == NULL) {
884 return eBTRMgrFailInArg;
887 #if defined(USE_AC_RMF)
888 if ((pstBtrMgrAcHdl->pcBTRMgrAcType != NULL) &&
889 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_AUXILIARY, strlen(BTRMGR_AC_TYPE_AUXILIARY)))) {
891 &pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings)) != RMF_SUCCESS) {
892 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrRmfAcRet);
893 leBtrMgrAcRet = eBTRMgrFailure;
896 BTRMGRLOG_DEBUG (
"Current CBBufferReady = %p\n", pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings.cbBufferReady);
897 BTRMGRLOG_DEBUG (
"Current Fifosize = %d\n", (
int)pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings.fifoSize);
898 BTRMGRLOG_DEBUG (
"Current Threshold = %d\n", (
int)pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings.threshold);
901 apstBtrMgrAcOutASettings->eBtrMgrOutAType = eBTRMgrATypePCM;
903 if (apstBtrMgrAcOutASettings->eBtrMgrOutAType == eBTRMgrATypePCM) {
906 switch (pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings.format) {
908 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
909 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
912 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt24bit;
913 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
916 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
917 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
920 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
921 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
924 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
925 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
928 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt24bit;
929 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChan5_1;
932 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmtUnknown;
933 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanUnknown;
936 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
937 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
941 switch (pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings.samplingFreq) {
943 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq16K;
946 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq32K;
949 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq44_1K;
952 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq48K;
955 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreqUnknown;
958 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq48K;
963 leBtrMgrAcRet = eBTRMgrFailure;
969 if ((pstBtrMgrAcHdl->pcBTRMgrAcType == NULL) ||
970 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_PRIMARY, strlen(BTRMGR_AC_TYPE_PRIMARY)))) {
972 lstBtrMgrIarmAcmArgs.session_id = pstBtrMgrAcHdl->hBtrMgrIarmAcmHdl;
974 if ((leBtrMgIarmAcmRet =
IARM_Bus_Call (IARMBUS_AUDIOCAPTUREMGR_NAME,
975 IARMBUS_AUDIOCAPTUREMGR_GET_AUDIO_PROPS,
976 (
void *)&lstBtrMgrIarmAcmArgs,
977 sizeof(lstBtrMgrIarmAcmArgs))) != IARM_RESULT_SUCCESS) {
978 BTRMGRLOG_ERROR(
"IARMBUS_AUDIOCAPTUREMGR_GET_AUDIO_PROPS:Return Status = %d\n", leBtrMgIarmAcmRet);
979 leBtrMgrAcRet = eBTRMgrFailure;
982 if ((leBtrMgrAcRet != eBTRMgrSuccess) || (lstBtrMgrIarmAcmArgs.result != 0)) {
983 BTRMGRLOG_ERROR(
"lstBtrMgrIarmAcmArgs:Return Status = %d\n", lstBtrMgrIarmAcmArgs.result);
984 leBtrMgrAcRet = eBTRMgrFailure;
988 if (leBtrMgrAcRet == eBTRMgrSuccess) {
989 memcpy(&pstBtrMgrAcHdl->stBtrMgrAcmCurSettings, &lstBtrMgrIarmAcmArgs.details.arg_audio_properties,
sizeof(
audio_properties_ifce_t));
991 BTRMGRLOG_DEBUG (
"Current Fifosize = %d\n", (
int)pstBtrMgrAcHdl->stBtrMgrAcmCurSettings.fifo_size);
992 BTRMGRLOG_DEBUG (
"Current Threshold= %d\n", (
int)pstBtrMgrAcHdl->stBtrMgrAcmCurSettings.threshold);
993 BTRMGRLOG_DEBUG (
"Current DelayComp= %d\n", pstBtrMgrAcHdl->stBtrMgrAcmCurSettings.delay_compensation_ms);
996 apstBtrMgrAcOutASettings->eBtrMgrOutAType = eBTRMgrATypePCM;
998 if (apstBtrMgrAcOutASettings->eBtrMgrOutAType == eBTRMgrATypePCM) {
1001 switch (pstBtrMgrAcHdl->stBtrMgrAcmCurSettings.format) {
1002 case acmFormate16BitStereo:
1003 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1004 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
1006 case acmFormate24BitStereo:
1007 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt24bit;
1008 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
1010 case acmFormate16BitMonoLeft:
1011 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1012 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
1014 case acmFormate16BitMonoRight:
1015 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1016 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
1018 case acmFormate16BitMono:
1019 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1020 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
1022 case acmFormate24Bit5_1:
1023 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt24bit;
1024 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChan5_1;
1027 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmtUnknown;
1028 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanUnknown;
1031 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1032 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
1036 switch (pstBtrMgrAcHdl->stBtrMgrAcmCurSettings.sampling_frequency) {
1038 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq16K;
1041 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq32K;
1044 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq44_1K;
1047 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq48K;
1050 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreqUnknown;
1053 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq48K;
1058 leBtrMgrAcRet = eBTRMgrFailure;
1062 #elif defined(USE_AC_RMF)
1063 else if ((pstBtrMgrAcHdl->pcBTRMgrAcType == NULL) ||
1064 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_PRIMARY, strlen(BTRMGR_AC_TYPE_PRIMARY)))) {
1066 &pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings)) != RMF_SUCCESS) {
1067 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrRmfAcRet);
1068 leBtrMgrAcRet = eBTRMgrFailure;
1071 BTRMGRLOG_DEBUG (
"Current CBBufferReady = %p\n", pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings.cbBufferReady);
1072 BTRMGRLOG_DEBUG (
"Current Fifosize = %d\n", pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings.fifoSize);
1073 BTRMGRLOG_DEBUG (
"Current Threshold = %d\n", pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings.threshold);
1076 apstBtrMgrAcOutASettings->eBtrMgrOutAType = eBTRMgrATypePCM;
1078 if (apstBtrMgrAcOutASettings->eBtrMgrOutAType == eBTRMgrATypePCM) {
1081 switch (pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings.format) {
1083 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1084 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
1087 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt24bit;
1088 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
1091 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1092 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
1095 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1096 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
1099 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1100 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanMono;
1103 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt24bit;
1104 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChan5_1;
1106 case racFormat_eMax:
1107 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmtUnknown;
1108 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanUnknown;
1111 pstBtrMgrAcOutPcmInfo->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1112 pstBtrMgrAcOutPcmInfo->eBtrMgrAChan = eBTRMgrAChanStereo;
1116 switch (pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings.samplingFreq) {
1118 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq16K;
1121 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq32K;
1124 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq44_1K;
1127 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq48K;
1130 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreqUnknown;
1133 pstBtrMgrAcOutPcmInfo->eBtrMgrSFreq = eBTRMgrSFreq48K;
1138 leBtrMgrAcRet = eBTRMgrFailure;
1143 return leBtrMgrAcRet;
1149 tBTRMgrAcHdl hBTRMgrAcHdl,
1154 return leBtrMgrAcRet;
1160 tBTRMgrAcHdl hBTRMgrAcHdl,
1162 fPtr_BTRMgr_AC_DataReadyCb afpcBBtrMgrAcDataReady,
1163 fPtr_BTRMgr_AC_StatusCb afpcBBtrMgrAcStatus,
1169 #if defined(USE_AC_RMF)
1170 rmf_Error leBtrMgrRmfAcRet = RMF_SUCCESS;
1174 #if defined(USE_ACM)
1176 IARM_Result_t leBtrMgIarmAcmRet = IARM_RESULT_SUCCESS;
1179 if (pstBtrMgrAcHdl == NULL) {
1180 return eBTRMgrNotInitialized;
1183 if (apstBtrMgrAcOutASettings == NULL) {
1184 return eBTRMgrFailInArg;
1187 pstBtrMgrAcHdl->fpcBBtrMgrAcDataReady = afpcBBtrMgrAcDataReady;
1188 pstBtrMgrAcHdl->vpBtrMgrAcDataReadyUserData = apvUserData;
1190 pstBtrMgrAcHdl->fpcBBtrMgrAcStatus = afpcBBtrMgrAcStatus;
1191 pstBtrMgrAcHdl->vpBtrMgrAcStatusUserData = apvUserData;
1193 #if defined(USE_AC_RMF)
1194 if ((pstBtrMgrAcHdl->pcBTRMgrAcType != NULL) &&
1195 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_AUXILIARY, strlen(BTRMGR_AC_TYPE_AUXILIARY)))) {
1197 if (pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings.fifoSize)
1198 pstBtrMgrRmfAcSettings = &pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings;
1200 pstBtrMgrRmfAcSettings = &pstBtrMgrAcHdl->stBtrMgrRmfAcDefSettings;
1203 pstBtrMgrRmfAcSettings->
cbBufferReady = btrMgr_AC_rmfBufferReadyCb;
1205 pstBtrMgrRmfAcSettings->
cbStatusChange = btrMgr_AC_rmfStatusChangeCb;
1207 pstBtrMgrRmfAcSettings->
fifoSize = 8 * apstBtrMgrAcOutASettings->i32BtrMgrOutBufMaxSize;
1208 pstBtrMgrRmfAcSettings->
threshold = apstBtrMgrAcOutASettings->i32BtrMgrOutBufMaxSize;
1210 #if defined(TV_CUSTOM_DELAY_COMP)
1212 if (pstBtrMgrAcHdl->pstBtrMgrAcmSettings->threshold > 4096) {
1213 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms = 260;
1215 else if (pstBtrMgrAcHdl->pstBtrMgrAcmSettings->threshold >= 3584) {
1216 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms = 260;
1219 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms = 240;
1222 if ((apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay != 0) && (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay != 0xFFFFu)) {
1225 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms -= 100;
1228 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay/10;
1233 if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay >= 1500) {
1234 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms -= 50;
1236 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay >= 1400) {
1237 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms -= 40;
1239 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay >= 1200) {
1240 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms -= 20;
1242 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay >= 1000) {
1243 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms -= 0;
1245 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay >= 800) {
1246 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += 20;
1248 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay > 600) {
1249 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += 30;
1251 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay > 400) {
1252 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += 40;
1254 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay > 200) {
1255 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += 60;
1257 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay > 100) {
1258 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += 80;
1260 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay > 50) {
1261 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += 100;
1266 if (pstBtrMgrRmfAcSettings->
threshold > 4096) {
1269 else if (pstBtrMgrRmfAcSettings->
threshold >= 3584) {
1276 if ((apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay != 0) && (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay != 0xFFFFu)) {
1282 pstBtrMgrRmfAcSettings->
delayCompensation_ms += apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay/10;
1292 pstBtrMgrRmfAcSettings)) != RMF_SUCCESS) {
1293 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrRmfAcRet);
1294 leBtrMgrAcRet = eBTRMgrFailure;
1299 #if defined(USE_ACM)
1300 if ((pstBtrMgrAcHdl->pcBTRMgrAcType == NULL) ||
1301 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_PRIMARY, strlen(BTRMGR_AC_TYPE_PRIMARY)))) {
1303 lstBtrMgrIarmAcmArgs.session_id = pstBtrMgrAcHdl->hBtrMgrIarmAcmHdl;
1306 if ((pstBtrMgrAcHdl->stBtrMgrAcmCurSettings.fifo_size != 0) && (pstBtrMgrAcHdl->stBtrMgrAcmCurSettings.threshold != 0))
1307 pstBtrMgrAcHdl->pstBtrMgrAcmSettings = &pstBtrMgrAcHdl->stBtrMgrAcmCurSettings;
1309 pstBtrMgrAcHdl->pstBtrMgrAcmSettings = &pstBtrMgrAcHdl->stBtrMgrAcmDefSettings;
1312 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->fifo_size = 8 * apstBtrMgrAcOutASettings->i32BtrMgrOutBufMaxSize;
1313 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->threshold = apstBtrMgrAcOutASettings->i32BtrMgrOutBufMaxSize;
1315 #if defined(TV_CUSTOM_DELAY_COMP)
1317 if (pstBtrMgrAcHdl->pstBtrMgrAcmSettings->threshold > 4096) {
1318 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms = 260;
1320 else if (pstBtrMgrAcHdl->pstBtrMgrAcmSettings->threshold >= 3584) {
1321 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms = 260;
1324 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms = 240;
1327 if ((apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay != 0) && (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay != 0xFFFFu)) {
1330 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms -= 100;
1333 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay/10;
1338 if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay >= 1500) {
1339 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms -= 50;
1341 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay >= 1400) {
1342 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms -= 40;
1344 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay >= 1200) {
1345 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms -= 20;
1347 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay >= 1000) {
1348 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms -= 0;
1350 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay >= 800) {
1351 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += 20;
1353 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay > 600) {
1354 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += 30;
1356 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay > 400) {
1357 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += 40;
1359 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay > 200) {
1360 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += 60;
1362 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay > 100) {
1363 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += 80;
1365 else if (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay > 50) {
1366 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += 100;
1371 if (pstBtrMgrAcHdl->pstBtrMgrAcmSettings->threshold > 4096) {
1372 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms = 240;
1374 else if (pstBtrMgrAcHdl->pstBtrMgrAcmSettings->threshold >= 3584) {
1375 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms = 220;
1378 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms = 200;
1381 if ((apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay != 0) && (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay != 0xFFFFu)) {
1384 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms -= 120;
1387 pstBtrMgrAcHdl->pstBtrMgrAcmSettings->delay_compensation_ms += apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay/10;
1395 memcpy(&lstBtrMgrIarmAcmArgs.details.arg_audio_properties, pstBtrMgrAcHdl->pstBtrMgrAcmSettings,
sizeof(
audio_properties_ifce_t));
1397 if ((leBtrMgIarmAcmRet =
IARM_Bus_Call (IARMBUS_AUDIOCAPTUREMGR_NAME,
1398 IARMBUS_AUDIOCAPTUREMGR_SET_AUDIO_PROPERTIES,
1399 (
void *)&lstBtrMgrIarmAcmArgs,
1400 sizeof(lstBtrMgrIarmAcmArgs))) != IARM_RESULT_SUCCESS) {
1401 BTRMGRLOG_ERROR(
"IARMBUS_AUDIOCAPTUREMGR_SET_AUDIO_PROPERTIES:Return Status = %d\n", leBtrMgIarmAcmRet);
1402 leBtrMgrAcRet = eBTRMgrFailure;
1405 if ((leBtrMgrAcRet != eBTRMgrSuccess) || (lstBtrMgrIarmAcmArgs.result != 0)) {
1406 BTRMGRLOG_ERROR(
"lstBtrMgrIarmAcmArgs:Return Status = %d\n", lstBtrMgrIarmAcmArgs.result);
1407 leBtrMgrAcRet = eBTRMgrFailure;
1413 lstBtrMgrIarmAcmArgs.session_id = pstBtrMgrAcHdl->hBtrMgrIarmAcmHdl;
1415 if ((leBtrMgIarmAcmRet =
IARM_Bus_Call (IARMBUS_AUDIOCAPTUREMGR_NAME,
1416 IARMBUS_AUDIOCAPTUREMGR_GET_OUTPUT_PROPS,
1417 (
void *)&lstBtrMgrIarmAcmArgs,
1418 sizeof(lstBtrMgrIarmAcmArgs))) != IARM_RESULT_SUCCESS) {
1419 BTRMGRLOG_ERROR(
"IARMBUS_AUDIOCAPTUREMGR_GET_OUTPUT_PROPS:Return Status = %d\n", leBtrMgIarmAcmRet);
1420 leBtrMgrAcRet = eBTRMgrFailure;
1423 if ((leBtrMgrAcRet != eBTRMgrSuccess) || (lstBtrMgrIarmAcmArgs.result != 0)) {
1424 BTRMGRLOG_ERROR(
"lstBtrMgrIarmAcmArgs:Return Status = %d\n", lstBtrMgrIarmAcmArgs.result);
1425 leBtrMgrAcRet = eBTRMgrFailure;
1428 strncpy(pstBtrMgrAcHdl->pcBtrMgrAcmSockPath, lstBtrMgrIarmAcmArgs.details.arg_output_props.output.file_path,
1429 strlen(lstBtrMgrIarmAcmArgs.details.arg_output_props.output.file_path) < MAX_OUTPUT_PATH_LEN ?
1430 strlen(lstBtrMgrIarmAcmArgs.details.arg_output_props.output.file_path) : MAX_OUTPUT_PATH_LEN - 1);
1432 BTRMGRLOG_DEBUG (
"IARMBUS_AUDIOCAPTUREMGR_GET_OUTPUT_PROPS : pcBtrMgrAcmSockPath = %s\n", pstBtrMgrAcHdl->pcBtrMgrAcmSockPath);
1436 lstBtrMgrIarmAcmArgs.session_id = pstBtrMgrAcHdl->hBtrMgrIarmAcmHdl;
1438 if ((leBtrMgIarmAcmRet =
IARM_Bus_Call (IARMBUS_AUDIOCAPTUREMGR_NAME,
1439 IARMBUS_AUDIOCAPTUREMGR_START,
1440 (
void *)&lstBtrMgrIarmAcmArgs,
1441 sizeof(lstBtrMgrIarmAcmArgs))) != IARM_RESULT_SUCCESS) {
1442 BTRMGRLOG_ERROR(
"IARMBUS_AUDIOCAPTUREMGR_START:Return Status = %d\n", leBtrMgIarmAcmRet);
1443 leBtrMgrAcRet = eBTRMgrFailure;
1446 if ((leBtrMgrAcRet != eBTRMgrSuccess) || (lstBtrMgrIarmAcmArgs.result != 0)) {
1447 BTRMGRLOG_ERROR(
"lstBtrMgrIarmAcmArgs:Return Status = %d\n", lstBtrMgrIarmAcmArgs.result);
1448 leBtrMgrAcRet = eBTRMgrFailure;
1452 if (pstBtrMgrAcHdl->pBtrMgrAcmDataCapGThread) {
1453 gpointer lpeBtrMgrAcmDCOp = NULL;
1454 if ((lpeBtrMgrAcmDCOp = g_malloc0(
sizeof(eBTRMgrACAcmDCOp))) != NULL) {
1455 *((eBTRMgrACAcmDCOp*)lpeBtrMgrAcmDCOp) = eBTRMgrACAcmDCStart;
1456 g_async_queue_push(pstBtrMgrAcHdl->pBtrMgrAcmDataCapGAOpQueue, lpeBtrMgrAcmDCOp);
1457 BTRMGRLOG_DEBUG (
"g_async_queue_push: eBTRMgrACAcmDCStart\n");
1461 BTRMGRLOG_ERROR(
"pBtrMgrAcmDataCapGThread: eBTRMgrACAcmDCStart - FAILED\n");
1462 leBtrMgrAcRet = eBTRMgrFailure;
1465 #elif defined(USE_AC_RMF)
1466 else if ((pstBtrMgrAcHdl->pcBTRMgrAcType == NULL) ||
1467 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_PRIMARY, strlen(BTRMGR_AC_TYPE_PRIMARY)))) {
1469 if (pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings.fifoSize)
1470 pstBtrMgrRmfAcSettings = &pstBtrMgrAcHdl->stBtrMgrRmfAcCurSettings;
1472 pstBtrMgrRmfAcSettings = &pstBtrMgrAcHdl->stBtrMgrRmfAcDefSettings;
1475 pstBtrMgrRmfAcSettings->
cbBufferReady = btrMgr_AC_rmfBufferReadyCb;
1479 pstBtrMgrRmfAcSettings->
fifoSize = 8 * apstBtrMgrAcOutASettings->i32BtrMgrOutBufMaxSize;
1480 pstBtrMgrRmfAcSettings->
threshold = apstBtrMgrAcOutASettings->i32BtrMgrOutBufMaxSize;
1483 if ((apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay != 0) && (apstBtrMgrAcOutASettings->ui32BtrMgrDevDelay != 0xFFFFu))
1485 else if (pstBtrMgrRmfAcSettings->
threshold > 4096)
1491 BTRMGRLOG_WARN (
"Current Fifosize = %d\n", pstBtrMgrRmfAcSettings->
fifoSize);
1492 BTRMGRLOG_WARN (
"Current Threshold= %d\n", pstBtrMgrRmfAcSettings->
threshold);
1496 pstBtrMgrRmfAcSettings)) != RMF_SUCCESS) {
1497 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrRmfAcRet);
1498 leBtrMgrAcRet = eBTRMgrFailure;
1503 return leBtrMgrAcRet;
1509 tBTRMgrAcHdl hBTRMgrAcHdl
1514 #if defined(USE_AC_RMF)
1515 rmf_Error leBtrMgrRmfAcRet = RMF_SUCCESS;
1519 if (pstBtrMgrAcHdl == NULL) {
1520 return eBTRMgrNotInitialized;
1523 #if defined(USE_AC_RMF)
1524 if ((pstBtrMgrAcHdl->pcBTRMgrAcType != NULL) &&
1525 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_AUXILIARY, strlen(BTRMGR_AC_TYPE_AUXILIARY)))) {
1527 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrRmfAcRet);
1528 leBtrMgrAcRet = eBTRMgrFailure;
1533 #if defined(USE_ACM)
1534 if ((pstBtrMgrAcHdl->pcBTRMgrAcType == NULL) ||
1535 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_PRIMARY, strlen(BTRMGR_AC_TYPE_PRIMARY)))) {
1537 if (pstBtrMgrAcHdl->pBtrMgrAcmDataCapGThread) {
1538 gpointer lpeBtrMgrAcmDCOp = NULL;
1539 if ((lpeBtrMgrAcmDCOp = g_malloc0(
sizeof(eBTRMgrACAcmDCOp))) != NULL) {
1540 *((eBTRMgrACAcmDCOp*)lpeBtrMgrAcmDCOp) = eBTRMgrACAcmDCStop;
1541 g_async_queue_push(pstBtrMgrAcHdl->pBtrMgrAcmDataCapGAOpQueue, lpeBtrMgrAcmDCOp);
1542 BTRMGRLOG_DEBUG (
"g_async_queue_push: eBTRMgrACAcmDCStop\n");
1546 BTRMGRLOG_ERROR(
"pBtrMgrAcmDataCapGThread: eBTRMgrACAcmDCStop - FAILED\n");
1547 leBtrMgrAcRet = eBTRMgrFailure;
1550 pstBtrMgrAcHdl->fpcBBtrMgrAcDataReady = NULL;
1552 #elif defined(USE_AC_RMF)
1553 if ((pstBtrMgrAcHdl->pcBTRMgrAcType == NULL) ||
1554 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_PRIMARY, strlen(BTRMGR_AC_TYPE_PRIMARY)))) {
1556 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrRmfAcRet);
1557 leBtrMgrAcRet = eBTRMgrFailure;
1562 return leBtrMgrAcRet;
1568 tBTRMgrAcHdl hBTRMgrAcHdl
1572 return leBtrMgrAcRet;
1578 tBTRMgrAcHdl hBTRMgrAcHdl
1582 return leBtrMgrAcRet;
1589 #if defined(USE_AC_RMF)
1591 btrMgr_AC_rmfBufferReadyCb (
1594 unsigned int inBytesToEncode
1598 if (pstBtrMgrAcHdl && pstBtrMgrAcHdl->fpcBBtrMgrAcDataReady) {
1599 if (pstBtrMgrAcHdl->fpcBBtrMgrAcDataReady(pInDataBuf, inBytesToEncode, pstBtrMgrAcHdl->vpBtrMgrAcDataReadyUserData) != eBTRMgrSuccess) {
1600 BTRMGRLOG_ERROR(
"AC Data Ready Callback Failed\n");
1609 btrMgr_AC_rmfStatusChangeCb (
1613 bool bTriggerStatusChanged =
false;
1615 if (pstBtrMgrAcHdl) {
1619 BTRMGRLOG_WARN(
"Status Changed\n");
1623 if (pstBtrMgrRmfAcStatus->
started != lstBtrMgrRmfAcStatus.
started) {
1624 BTRMGRLOG_WARN(
"Status Changed - Started = %d\n", lstBtrMgrRmfAcStatus.
started);
1626 bTriggerStatusChanged =
true;
1629 if (pstBtrMgrRmfAcStatus->
format != lstBtrMgrRmfAcStatus.
format) {
1630 BTRMGRLOG_WARN(
"Status Changed - Format = %d\n", lstBtrMgrRmfAcStatus.
format);
1631 pstBtrMgrRmfAcStatus->
format = lstBtrMgrRmfAcStatus.
format;
1632 bTriggerStatusChanged =
true;
1636 BTRMGRLOG_WARN(
"Status Changed - Sampling Freq = %d\n", lstBtrMgrRmfAcStatus.
samplingFreq);
1638 bTriggerStatusChanged =
true;
1642 BTRMGRLOG_WARN(
"Status Changed - Fifo Depth = %d\n", (
int)lstBtrMgrRmfAcStatus.
fifoDepth);
1644 bTriggerStatusChanged =
true;
1648 BTRMGRLOG_WARN(
"Status Changed - Overflow = %d\n", lstBtrMgrRmfAcStatus.
overflows);
1650 bTriggerStatusChanged =
true;
1654 BTRMGRLOG_WARN(
"Status Changed - Underflow = %d\n", lstBtrMgrRmfAcStatus.
underflows);
1656 bTriggerStatusChanged =
true;
1659 if (pstBtrMgrRmfAcStatus->
muted != lstBtrMgrRmfAcStatus.
muted) {
1660 BTRMGRLOG_WARN(
"Status Changed - Muted = %d\n", lstBtrMgrRmfAcStatus.
muted);
1661 pstBtrMgrRmfAcStatus->
muted = lstBtrMgrRmfAcStatus.
muted;
1662 bTriggerStatusChanged =
true;
1665 if (pstBtrMgrRmfAcStatus->
paused != lstBtrMgrRmfAcStatus.
paused) {
1666 BTRMGRLOG_WARN(
"Status Changed - Paused = %d\n", lstBtrMgrRmfAcStatus.
paused);
1667 pstBtrMgrRmfAcStatus->
paused = lstBtrMgrRmfAcStatus.
paused;
1668 bTriggerStatusChanged =
true;
1671 if (pstBtrMgrRmfAcStatus->
volume != lstBtrMgrRmfAcStatus.
volume) {
1672 BTRMGRLOG_WARN(
"Status Changed - Volume = %f\n", lstBtrMgrRmfAcStatus.
volume);
1673 pstBtrMgrRmfAcStatus->
volume = lstBtrMgrRmfAcStatus.
volume;
1674 bTriggerStatusChanged =
true;
1677 if (bTriggerStatusChanged) {
1681 if (pstBtrMgrRmfAcStatus->
paused) {
1682 pstBtrMgrAcMediaStatus->eBtrMgrState = eBTRMgrStatePaused;
1684 if ((pstBtrMgrAcHdl->pcBTRMgrAcType != NULL) &&
1685 (!strncmp(pstBtrMgrAcHdl->pcBTRMgrAcType, BTRMGR_AC_TYPE_AUXILIARY, strlen(BTRMGR_AC_TYPE_AUXILIARY)))) {
1689 pstBtrMgrAcMediaStatus->eBtrMgrState = eBTRMgrStatePlaying;
1692 switch (pstBtrMgrRmfAcStatus->
format) {
1694 pstBtrMgrAcMediaStatus->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1695 pstBtrMgrAcMediaStatus->eBtrMgrAChan = eBTRMgrAChanStereo;
1698 pstBtrMgrAcMediaStatus->eBtrMgrSFmt = eBTRMgrSFmt24bit;
1699 pstBtrMgrAcMediaStatus->eBtrMgrAChan = eBTRMgrAChanStereo;
1702 pstBtrMgrAcMediaStatus->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1703 pstBtrMgrAcMediaStatus->eBtrMgrAChan = eBTRMgrAChanMono;
1706 pstBtrMgrAcMediaStatus->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1707 pstBtrMgrAcMediaStatus->eBtrMgrAChan = eBTRMgrAChanMono;
1710 pstBtrMgrAcMediaStatus->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1711 pstBtrMgrAcMediaStatus->eBtrMgrAChan = eBTRMgrAChanMono;
1714 pstBtrMgrAcMediaStatus->eBtrMgrSFmt = eBTRMgrSFmt24bit;
1715 pstBtrMgrAcMediaStatus->eBtrMgrAChan = eBTRMgrAChan5_1;
1717 case racFormat_eMax:
1718 pstBtrMgrAcMediaStatus->eBtrMgrSFmt = eBTRMgrSFmtUnknown;
1719 pstBtrMgrAcMediaStatus->eBtrMgrAChan = eBTRMgrAChanUnknown;
1722 pstBtrMgrAcMediaStatus->eBtrMgrSFmt = eBTRMgrSFmt16bit;
1723 pstBtrMgrAcMediaStatus->eBtrMgrAChan = eBTRMgrAChanStereo;
1729 pstBtrMgrAcMediaStatus->eBtrMgrSFreq = eBTRMgrSFreq16K;
1732 pstBtrMgrAcMediaStatus->eBtrMgrSFreq = eBTRMgrSFreq32K;
1735 pstBtrMgrAcMediaStatus->eBtrMgrSFreq = eBTRMgrSFreq44_1K;
1738 pstBtrMgrAcMediaStatus->eBtrMgrSFreq = eBTRMgrSFreq48K;
1741 pstBtrMgrAcMediaStatus->eBtrMgrSFreq = eBTRMgrSFreqUnknown;
1744 pstBtrMgrAcMediaStatus->eBtrMgrSFreq = eBTRMgrSFreq48K;
1748 pstBtrMgrAcMediaStatus->ui32OverFlowCnt = pstBtrMgrRmfAcStatus->
overflows;
1749 pstBtrMgrAcMediaStatus->ui32UnderFlowCnt= pstBtrMgrRmfAcStatus->
underflows;
1751 if (!pstBtrMgrRmfAcStatus->
muted) {
1752 pstBtrMgrAcMediaStatus->ui8Volume = (
unsigned char) (255 * pstBtrMgrRmfAcStatus->
volume);
1755 pstBtrMgrAcMediaStatus->ui8Volume = 0;
1760 if (pstBtrMgrAcHdl->fpcBBtrMgrAcStatus) {
1761 if (pstBtrMgrAcHdl->fpcBBtrMgrAcStatus(&lstBtrMgrAcMediaStatus, pstBtrMgrAcHdl->vpBtrMgrAcStatusUserData) != eBTRMgrSuccess) {
1762 BTRMGRLOG_ERROR(
"AC Status Callback Failed\n");