38 #include "btrMgr_logger.h"
53 fPtr_BTRMgr_SO_StatusCb fpcBSoStatus;
56 tBTRMgrSoGstHdl hBTRMgrSoGstHdl;
67 static eBTRMgrSOGstRet btrMgr_SO_GstStatusCb (eBTRMgrSOGstStatus aeBtrMgrSoGstStatus,
void* apvUserData);
78 tBTRMgrSoHdl* phBTRMgrSoHdl,
79 fPtr_BTRMgr_SO_StatusCb afpcBSoStatus,
86 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
90 BTRMGRLOG_ERROR (
"Unable to allocate memory\n");
91 return eBTRMgrInitFailure;
95 if ((leBtrMgrSoGstRet =
BTRMgr_SO_GstInit(&(pstBtrMgrSoHdl->hBTRMgrSoGstHdl), btrMgr_SO_GstStatusCb, pstBtrMgrSoHdl)) != eBTRMgrSOGstSuccess) {
96 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrSoGstRet);
97 leBtrMgrSoRet = eBTRMgrInitFailure;
103 if (leBtrMgrSoRet != eBTRMgrSuccess) {
105 return leBtrMgrSoRet;
108 pstBtrMgrSoHdl->lstBtrMgrSoStatus.ui8Volume = 128;
109 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrState = eBTRMgrStateInitialized;
110 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrSFreq = eBTRMgrSFreq48K;
111 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrSFmt = eBTRMgrSFmt16bit;
112 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrAChan = eBTRMgrAChanJStereo;
113 pstBtrMgrSoHdl->leBtrMgrSoInState = eBTRMgrStatePlaying;
114 pstBtrMgrSoHdl->fpcBSoStatus = afpcBSoStatus;
115 pstBtrMgrSoHdl->pvcBUserData = apvUserData;
118 *phBTRMgrSoHdl = (tBTRMgrSoHdl)pstBtrMgrSoHdl;
120 return leBtrMgrSoRet;
126 tBTRMgrSoHdl hBTRMgrSoHdl
132 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
135 if (pstBtrMgrSoHdl == NULL) {
136 return eBTRMgrNotInitialized;
140 if ((leBtrMgrSoGstRet =
BTRMgr_SO_GstDeInit(pstBtrMgrSoHdl->hBTRMgrSoGstHdl)) != eBTRMgrSOGstSuccess) {
141 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrSoGstRet);
142 leBtrMgrSoRet = eBTRMgrFailure;
144 pstBtrMgrSoHdl->hBTRMgrSoGstHdl = NULL;
149 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrState = eBTRMgrStateDeInitialized;
151 g_free((
void*)pstBtrMgrSoHdl);
152 pstBtrMgrSoHdl = NULL;
154 BTRMGRLOG_DEBUG (
"Return Status = %d\n", leBtrMgrSoRet);
155 return leBtrMgrSoRet;
161 tBTRMgrSoHdl hBTRMgrSoHdl
167 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
168 (void)leBtrMgrSoGstRet;
171 if (pstBtrMgrSoHdl == NULL) {
172 return eBTRMgrNotInitialized;
175 return leBtrMgrSoRet;
181 tBTRMgrSoHdl hBTRMgrSoHdl
187 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
188 (void)leBtrMgrSoGstRet;
191 if (pstBtrMgrSoHdl == NULL) {
192 return eBTRMgrNotInitialized;
195 return leBtrMgrSoRet;
201 tBTRMgrSoHdl hBTRMgrSoHdl,
208 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
209 (void)leBtrMgrSoGstRet;
212 if (pstBtrMgrSoHdl == NULL) {
213 return eBTRMgrNotInitialized;
216 return leBtrMgrSoRet;
222 tBTRMgrSoHdl hBTRMgrSoHdl,
229 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
232 if (pstBtrMgrSoHdl == NULL) {
233 return eBTRMgrNotInitialized;
236 if (apstBtrMgrSoStatus == NULL) {
237 return eBTRMgrFailInArg;
241 if (pstBtrMgrSoHdl->leBtrMgrSoInState != apstBtrMgrSoStatus->eBtrMgrState) {
242 pstBtrMgrSoHdl->leBtrMgrSoInState = apstBtrMgrSoStatus->eBtrMgrState;
243 BTRMGRLOG_WARN(
"Stream Out Paused = %d\n", apstBtrMgrSoStatus->eBtrMgrState);
245 if (pstBtrMgrSoHdl->leBtrMgrSoInState == eBTRMgrStatePaused) {
247 BTRMGRLOG_ERROR(
"Return Status = %d - Failed to set Paused\n", leBtrMgrSoGstRet);
248 leBtrMgrSoRet = eBTRMgrFailure;
251 else if (pstBtrMgrSoHdl->leBtrMgrSoInState == eBTRMgrStatePlaying) {
253 BTRMGRLOG_ERROR(
"Return Status = %d - Failed to set Playing\n", leBtrMgrSoGstRet);
254 leBtrMgrSoRet = eBTRMgrFailure;
259 if (pstBtrMgrSoHdl->lstBtrMgrSoStatus.ui8Volume != apstBtrMgrSoStatus->ui8Volume) {
260 pstBtrMgrSoHdl->lstBtrMgrSoStatus.ui8Volume = apstBtrMgrSoStatus->ui8Volume;
261 if (apstBtrMgrSoStatus->ui8Volume != 128) {
262 if ((leBtrMgrSoGstRet =
BTRMgr_SO_GstSetVolume(pstBtrMgrSoHdl->hBTRMgrSoGstHdl, apstBtrMgrSoStatus->ui8Volume)) != eBTRMgrSOGstSuccess) {
263 BTRMGRLOG_ERROR(
"Return Status = %d - Failed to set volume\n", leBtrMgrSoGstRet);
264 leBtrMgrSoRet = eBTRMgrFailure;
272 return leBtrMgrSoRet;
278 tBTRMgrSoHdl hBTRMgrSoHdl,
279 unsigned char ui8Volume
283 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
285 if ((leBtrMgrSoGstRet =
BTRMgr_SO_GstSetVolume(pstBtrMgrSoHdl->hBTRMgrSoGstHdl, ui8Volume)) != eBTRMgrSOGstSuccess) {
286 BTRMGRLOG_ERROR(
"Return Status = %d - Failed to set volume\n", leBtrMgrSoGstRet);
287 leBtrMgrSoRet = eBTRMgrFailure;
289 pstBtrMgrSoHdl->lstBtrMgrSoStatus.ui8Volume = ui8Volume;
290 BTRMGRLOG_DEBUG(
"Volume set %d success \n", ui8Volume);
293 return leBtrMgrSoRet;
299 tBTRMgrSoHdl hBTRMgrSoHdl,
300 unsigned char* ui8Volume
304 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
305 unsigned char ui8GstVolume;
307 if(!ui8Volume || !pstBtrMgrSoHdl) {
308 leBtrMgrSoRet = eBTRMgrFailure;
309 return leBtrMgrSoRet;
312 if ((leBtrMgrSoGstRet =
BTRMgr_SO_GstGetVolume(pstBtrMgrSoHdl->hBTRMgrSoGstHdl, &ui8GstVolume)) != eBTRMgrSOGstSuccess) {
313 BTRMGRLOG_ERROR(
"Return Status = %d - Failed to get volume\n", leBtrMgrSoGstRet);
314 leBtrMgrSoRet = eBTRMgrFailure;
316 *ui8Volume = ui8GstVolume;
317 BTRMGRLOG_DEBUG(
"Volume get %d success \n", ui8GstVolume);
320 return leBtrMgrSoRet;
326 tBTRMgrSoHdl hBTRMgrSoHdl,
331 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
333 if ((leBtrMgrSoGstRet =
BTRMgr_SO_GstSetMute(pstBtrMgrSoHdl->hBTRMgrSoGstHdl, Mute)) != eBTRMgrSOGstSuccess) {
334 BTRMGRLOG_ERROR(
"Return Status = %d - Failed to set volume\n", leBtrMgrSoGstRet);
335 leBtrMgrSoRet = eBTRMgrFailure;
337 BTRMGRLOG_DEBUG(
"Mute set success \n");
339 return leBtrMgrSoRet;
344 tBTRMgrSoHdl hBTRMgrSoHdl,
349 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
352 if(!mute || !pstBtrMgrSoHdl) {
353 leBtrMgrSoRet = eBTRMgrFailure;
354 return leBtrMgrSoRet;
357 if ((leBtrMgrSoGstRet =
BTRMgr_SO_GstGetMute(pstBtrMgrSoHdl->hBTRMgrSoGstHdl, &gmute)) != eBTRMgrSOGstSuccess) {
358 BTRMGRLOG_ERROR(
"Return Status = %d - Failed to get mute\n", leBtrMgrSoGstRet);
359 leBtrMgrSoRet = eBTRMgrFailure;
362 BTRMGRLOG_DEBUG(
"mute get %d success \n", gmute);
365 return leBtrMgrSoRet;
369 tBTRMgrSoHdl hBTRMgrSoHdl,
379 unsigned int lui32InBitsPerSample = 0;
380 unsigned int lui32InNumAChan = 0;
381 unsigned int lui32InSamplingFreq = 0;
383 unsigned short lui16OutFrameLen = 0;
384 unsigned short lui16OutBitrateKbps = 0;
385 unsigned short lui16OutMtu = 0;
387 unsigned int lui32InByteRate = 0;
388 unsigned int lui32OutByteRate = 0;
389 float lfOutMtuTimemSec = 0.0;
391 if (pstBtrMgrSoHdl == NULL) {
392 return eBTRMgrNotInitialized;
395 if ((apstBtrMgrSoInASettings == NULL) || (apstBtrMgrSoOutASettings == NULL) ||
396 (apstBtrMgrSoInASettings->pstBtrMgrInCodecInfo == NULL) || (apstBtrMgrSoOutASettings->pstBtrMgrOutCodecInfo == NULL)) {
397 return eBTRMgrFailInArg;
400 if (apstBtrMgrSoInASettings->eBtrMgrInAType == eBTRMgrATypePCM) {
401 pstBtrMgrSoInPcmInfo = (
stBTRMgrPCMInfo*)(apstBtrMgrSoInASettings->pstBtrMgrInCodecInfo);
403 switch (pstBtrMgrSoInPcmInfo->eBtrMgrSFreq) {
405 lui32InSamplingFreq = 8000;
407 case eBTRMgrSFreq16K:
408 lui32InSamplingFreq = 16000;
410 case eBTRMgrSFreq32K:
411 lui32InSamplingFreq = 32000;
413 case eBTRMgrSFreq44_1K:
414 lui32InSamplingFreq = 44100;
416 case eBTRMgrSFreq48K:
417 lui32InSamplingFreq = 48000;
419 case eBTRMgrSFreqUnknown:
421 lui32InSamplingFreq = 48000;
425 switch (pstBtrMgrSoInPcmInfo->eBtrMgrSFmt) {
426 case eBTRMgrSFmt8bit:
427 lui32InBitsPerSample = 8;
429 case eBTRMgrSFmt16bit:
430 lui32InBitsPerSample = 16;
432 case eBTRMgrSFmt24bit:
433 lui32InBitsPerSample = 24;
435 case eBTRMgrSFmt32bit:
436 lui32InBitsPerSample = 32;
438 case eBTRMgrSFmtUnknown:
440 lui32InBitsPerSample = 16;
444 switch (pstBtrMgrSoInPcmInfo->eBtrMgrAChan) {
445 case eBTRMgrAChanMono:
448 case eBTRMgrAChanDualChannel:
451 case eBTRMgrAChanStereo:
454 case eBTRMgrAChanJStereo:
457 case eBTRMgrAChan5_1:
460 case eBTRMgrAChan7_1:
463 case eBTRMgrAChanUnknown:
471 if (apstBtrMgrSoOutASettings->eBtrMgrOutAType == eBTRMgrATypeSBC) {
472 pstBtrMgrSoOutSbcInfo = (
stBTRMgrSBCInfo*)(apstBtrMgrSoOutASettings->pstBtrMgrOutCodecInfo);
475 lui16OutMtu = apstBtrMgrSoOutASettings->i32BtrMgrDevMtu;
479 if ((!lui16OutFrameLen) || (!lui16OutBitrateKbps) || (!lui16OutMtu)) {
480 return eBTRMgrFailInArg;
484 lui16OutMtu = lui16OutMtu - 20;
485 lui32OutByteRate = (lui16OutBitrateKbps * 1024) / 8;
486 lfOutMtuTimemSec = (lui16OutMtu * 1000.0) / lui32OutByteRate;
487 lui32InByteRate = (lui32InBitsPerSample/8) * lui32InNumAChan * lui32InSamplingFreq;
488 apstBtrMgrSoInASettings->i32BtrMgrInBufMaxSize = (lui32InByteRate * lfOutMtuTimemSec)/1000;
491 apstBtrMgrSoInASettings->i32BtrMgrInBufMaxSize = (apstBtrMgrSoInASettings->i32BtrMgrInBufMaxSize >> 8);
492 apstBtrMgrSoInASettings->i32BtrMgrInBufMaxSize = apstBtrMgrSoInASettings->i32BtrMgrInBufMaxSize << 8;
495 BTRMGRLOG_DEBUG (
"Effective MTU = %d\n", lui16OutMtu);
496 BTRMGRLOG_DEBUG (
"OutByteRate = %d\n", lui32OutByteRate);
497 BTRMGRLOG_DEBUG (
"OutMtuTimemSec = %f\n", lfOutMtuTimemSec);
498 BTRMGRLOG_DEBUG (
"InByteRate = %d\n", lui32InByteRate);
499 BTRMGRLOG_DEBUG (
"InBufMaxSize = %d\n", apstBtrMgrSoInASettings->i32BtrMgrInBufMaxSize);
502 return leBtrMgrSoRet;
508 tBTRMgrSoHdl hBTRMgrSoHdl,
522 const char* lpcBtrMgrInSoSFmt = NULL;
523 unsigned int lui32BtrMgrInSoAChan;
524 unsigned int lui32BtrMgrInSoSFreq;
526 const char* lpcBtrMgrOutSoAChanMode = NULL;
527 unsigned int lui32BtrMgrOutSoAChan;
528 unsigned int lui32BtrMgrOutSoSFreq;
530 unsigned char lui8SbcAllocMethod = 0;
531 unsigned char lui8SbcSubbands = 0;
532 unsigned char lui8SbcBlockLength = 0;
533 unsigned char lui8SbcMinBitpool = 0;
534 unsigned char lui8SbcMaxBitpool = 0;
538 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
541 if (pstBtrMgrSoHdl == NULL) {
542 return eBTRMgrNotInitialized;
545 if ((apstBtrMgrSoInASettings == NULL) || (apstBtrMgrSoOutASettings == NULL) ||
546 (apstBtrMgrSoInASettings->pstBtrMgrInCodecInfo == NULL) || (apstBtrMgrSoOutASettings->pstBtrMgrOutCodecInfo == NULL)) {
547 return eBTRMgrFailInArg;
550 if (apstBtrMgrSoInASettings->eBtrMgrInAType == eBTRMgrATypePCM) {
552 leBtrMgrSoInSFmt = pstBtrMgrSoInPcmInfo->eBtrMgrSFmt;
553 leBtrMgrSoInAChan = pstBtrMgrSoInPcmInfo->eBtrMgrAChan;
554 leBtrMgrSoInSFreq = pstBtrMgrSoInPcmInfo->eBtrMgrSFreq;
557 if (apstBtrMgrSoOutASettings->eBtrMgrOutAType == eBTRMgrATypeSBC) {
570 switch (leBtrMgrSoInSFreq) {
572 lui32BtrMgrInSoSFreq = 8000;
574 case eBTRMgrSFreq16K:
575 lui32BtrMgrInSoSFreq = 16000;
577 case eBTRMgrSFreq32K:
578 lui32BtrMgrInSoSFreq = 32000;
580 case eBTRMgrSFreq44_1K:
581 lui32BtrMgrInSoSFreq = 44100;
583 case eBTRMgrSFreq48K:
584 lui32BtrMgrInSoSFreq = 48000;
586 case eBTRMgrSFreqUnknown:
588 lui32BtrMgrInSoSFreq = 48000;
592 switch (leBtrMgrSoInSFmt) {
593 case eBTRMgrSFmt8bit:
594 lpcBtrMgrInSoSFmt = BTRMGR_AUDIO_SFMT_SIGNED_8BIT;
596 case eBTRMgrSFmt16bit:
597 lpcBtrMgrInSoSFmt = BTRMGR_AUDIO_SFMT_SIGNED_LE_16BIT;
599 case eBTRMgrSFmt24bit:
600 lpcBtrMgrInSoSFmt = BTRMGR_AUDIO_SFMT_SIGNED_LE_24BIT;
602 case eBTRMgrSFmt32bit:
603 lpcBtrMgrInSoSFmt = BTRMGR_AUDIO_SFMT_SIGNED_LE_32BIT;
605 case eBTRMgrSFmtUnknown:
607 lpcBtrMgrInSoSFmt = BTRMGR_AUDIO_SFMT_SIGNED_LE_16BIT;
611 switch (leBtrMgrSoInAChan) {
612 case eBTRMgrAChanMono:
613 lui32BtrMgrInSoAChan = 1;
615 case eBTRMgrAChanDualChannel:
616 lui32BtrMgrInSoAChan = 2;
618 case eBTRMgrAChanStereo:
619 lui32BtrMgrInSoAChan = 2;
621 case eBTRMgrAChanJStereo:
622 lui32BtrMgrInSoAChan = 2;
624 case eBTRMgrAChan5_1:
625 lui32BtrMgrInSoAChan = 6;
627 case eBTRMgrAChan7_1:
628 lui32BtrMgrInSoAChan = 8;
630 case eBTRMgrAChanUnknown:
632 lui32BtrMgrInSoAChan = 2;
637 switch (leBtrMgrSoOutAChan) {
638 case eBTRMgrAChanMono:
639 lui32BtrMgrOutSoAChan = 1;
640 lpcBtrMgrOutSoAChanMode = BTRMGR_AUDIO_CHANNELMODE_MONO;
642 case eBTRMgrAChanDualChannel:
643 lui32BtrMgrOutSoAChan = 2;
644 lpcBtrMgrOutSoAChanMode = BTRMGR_AUDIO_CHANNELMODE_DUAL;
646 case eBTRMgrAChanStereo:
647 lui32BtrMgrOutSoAChan = 2;
648 lpcBtrMgrOutSoAChanMode = BTRMGR_AUDIO_CHANNELMODE_STEREO;
650 case eBTRMgrAChanJStereo:
651 lui32BtrMgrOutSoAChan = 2;
652 lpcBtrMgrOutSoAChanMode = BTRMGR_AUDIO_CHANNELMODE_JSTEREO;
654 case eBTRMgrAChan5_1:
655 lui32BtrMgrOutSoAChan = 6;
657 case eBTRMgrAChan7_1:
658 lui32BtrMgrOutSoAChan = 8;
660 case eBTRMgrAChanUnknown:
662 lui32BtrMgrOutSoAChan = 2;
663 lpcBtrMgrOutSoAChanMode = BTRMGR_AUDIO_CHANNELMODE_STEREO;
667 switch (leBtrMgrSoOutSFreq) {
669 lui32BtrMgrOutSoSFreq = 8000;
671 case eBTRMgrSFreq16K:
672 lui32BtrMgrOutSoSFreq = 16000;
674 case eBTRMgrSFreq32K:
675 lui32BtrMgrOutSoSFreq = 32000;
677 case eBTRMgrSFreq44_1K:
678 lui32BtrMgrOutSoSFreq = 44100;
680 case eBTRMgrSFreq48K:
681 lui32BtrMgrOutSoSFreq = 48000;
683 case eBTRMgrSFreqUnknown:
685 lui32BtrMgrOutSoSFreq = 48000;
691 apstBtrMgrSoInASettings->i32BtrMgrInBufMaxSize,
693 lui32BtrMgrInSoSFreq,
694 lui32BtrMgrInSoAChan,
695 lui32BtrMgrOutSoSFreq,
696 lui32BtrMgrOutSoAChan,
697 lpcBtrMgrOutSoAChanMode,
703 apstBtrMgrSoOutASettings->i32BtrMgrDevFd,
704 apstBtrMgrSoOutASettings->i32BtrMgrDevMtu)) != eBTRMgrSOGstSuccess) {
705 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrSoGstRet);
706 leBtrMgrSoRet = eBTRMgrFailure;
712 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrState = eBTRMgrStatePlaying;
713 pstBtrMgrSoHdl->lstBtrMgrSoStatus.ui32OverFlowCnt = 0;
714 pstBtrMgrSoHdl->lstBtrMgrSoStatus.ui32UnderFlowCnt= 0;
716 return leBtrMgrSoRet;
722 tBTRMgrSoHdl hBTRMgrSoHdl
728 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
731 if (pstBtrMgrSoHdl == NULL) {
732 return eBTRMgrNotInitialized;
736 if ((leBtrMgrSoGstRet =
BTRMgr_SO_GstStop(pstBtrMgrSoHdl->hBTRMgrSoGstHdl)) != eBTRMgrSOGstSuccess) {
737 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrSoGstRet);
738 leBtrMgrSoRet = eBTRMgrFailure;
744 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrState = eBTRMgrStateStopped;
745 pstBtrMgrSoHdl->lstBtrMgrSoStatus.ui32OverFlowCnt = 0;
746 pstBtrMgrSoHdl->lstBtrMgrSoStatus.ui32UnderFlowCnt= 0;
748 return leBtrMgrSoRet;
754 tBTRMgrSoHdl hBTRMgrSoHdl
760 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
763 if (pstBtrMgrSoHdl == NULL) {
764 return eBTRMgrNotInitialized;
768 if ((leBtrMgrSoGstRet =
BTRMgr_SO_GstPause(pstBtrMgrSoHdl->hBTRMgrSoGstHdl)) != eBTRMgrSOGstSuccess) {
769 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrSoGstRet);
770 leBtrMgrSoRet = eBTRMgrFailure;
776 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrState = eBTRMgrStatePaused;
778 return leBtrMgrSoRet;
784 tBTRMgrSoHdl hBTRMgrSoHdl
790 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
793 if (pstBtrMgrSoHdl == NULL) {
794 return eBTRMgrNotInitialized;
798 if ((leBtrMgrSoGstRet =
BTRMgr_SO_GstResume(pstBtrMgrSoHdl->hBTRMgrSoGstHdl)) != eBTRMgrSOGstSuccess) {
799 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrSoGstRet);
800 leBtrMgrSoRet = eBTRMgrFailure;
806 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrState = eBTRMgrStatePlaying;
808 return leBtrMgrSoRet;
814 tBTRMgrSoHdl hBTRMgrSoHdl,
822 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
825 if (pstBtrMgrSoHdl == NULL) {
826 return eBTRMgrNotInitialized;
831 if ((leBtrMgrSoGstRet =
BTRMgr_SO_GstSendBuffer(pstBtrMgrSoHdl->hBTRMgrSoGstHdl, pcInBuf, aiInBufSize)) != eBTRMgrSOGstSuccess) {
832 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrSoGstRet);
833 leBtrMgrSoRet = eBTRMgrFailure;
839 return leBtrMgrSoRet;
845 tBTRMgrSoHdl hBTRMgrSoHdl
851 eBTRMgrSOGstRet leBtrMgrSoGstRet = eBTRMgrSOGstSuccess;
854 if (pstBtrMgrSoHdl == NULL) {
855 return eBTRMgrNotInitialized;
859 if ((leBtrMgrSoGstRet =
BTRMgr_SO_GstSendEOS(pstBtrMgrSoHdl->hBTRMgrSoGstHdl)) != eBTRMgrSOGstSuccess) {
860 BTRMGRLOG_ERROR(
"Return Status = %d\n", leBtrMgrSoGstRet);
861 leBtrMgrSoRet = eBTRMgrFailure;
867 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrState = eBTRMgrStateCompleted;
869 return leBtrMgrSoRet;
878 static eBTRMgrSOGstRet
879 btrMgr_SO_GstStatusCb (
880 eBTRMgrSOGstStatus aeBtrMgrSoGstStatus,
885 gboolean bTriggerCb = FALSE;
887 if (pstBtrMgrSoHdl) {
889 switch (aeBtrMgrSoGstStatus) {
890 case eBTRMgrSOGstStInitialized:
891 case eBTRMgrSOGstStDeInitialized:
892 case eBTRMgrSOGstStPaused:
893 case eBTRMgrSOGstStPlaying:
895 case eBTRMgrSOGstStUnderflow:
896 pstBtrMgrSoHdl->lstBtrMgrSoStatus.ui32UnderFlowCnt++;
898 case eBTRMgrSOGstStOverflow:
899 pstBtrMgrSoHdl->lstBtrMgrSoStatus.ui32OverFlowCnt++;
901 case eBTRMgrSOGstStCompleted:
902 case eBTRMgrSOGstStStopped:
904 case eBTRMgrSOGstStWarning:
905 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrState = eBTRMgrStateWarning;
908 case eBTRMgrSOGstStError:
909 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrState = eBTRMgrStateError;
912 case eBTRMgrSOGstStUnknown:
914 pstBtrMgrSoHdl->lstBtrMgrSoStatus.eBtrMgrState = eBTRMgrStateUnknown;
920 if ((pstBtrMgrSoHdl->fpcBSoStatus) && (bTriggerCb ==
TRUE)) {
923 memcpy (&lstBtrMgrSoMediaStatus, &(pstBtrMgrSoHdl->lstBtrMgrSoStatus),
sizeof(
stBTRMgrMediaStatus));
925 leBtrMgrSoRet = pstBtrMgrSoHdl->fpcBSoStatus(&lstBtrMgrSoMediaStatus, pstBtrMgrSoHdl->pvcBUserData);
926 BTRMGRLOG_TRACE(
"Return Status = %d\n", leBtrMgrSoRet);
930 return eBTRMgrSOGstSuccess;