summaryrefslogtreecommitdiff
path: root/tvapi/libtv/audio/CAudioCustomerCtrl.cpp (plain)
blob: 4ffc8dacff8256914671f6804045e1b85922ff8f
1#include "CAudioCustomerCtrl.h"
2#include <dlfcn.h>
3#include "CTvLog.h"
4#include "tvsetting/audio_cfg.h"
5
6CAudioCustomerCtrl::CAudioCustomerCtrl()
7{
8 gExternalDacLibHandler = NULL;
9 mpDacMuteFun = NULL;
10 mpDacMainVolFun = NULL;
11 mpDacBalanceFun = NULL;
12 mpSetSourceTypeFun = NULL;
13}
14
15CAudioCustomerCtrl::~CAudioCustomerCtrl()
16{
17 UnLoadExternalDacLib();
18}
19
20int CAudioCustomerCtrl::UnLoadExternalDacLib(void)
21{
22 if (gExternalDacLibHandler != NULL) {
23 dlclose(gExternalDacLibHandler);
24 gExternalDacLibHandler = NULL;
25 }
26
27 mpDacMuteFun = NULL;
28 mpDacMainVolFun = NULL;
29 mpDacBalanceFun = NULL;
30 mpSetSourceTypeFun = NULL;
31
32 return 0;
33}
34
35int CAudioCustomerCtrl::LoadExternalDacLib(void)
36{
37 char *error;
38
39 LOGD("%s, entering...\n", __FUNCTION__);
40
41 if (gExternalDacLibHandler != NULL) {
42 return 0;
43 }
44
45 const char *config_value = GetAudExtDacLibPath();
46 gExternalDacLibHandler = dlopen(config_value, RTLD_NOW);
47 if (!gExternalDacLibHandler) {
48 LOGE("%s, failed to load external dac lib (%s)\n", __FUNCTION__, config_value);
49 goto Error;
50 }
51
52 mpDacMuteFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacMute");
53 if (mpDacMuteFun == NULL) {
54 LOGE("%s, fail find fun mpDacMuteFun()\n", __FUNCTION__);
55 goto Error;
56 }
57 mpDacMainVolFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacMainVolume");
58 if (mpDacMainVolFun == NULL) {
59 LOGE("%s, fail find fun HandleDacMainVolume()\n", __FUNCTION__);
60 goto Error;
61 }
62 mpDacBalanceFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacBalance");
63 if (mpDacBalanceFun == NULL) {
64 LOGE("%s, fail find fun HandleDacBalance()\n", __FUNCTION__);
65 goto Error;
66 }
67 mpSetSourceTypeFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleAudioSourceType");
68 if (mpSetSourceTypeFun == NULL) {
69 LOGE("%s, fail find fun HandleAudioSourceType()\n", __FUNCTION__);
70 goto Error;
71 }
72
73 return 0;
74
75Error: //
76 mpDacMuteFun = NULL;
77 mpDacMainVolFun = NULL;
78 mpDacBalanceFun = NULL;
79 mpSetSourceTypeFun = NULL;
80
81 if (gExternalDacLibHandler != NULL) {
82 dlclose(gExternalDacLibHandler);
83 gExternalDacLibHandler = NULL;
84 }
85 return -1;
86}
87
88// 0 mute, 1 unmute
89int CAudioCustomerCtrl::SetMute(int mute)
90{
91 int ret = LoadExternalDacLib();
92 if (mpDacMuteFun != NULL) {
93 ret = (*mpDacMuteFun)(mute);
94 }
95 return ret;
96}
97
98int CAudioCustomerCtrl::SetVolumeBar(int vol)
99{
100 int ret = LoadExternalDacLib();
101 if (mpDacMainVolFun != NULL) {
102 LOGD("%s, call external dac lib HandleDacMainVolume (para = %d).\n", __FUNCTION__, vol);
103 ret = (*mpDacMainVolFun)(vol);
104 }
105 return ret;
106}
107
108int CAudioCustomerCtrl::SetBlance(int balance)
109{
110 int ret = LoadExternalDacLib();
111 if (mpDacBalanceFun != NULL) {
112 LOGD("%s, call external dac lib HandleDacBalance (para = %d).\n", __FUNCTION__, balance);
113 ret = (*mpDacBalanceFun)(balance);
114 }
115 return ret;
116}
117
118int CAudioCustomerCtrl::SetSource(int source)
119{
120 int ret = LoadExternalDacLib();
121 if (mpSetSourceTypeFun != NULL) {
122 LOGD("%s, call external dac lib HandleAudioSourceType (para = %d).\n", __FUNCTION__, source);
123 ret = (*mpSetSourceTypeFun)(source);
124 }
125 return ret;
126}
127