1 #pragma once
2 
3 #ifndef ANDROID_MEDIA_SWCODEC_FLAGS
4 #define ANDROID_MEDIA_SWCODEC_FLAGS(FLAG) ANDROID_MEDIA_SWCODEC_FLAGS_##FLAG
5 #endif
6 
7 #ifndef ANDROID_MEDIA_SWCODEC_FLAGS_APV_SOFTWARE_CODEC
8 #define ANDROID_MEDIA_SWCODEC_FLAGS_APV_SOFTWARE_CODEC false
9 #endif
10 #ifndef ANDROID_MEDIA_SWCODEC_FLAGS_MPEG2_KEEP_THREADS_ACTIVE
11 #define ANDROID_MEDIA_SWCODEC_FLAGS_MPEG2_KEEP_THREADS_ACTIVE false
12 #endif
13 
14 #ifdef __cplusplus
15 
16 #include <memory>
17 
18 namespace android::media::swcodec::flags {
19 
20 class flag_provider_interface {
21 public:
22     virtual ~flag_provider_interface() = default;
23     virtual bool apv_software_codec() = 0;
24     virtual bool mpeg2_keep_threads_active() = 0;
25 };
26 
27 extern std::unique_ptr<flag_provider_interface> provider_;
28 
29 
apv_software_codec()30 inline bool apv_software_codec() {
31     return ANDROID_MEDIA_SWCODEC_FLAGS_APV_SOFTWARE_CODEC;
32 }
mpeg2_keep_threads_active()33 inline bool mpeg2_keep_threads_active() {
34     return ANDROID_MEDIA_SWCODEC_FLAGS_MPEG2_KEEP_THREADS_ACTIVE;
35 }
36 
37 }
38 
39 extern "C" {
40 #endif // __cplusplus
41 
42 
43 bool android_media_swcodec_flags_apv_software_codec();
44 bool android_media_swcodec_flags_mpeg2_keep_threads_active();
45 
46 #ifdef __cplusplus
47 } // extern "C"
48 #endif
49 
50