Skip to content

Commit a44c581

Browse files
committed
More stupid stuff
1 parent d4f8e87 commit a44c581

File tree

3 files changed

+62
-20
lines changed

3 files changed

+62
-20
lines changed

src/AidlVersions.cpp

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,32 @@
33
#include <string>
44
#include <dlfcn.h>
55

6-
void AidlVersions::init() {
7-
char tmp[128];
8-
6+
AidlVersions::AidlVersions() {
97
ALOGD("AidlVersions::init()");
8+
findAndroidHardwareAudioCommonVersion();
9+
findAndroidHardwareAudioEffectVersion();
10+
findAndroidHardwareCommonVersion();
11+
findAndroidHardwareCommonFmqVersion();
12+
findAndroidMediaAudioCommonTypesVersion();
13+
findAndroidMediaAudioEraserTypesVersion();
14+
}
15+
16+
void AidlVersions::findAndroidHardwareAudioCommonVersion() {
17+
char tmp[128];
18+
for (uint32_t i = ANDROID_HARDWARE_AUDIO_COMMON_MAX_VERSION; i > 0; i--) {
19+
snprintf(tmp, sizeof(tmp), "android.hardware.audio.common-V%u-ndk.so", i);
20+
void *handle = dlopen(tmp, RTLD_LAZY);
21+
if (handle) {
22+
ALOGD("Found android.hardware.audio.common-V%u-ndk.so", i);
23+
androidHardwareAudioCommonVersion = i;
24+
dlclose(handle);
25+
break;
26+
}
27+
}
28+
}
1029

30+
void AidlVersions::findAndroidHardwareAudioEffectVersion() {
31+
char tmp[128];
1132
for (uint32_t i = ANDROID_HARDWARE_AUDIO_EFFECT_MAX_VERSION; i > 0; i--) {
1233
snprintf(tmp, sizeof(tmp), "android.hardware.audio.effect-V%u-ndk.so", i);
1334
void *handle = dlopen(tmp, RTLD_LAZY);
@@ -21,7 +42,10 @@ void AidlVersions::init() {
2142
if (androidHardwareAudioEffectVersion == 0) {
2243
ALOGE("Failed to find android.hardware.audio.effect version!");
2344
}
45+
}
2446

47+
void AidlVersions::findAndroidHardwareCommonVersion() {
48+
char tmp[128];
2549
for (uint32_t i = ANDROID_HARDWARE_COMMON_MAX_VERSION; i > 0; i--) {
2650
snprintf(tmp, sizeof(tmp), "android.hardware.common-V%u-ndk.so", i);
2751
void *handle = dlopen(tmp, RTLD_LAZY);
@@ -35,7 +59,10 @@ void AidlVersions::init() {
3559
if (androidHardwareCommonVersion == 0) {
3660
ALOGE("Failed to find android.hardware.common version!");
3761
}
62+
}
3863

64+
void AidlVersions::findAndroidHardwareCommonFmqVersion() {
65+
char tmp[128];
3966
for (uint32_t i = ANDROID_HARDWARE_COMMON_FMQ_MAX_VERSION; i > 0; i--) {
4067
snprintf(tmp, sizeof(tmp), "android.hardware.common.fmq-V%u-ndk.so", i);
4168
void *handle = dlopen(tmp, RTLD_LAZY);
@@ -49,7 +76,10 @@ void AidlVersions::init() {
4976
if (androidHardwareCommonFmqVersion == 0) {
5077
ALOGE("Failed to find android.hardware.common.fmq version!");
5178
}
79+
}
5280

81+
void AidlVersions::findAndroidMediaAudioCommonTypesVersion() {
82+
char tmp[128];
5383
for (uint32_t i = ANDROID_MEDIA_AUDIO_COMMON_TYPES_MAX_VERSION; i > 0; i--) {
5484
snprintf(tmp, sizeof(tmp), "android.media.audio.common.types-V%u-ndk.so", i);
5585
void *handle = dlopen(tmp, RTLD_LAZY);
@@ -65,7 +95,7 @@ void AidlVersions::init() {
6595
}
6696
}
6797

68-
__attribute__((constructor))
69-
void aidl_versions_init() {
70-
AidlVersions::init();
98+
void AidlVersions::findAndroidMediaAudioEraserTypesVersion() {
99+
char tmp[128];
100+
// TODO
71101
}

src/AidlVersions.h

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,31 @@
44

55
class AidlVersions {
66
public:
7-
const static uint32_t ANDROID_HARDWARE_AUDIO_COMMON_MAX_VERSION = 1;
8-
const static uint32_t ANDROID_HARDWARE_AUDIO_EFFECT_MAX_VERSION = 3;
9-
const static uint32_t ANDROID_HARDWARE_COMMON_MAX_VERSION = 1;
10-
const static uint32_t ANDROID_HARDWARE_COMMON_FMQ_MAX_VERSION = 1;
11-
const static uint32_t ANDROID_MEDIA_AUDIO_COMMON_TYPES_MAX_VERSION = 4;
12-
const static uint32_t ANDROID_MEDIA_AUDIO_ERASER_TYPES_MAX_VERSION = 1;
7+
const static uint32_t ANDROID_HARDWARE_AUDIO_COMMON_MAX_VERSION = 5;
8+
const static uint32_t ANDROID_HARDWARE_AUDIO_EFFECT_MAX_VERSION = 4;
9+
const static uint32_t ANDROID_HARDWARE_COMMON_MAX_VERSION = 3;
10+
const static uint32_t ANDROID_HARDWARE_COMMON_FMQ_MAX_VERSION = 2;
11+
const static uint32_t ANDROID_MEDIA_AUDIO_COMMON_TYPES_MAX_VERSION = 5;
12+
const static uint32_t ANDROID_MEDIA_AUDIO_ERASER_TYPES_MAX_VERSION = 2;
1313

14-
static void init();
14+
uint32_t androidHardwareAudioCommonVersion = 0;
15+
uint32_t androidHardwareAudioEffectVersion = 0;
16+
uint32_t androidHardwareCommonVersion = 0;
17+
uint32_t androidHardwareCommonFmqVersion = 0;
18+
uint32_t androidMediaAudioCommonTypesVersion = 0;
19+
uint32_t androidMediaAudioEraserTypesVersion = 0;
1520

16-
static inline uint32_t androidHardwareAudioCommonVersion = 0;
17-
static inline uint32_t androidHardwareAudioEffectVersion = 0;
18-
static inline uint32_t androidHardwareCommonVersion = 0;
19-
static inline uint32_t androidHardwareCommonFmqVersion = 0;
20-
static inline uint32_t androidMediaAudioCommonTypesVersion = 0;
21-
static inline uint32_t androidMediaAudioEraserTypesVersion = 0;
21+
static inline AidlVersions &instance() {
22+
static AidlVersions instance;
23+
return instance;
24+
}
25+
private:
26+
AidlVersions();
27+
28+
void findAndroidHardwareAudioCommonVersion();
29+
void findAndroidHardwareAudioEffectVersion();
30+
void findAndroidHardwareCommonVersion();
31+
void findAndroidHardwareCommonFmqVersion();
32+
void findAndroidMediaAudioCommonTypesVersion();
33+
void findAndroidMediaAudioEraserTypesVersion();
2234
};

src/include/android/media/audio/common/AudioUuid.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class AudioUuid {
6464
return !(_rhs < *this);
6565
}
6666
private:
67-
uint32_t version = AidlVersions::androidMediaAudioCommonTypesVersion;
67+
uint32_t version = AidlVersions::instance().androidMediaAudioCommonTypesVersion;
6868
v1::AudioUuid *uuid_v1 = (v1::AudioUuid *) this;
6969
};
7070
} // namespace android::media::audio::common

0 commit comments

Comments
 (0)