1 /* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef MEDIA_ERRORS_H_ 18 19 #define MEDIA_ERRORS_H_ 20 21 #include <utils/Errors.h> 22 23 namespace android { 24 25 enum { 26 // status_t map for errors in the media framework 27 // OK or NO_ERROR or 0 represents no error. 28 29 // See system/core/include/utils/Errors.h 30 // System standard errors from -1 through (possibly) -133 31 // 32 // Errors with special meanings and side effects. 33 // INVALID_OPERATION: Operation attempted in an illegal state (will try to signal to app). 34 // DEAD_OBJECT: Signal from CodecBase to MediaCodec that MediaServer has died. 35 // NAME_NOT_FOUND: Signal from CodecBase to MediaCodec that the component was not found. 36 37 // Media errors 38 MEDIA_ERROR_BASE = -1000, 39 40 ERROR_ALREADY_CONNECTED = MEDIA_ERROR_BASE, 41 ERROR_NOT_CONNECTED = MEDIA_ERROR_BASE - 1, 42 ERROR_UNKNOWN_HOST = MEDIA_ERROR_BASE - 2, 43 ERROR_CANNOT_CONNECT = MEDIA_ERROR_BASE - 3, 44 ERROR_IO = MEDIA_ERROR_BASE - 4, 45 ERROR_CONNECTION_LOST = MEDIA_ERROR_BASE - 5, 46 ERROR_MALFORMED = MEDIA_ERROR_BASE - 7, 47 ERROR_OUT_OF_RANGE = MEDIA_ERROR_BASE - 8, 48 ERROR_BUFFER_TOO_SMALL = MEDIA_ERROR_BASE - 9, 49 ERROR_UNSUPPORTED = MEDIA_ERROR_BASE - 10, 50 ERROR_END_OF_STREAM = MEDIA_ERROR_BASE - 11, 51 52 // Not technically an error. 53 INFO_FORMAT_CHANGED = MEDIA_ERROR_BASE - 12, 54 INFO_DISCONTINUITY = MEDIA_ERROR_BASE - 13, 55 INFO_OUTPUT_BUFFERS_CHANGED = MEDIA_ERROR_BASE - 14, 56 57 // The following constant values should be in sync with 58 // drm/drm_framework_common.h 59 DRM_ERROR_BASE = -2000, 60 61 ERROR_DRM_UNKNOWN = DRM_ERROR_BASE, 62 ERROR_DRM_NO_LICENSE = DRM_ERROR_BASE - 1, 63 ERROR_DRM_LICENSE_EXPIRED = DRM_ERROR_BASE - 2, 64 ERROR_DRM_SESSION_NOT_OPENED = DRM_ERROR_BASE - 3, 65 ERROR_DRM_DECRYPT_UNIT_NOT_INITIALIZED = DRM_ERROR_BASE - 4, 66 ERROR_DRM_DECRYPT = DRM_ERROR_BASE - 5, 67 ERROR_DRM_CANNOT_HANDLE = DRM_ERROR_BASE - 6, 68 ERROR_DRM_TAMPER_DETECTED = DRM_ERROR_BASE - 7, 69 ERROR_DRM_NOT_PROVISIONED = DRM_ERROR_BASE - 8, 70 ERROR_DRM_DEVICE_REVOKED = DRM_ERROR_BASE - 9, 71 ERROR_DRM_RESOURCE_BUSY = DRM_ERROR_BASE - 10, 72 ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION = DRM_ERROR_BASE - 11, 73 ERROR_DRM_INSUFFICIENT_SECURITY = DRM_ERROR_BASE - 12, 74 ERROR_DRM_FRAME_TOO_LARGE = DRM_ERROR_BASE - 13, 75 ERROR_DRM_RESOURCE_CONTENTION = DRM_ERROR_BASE - 14, 76 ERROR_DRM_SESSION_LOST_STATE = DRM_ERROR_BASE - 15, 77 ERROR_DRM_INVALID_STATE = DRM_ERROR_BASE - 16, 78 ERROR_DRM_LAST_USED_ERRORCODE = DRM_ERROR_BASE - 16, 79 80 ERROR_DRM_VENDOR_MAX = DRM_ERROR_BASE - 500, 81 ERROR_DRM_VENDOR_MIN = DRM_ERROR_BASE - 999, 82 83 // Heartbeat Error Codes 84 HEARTBEAT_ERROR_BASE = -3000, 85 ERROR_HEARTBEAT_TERMINATE_REQUESTED = HEARTBEAT_ERROR_BASE, 86 87 // CAS-related error codes 88 CAS_ERROR_BASE = -4000, 89 90 ERROR_CAS_UNKNOWN = CAS_ERROR_BASE, 91 ERROR_CAS_NO_LICENSE = CAS_ERROR_BASE - 1, 92 ERROR_CAS_LICENSE_EXPIRED = CAS_ERROR_BASE - 2, 93 ERROR_CAS_SESSION_NOT_OPENED = CAS_ERROR_BASE - 3, 94 ERROR_CAS_DECRYPT_UNIT_NOT_INITIALIZED = CAS_ERROR_BASE - 4, 95 ERROR_CAS_DECRYPT = CAS_ERROR_BASE - 5, 96 ERROR_CAS_CANNOT_HANDLE = CAS_ERROR_BASE - 6, 97 ERROR_CAS_TAMPER_DETECTED = CAS_ERROR_BASE - 7, 98 ERROR_CAS_NOT_PROVISIONED = CAS_ERROR_BASE - 8, 99 ERROR_CAS_DEVICE_REVOKED = CAS_ERROR_BASE - 9, 100 ERROR_CAS_RESOURCE_BUSY = CAS_ERROR_BASE - 10, 101 ERROR_CAS_INSUFFICIENT_OUTPUT_PROTECTION = CAS_ERROR_BASE - 11, 102 ERROR_CAS_LAST_USED_ERRORCODE = CAS_ERROR_BASE - 11, 103 104 ERROR_CAS_VENDOR_MAX = CAS_ERROR_BASE - 500, 105 ERROR_CAS_VENDOR_MIN = CAS_ERROR_BASE - 999, 106 107 // NDK Error codes 108 // frameworks/av/include/ndk/NdkMediaError.h 109 // from -10000 (0xFFFFD8F0 - 0xFFFFD8EC) 110 // from -20000 (0xFFFFB1E0 - 0xFFFFB1D7) 111 112 // Codec errors are permitted from 0x80001000 through 0x9000FFFF 113 ERROR_CODEC_MAX = (signed)0x9000FFFF, 114 ERROR_CODEC_MIN = (signed)0x80001000, 115 116 // System unknown errors from 0x80000000 - 0x80000007 (INT32_MIN + 7) 117 // See system/core/include/utils/Errors.h 118 }; 119 120 // action codes for MediaCodecs that tell the upper layer and application 121 // the severity of any error. 122 enum ActionCode { 123 ACTION_CODE_FATAL, 124 ACTION_CODE_TRANSIENT, 125 ACTION_CODE_RECOVERABLE, 126 }; 127 128 // returns true if err is a recognized DRM error code 129 static inline bool isCryptoError(status_t err) { 130 return (ERROR_DRM_LAST_USED_ERRORCODE <= err && err <= ERROR_DRM_UNKNOWN) 131 || (ERROR_DRM_VENDOR_MIN <= err && err <= ERROR_DRM_VENDOR_MAX); 132 } 133 134 } // namespace android 135 136 #endif // MEDIA_ERRORS_H_ 137