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()30inline bool apv_software_codec() { 31 return ANDROID_MEDIA_SWCODEC_FLAGS_APV_SOFTWARE_CODEC; 32 } mpeg2_keep_threads_active()33inline 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