Loading media/libaudioclient/AudioRecord.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -1077,6 +1077,7 @@ status_t AudioRecord::createRecord_l(const Modulo<uint32_t> &epoch) .set(AMEDIAMETRICS_PROP_SAMPLERATE, (int32_t)mSampleRate) // the following are NOT immutable .set(AMEDIAMETRICS_PROP_STATE, stateToString(mActive)) .set(AMEDIAMETRICS_PROP_STATUS, (int32_t)status) .set(AMEDIAMETRICS_PROP_SELECTEDMICDIRECTION, (int32_t)mSelectedMicDirection) .set(AMEDIAMETRICS_PROP_SELECTEDMICFIELDDIRECTION, (double)mSelectedMicFieldDimension) .record(); Loading media/libaudioclient/AudioTrack.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -2121,6 +2121,7 @@ status_t AudioTrack::createTrack_l() .set(AMEDIAMETRICS_PROP_VOLUME_LEFT, (double)mVolume[AUDIO_INTERLEAVE_LEFT]) .set(AMEDIAMETRICS_PROP_VOLUME_RIGHT, (double)mVolume[AUDIO_INTERLEAVE_RIGHT]) .set(AMEDIAMETRICS_PROP_STATE, stateToString(mState)) .set(AMEDIAMETRICS_PROP_STATUS, (int32_t)NO_ERROR) .set(AMEDIAMETRICS_PROP_AUXEFFECTID, (int32_t)mAuxEffectId) .set(AMEDIAMETRICS_PROP_SAMPLERATE, (int32_t)mSampleRate) .set(AMEDIAMETRICS_PROP_PLAYBACK_SPEED, (double)mPlaybackRate.mSpeed) Loading Loading @@ -2163,8 +2164,8 @@ void AudioTrack::reportError(status_t status, const char *event, const char *mes // Ensure these variables are initialized in set(). mediametrics::LogItem(AMEDIAMETRICS_KEY_AUDIO_TRACK_ERROR) .set(AMEDIAMETRICS_PROP_EVENT, event) .set(AMEDIAMETRICS_PROP_ERROR, mediametrics::statusToErrorString(status)) .set(AMEDIAMETRICS_PROP_ERRORMESSAGE, message) .set(AMEDIAMETRICS_PROP_STATUS, (int32_t)status) .set(AMEDIAMETRICS_PROP_STATUSMESSAGE, message) .set(AMEDIAMETRICS_PROP_ORIGINALFLAGS, toString(mOrigFlags).c_str()) .set(AMEDIAMETRICS_PROP_SESSIONID, (int32_t)mSessionId) .set(AMEDIAMETRICS_PROP_CONTENTTYPE, toString(mAttributes.content_type).c_str()) Loading media/libmediametrics/MediaMetricsItem.cpp +9 −9 Original line number Diff line number Diff line Loading @@ -57,19 +57,19 @@ static const std::unordered_map<std::string, int32_t>& getErrorStringMap() { // This may be found in frameworks/av/media/libmediametrics/include/MediaMetricsConstants.h static std::unordered_map<std::string, int32_t> map{ {"", NO_ERROR}, {AMEDIAMETRICS_PROP_ERROR_VALUE_OK, NO_ERROR}, {AMEDIAMETRICS_PROP_ERROR_VALUE_ARGUMENT, BAD_VALUE}, {AMEDIAMETRICS_PROP_ERROR_VALUE_IO, DEAD_OBJECT}, {AMEDIAMETRICS_PROP_ERROR_VALUE_MEMORY, NO_MEMORY}, {AMEDIAMETRICS_PROP_ERROR_VALUE_SECURITY, PERMISSION_DENIED}, {AMEDIAMETRICS_PROP_ERROR_VALUE_STATE, INVALID_OPERATION}, {AMEDIAMETRICS_PROP_ERROR_VALUE_TIMEOUT, WOULD_BLOCK}, {AMEDIAMETRICS_PROP_ERROR_VALUE_UNKNOWN, UNKNOWN_ERROR}, {AMEDIAMETRICS_PROP_STATUS_VALUE_OK, NO_ERROR}, {AMEDIAMETRICS_PROP_STATUS_VALUE_ARGUMENT, BAD_VALUE}, {AMEDIAMETRICS_PROP_STATUS_VALUE_IO, DEAD_OBJECT}, {AMEDIAMETRICS_PROP_STATUS_VALUE_MEMORY, NO_MEMORY}, {AMEDIAMETRICS_PROP_STATUS_VALUE_SECURITY, PERMISSION_DENIED}, {AMEDIAMETRICS_PROP_STATUS_VALUE_STATE, INVALID_OPERATION}, {AMEDIAMETRICS_PROP_STATUS_VALUE_TIMEOUT, WOULD_BLOCK}, {AMEDIAMETRICS_PROP_STATUS_VALUE_UNKNOWN, UNKNOWN_ERROR}, }; return map; } status_t errorStringToStatus(const char *error) { status_t statusStringToStatus(const char *error) { const auto& map = getErrorStringMap(); if (error == nullptr || error[0] == '\0') return NO_ERROR; auto it = map.find(error); Loading media/libmediametrics/include/MediaMetricsConstants.h +34 −21 Original line number Diff line number Diff line Loading @@ -119,18 +119,6 @@ #define AMEDIAMETRICS_PROP_DURATIONNS "durationNs" // int64 duration time span #define AMEDIAMETRICS_PROP_ENCODING "encoding" // string value of format // Error statistics #define AMEDIAMETRICS_PROP_ERROR "error#" // string, empty or one of // AMEDIAMETRICS_PROP_ERROR_VALUE_* // Used for error categorization. #define AMEDIAMETRICS_PROP_ERRORSUBCODE "errorSubCode#" // int32, specific code for error // used in conjunction with error#. #define AMEDIAMETRICS_PROP_ERRORMESSAGE "errorMessage#" // string, supplemental to error. // Arbitrary information treated as // informational, may be logcat msg, // or an exception with stack trace. // Treated as "debug" information. #define AMEDIAMETRICS_PROP_EVENT "event#" // string value (often func name) #define AMEDIAMETRICS_PROP_EXECUTIONTIMENS "executionTimeNs" // time to execute the event Loading Loading @@ -162,7 +150,17 @@ #define AMEDIAMETRICS_PROP_STARTUPMS "startupMs" // double value // State is "ACTIVE" or "STOPPED" for AudioRecord #define AMEDIAMETRICS_PROP_STATE "state" // string #define AMEDIAMETRICS_PROP_STATUS "status" // int32 status_t #define AMEDIAMETRICS_PROP_STATUS "status#" // int32 status_t // AAudio uses their own status codes // Supplemental information to the status code. #define AMEDIAMETRICS_PROP_STATUSSUBCODE "statusSubCode" // int32, specific code // used in conjunction with status. #define AMEDIAMETRICS_PROP_STATUSMESSAGE "statusMessage" // string, supplemental info. // Arbitrary information treated as // informational, may be logcat msg, // or an exception with stack trace. // Treated as "debug" information. #define AMEDIAMETRICS_PROP_STREAMTYPE "streamType" // string (AudioTrack) #define AMEDIAMETRICS_PROP_THREADID "threadId" // int32 value io handle #define AMEDIAMETRICS_PROP_THROTTLEMS "throttleMs" // double Loading Loading @@ -237,17 +235,20 @@ // https://cs.android.com/android/platform/superproject/+/master:frameworks/native/libs/binder/include/binder/Status.h;drc=88e25c0861499ee3ab885814dddc097ab234cb7b;l=57 // https://cs.android.com/android/platform/superproject/+/master:frameworks/base/media/java/android/media/AudioSystem.java;drc=3ac246c43294d7f7012bdcb0ccb7bae1aa695bd4;l=785 // https://cs.android.com/android/platform/superproject/+/master:frameworks/av/media/libaaudio/include/aaudio/AAudio.h;drc=cfd3a6fa3aaaf712a890dc02452b38ef401083b8;l=120 // https://abseil.io/docs/cpp/guides/status-codes // Status errors: // An empty status string or "ok" is interpreted as no error. #define AMEDIAMETRICS_PROP_ERROR_VALUE_OK "ok" #define AMEDIAMETRICS_PROP_STATUS_VALUE_OK "ok" // Error category: argument // IllegalArgumentException // NullPointerException // BAD_VALUE // absl::INVALID_ARGUMENT // absl::OUT_OF_RANGE // Out of range, out of bounds. #define AMEDIAMETRICS_PROP_ERROR_VALUE_ARGUMENT "argument" #define AMEDIAMETRICS_PROP_STATUS_VALUE_ARGUMENT "argument" // Error category: io // IOException Loading @@ -258,36 +259,48 @@ // file or ioctl failure // Service, rpc, binder, or socket failure. // Hardware or device failure. #define AMEDIAMETRICS_PROP_ERROR_VALUE_IO "io" #define AMEDIAMETRICS_PROP_STATUS_VALUE_IO "io" // Error category: outOfMemory // OutOfMemoryException // NO_MEMORY #define AMEDIAMETRICS_PROP_ERROR_VALUE_MEMORY "memory" // absl::RESOURCE_EXHAUSTED #define AMEDIAMETRICS_PROP_STATUS_VALUE_MEMORY "memory" // Error category: security // SecurityException // PERMISSION_DENIED #define AMEDIAMETRICS_PROP_ERROR_VALUE_SECURITY "security" // absl::PERMISSION_DENIED // absl::UNAUTHENTICATED #define AMEDIAMETRICS_PROP_STATUS_VALUE_SECURITY "security" // Error category: state // IllegalStateException // UnsupportedOperationException // INVALID_OPERATION // NO_INIT // absl::NOT_FOUND // absl::ALREADY_EXISTS // absl::FAILED_PRECONDITION // absl::UNAVAILABLE // absl::UNIMPLEMENTED // Functionality not implemented (argument may or may not be correct). // Call unexpected or out of order. #define AMEDIAMETRICS_PROP_ERROR_VALUE_STATE "state" #define AMEDIAMETRICS_PROP_STATUS_VALUE_STATE "state" // Error category: timeout // TimeoutException // WOULD_BLOCK #define AMEDIAMETRICS_PROP_ERROR_VALUE_TIMEOUT "timeout" // absl::DEADLINE_EXCEEDED // absl::ABORTED #define AMEDIAMETRICS_PROP_STATUS_VALUE_TIMEOUT "timeout" // Error category: unknown // Exception (Java specified not listed above, or custom app/service) // UNKNOWN_ERROR // absl::INTERNAL // absl::DATA_LOSS // Catch-all bucket for errors not listed above. #define AMEDIAMETRICS_PROP_ERROR_VALUE_UNKNOWN "unknown" #define AMEDIAMETRICS_PROP_STATUS_VALUE_UNKNOWN "unknown" #endif // ANDROID_MEDIA_MEDIAMETRICSCONSTANTS_H media/libmediametrics/include/media/MediaMetricsItem.h +13 −13 Original line number Diff line number Diff line Loading @@ -106,34 +106,34 @@ enum Type { }; /* * Helper for error conversions * Helper for status conversions */ static inline constexpr const char* statusToErrorString(status_t status) { inline constexpr const char* statusToStatusString(status_t status) { switch (status) { case NO_ERROR: return ""; case BAD_VALUE: return AMEDIAMETRICS_PROP_ERROR_VALUE_ARGUMENT; return AMEDIAMETRICS_PROP_STATUS_VALUE_ARGUMENT; case DEAD_OBJECT: case FAILED_TRANSACTION: return AMEDIAMETRICS_PROP_ERROR_VALUE_IO; return AMEDIAMETRICS_PROP_STATUS_VALUE_IO; case NO_MEMORY: return AMEDIAMETRICS_PROP_ERROR_VALUE_MEMORY; return AMEDIAMETRICS_PROP_STATUS_VALUE_MEMORY; case PERMISSION_DENIED: return AMEDIAMETRICS_PROP_ERROR_VALUE_SECURITY; return AMEDIAMETRICS_PROP_STATUS_VALUE_SECURITY; case NO_INIT: case INVALID_OPERATION: return AMEDIAMETRICS_PROP_ERROR_VALUE_STATE; return AMEDIAMETRICS_PROP_STATUS_VALUE_STATE; case WOULD_BLOCK: return AMEDIAMETRICS_PROP_ERROR_VALUE_TIMEOUT; case UNKNOWN_ERROR: return AMEDIAMETRICS_PROP_STATUS_VALUE_TIMEOUT; default: return AMEDIAMETRICS_PROP_ERROR_VALUE_UNKNOWN; if (status >= 0) return AMEDIAMETRICS_PROP_STATUS_VALUE_OK; // non-negative values "OK" [[fallthrough]]; // negative values are error. case UNKNOWN_ERROR: return AMEDIAMETRICS_PROP_STATUS_VALUE_UNKNOWN; } } status_t errorStringToStatus(const char *error); status_t statusStringToStatus(const char *error); /* * Time printing Loading Loading
media/libaudioclient/AudioRecord.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -1077,6 +1077,7 @@ status_t AudioRecord::createRecord_l(const Modulo<uint32_t> &epoch) .set(AMEDIAMETRICS_PROP_SAMPLERATE, (int32_t)mSampleRate) // the following are NOT immutable .set(AMEDIAMETRICS_PROP_STATE, stateToString(mActive)) .set(AMEDIAMETRICS_PROP_STATUS, (int32_t)status) .set(AMEDIAMETRICS_PROP_SELECTEDMICDIRECTION, (int32_t)mSelectedMicDirection) .set(AMEDIAMETRICS_PROP_SELECTEDMICFIELDDIRECTION, (double)mSelectedMicFieldDimension) .record(); Loading
media/libaudioclient/AudioTrack.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -2121,6 +2121,7 @@ status_t AudioTrack::createTrack_l() .set(AMEDIAMETRICS_PROP_VOLUME_LEFT, (double)mVolume[AUDIO_INTERLEAVE_LEFT]) .set(AMEDIAMETRICS_PROP_VOLUME_RIGHT, (double)mVolume[AUDIO_INTERLEAVE_RIGHT]) .set(AMEDIAMETRICS_PROP_STATE, stateToString(mState)) .set(AMEDIAMETRICS_PROP_STATUS, (int32_t)NO_ERROR) .set(AMEDIAMETRICS_PROP_AUXEFFECTID, (int32_t)mAuxEffectId) .set(AMEDIAMETRICS_PROP_SAMPLERATE, (int32_t)mSampleRate) .set(AMEDIAMETRICS_PROP_PLAYBACK_SPEED, (double)mPlaybackRate.mSpeed) Loading Loading @@ -2163,8 +2164,8 @@ void AudioTrack::reportError(status_t status, const char *event, const char *mes // Ensure these variables are initialized in set(). mediametrics::LogItem(AMEDIAMETRICS_KEY_AUDIO_TRACK_ERROR) .set(AMEDIAMETRICS_PROP_EVENT, event) .set(AMEDIAMETRICS_PROP_ERROR, mediametrics::statusToErrorString(status)) .set(AMEDIAMETRICS_PROP_ERRORMESSAGE, message) .set(AMEDIAMETRICS_PROP_STATUS, (int32_t)status) .set(AMEDIAMETRICS_PROP_STATUSMESSAGE, message) .set(AMEDIAMETRICS_PROP_ORIGINALFLAGS, toString(mOrigFlags).c_str()) .set(AMEDIAMETRICS_PROP_SESSIONID, (int32_t)mSessionId) .set(AMEDIAMETRICS_PROP_CONTENTTYPE, toString(mAttributes.content_type).c_str()) Loading
media/libmediametrics/MediaMetricsItem.cpp +9 −9 Original line number Diff line number Diff line Loading @@ -57,19 +57,19 @@ static const std::unordered_map<std::string, int32_t>& getErrorStringMap() { // This may be found in frameworks/av/media/libmediametrics/include/MediaMetricsConstants.h static std::unordered_map<std::string, int32_t> map{ {"", NO_ERROR}, {AMEDIAMETRICS_PROP_ERROR_VALUE_OK, NO_ERROR}, {AMEDIAMETRICS_PROP_ERROR_VALUE_ARGUMENT, BAD_VALUE}, {AMEDIAMETRICS_PROP_ERROR_VALUE_IO, DEAD_OBJECT}, {AMEDIAMETRICS_PROP_ERROR_VALUE_MEMORY, NO_MEMORY}, {AMEDIAMETRICS_PROP_ERROR_VALUE_SECURITY, PERMISSION_DENIED}, {AMEDIAMETRICS_PROP_ERROR_VALUE_STATE, INVALID_OPERATION}, {AMEDIAMETRICS_PROP_ERROR_VALUE_TIMEOUT, WOULD_BLOCK}, {AMEDIAMETRICS_PROP_ERROR_VALUE_UNKNOWN, UNKNOWN_ERROR}, {AMEDIAMETRICS_PROP_STATUS_VALUE_OK, NO_ERROR}, {AMEDIAMETRICS_PROP_STATUS_VALUE_ARGUMENT, BAD_VALUE}, {AMEDIAMETRICS_PROP_STATUS_VALUE_IO, DEAD_OBJECT}, {AMEDIAMETRICS_PROP_STATUS_VALUE_MEMORY, NO_MEMORY}, {AMEDIAMETRICS_PROP_STATUS_VALUE_SECURITY, PERMISSION_DENIED}, {AMEDIAMETRICS_PROP_STATUS_VALUE_STATE, INVALID_OPERATION}, {AMEDIAMETRICS_PROP_STATUS_VALUE_TIMEOUT, WOULD_BLOCK}, {AMEDIAMETRICS_PROP_STATUS_VALUE_UNKNOWN, UNKNOWN_ERROR}, }; return map; } status_t errorStringToStatus(const char *error) { status_t statusStringToStatus(const char *error) { const auto& map = getErrorStringMap(); if (error == nullptr || error[0] == '\0') return NO_ERROR; auto it = map.find(error); Loading
media/libmediametrics/include/MediaMetricsConstants.h +34 −21 Original line number Diff line number Diff line Loading @@ -119,18 +119,6 @@ #define AMEDIAMETRICS_PROP_DURATIONNS "durationNs" // int64 duration time span #define AMEDIAMETRICS_PROP_ENCODING "encoding" // string value of format // Error statistics #define AMEDIAMETRICS_PROP_ERROR "error#" // string, empty or one of // AMEDIAMETRICS_PROP_ERROR_VALUE_* // Used for error categorization. #define AMEDIAMETRICS_PROP_ERRORSUBCODE "errorSubCode#" // int32, specific code for error // used in conjunction with error#. #define AMEDIAMETRICS_PROP_ERRORMESSAGE "errorMessage#" // string, supplemental to error. // Arbitrary information treated as // informational, may be logcat msg, // or an exception with stack trace. // Treated as "debug" information. #define AMEDIAMETRICS_PROP_EVENT "event#" // string value (often func name) #define AMEDIAMETRICS_PROP_EXECUTIONTIMENS "executionTimeNs" // time to execute the event Loading Loading @@ -162,7 +150,17 @@ #define AMEDIAMETRICS_PROP_STARTUPMS "startupMs" // double value // State is "ACTIVE" or "STOPPED" for AudioRecord #define AMEDIAMETRICS_PROP_STATE "state" // string #define AMEDIAMETRICS_PROP_STATUS "status" // int32 status_t #define AMEDIAMETRICS_PROP_STATUS "status#" // int32 status_t // AAudio uses their own status codes // Supplemental information to the status code. #define AMEDIAMETRICS_PROP_STATUSSUBCODE "statusSubCode" // int32, specific code // used in conjunction with status. #define AMEDIAMETRICS_PROP_STATUSMESSAGE "statusMessage" // string, supplemental info. // Arbitrary information treated as // informational, may be logcat msg, // or an exception with stack trace. // Treated as "debug" information. #define AMEDIAMETRICS_PROP_STREAMTYPE "streamType" // string (AudioTrack) #define AMEDIAMETRICS_PROP_THREADID "threadId" // int32 value io handle #define AMEDIAMETRICS_PROP_THROTTLEMS "throttleMs" // double Loading Loading @@ -237,17 +235,20 @@ // https://cs.android.com/android/platform/superproject/+/master:frameworks/native/libs/binder/include/binder/Status.h;drc=88e25c0861499ee3ab885814dddc097ab234cb7b;l=57 // https://cs.android.com/android/platform/superproject/+/master:frameworks/base/media/java/android/media/AudioSystem.java;drc=3ac246c43294d7f7012bdcb0ccb7bae1aa695bd4;l=785 // https://cs.android.com/android/platform/superproject/+/master:frameworks/av/media/libaaudio/include/aaudio/AAudio.h;drc=cfd3a6fa3aaaf712a890dc02452b38ef401083b8;l=120 // https://abseil.io/docs/cpp/guides/status-codes // Status errors: // An empty status string or "ok" is interpreted as no error. #define AMEDIAMETRICS_PROP_ERROR_VALUE_OK "ok" #define AMEDIAMETRICS_PROP_STATUS_VALUE_OK "ok" // Error category: argument // IllegalArgumentException // NullPointerException // BAD_VALUE // absl::INVALID_ARGUMENT // absl::OUT_OF_RANGE // Out of range, out of bounds. #define AMEDIAMETRICS_PROP_ERROR_VALUE_ARGUMENT "argument" #define AMEDIAMETRICS_PROP_STATUS_VALUE_ARGUMENT "argument" // Error category: io // IOException Loading @@ -258,36 +259,48 @@ // file or ioctl failure // Service, rpc, binder, or socket failure. // Hardware or device failure. #define AMEDIAMETRICS_PROP_ERROR_VALUE_IO "io" #define AMEDIAMETRICS_PROP_STATUS_VALUE_IO "io" // Error category: outOfMemory // OutOfMemoryException // NO_MEMORY #define AMEDIAMETRICS_PROP_ERROR_VALUE_MEMORY "memory" // absl::RESOURCE_EXHAUSTED #define AMEDIAMETRICS_PROP_STATUS_VALUE_MEMORY "memory" // Error category: security // SecurityException // PERMISSION_DENIED #define AMEDIAMETRICS_PROP_ERROR_VALUE_SECURITY "security" // absl::PERMISSION_DENIED // absl::UNAUTHENTICATED #define AMEDIAMETRICS_PROP_STATUS_VALUE_SECURITY "security" // Error category: state // IllegalStateException // UnsupportedOperationException // INVALID_OPERATION // NO_INIT // absl::NOT_FOUND // absl::ALREADY_EXISTS // absl::FAILED_PRECONDITION // absl::UNAVAILABLE // absl::UNIMPLEMENTED // Functionality not implemented (argument may or may not be correct). // Call unexpected or out of order. #define AMEDIAMETRICS_PROP_ERROR_VALUE_STATE "state" #define AMEDIAMETRICS_PROP_STATUS_VALUE_STATE "state" // Error category: timeout // TimeoutException // WOULD_BLOCK #define AMEDIAMETRICS_PROP_ERROR_VALUE_TIMEOUT "timeout" // absl::DEADLINE_EXCEEDED // absl::ABORTED #define AMEDIAMETRICS_PROP_STATUS_VALUE_TIMEOUT "timeout" // Error category: unknown // Exception (Java specified not listed above, or custom app/service) // UNKNOWN_ERROR // absl::INTERNAL // absl::DATA_LOSS // Catch-all bucket for errors not listed above. #define AMEDIAMETRICS_PROP_ERROR_VALUE_UNKNOWN "unknown" #define AMEDIAMETRICS_PROP_STATUS_VALUE_UNKNOWN "unknown" #endif // ANDROID_MEDIA_MEDIAMETRICSCONSTANTS_H
media/libmediametrics/include/media/MediaMetricsItem.h +13 −13 Original line number Diff line number Diff line Loading @@ -106,34 +106,34 @@ enum Type { }; /* * Helper for error conversions * Helper for status conversions */ static inline constexpr const char* statusToErrorString(status_t status) { inline constexpr const char* statusToStatusString(status_t status) { switch (status) { case NO_ERROR: return ""; case BAD_VALUE: return AMEDIAMETRICS_PROP_ERROR_VALUE_ARGUMENT; return AMEDIAMETRICS_PROP_STATUS_VALUE_ARGUMENT; case DEAD_OBJECT: case FAILED_TRANSACTION: return AMEDIAMETRICS_PROP_ERROR_VALUE_IO; return AMEDIAMETRICS_PROP_STATUS_VALUE_IO; case NO_MEMORY: return AMEDIAMETRICS_PROP_ERROR_VALUE_MEMORY; return AMEDIAMETRICS_PROP_STATUS_VALUE_MEMORY; case PERMISSION_DENIED: return AMEDIAMETRICS_PROP_ERROR_VALUE_SECURITY; return AMEDIAMETRICS_PROP_STATUS_VALUE_SECURITY; case NO_INIT: case INVALID_OPERATION: return AMEDIAMETRICS_PROP_ERROR_VALUE_STATE; return AMEDIAMETRICS_PROP_STATUS_VALUE_STATE; case WOULD_BLOCK: return AMEDIAMETRICS_PROP_ERROR_VALUE_TIMEOUT; case UNKNOWN_ERROR: return AMEDIAMETRICS_PROP_STATUS_VALUE_TIMEOUT; default: return AMEDIAMETRICS_PROP_ERROR_VALUE_UNKNOWN; if (status >= 0) return AMEDIAMETRICS_PROP_STATUS_VALUE_OK; // non-negative values "OK" [[fallthrough]]; // negative values are error. case UNKNOWN_ERROR: return AMEDIAMETRICS_PROP_STATUS_VALUE_UNKNOWN; } } status_t errorStringToStatus(const char *error); status_t statusStringToStatus(const char *error); /* * Time printing Loading