120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber/* 220111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * Copyright (C) 2009 The Android Open Source Project 320111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * 420111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 520111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * you may not use this file except in compliance with the License. 620111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * You may obtain a copy of the License at 720111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * 820111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * 1020111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * Unless required by applicable law or agreed to in writing, software 1120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 1220111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1320111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * See the License for the specific language governing permissions and 1420111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber * limitations under the License. 1520111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber */ 1620111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber 1720111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber#ifndef MEDIA_ERRORS_H_ 1820111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber 1920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber#define MEDIA_ERRORS_H_ 2020111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber 2120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber#include <utils/Errors.h> 2220111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber 2320111aa043c5f404472bc63b90bc5aad906b1101Andreas Hubernamespace android { 2420111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber 2520111aa043c5f404472bc63b90bc5aad906b1101Andreas Huberenum { 26251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // status_t map for errors in the media framework 27251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // OK or NO_ERROR or 0 represents no error. 28251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung 29251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // See system/core/include/utils/Errors.h 30251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // System standard errors from -1 through (possibly) -133 31251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // 32251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // Errors with special meanings and side effects. 33251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // INVALID_OPERATION: Operation attempted in an illegal state (will try to signal to app). 34251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // DEAD_OBJECT: Signal from CodecBase to MediaCodec that MediaServer has died. 35251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // NAME_NOT_FOUND: Signal from CodecBase to MediaCodec that the component was not found. 36251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung 37251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // Media errors 3820111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber MEDIA_ERROR_BASE = -1000, 3920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber 4020111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber ERROR_ALREADY_CONNECTED = MEDIA_ERROR_BASE, 4120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber ERROR_NOT_CONNECTED = MEDIA_ERROR_BASE - 1, 4220111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber ERROR_UNKNOWN_HOST = MEDIA_ERROR_BASE - 2, 4320111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber ERROR_CANNOT_CONNECT = MEDIA_ERROR_BASE - 3, 4420111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber ERROR_IO = MEDIA_ERROR_BASE - 4, 4520111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber ERROR_CONNECTION_LOST = MEDIA_ERROR_BASE - 5, 4620111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber ERROR_MALFORMED = MEDIA_ERROR_BASE - 7, 4720111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber ERROR_OUT_OF_RANGE = MEDIA_ERROR_BASE - 8, 4820111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber ERROR_BUFFER_TOO_SMALL = MEDIA_ERROR_BASE - 9, 4920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber ERROR_UNSUPPORTED = MEDIA_ERROR_BASE - 10, 5020111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber ERROR_END_OF_STREAM = MEDIA_ERROR_BASE - 11, 517f281f87670c63775ea1ae8b24af31822d5ad416Andreas Huber 527f281f87670c63775ea1ae8b24af31822d5ad416Andreas Huber // Not technically an error. 537f281f87670c63775ea1ae8b24af31822d5ad416Andreas Huber INFO_FORMAT_CHANGED = MEDIA_ERROR_BASE - 12, 542a4d22d79e927f2245537921e10fc5fda1c47a29Andreas Huber INFO_DISCONTINUITY = MEDIA_ERROR_BASE - 13, 555778822d86b0337407514b9372562b86edfa91cdAndreas Huber INFO_OUTPUT_BUFFERS_CHANGED = MEDIA_ERROR_BASE - 14, 56dcd25efb46c41c8d24a0a9cf61fb57f84149709eGloria Wang 577340743ce30766af6334bbd9acf813eb66dd5a60Gloria Wang // The following constant values should be in sync with 587340743ce30766af6334bbd9acf813eb66dd5a60Gloria Wang // drm/drm_framework_common.h 597340743ce30766af6334bbd9acf813eb66dd5a60Gloria Wang DRM_ERROR_BASE = -2000, 607340743ce30766af6334bbd9acf813eb66dd5a60Gloria Wang 610671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_UNKNOWN = DRM_ERROR_BASE, 620671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_NO_LICENSE = DRM_ERROR_BASE - 1, 630671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_LICENSE_EXPIRED = DRM_ERROR_BASE - 2, 640671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_SESSION_NOT_OPENED = DRM_ERROR_BASE - 3, 650671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_DECRYPT_UNIT_NOT_INITIALIZED = DRM_ERROR_BASE - 4, 660671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_DECRYPT = DRM_ERROR_BASE - 5, 670671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_CANNOT_HANDLE = DRM_ERROR_BASE - 6, 680671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_TAMPER_DETECTED = DRM_ERROR_BASE - 7, 690671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_NOT_PROVISIONED = DRM_ERROR_BASE - 8, 700671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_DEVICE_REVOKED = DRM_ERROR_BASE - 9, 710671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_RESOURCE_BUSY = DRM_ERROR_BASE - 10, 720671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION = DRM_ERROR_BASE - 11, 730671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_LAST_USED_ERRORCODE = DRM_ERROR_BASE - 11, 740671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker 750671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_VENDOR_MAX = DRM_ERROR_BASE - 500, 760671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker ERROR_DRM_VENDOR_MIN = DRM_ERROR_BASE - 999, 775b8987e7de9d04b09153f329c680d2316cdb44ecAndreas Huber 7884f64d2a48a267c6517df69dd757c1ead54db036Gloria Wang // Heartbeat Error Codes 7984f64d2a48a267c6517df69dd757c1ead54db036Gloria Wang HEARTBEAT_ERROR_BASE = -3000, 808f883be3bd1fffd4e30bc7298c34085a4055be2bJeff Tinker ERROR_HEARTBEAT_TERMINATE_REQUESTED = HEARTBEAT_ERROR_BASE, 81251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung 82251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // NDK Error codes 83251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // frameworks/av/include/ndk/NdkMediaError.h 84251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // from -10000 (0xFFFFD8F0 - 0xFFFFD8EC) 85251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // from -20000 (0xFFFFB1E0 - 0xFFFFB1D7) 86251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung 87251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // Codec errors are permitted from 0x80001000 through 0x9000FFFF 88251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung ERROR_CODEC_MAX = (signed)0x9000FFFF, 89251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung ERROR_CODEC_MIN = (signed)0x80001000, 90251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung 91251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // System unknown errors from 0x80000000 - 0x80000007 (INT32_MIN + 7) 92251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung // See system/core/include/utils/Errors.h 93251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung}; 94251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung 95251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung// action codes for MediaCodecs that tell the upper layer and application 96251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung// the severity of any error. 97251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hungenum ActionCode { 98251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung ACTION_CODE_FATAL, 99251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung ACTION_CODE_TRANSIENT, 100251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung ACTION_CODE_RECOVERABLE, 10120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber}; 10220111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber 103251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung// returns true if err is a recognized DRM error code 104251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hungstatic inline bool isCryptoError(status_t err) { 1050671947255321526cb1ba1ec3a20af9e8579c257Jeff Tinker return (ERROR_DRM_LAST_USED_ERRORCODE <= err && err <= ERROR_DRM_UNKNOWN) 106251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung || (ERROR_DRM_VENDOR_MIN <= err && err <= ERROR_DRM_VENDOR_MAX); 107251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung} 108251d4be8aa5ab80bc915a82a2420233bdc62018eAndy Hung 10920111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber} // namespace android 11020111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber 11120111aa043c5f404472bc63b90bc5aad906b1101Andreas Huber#endif // MEDIA_ERRORS_H_ 112