mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-03-02 09:03:53 +08:00
openpilot v0.6 release
This commit is contained in:
419
phonelibs/android_frameworks_native/include/media/drm/DrmAPI.h
Normal file
419
phonelibs/android_frameworks_native/include/media/drm/DrmAPI.h
Normal file
@@ -0,0 +1,419 @@
|
||||
/*
|
||||
* Copyright (C) 2013 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef DRM_API_H_
|
||||
#define DRM_API_H_
|
||||
|
||||
#include <utils/List.h>
|
||||
#include <utils/String8.h>
|
||||
#include <utils/Vector.h>
|
||||
#include <utils/KeyedVector.h>
|
||||
#include <utils/RefBase.h>
|
||||
#include <utils/Mutex.h>
|
||||
#include <media/stagefright/foundation/ABase.h>
|
||||
|
||||
// Loadable DrmEngine shared libraries should define the entry points
|
||||
// createDrmFactory and createCryptoFactory as shown below:
|
||||
//
|
||||
// extern "C" {
|
||||
// extern android::DrmFactory *createDrmFactory();
|
||||
// extern android::CryptoFactory *createCryptoFactory();
|
||||
// }
|
||||
|
||||
namespace android {
|
||||
|
||||
class DrmPlugin;
|
||||
class DrmPluginListener;
|
||||
|
||||
// DRMs are implemented in DrmEngine plugins, which are dynamically
|
||||
// loadable shared libraries that implement the entry points
|
||||
// createDrmFactory and createCryptoFactory. createDrmFactory
|
||||
// constructs and returns an instance of a DrmFactory object. Similarly,
|
||||
// createCryptoFactory creates an instance of a CryptoFactory object.
|
||||
// When a MediaCrypto or MediaDrm object needs to be constructed, all
|
||||
// available DrmEngines present in the plugins directory on the device
|
||||
// are scanned for a matching DrmEngine that can support the crypto
|
||||
// scheme. When a match is found, the DrmEngine's createCryptoPlugin and
|
||||
// createDrmPlugin methods are used to create CryptoPlugin or
|
||||
// DrmPlugin instances to support that DRM scheme.
|
||||
|
||||
class DrmFactory {
|
||||
public:
|
||||
DrmFactory() {}
|
||||
virtual ~DrmFactory() {}
|
||||
|
||||
// DrmFactory::isCryptoSchemeSupported can be called to determine
|
||||
// if the plugin factory is able to construct plugins that support a
|
||||
// given crypto scheme, which is specified by a UUID.
|
||||
virtual bool isCryptoSchemeSupported(const uint8_t uuid[16]) = 0;
|
||||
|
||||
// DrmFactory::isContentTypeSupported can be called to determine
|
||||
// if the plugin factory is able to construct plugins that support a
|
||||
// given media container format specified by mimeType
|
||||
virtual bool isContentTypeSupported(const String8 &mimeType) = 0;
|
||||
|
||||
// Construct a DrmPlugin for the crypto scheme specified by UUID.
|
||||
virtual status_t createDrmPlugin(
|
||||
const uint8_t uuid[16], DrmPlugin **plugin) = 0;
|
||||
|
||||
private:
|
||||
DrmFactory(const DrmFactory &);
|
||||
DrmFactory &operator=(const DrmFactory &);
|
||||
};
|
||||
|
||||
class DrmPlugin {
|
||||
public:
|
||||
enum EventType {
|
||||
kDrmPluginEventProvisionRequired = 1,
|
||||
kDrmPluginEventKeyNeeded,
|
||||
kDrmPluginEventKeyExpired,
|
||||
kDrmPluginEventVendorDefined,
|
||||
kDrmPluginEventSessionReclaimed,
|
||||
kDrmPluginEventExpirationUpdate,
|
||||
kDrmPluginEventKeysChange,
|
||||
};
|
||||
|
||||
// Drm keys can be for offline content or for online streaming.
|
||||
// Offline keys are persisted on the device and may be used when the device
|
||||
// is disconnected from the network. The Release type is used to request
|
||||
// that offline keys be no longer restricted to offline use.
|
||||
enum KeyType {
|
||||
kKeyType_Offline,
|
||||
kKeyType_Streaming,
|
||||
kKeyType_Release
|
||||
};
|
||||
|
||||
// Enumerate KeyRequestTypes to allow an app to determine the
|
||||
// type of a key request returned from getKeyRequest.
|
||||
enum KeyRequestType {
|
||||
kKeyRequestType_Unknown,
|
||||
kKeyRequestType_Initial,
|
||||
kKeyRequestType_Renewal,
|
||||
kKeyRequestType_Release
|
||||
};
|
||||
|
||||
// Enumerate KeyStatusTypes which indicate the state of a key
|
||||
enum KeyStatusType
|
||||
{
|
||||
kKeyStatusType_Usable,
|
||||
kKeyStatusType_Expired,
|
||||
kKeyStatusType_OutputNotAllowed,
|
||||
kKeyStatusType_StatusPending,
|
||||
kKeyStatusType_InternalError
|
||||
};
|
||||
|
||||
// Used by sendKeysChange to report the usability status of each
|
||||
// key to the app.
|
||||
struct KeyStatus
|
||||
{
|
||||
Vector<uint8_t> mKeyId;
|
||||
KeyStatusType mType;
|
||||
};
|
||||
|
||||
DrmPlugin() {}
|
||||
virtual ~DrmPlugin() {}
|
||||
|
||||
// Open a new session with the DrmPlugin object. A session ID is returned
|
||||
// in the sessionId parameter.
|
||||
virtual status_t openSession(Vector<uint8_t> &sessionId) = 0;
|
||||
|
||||
// Close a session on the DrmPlugin object.
|
||||
virtual status_t closeSession(Vector<uint8_t> const &sessionId) = 0;
|
||||
|
||||
// A key request/response exchange occurs between the app and a License
|
||||
// Server to obtain the keys required to decrypt the content. getKeyRequest()
|
||||
// is used to obtain an opaque key request blob that is delivered to the
|
||||
// license server.
|
||||
//
|
||||
// The scope parameter may be a sessionId or a keySetId, depending on the
|
||||
// specified keyType. When the keyType is kKeyType_Offline or
|
||||
// kKeyType_Streaming, scope should be set to the sessionId the keys will be
|
||||
// provided to. When the keyType is kKeyType_Release, scope should be set to
|
||||
// the keySetId of the keys being released. Releasing keys from a device
|
||||
// invalidates them for all sessions.
|
||||
//
|
||||
// The init data passed to getKeyRequest is container-specific and its
|
||||
// meaning is interpreted based on the mime type provided in the mimeType
|
||||
// parameter to getKeyRequest. It could contain, for example, the content
|
||||
// ID, key ID or other data obtained from the content metadata that is required
|
||||
// in generating the key request. Init may be null when keyType is
|
||||
// kKeyType_Release.
|
||||
//
|
||||
// mimeType identifies the mime type of the content
|
||||
//
|
||||
// keyType specifies if the keys are to be used for streaming or offline content
|
||||
//
|
||||
// optionalParameters are included in the key request message to allow a
|
||||
// client application to provide additional message parameters to the server.
|
||||
//
|
||||
// If successful, the opaque key request blob is returned to the caller.
|
||||
virtual status_t
|
||||
getKeyRequest(Vector<uint8_t> const &scope,
|
||||
Vector<uint8_t> const &initData,
|
||||
String8 const &mimeType, KeyType keyType,
|
||||
KeyedVector<String8, String8> const &optionalParameters,
|
||||
Vector<uint8_t> &request, String8 &defaultUrl,
|
||||
KeyRequestType *keyRequestType) = 0;
|
||||
|
||||
//
|
||||
// After a key response is received by the app, it is provided to the
|
||||
// Drm plugin using provideKeyResponse.
|
||||
//
|
||||
// scope may be a sessionId or a keySetId depending on the type of the
|
||||
// response. Scope should be set to the sessionId when the response is
|
||||
// for either streaming or offline key requests. Scope should be set to the
|
||||
// keySetId when the response is for a release request.
|
||||
//
|
||||
// When the response is for an offline key request, a keySetId is returned
|
||||
// in the keySetId vector parameter that can be used to later restore the
|
||||
// keys to a new session with the method restoreKeys. When the response is
|
||||
// for a streaming or release request, no keySetId is returned.
|
||||
//
|
||||
virtual status_t provideKeyResponse(Vector<uint8_t> const &scope,
|
||||
Vector<uint8_t> const &response,
|
||||
Vector<uint8_t> &keySetId) = 0;
|
||||
|
||||
// Remove the current keys from a session
|
||||
virtual status_t removeKeys(Vector<uint8_t> const &sessionId) = 0;
|
||||
|
||||
// Restore persisted offline keys into a new session. keySetId identifies
|
||||
// the keys to load, obtained from a prior call to provideKeyResponse().
|
||||
virtual status_t restoreKeys(Vector<uint8_t> const &sessionId,
|
||||
Vector<uint8_t> const &keySetId) = 0;
|
||||
|
||||
// Request an informative description of the license for the session. The status
|
||||
// is in the form of {name, value} pairs. Since DRM license policies vary by
|
||||
// vendor, the specific status field names are determined by each DRM vendor.
|
||||
// Refer to your DRM provider documentation for definitions of the field names
|
||||
// for a particular DrmEngine.
|
||||
virtual status_t
|
||||
queryKeyStatus(Vector<uint8_t> const &sessionId,
|
||||
KeyedVector<String8, String8> &infoMap) const = 0;
|
||||
|
||||
// A provision request/response exchange occurs between the app and a
|
||||
// provisioning server to retrieve a device certificate. getProvisionRequest
|
||||
// is used to obtain an opaque key request blob that is delivered to the
|
||||
// provisioning server.
|
||||
//
|
||||
// If successful, the opaque provision request blob is returned to the caller.
|
||||
virtual status_t getProvisionRequest(String8 const &cert_type,
|
||||
String8 const &cert_authority,
|
||||
Vector<uint8_t> &request,
|
||||
String8 &defaultUrl) = 0;
|
||||
|
||||
// After a provision response is received by the app, it is provided to the
|
||||
// Drm plugin using provideProvisionResponse.
|
||||
virtual status_t provideProvisionResponse(Vector<uint8_t> const &response,
|
||||
Vector<uint8_t> &certificate,
|
||||
Vector<uint8_t> &wrapped_key) = 0;
|
||||
|
||||
// Remove device provisioning.
|
||||
virtual status_t unprovisionDevice() = 0;
|
||||
|
||||
// A means of enforcing the contractual requirement for a concurrent stream
|
||||
// limit per subscriber across devices is provided via SecureStop. SecureStop
|
||||
// is a means of securely monitoring the lifetime of sessions. Since playback
|
||||
// on a device can be interrupted due to reboot, power failure, etc. a means
|
||||
// of persisting the lifetime information on the device is needed.
|
||||
//
|
||||
// A signed version of the sessionID is written to persistent storage on the
|
||||
// device when each MediaCrypto object is created. The sessionID is signed by
|
||||
// the device private key to prevent tampering.
|
||||
//
|
||||
// In the normal case, playback will be completed, the session destroyed and
|
||||
// the Secure Stops will be queried. The App queries secure stops and forwards
|
||||
// the secure stop message to the server which verifies the signature and
|
||||
// notifies the server side database that the session destruction has been
|
||||
// confirmed. The persisted record on the client is only removed after positive
|
||||
// confirmation that the server received the message using releaseSecureStops().
|
||||
virtual status_t getSecureStops(List<Vector<uint8_t> > &secureStops) = 0;
|
||||
virtual status_t getSecureStop(Vector<uint8_t> const &ssid, Vector<uint8_t> &secureStop) = 0;
|
||||
virtual status_t releaseSecureStops(Vector<uint8_t> const &ssRelease) = 0;
|
||||
virtual status_t releaseAllSecureStops() = 0;
|
||||
|
||||
// Read a property value given the device property string. There are a few forms
|
||||
// of property access methods, depending on the data type returned.
|
||||
// Since DRM plugin properties may vary, additional field names may be defined
|
||||
// by each DRM vendor. Refer to your DRM provider documentation for definitions
|
||||
// of its additional field names.
|
||||
//
|
||||
// Standard values are:
|
||||
// "vendor" [string] identifies the maker of the plugin
|
||||
// "version" [string] identifies the version of the plugin
|
||||
// "description" [string] describes the plugin
|
||||
// 'deviceUniqueId' [byte array] The device unique identifier is established
|
||||
// during device provisioning and provides a means of uniquely identifying
|
||||
// each device.
|
||||
virtual status_t getPropertyString(String8 const &name, String8 &value ) const = 0;
|
||||
virtual status_t getPropertyByteArray(String8 const &name,
|
||||
Vector<uint8_t> &value ) const = 0;
|
||||
|
||||
// Write a property value given the device property string. There are a few forms
|
||||
// of property setting methods, depending on the data type.
|
||||
// Since DRM plugin properties may vary, additional field names may be defined
|
||||
// by each DRM vendor. Refer to your DRM provider documentation for definitions
|
||||
// of its field names.
|
||||
virtual status_t setPropertyString(String8 const &name,
|
||||
String8 const &value ) = 0;
|
||||
virtual status_t setPropertyByteArray(String8 const &name,
|
||||
Vector<uint8_t> const &value ) = 0;
|
||||
|
||||
// The following methods implement operations on a CryptoSession to support
|
||||
// encrypt, decrypt, sign verify operations on operator-provided
|
||||
// session keys.
|
||||
|
||||
//
|
||||
// The algorithm string conforms to JCA Standard Names for Cipher
|
||||
// Transforms and is case insensitive. For example "AES/CBC/PKCS5Padding".
|
||||
//
|
||||
// Return OK if the algorithm is supported, otherwise return BAD_VALUE
|
||||
//
|
||||
virtual status_t setCipherAlgorithm(Vector<uint8_t> const &sessionId,
|
||||
String8 const &algorithm) = 0;
|
||||
|
||||
//
|
||||
// The algorithm string conforms to JCA Standard Names for Mac
|
||||
// Algorithms and is case insensitive. For example "HmacSHA256".
|
||||
//
|
||||
// Return OK if the algorithm is supported, otherwise return BAD_VALUE
|
||||
//
|
||||
virtual status_t setMacAlgorithm(Vector<uint8_t> const &sessionId,
|
||||
String8 const &algorithm) = 0;
|
||||
|
||||
// Encrypt the provided input buffer with the cipher algorithm
|
||||
// specified by setCipherAlgorithm and the key selected by keyId,
|
||||
// and return the encrypted data.
|
||||
virtual status_t encrypt(Vector<uint8_t> const &sessionId,
|
||||
Vector<uint8_t> const &keyId,
|
||||
Vector<uint8_t> const &input,
|
||||
Vector<uint8_t> const &iv,
|
||||
Vector<uint8_t> &output) = 0;
|
||||
|
||||
// Decrypt the provided input buffer with the cipher algorithm
|
||||
// specified by setCipherAlgorithm and the key selected by keyId,
|
||||
// and return the decrypted data.
|
||||
virtual status_t decrypt(Vector<uint8_t> const &sessionId,
|
||||
Vector<uint8_t> const &keyId,
|
||||
Vector<uint8_t> const &input,
|
||||
Vector<uint8_t> const &iv,
|
||||
Vector<uint8_t> &output) = 0;
|
||||
|
||||
// Compute a signature on the provided message using the mac algorithm
|
||||
// specified by setMacAlgorithm and the key selected by keyId,
|
||||
// and return the signature.
|
||||
virtual status_t sign(Vector<uint8_t> const &sessionId,
|
||||
Vector<uint8_t> const &keyId,
|
||||
Vector<uint8_t> const &message,
|
||||
Vector<uint8_t> &signature) = 0;
|
||||
|
||||
// Compute a signature on the provided message using the mac algorithm
|
||||
// specified by setMacAlgorithm and the key selected by keyId,
|
||||
// and compare with the expected result. Set result to true or
|
||||
// false depending on the outcome.
|
||||
virtual status_t verify(Vector<uint8_t> const &sessionId,
|
||||
Vector<uint8_t> const &keyId,
|
||||
Vector<uint8_t> const &message,
|
||||
Vector<uint8_t> const &signature,
|
||||
bool &match) = 0;
|
||||
|
||||
|
||||
// Compute an RSA signature on the provided message using the algorithm
|
||||
// specified by algorithm.
|
||||
virtual status_t signRSA(Vector<uint8_t> const &sessionId,
|
||||
String8 const &algorithm,
|
||||
Vector<uint8_t> const &message,
|
||||
Vector<uint8_t> const &wrapped_key,
|
||||
Vector<uint8_t> &signature) = 0;
|
||||
|
||||
|
||||
status_t setListener(const sp<DrmPluginListener>& listener) {
|
||||
Mutex::Autolock lock(mEventLock);
|
||||
mListener = listener;
|
||||
return OK;
|
||||
}
|
||||
|
||||
protected:
|
||||
// Plugins call these methods to deliver events to the java app
|
||||
void sendEvent(EventType eventType, int extra,
|
||||
Vector<uint8_t> const *sessionId,
|
||||
Vector<uint8_t> const *data);
|
||||
|
||||
void sendExpirationUpdate(Vector<uint8_t> const *sessionId,
|
||||
int64_t expiryTimeInMS);
|
||||
|
||||
void sendKeysChange(Vector<uint8_t> const *sessionId,
|
||||
Vector<DrmPlugin::KeyStatus> const *keyStatusList,
|
||||
bool hasNewUsableKey);
|
||||
|
||||
private:
|
||||
Mutex mEventLock;
|
||||
sp<DrmPluginListener> mListener;
|
||||
|
||||
DISALLOW_EVIL_CONSTRUCTORS(DrmPlugin);
|
||||
};
|
||||
|
||||
class DrmPluginListener: virtual public RefBase
|
||||
{
|
||||
public:
|
||||
virtual void sendEvent(DrmPlugin::EventType eventType, int extra,
|
||||
Vector<uint8_t> const *sessionId,
|
||||
Vector<uint8_t> const *data) = 0;
|
||||
|
||||
virtual void sendExpirationUpdate(Vector<uint8_t> const *sessionId,
|
||||
int64_t expiryTimeInMS) = 0;
|
||||
|
||||
virtual void sendKeysChange(Vector<uint8_t> const *sessionId,
|
||||
Vector<DrmPlugin::KeyStatus> const *keyStatusList,
|
||||
bool hasNewUsableKey) = 0;
|
||||
};
|
||||
|
||||
inline void DrmPlugin::sendEvent(EventType eventType, int extra,
|
||||
Vector<uint8_t> const *sessionId,
|
||||
Vector<uint8_t> const *data) {
|
||||
mEventLock.lock();
|
||||
sp<DrmPluginListener> listener = mListener;
|
||||
mEventLock.unlock();
|
||||
|
||||
if (listener != NULL) {
|
||||
listener->sendEvent(eventType, extra, sessionId, data);
|
||||
}
|
||||
}
|
||||
|
||||
inline void DrmPlugin::sendExpirationUpdate(Vector<uint8_t> const *sessionId,
|
||||
int64_t expiryTimeInMS) {
|
||||
mEventLock.lock();
|
||||
sp<DrmPluginListener> listener = mListener;
|
||||
mEventLock.unlock();
|
||||
|
||||
if (listener != NULL) {
|
||||
listener->sendExpirationUpdate(sessionId, expiryTimeInMS);
|
||||
}
|
||||
}
|
||||
|
||||
inline void DrmPlugin::sendKeysChange(Vector<uint8_t> const *sessionId,
|
||||
Vector<DrmPlugin::KeyStatus> const *keyStatusList,
|
||||
bool hasNewUsableKey) {
|
||||
mEventLock.lock();
|
||||
sp<DrmPluginListener> listener = mListener;
|
||||
mEventLock.unlock();
|
||||
|
||||
if (listener != NULL) {
|
||||
listener->sendKeysChange(sessionId, keyStatusList, hasNewUsableKey);
|
||||
}
|
||||
}
|
||||
} // namespace android
|
||||
|
||||
#endif // DRM_API_H_
|
||||
@@ -0,0 +1,126 @@
|
||||
/*
|
||||
* Copyright (C) 2011 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef II420_COLOR_CONVERTER_H
|
||||
|
||||
#define II420_COLOR_CONVERTER_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <android/rect.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct II420ColorConverter {
|
||||
|
||||
/*
|
||||
* getDecoderOutputFormat
|
||||
* Returns the color format (OMX_COLOR_FORMATTYPE) of the decoder output.
|
||||
* If it is I420 (OMX_COLOR_FormatYUV420Planar), no conversion is needed,
|
||||
* and convertDecoderOutputToI420() can be a no-op.
|
||||
*/
|
||||
int (*getDecoderOutputFormat)();
|
||||
|
||||
/*
|
||||
* convertDecoderOutputToI420
|
||||
* @Desc Converts from the decoder output format to I420 format.
|
||||
* @note Caller (e.g. VideoEditor) owns the buffers
|
||||
* @param decoderBits (IN) Pointer to the buffer contains decoder output
|
||||
* @param decoderWidth (IN) Buffer width, as reported by the decoder
|
||||
* metadata (kKeyWidth)
|
||||
* @param decoderHeight (IN) Buffer height, as reported by the decoder
|
||||
* metadata (kKeyHeight)
|
||||
* @param decoderRect (IN) The rectangle of the actual frame, as
|
||||
* reported by decoder metadata (kKeyCropRect)
|
||||
* @param dstBits (OUT) Pointer to the output I420 buffer
|
||||
* @return -1 Any error
|
||||
* @return 0 No Error
|
||||
*/
|
||||
int (*convertDecoderOutputToI420)(
|
||||
void* decoderBits, int decoderWidth, int decoderHeight,
|
||||
ARect decoderRect, void* dstBits);
|
||||
|
||||
/*
|
||||
* getEncoderIntputFormat
|
||||
* Returns the color format (OMX_COLOR_FORMATTYPE) of the encoder input.
|
||||
* If it is I420 (OMX_COLOR_FormatYUV420Planar), no conversion is needed,
|
||||
* and convertI420ToEncoderInput() and getEncoderInputBufferInfo() can
|
||||
* be no-ops.
|
||||
*/
|
||||
int (*getEncoderInputFormat)();
|
||||
|
||||
/* convertI420ToEncoderInput
|
||||
* @Desc This function converts from I420 to the encoder input format
|
||||
* @note Caller (e.g. VideoEditor) owns the buffers
|
||||
* @param srcBits (IN) Pointer to the input I420 buffer
|
||||
* @param srcWidth (IN) Width of the I420 frame
|
||||
* @param srcHeight (IN) Height of the I420 frame
|
||||
* @param encoderWidth (IN) Encoder buffer width, as calculated by
|
||||
* getEncoderBufferInfo()
|
||||
* @param encoderHeight (IN) Encoder buffer height, as calculated by
|
||||
* getEncoderBufferInfo()
|
||||
* @param encoderRect (IN) Rect coordinates of the actual frame inside
|
||||
* the encoder buffer, as calculated by
|
||||
* getEncoderBufferInfo().
|
||||
* @param encoderBits (OUT) Pointer to the output buffer. The size of
|
||||
* this buffer is calculated by
|
||||
* getEncoderBufferInfo()
|
||||
* @return -1 Any error
|
||||
* @return 0 No Error
|
||||
*/
|
||||
int (*convertI420ToEncoderInput)(
|
||||
void* srcBits, int srcWidth, int srcHeight,
|
||||
int encoderWidth, int encoderHeight, ARect encoderRect,
|
||||
void* encoderBits);
|
||||
|
||||
/* getEncoderInputBufferInfo
|
||||
* @Desc This function returns metadata for the encoder input buffer
|
||||
* based on the actual I420 frame width and height.
|
||||
* @note This API should be be used to obtain the necessary information
|
||||
* before calling convertI420ToEncoderInput().
|
||||
* VideoEditor knows only the width and height of the I420 buffer,
|
||||
* but it also needs know the width, height, and size of the
|
||||
* encoder input buffer. The encoder input buffer width and height
|
||||
* are used to set the metadata for the encoder.
|
||||
* @param srcWidth (IN) Width of the I420 frame
|
||||
* @param srcHeight (IN) Height of the I420 frame
|
||||
* @param encoderWidth (OUT) Encoder buffer width needed
|
||||
* @param encoderHeight (OUT) Encoder buffer height needed
|
||||
* @param encoderRect (OUT) Rect coordinates of the actual frame inside
|
||||
* the encoder buffer
|
||||
* @param encoderBufferSize (OUT) The size of the buffer that need to be
|
||||
* allocated by the caller before invoking
|
||||
* convertI420ToEncoderInput().
|
||||
* @return -1 Any error
|
||||
* @return 0 No Error
|
||||
*/
|
||||
int (*getEncoderInputBufferInfo)(
|
||||
int srcWidth, int srcHeight,
|
||||
int* encoderWidth, int* encoderHeight,
|
||||
ARect* encoderRect, int* encoderBufferSize);
|
||||
|
||||
} II420ColorConverter;
|
||||
|
||||
/* The only function that the shared library needs to expose: It fills the
|
||||
function pointers in II420ColorConverter */
|
||||
void getI420ColorConverter(II420ColorConverter *converter);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // II420_COLOR_CONVERTER_H
|
||||
@@ -0,0 +1,115 @@
|
||||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <media/stagefright/MediaErrors.h>
|
||||
#include <utils/Errors.h>
|
||||
#include <utils/Vector.h>
|
||||
|
||||
#ifndef CRYPTO_API_H_
|
||||
|
||||
#define CRYPTO_API_H_
|
||||
|
||||
namespace android {
|
||||
|
||||
struct AString;
|
||||
struct CryptoPlugin;
|
||||
|
||||
struct CryptoFactory {
|
||||
CryptoFactory() {}
|
||||
virtual ~CryptoFactory() {}
|
||||
|
||||
virtual bool isCryptoSchemeSupported(const uint8_t uuid[16]) const = 0;
|
||||
|
||||
virtual status_t createPlugin(
|
||||
const uint8_t uuid[16], const void *data, size_t size,
|
||||
CryptoPlugin **plugin) = 0;
|
||||
|
||||
private:
|
||||
CryptoFactory(const CryptoFactory &);
|
||||
CryptoFactory &operator=(const CryptoFactory &);
|
||||
};
|
||||
|
||||
struct CryptoPlugin {
|
||||
enum Mode {
|
||||
kMode_Unencrypted = 0,
|
||||
kMode_AES_CTR = 1,
|
||||
|
||||
// Neither key nor iv are being used in this mode.
|
||||
// Each subsample is encrypted w/ an iv of all zeroes.
|
||||
kMode_AES_WV = 2, // FIX constant
|
||||
};
|
||||
|
||||
struct SubSample {
|
||||
uint32_t mNumBytesOfClearData;
|
||||
uint32_t mNumBytesOfEncryptedData;
|
||||
};
|
||||
|
||||
CryptoPlugin() {}
|
||||
virtual ~CryptoPlugin() {}
|
||||
|
||||
// If this method returns false, a non-secure decoder will be used to
|
||||
// decode the data after decryption. The decrypt API below will have
|
||||
// to support insecure decryption of the data (secure = false) for
|
||||
// media data of the given mime type.
|
||||
virtual bool requiresSecureDecoderComponent(const char *mime) const = 0;
|
||||
|
||||
// To implement resolution constraints, the crypto plugin needs to know
|
||||
// the resolution of the video being decrypted. The media player should
|
||||
// call this method when the resolution is determined and any time it
|
||||
// is subsequently changed.
|
||||
|
||||
virtual void notifyResolution(uint32_t /* width */, uint32_t /* height */) {}
|
||||
|
||||
// A MediaDrm session may be associated with a MediaCrypto session. The
|
||||
// associated MediaDrm session is used to load decryption keys
|
||||
// into the crypto/drm plugin. The keys are then referenced by key-id
|
||||
// in the 'key' parameter to the decrypt() method.
|
||||
// Should return NO_ERROR on success, ERROR_DRM_SESSION_NOT_OPENED if
|
||||
// the session is not opened and a code from MediaErrors.h otherwise.
|
||||
virtual status_t setMediaDrmSession(const Vector<uint8_t> & /*sessionId */) {
|
||||
return ERROR_UNSUPPORTED;
|
||||
}
|
||||
|
||||
// If the error returned falls into the range
|
||||
// ERROR_DRM_VENDOR_MIN..ERROR_DRM_VENDOR_MAX, errorDetailMsg should be
|
||||
// filled in with an appropriate string.
|
||||
// At the java level these special errors will then trigger a
|
||||
// MediaCodec.CryptoException that gives clients access to both
|
||||
// the error code and the errorDetailMsg.
|
||||
// Returns a non-negative result to indicate the number of bytes written
|
||||
// to the dstPtr, or a negative result to indicate an error.
|
||||
virtual ssize_t decrypt(
|
||||
bool secure,
|
||||
const uint8_t key[16],
|
||||
const uint8_t iv[16],
|
||||
Mode mode,
|
||||
const void *srcPtr,
|
||||
const SubSample *subSamples, size_t numSubSamples,
|
||||
void *dstPtr,
|
||||
AString *errorDetailMsg) = 0;
|
||||
|
||||
private:
|
||||
CryptoPlugin(const CryptoPlugin &);
|
||||
CryptoPlugin &operator=(const CryptoPlugin &);
|
||||
};
|
||||
|
||||
} // namespace android
|
||||
|
||||
extern "C" {
|
||||
extern android::CryptoFactory *createCryptoFactory();
|
||||
}
|
||||
|
||||
#endif // CRYPTO_API_H_
|
||||
@@ -0,0 +1,164 @@
|
||||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef HDCP_API_H_
|
||||
|
||||
#define HDCP_API_H_
|
||||
|
||||
#include <utils/Errors.h>
|
||||
#include <system/window.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
// Two different kinds of modules are covered under the same HDCPModule
|
||||
// structure below, a module either implements decryption or encryption.
|
||||
struct HDCPModule {
|
||||
typedef void (*ObserverFunc)(void *cookie, int msg, int ext1, int ext2);
|
||||
|
||||
// The msg argument in calls to the observer notification function.
|
||||
enum {
|
||||
// Sent in response to a call to "HDCPModule::initAsync" once
|
||||
// initialization has either been successfully completed,
|
||||
// i.e. the HDCP session is now fully setup (AKE, Locality Check,
|
||||
// SKE and any authentication with repeaters completed) or failed.
|
||||
// ext1 should be a suitable error code (status_t), ext2 is
|
||||
// unused for ENCRYPTION and in the case of HDCP_INITIALIZATION_COMPLETE
|
||||
// holds the local TCP port the module is listening on.
|
||||
HDCP_INITIALIZATION_COMPLETE,
|
||||
HDCP_INITIALIZATION_FAILED,
|
||||
|
||||
// Sent upon completion of a call to "HDCPModule::shutdownAsync".
|
||||
// ext1 should be a suitable error code, ext2 is unused.
|
||||
HDCP_SHUTDOWN_COMPLETE,
|
||||
HDCP_SHUTDOWN_FAILED,
|
||||
|
||||
HDCP_UNAUTHENTICATED_CONNECTION,
|
||||
HDCP_UNAUTHORIZED_CONNECTION,
|
||||
HDCP_REVOKED_CONNECTION,
|
||||
HDCP_TOPOLOGY_EXECEEDED,
|
||||
HDCP_UNKNOWN_ERROR,
|
||||
|
||||
// DECRYPTION only: Indicates that a client has successfully connected,
|
||||
// a secure session established and the module is ready to accept
|
||||
// future calls to "decrypt".
|
||||
HDCP_SESSION_ESTABLISHED,
|
||||
};
|
||||
|
||||
// HDCPModule capability bit masks
|
||||
enum {
|
||||
// HDCP_CAPS_ENCRYPT: mandatory, meaning the HDCP module can encrypt
|
||||
// from an input byte-array buffer to an output byte-array buffer
|
||||
HDCP_CAPS_ENCRYPT = (1 << 0),
|
||||
// HDCP_CAPS_ENCRYPT_NATIVE: the HDCP module supports encryption from
|
||||
// a native buffer to an output byte-array buffer. The format of the
|
||||
// input native buffer is specific to vendor's encoder implementation.
|
||||
// It is the same format as that used by the encoder when
|
||||
// "storeMetaDataInBuffers" extension is enabled on its output port.
|
||||
HDCP_CAPS_ENCRYPT_NATIVE = (1 << 1),
|
||||
};
|
||||
|
||||
// Module can call the notification function to signal completion/failure
|
||||
// of asynchronous operations (such as initialization) or out of band
|
||||
// events.
|
||||
HDCPModule(void *cookie, ObserverFunc observerNotify) {};
|
||||
|
||||
virtual ~HDCPModule() {};
|
||||
|
||||
// ENCRYPTION: Request to setup an HDCP session with the host specified
|
||||
// by addr and listening on the specified port.
|
||||
// DECRYPTION: Request to setup an HDCP session, addr is the interface
|
||||
// address the module should bind its socket to. port will be 0.
|
||||
// The module will pick the port to listen on itself and report its choice
|
||||
// in the "ext2" argument of the HDCP_INITIALIZATION_COMPLETE callback.
|
||||
virtual status_t initAsync(const char *addr, unsigned port) = 0;
|
||||
|
||||
// Request to shutdown the active HDCP session.
|
||||
virtual status_t shutdownAsync() = 0;
|
||||
|
||||
// Returns the capability bitmask of this HDCP session.
|
||||
virtual uint32_t getCaps() {
|
||||
return HDCP_CAPS_ENCRYPT;
|
||||
}
|
||||
|
||||
// ENCRYPTION only:
|
||||
// Encrypt data according to the HDCP spec. "size" bytes of data are
|
||||
// available at "inData" (virtual address), "size" may not be a multiple
|
||||
// of 128 bits (16 bytes). An equal number of encrypted bytes should be
|
||||
// written to the buffer at "outData" (virtual address).
|
||||
// This operation is to be synchronous, i.e. this call does not return
|
||||
// until outData contains size bytes of encrypted data.
|
||||
// streamCTR will be assigned by the caller (to 0 for the first PES stream,
|
||||
// 1 for the second and so on)
|
||||
// inputCTR _will_be_maintained_by_the_callee_ for each PES stream.
|
||||
virtual status_t encrypt(
|
||||
const void *inData, size_t size, uint32_t streamCTR,
|
||||
uint64_t *outInputCTR, void *outData) {
|
||||
return INVALID_OPERATION;
|
||||
}
|
||||
|
||||
// Encrypt data according to the HDCP spec. "size" bytes of data starting
|
||||
// at location "offset" are available in "buffer" (buffer handle). "size"
|
||||
// may not be a multiple of 128 bits (16 bytes). An equal number of
|
||||
// encrypted bytes should be written to the buffer at "outData" (virtual
|
||||
// address). This operation is to be synchronous, i.e. this call does not
|
||||
// return until outData contains size bytes of encrypted data.
|
||||
// streamCTR will be assigned by the caller (to 0 for the first PES stream,
|
||||
// 1 for the second and so on)
|
||||
// inputCTR _will_be_maintained_by_the_callee_ for each PES stream.
|
||||
virtual status_t encryptNative(
|
||||
buffer_handle_t buffer, size_t offset, size_t size,
|
||||
uint32_t streamCTR, uint64_t *outInputCTR, void *outData) {
|
||||
return INVALID_OPERATION;
|
||||
}
|
||||
// DECRYPTION only:
|
||||
// Decrypt data according to the HDCP spec.
|
||||
// "size" bytes of encrypted data are available at "inData"
|
||||
// (virtual address), "size" may not be a multiple of 128 bits (16 bytes).
|
||||
// An equal number of decrypted bytes should be written to the buffer
|
||||
// at "outData" (virtual address).
|
||||
// This operation is to be synchronous, i.e. this call does not return
|
||||
// until outData contains size bytes of decrypted data.
|
||||
// Both streamCTR and inputCTR will be provided by the caller.
|
||||
virtual status_t decrypt(
|
||||
const void *inData, size_t size,
|
||||
uint32_t streamCTR, uint64_t inputCTR,
|
||||
void *outData) {
|
||||
return INVALID_OPERATION;
|
||||
}
|
||||
|
||||
private:
|
||||
HDCPModule(const HDCPModule &);
|
||||
HDCPModule &operator=(const HDCPModule &);
|
||||
};
|
||||
|
||||
} // namespace android
|
||||
|
||||
// A shared library exporting the following methods should be included to
|
||||
// support HDCP functionality. The shared library must be called
|
||||
// "libstagefright_hdcp.so", it will be dynamically loaded into the
|
||||
// mediaserver process.
|
||||
extern "C" {
|
||||
// Create a module for ENCRYPTION.
|
||||
extern android::HDCPModule *createHDCPModule(
|
||||
void *cookie, android::HDCPModule::ObserverFunc);
|
||||
|
||||
// Create a module for DECRYPTION.
|
||||
extern android::HDCPModule *createHDCPModuleForDecryption(
|
||||
void *cookie, android::HDCPModule::ObserverFunc);
|
||||
}
|
||||
|
||||
#endif // HDCP_API_H_
|
||||
|
||||
@@ -0,0 +1,288 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef HARDWARE_API_H_
|
||||
|
||||
#define HARDWARE_API_H_
|
||||
|
||||
#include <media/hardware/OMXPluginBase.h>
|
||||
#include <media/hardware/MetadataBufferType.h>
|
||||
#include <system/window.h>
|
||||
#include <utils/RefBase.h>
|
||||
|
||||
#include <OMX_Component.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
// A pointer to this struct is passed to the OMX_SetParameter when the extension
|
||||
// index for the 'OMX.google.android.index.enableAndroidNativeBuffers' extension
|
||||
// is given.
|
||||
//
|
||||
// When Android native buffer use is disabled for a port (the default state),
|
||||
// the OMX node should operate as normal, and expect UseBuffer calls to set its
|
||||
// buffers. This is the mode that will be used when CPU access to the buffer is
|
||||
// required.
|
||||
//
|
||||
// When Android native buffer use has been enabled for a given port, the video
|
||||
// color format for the port is to be interpreted as an Android pixel format
|
||||
// rather than an OMX color format. Enabling Android native buffers may also
|
||||
// change how the component receives the native buffers. If store-metadata-mode
|
||||
// is enabled on the port, the component will receive the buffers as specified
|
||||
// in the section below. Otherwise, unless the node supports the
|
||||
// 'OMX.google.android.index.useAndroidNativeBuffer2' extension, it should
|
||||
// expect to receive UseAndroidNativeBuffer calls (via OMX_SetParameter) rather
|
||||
// than UseBuffer calls for that port.
|
||||
struct EnableAndroidNativeBuffersParams {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_BOOL enable;
|
||||
};
|
||||
|
||||
// A pointer to this struct is passed to OMX_SetParameter() when the extension index
|
||||
// "OMX.google.android.index.storeMetaDataInBuffers" or
|
||||
// "OMX.google.android.index.storeANWBufferInMetadata" is given.
|
||||
//
|
||||
// When meta data is stored in the video buffers passed between OMX clients
|
||||
// and OMX components, interpretation of the buffer data is up to the
|
||||
// buffer receiver, and the data may or may not be the actual video data, but
|
||||
// some information helpful for the receiver to locate the actual data.
|
||||
// The buffer receiver thus needs to know how to interpret what is stored
|
||||
// in these buffers, with mechanisms pre-determined externally. How to
|
||||
// interpret the meta data is outside of the scope of this parameter.
|
||||
//
|
||||
// Currently, this is used to pass meta data from video source (camera component, for instance) to
|
||||
// video encoder to avoid memcpying of input video frame data, as well as to pass dynamic output
|
||||
// buffer to video decoder. To do this, bStoreMetaData is set to OMX_TRUE.
|
||||
//
|
||||
// If bStoreMetaData is set to false, real YUV frame data will be stored in input buffers, and
|
||||
// the output buffers contain either real YUV frame data, or are themselves native handles as
|
||||
// directed by enable/use-android-native-buffer parameter settings.
|
||||
// In addition, if no OMX_SetParameter() call is made on a port with the corresponding extension
|
||||
// index, the component should not assume that the client is not using metadata mode for the port.
|
||||
//
|
||||
// If the component supports this using the "OMX.google.android.index.storeANWBufferInMetadata"
|
||||
// extension and bStoreMetaData is set to OMX_TRUE, data is passed using the VideoNativeMetadata
|
||||
// layout as defined below. Each buffer will be accompanied by a fence. The fence must signal
|
||||
// before the buffer can be used (e.g. read from or written into). When returning such buffer to
|
||||
// the client, component must provide a new fence that must signal before the returned buffer can
|
||||
// be used (e.g. read from or written into). The component owns the incoming fenceFd, and must close
|
||||
// it when fence has signaled. The client will own and close the returned fence file descriptor.
|
||||
//
|
||||
// If the component supports this using the "OMX.google.android.index.storeMetaDataInBuffers"
|
||||
// extension and bStoreMetaData is set to OMX_TRUE, data is passed using VideoGrallocMetadata
|
||||
// (the layout of which is the VideoGrallocMetadata defined below). Camera input can be also passed
|
||||
// as "CameraSource", the layout of which is vendor dependent.
|
||||
//
|
||||
// Metadata buffers are registered with the component using UseBuffer calls, or can be allocated
|
||||
// by the component for encoder-metadata-output buffers.
|
||||
struct StoreMetaDataInBuffersParams {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_BOOL bStoreMetaData;
|
||||
};
|
||||
|
||||
// Meta data buffer layout used to transport output frames to the decoder for
|
||||
// dynamic buffer handling.
|
||||
struct VideoGrallocMetadata {
|
||||
MetadataBufferType eType; // must be kMetadataBufferTypeGrallocSource
|
||||
#ifdef OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS
|
||||
OMX_PTR pHandle;
|
||||
#else
|
||||
buffer_handle_t pHandle;
|
||||
#endif
|
||||
};
|
||||
|
||||
// Legacy name for VideoGrallocMetadata struct.
|
||||
struct VideoDecoderOutputMetaData : public VideoGrallocMetadata {};
|
||||
|
||||
struct VideoNativeMetadata {
|
||||
MetadataBufferType eType; // must be kMetadataBufferTypeANWBuffer
|
||||
#ifdef OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS
|
||||
OMX_PTR pBuffer;
|
||||
#else
|
||||
struct ANativeWindowBuffer* pBuffer;
|
||||
#endif
|
||||
int nFenceFd; // -1 if unused
|
||||
};
|
||||
|
||||
// A pointer to this struct is passed to OMX_SetParameter() when the extension
|
||||
// index "OMX.google.android.index.prepareForAdaptivePlayback" is given.
|
||||
//
|
||||
// This method is used to signal a video decoder, that the user has requested
|
||||
// seamless resolution change support (if bEnable is set to OMX_TRUE).
|
||||
// nMaxFrameWidth and nMaxFrameHeight are the dimensions of the largest
|
||||
// anticipated frames in the video. If bEnable is OMX_FALSE, no resolution
|
||||
// change is expected, and the nMaxFrameWidth/Height fields are unused.
|
||||
//
|
||||
// If the decoder supports dynamic output buffers, it may ignore this
|
||||
// request. Otherwise, it shall request resources in such a way so that it
|
||||
// avoids full port-reconfiguration (due to output port-definition change)
|
||||
// during resolution changes.
|
||||
//
|
||||
// DO NOT USE THIS STRUCTURE AS IT WILL BE REMOVED. INSTEAD, IMPLEMENT
|
||||
// METADATA SUPPORT FOR VIDEO DECODERS.
|
||||
struct PrepareForAdaptivePlaybackParams {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_BOOL bEnable;
|
||||
OMX_U32 nMaxFrameWidth;
|
||||
OMX_U32 nMaxFrameHeight;
|
||||
};
|
||||
|
||||
// A pointer to this struct is passed to OMX_SetParameter when the extension
|
||||
// index for the 'OMX.google.android.index.useAndroidNativeBuffer' extension is
|
||||
// given. This call will only be performed if a prior call was made with the
|
||||
// 'OMX.google.android.index.enableAndroidNativeBuffers' extension index,
|
||||
// enabling use of Android native buffers.
|
||||
struct UseAndroidNativeBufferParams {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_PTR pAppPrivate;
|
||||
OMX_BUFFERHEADERTYPE **bufferHeader;
|
||||
const sp<ANativeWindowBuffer>& nativeBuffer;
|
||||
};
|
||||
|
||||
// A pointer to this struct is passed to OMX_GetParameter when the extension
|
||||
// index for the 'OMX.google.android.index.getAndroidNativeBufferUsage'
|
||||
// extension is given. The usage bits returned from this query will be used to
|
||||
// allocate the Gralloc buffers that get passed to the useAndroidNativeBuffer
|
||||
// command.
|
||||
struct GetAndroidNativeBufferUsageParams {
|
||||
OMX_U32 nSize; // IN
|
||||
OMX_VERSIONTYPE nVersion; // IN
|
||||
OMX_U32 nPortIndex; // IN
|
||||
OMX_U32 nUsage; // OUT
|
||||
};
|
||||
|
||||
// An enum OMX_COLOR_FormatAndroidOpaque to indicate an opaque colorformat
|
||||
// is declared in media/stagefright/openmax/OMX_IVCommon.h
|
||||
// This will inform the encoder that the actual
|
||||
// colorformat will be relayed by the GRalloc Buffers.
|
||||
// OMX_COLOR_FormatAndroidOpaque = 0x7F000001,
|
||||
|
||||
// A pointer to this struct is passed to OMX_SetParameter when the extension
|
||||
// index for the 'OMX.google.android.index.prependSPSPPSToIDRFrames' extension
|
||||
// is given.
|
||||
// A successful result indicates that future IDR frames will be prefixed by
|
||||
// SPS/PPS.
|
||||
struct PrependSPSPPSToIDRFramesParams {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_BOOL bEnable;
|
||||
};
|
||||
|
||||
// Structure describing a media image (frame)
|
||||
// Currently only supporting YUV
|
||||
struct MediaImage {
|
||||
enum Type {
|
||||
MEDIA_IMAGE_TYPE_UNKNOWN = 0,
|
||||
MEDIA_IMAGE_TYPE_YUV,
|
||||
};
|
||||
|
||||
enum PlaneIndex {
|
||||
Y = 0,
|
||||
U,
|
||||
V,
|
||||
MAX_NUM_PLANES
|
||||
};
|
||||
|
||||
Type mType;
|
||||
uint32_t mNumPlanes; // number of planes
|
||||
uint32_t mWidth; // width of largest plane (unpadded, as in nFrameWidth)
|
||||
uint32_t mHeight; // height of largest plane (unpadded, as in nFrameHeight)
|
||||
uint32_t mBitDepth; // useable bit depth
|
||||
struct PlaneInfo {
|
||||
uint32_t mOffset; // offset of first pixel of the plane in bytes
|
||||
// from buffer offset
|
||||
uint32_t mColInc; // column increment in bytes
|
||||
uint32_t mRowInc; // row increment in bytes
|
||||
uint32_t mHorizSubsampling; // subsampling compared to the largest plane
|
||||
uint32_t mVertSubsampling; // subsampling compared to the largest plane
|
||||
};
|
||||
PlaneInfo mPlane[MAX_NUM_PLANES];
|
||||
};
|
||||
|
||||
// A pointer to this struct is passed to OMX_GetParameter when the extension
|
||||
// index for the 'OMX.google.android.index.describeColorFormat'
|
||||
// extension is given. This method can be called from any component state
|
||||
// other than invalid. The color-format, frame width/height, and stride/
|
||||
// slice-height parameters are ones that are associated with a raw video
|
||||
// port (input or output), but the stride/slice height parameters may be
|
||||
// incorrect. bUsingNativeBuffers is OMX_TRUE if native android buffers will
|
||||
// be used (while specifying this color format).
|
||||
//
|
||||
// The component shall fill out the MediaImage structure that
|
||||
// corresponds to the described raw video format, and the potentially corrected
|
||||
// stride and slice-height info.
|
||||
//
|
||||
// The behavior is slightly different if bUsingNativeBuffers is OMX_TRUE,
|
||||
// though most implementations can ignore this difference. When using native buffers,
|
||||
// the component may change the configured color format to an optimized format.
|
||||
// Additionally, when allocating these buffers for flexible usecase, the framework
|
||||
// will set the SW_READ/WRITE_OFTEN usage flags. In this case (if bUsingNativeBuffers
|
||||
// is OMX_TRUE), the component shall fill out the MediaImage information for the
|
||||
// scenario when these SW-readable/writable buffers are locked using gralloc_lock.
|
||||
// Note, that these buffers may also be locked using gralloc_lock_ycbcr, which must
|
||||
// be supported for vendor-specific formats.
|
||||
//
|
||||
// For non-YUV packed planar/semiplanar image formats, or if bUsingNativeBuffers
|
||||
// is OMX_TRUE and the component does not support this color format with native
|
||||
// buffers, the component shall set mNumPlanes to 0, and mType to MEDIA_IMAGE_TYPE_UNKNOWN.
|
||||
struct DescribeColorFormatParams {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
// input: parameters from OMX_VIDEO_PORTDEFINITIONTYPE
|
||||
OMX_COLOR_FORMATTYPE eColorFormat;
|
||||
OMX_U32 nFrameWidth;
|
||||
OMX_U32 nFrameHeight;
|
||||
OMX_U32 nStride;
|
||||
OMX_U32 nSliceHeight;
|
||||
OMX_BOOL bUsingNativeBuffers;
|
||||
|
||||
// output: fill out the MediaImage fields
|
||||
MediaImage sMediaImage;
|
||||
};
|
||||
|
||||
// A pointer to this struct is passed to OMX_SetParameter or OMX_GetParameter
|
||||
// when the extension index for the
|
||||
// 'OMX.google.android.index.configureVideoTunnelMode' extension is given.
|
||||
// If the extension is supported then tunneled playback mode should be supported
|
||||
// by the codec. If bTunneled is set to OMX_TRUE then the video decoder should
|
||||
// operate in "tunneled" mode and output its decoded frames directly to the
|
||||
// sink. In this case nAudioHwSync is the HW SYNC ID of the audio HAL Output
|
||||
// stream to sync the video with. If bTunneled is set to OMX_FALSE, "tunneled"
|
||||
// mode should be disabled and nAudioHwSync should be ignored.
|
||||
// OMX_GetParameter is used to query tunneling configuration. bTunneled should
|
||||
// return whether decoder is operating in tunneled mode, and if it is,
|
||||
// pSidebandWindow should contain the codec allocated sideband window handle.
|
||||
struct ConfigureVideoTunnelModeParams {
|
||||
OMX_U32 nSize; // IN
|
||||
OMX_VERSIONTYPE nVersion; // IN
|
||||
OMX_U32 nPortIndex; // IN
|
||||
OMX_BOOL bTunneled; // IN/OUT
|
||||
OMX_U32 nAudioHwSync; // IN
|
||||
OMX_PTR pSidebandWindow; // OUT
|
||||
};
|
||||
|
||||
} // namespace android
|
||||
|
||||
extern android::OMXPluginBase *createOMXPlugin();
|
||||
|
||||
#endif // HARDWARE_API_H_
|
||||
@@ -0,0 +1,127 @@
|
||||
/*
|
||||
* Copyright (C) 2011 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef METADATA_BUFFER_TYPE_H
|
||||
#define METADATA_BUFFER_TYPE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
namespace android {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* MetadataBufferType defines the type of the metadata buffers that
|
||||
* can be passed to video encoder component for encoding, via Stagefright
|
||||
* media recording framework. To see how to work with the metadata buffers
|
||||
* in media recording framework, please consult HardwareAPI.h
|
||||
*
|
||||
* The creator of metadata buffers and video encoder share common knowledge
|
||||
* on what is actually being stored in these metadata buffers, and
|
||||
* how the information can be used by the video encoder component
|
||||
* to locate the actual pixel data as the source input for video
|
||||
* encoder, plus whatever other information that is necessary. Stagefright
|
||||
* media recording framework does not need to know anything specific about the
|
||||
* metadata buffers, except for receving each individual metadata buffer
|
||||
* as the source input, making a copy of the metadata buffer, and passing the
|
||||
* copy via OpenMAX API to the video encoder component.
|
||||
*
|
||||
* The creator of the metadata buffers must ensure that the first
|
||||
* 4 bytes in every metadata buffer indicates its buffer type,
|
||||
* and the rest of the metadata buffer contains the
|
||||
* actual metadata information. When a video encoder component receives
|
||||
* a metadata buffer, it uses the first 4 bytes in that buffer to find
|
||||
* out the type of the metadata buffer, and takes action appropriate
|
||||
* to that type of metadata buffers (for instance, locate the actual
|
||||
* pixel data input and then encoding the input data to produce a
|
||||
* compressed output buffer).
|
||||
*
|
||||
* The following shows the layout of a metadata buffer,
|
||||
* where buffer type is a 4-byte field of MetadataBufferType,
|
||||
* and the payload is the metadata information.
|
||||
*
|
||||
* --------------------------------------------------------------
|
||||
* | buffer type | payload |
|
||||
* --------------------------------------------------------------
|
||||
*
|
||||
*/
|
||||
typedef enum {
|
||||
|
||||
/*
|
||||
* kMetadataBufferTypeCameraSource is used to indicate that
|
||||
* the source of the metadata buffer is the camera component.
|
||||
*/
|
||||
kMetadataBufferTypeCameraSource = 0,
|
||||
|
||||
/*
|
||||
* kMetadataBufferTypeGrallocSource is used to indicate that
|
||||
* the payload of the metadata buffers can be interpreted as
|
||||
* a buffer_handle_t.
|
||||
* So in this case,the metadata that the encoder receives
|
||||
* will have a byte stream that consists of two parts:
|
||||
* 1. First, there is an integer indicating that it is a GRAlloc
|
||||
* source (kMetadataBufferTypeGrallocSource)
|
||||
* 2. This is followed by the buffer_handle_t that is a handle to the
|
||||
* GRalloc buffer. The encoder needs to interpret this GRalloc handle
|
||||
* and encode the frames.
|
||||
* --------------------------------------------------------------
|
||||
* | kMetadataBufferTypeGrallocSource | buffer_handle_t buffer |
|
||||
* --------------------------------------------------------------
|
||||
*
|
||||
* See the VideoGrallocMetadata structure.
|
||||
*/
|
||||
kMetadataBufferTypeGrallocSource = 1,
|
||||
|
||||
/*
|
||||
* kMetadataBufferTypeGraphicBuffer is used to indicate that
|
||||
* the payload of the metadata buffers can be interpreted as
|
||||
* an ANativeWindowBuffer, and that a fence is provided.
|
||||
*
|
||||
* In this case, the metadata will have a byte stream that consists of three parts:
|
||||
* 1. First, there is an integer indicating that the metadata
|
||||
* contains an ANativeWindowBuffer (kMetadataBufferTypeANWBuffer)
|
||||
* 2. This is followed by the pointer to the ANativeWindowBuffer.
|
||||
* Codec must not free this buffer as it does not actually own this buffer.
|
||||
* 3. Finally, there is an integer containing a fence file descriptor.
|
||||
* The codec must wait on the fence before encoding or decoding into this
|
||||
* buffer. When the buffer is returned, codec must replace this file descriptor
|
||||
* with a new fence, that will be waited on before the buffer is replaced
|
||||
* (encoder) or read (decoder).
|
||||
* ---------------------------------
|
||||
* | kMetadataBufferTypeANWBuffer |
|
||||
* ---------------------------------
|
||||
* | ANativeWindowBuffer *buffer |
|
||||
* ---------------------------------
|
||||
* | int fenceFd |
|
||||
* ---------------------------------
|
||||
*
|
||||
* See the VideoNativeMetadata structure.
|
||||
*/
|
||||
kMetadataBufferTypeANWBuffer = 2,
|
||||
|
||||
/* This value is used by framework, but is never used inside a metadata buffer */
|
||||
kMetadataBufferTypeInvalid = -1,
|
||||
|
||||
|
||||
// Add more here...
|
||||
|
||||
} MetadataBufferType;
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // namespace android
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // METADATA_BUFFER_TYPE_H
|
||||
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright (C) 2009 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef OMX_PLUGIN_BASE_H_
|
||||
|
||||
#define OMX_PLUGIN_BASE_H_
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <OMX_Component.h>
|
||||
|
||||
#include <utils/String8.h>
|
||||
#include <utils/Vector.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
struct OMXPluginBase {
|
||||
OMXPluginBase() {}
|
||||
virtual ~OMXPluginBase() {}
|
||||
|
||||
virtual OMX_ERRORTYPE makeComponentInstance(
|
||||
const char *name,
|
||||
const OMX_CALLBACKTYPE *callbacks,
|
||||
OMX_PTR appData,
|
||||
OMX_COMPONENTTYPE **component) = 0;
|
||||
|
||||
virtual OMX_ERRORTYPE destroyComponentInstance(
|
||||
OMX_COMPONENTTYPE *component) = 0;
|
||||
|
||||
virtual OMX_ERRORTYPE enumerateComponents(
|
||||
OMX_STRING name,
|
||||
size_t size,
|
||||
OMX_U32 index) = 0;
|
||||
|
||||
virtual OMX_ERRORTYPE getRolesOfComponent(
|
||||
const char *name,
|
||||
Vector<String8> *roles) = 0;
|
||||
|
||||
private:
|
||||
OMXPluginBase(const OMXPluginBase &);
|
||||
OMXPluginBase &operator=(const OMXPluginBase &);
|
||||
};
|
||||
|
||||
} // namespace android
|
||||
|
||||
#endif // OMX_PLUGIN_BASE_H_
|
||||
@@ -0,0 +1,947 @@
|
||||
/*
|
||||
* Copyright 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/* NOTE: This file contains several sections for individual OMX include files.
|
||||
Each section has its own include guard. This file should be included AFTER
|
||||
the OMX include files. */
|
||||
|
||||
#ifdef OMX_Audio_h
|
||||
/* asString definitions if media/openmax/OMX_Audio.h was included */
|
||||
|
||||
#ifndef AS_STRING_FOR_OMX_AUDIO_H
|
||||
#define AS_STRING_FOR_OMX_AUDIO_H
|
||||
|
||||
inline static const char *asString(OMX_AUDIO_CODINGTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_AUDIO_CodingUnused: return "Unused"; // unused
|
||||
case OMX_AUDIO_CodingAutoDetect: return "AutoDetect"; // unused
|
||||
case OMX_AUDIO_CodingPCM: return "PCM";
|
||||
case OMX_AUDIO_CodingADPCM: return "ADPCM"; // unused
|
||||
case OMX_AUDIO_CodingAMR: return "AMR";
|
||||
case OMX_AUDIO_CodingGSMFR: return "GSMFR";
|
||||
case OMX_AUDIO_CodingGSMEFR: return "GSMEFR"; // unused
|
||||
case OMX_AUDIO_CodingGSMHR: return "GSMHR"; // unused
|
||||
case OMX_AUDIO_CodingPDCFR: return "PDCFR"; // unused
|
||||
case OMX_AUDIO_CodingPDCEFR: return "PDCEFR"; // unused
|
||||
case OMX_AUDIO_CodingPDCHR: return "PDCHR"; // unused
|
||||
case OMX_AUDIO_CodingTDMAFR: return "TDMAFR"; // unused
|
||||
case OMX_AUDIO_CodingTDMAEFR: return "TDMAEFR"; // unused
|
||||
case OMX_AUDIO_CodingQCELP8: return "QCELP8"; // unused
|
||||
case OMX_AUDIO_CodingQCELP13: return "QCELP13"; // unused
|
||||
case OMX_AUDIO_CodingEVRC: return "EVRC"; // unused
|
||||
case OMX_AUDIO_CodingSMV: return "SMV"; // unused
|
||||
case OMX_AUDIO_CodingG711: return "G711";
|
||||
case OMX_AUDIO_CodingG723: return "G723"; // unused
|
||||
case OMX_AUDIO_CodingG726: return "G726"; // unused
|
||||
case OMX_AUDIO_CodingG729: return "G729"; // unused
|
||||
case OMX_AUDIO_CodingAAC: return "AAC";
|
||||
case OMX_AUDIO_CodingMP3: return "MP3";
|
||||
case OMX_AUDIO_CodingSBC: return "SBC"; // unused
|
||||
case OMX_AUDIO_CodingVORBIS: return "VORBIS";
|
||||
case OMX_AUDIO_CodingWMA: return "WMA"; // unused
|
||||
case OMX_AUDIO_CodingRA: return "RA"; // unused
|
||||
case OMX_AUDIO_CodingMIDI: return "MIDI"; // unused
|
||||
case OMX_AUDIO_CodingFLAC: return "FLAC";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_AUDIO_PCMMODETYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_AUDIO_PCMModeLinear: return "Linear";
|
||||
case OMX_AUDIO_PCMModeALaw: return "ALaw";
|
||||
case OMX_AUDIO_PCMModeMULaw: return "MULaw";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_AUDIO_CHANNELTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_AUDIO_ChannelNone: return "None"; // unused
|
||||
case OMX_AUDIO_ChannelLF: return "LF";
|
||||
case OMX_AUDIO_ChannelRF: return "RF";
|
||||
case OMX_AUDIO_ChannelCF: return "CF";
|
||||
case OMX_AUDIO_ChannelLS: return "LS";
|
||||
case OMX_AUDIO_ChannelRS: return "RS";
|
||||
case OMX_AUDIO_ChannelLFE: return "LFE";
|
||||
case OMX_AUDIO_ChannelCS: return "CS";
|
||||
case OMX_AUDIO_ChannelLR: return "LR";
|
||||
case OMX_AUDIO_ChannelRR: return "RR";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_AUDIO_CHANNELMODETYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_AUDIO_ChannelModeStereo: return "Stereo";
|
||||
// case OMX_AUDIO_ChannelModeJointStereo: return "JointStereo";
|
||||
// case OMX_AUDIO_ChannelModeDual: return "Dual";
|
||||
case OMX_AUDIO_ChannelModeMono: return "Mono";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_AUDIO_AACSTREAMFORMATTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
// case OMX_AUDIO_AACStreamFormatMP2ADTS: return "MP2ADTS";
|
||||
case OMX_AUDIO_AACStreamFormatMP4ADTS: return "MP4ADTS";
|
||||
// case OMX_AUDIO_AACStreamFormatMP4LOAS: return "MP4LOAS";
|
||||
// case OMX_AUDIO_AACStreamFormatMP4LATM: return "MP4LATM";
|
||||
// case OMX_AUDIO_AACStreamFormatADIF: return "ADIF";
|
||||
case OMX_AUDIO_AACStreamFormatMP4FF: return "MP4FF";
|
||||
// case OMX_AUDIO_AACStreamFormatRAW: return "RAW";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_AUDIO_AMRFRAMEFORMATTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
// case OMX_AUDIO_AMRFrameFormatConformance: return "Conformance";
|
||||
// case OMX_AUDIO_AMRFrameFormatIF1: return "IF1";
|
||||
// case OMX_AUDIO_AMRFrameFormatIF2: return "IF2";
|
||||
case OMX_AUDIO_AMRFrameFormatFSF: return "FSF";
|
||||
// case OMX_AUDIO_AMRFrameFormatRTPPayload: return "RTPPayload";
|
||||
// case OMX_AUDIO_AMRFrameFormatITU: return "ITU";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_AUDIO_AMRBANDMODETYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_AUDIO_AMRBandModeUnused: return "Unused";
|
||||
case OMX_AUDIO_AMRBandModeNB0: return "NB0";
|
||||
case OMX_AUDIO_AMRBandModeNB1: return "NB1";
|
||||
case OMX_AUDIO_AMRBandModeNB2: return "NB2";
|
||||
case OMX_AUDIO_AMRBandModeNB3: return "NB3";
|
||||
case OMX_AUDIO_AMRBandModeNB4: return "NB4";
|
||||
case OMX_AUDIO_AMRBandModeNB5: return "NB5";
|
||||
case OMX_AUDIO_AMRBandModeNB6: return "NB6";
|
||||
case OMX_AUDIO_AMRBandModeNB7: return "NB7";
|
||||
case OMX_AUDIO_AMRBandModeWB0: return "WB0";
|
||||
case OMX_AUDIO_AMRBandModeWB1: return "WB1";
|
||||
case OMX_AUDIO_AMRBandModeWB2: return "WB2";
|
||||
case OMX_AUDIO_AMRBandModeWB3: return "WB3";
|
||||
case OMX_AUDIO_AMRBandModeWB4: return "WB4";
|
||||
case OMX_AUDIO_AMRBandModeWB5: return "WB5";
|
||||
case OMX_AUDIO_AMRBandModeWB6: return "WB6";
|
||||
case OMX_AUDIO_AMRBandModeWB7: return "WB7";
|
||||
case OMX_AUDIO_AMRBandModeWB8: return "WB8";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_AUDIO_AMRDTXMODETYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_AUDIO_AMRDTXModeOff: return "ModeOff";
|
||||
// case OMX_AUDIO_AMRDTXModeOnVAD1: return "ModeOnVAD1";
|
||||
// case OMX_AUDIO_AMRDTXModeOnVAD2: return "ModeOnVAD2";
|
||||
// case OMX_AUDIO_AMRDTXModeOnAuto: return "ModeOnAuto";
|
||||
// case OMX_AUDIO_AMRDTXasEFR: return "asEFR";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AS_STRING_FOR_OMX_AUDIO_H
|
||||
|
||||
#endif // OMX_Audio_h
|
||||
|
||||
#ifdef OMX_AudioExt_h
|
||||
/* asString definitions if media/openmax/OMX_AudioExt.h was included */
|
||||
|
||||
#ifndef AS_STRING_FOR_OMX_AUDIOEXT_H
|
||||
#define AS_STRING_FOR_OMX_AUDIOEXT_H
|
||||
|
||||
inline static const char *asString(OMX_AUDIO_CODINGEXTTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_AUDIO_CodingAndroidAC3: return "AndroidAC3";
|
||||
case OMX_AUDIO_CodingAndroidOPUS: return "AndroidOPUS";
|
||||
default: return asString((OMX_AUDIO_CODINGTYPE)i, def);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AS_STRING_FOR_OMX_AUDIOEXT_H
|
||||
|
||||
#endif // OMX_AudioExt_h
|
||||
|
||||
#ifdef OMX_Component_h
|
||||
/* asString definitions if media/openmax/OMX_Component.h was included */
|
||||
|
||||
#ifndef AS_STRING_FOR_OMX_COMPONENT_H
|
||||
#define AS_STRING_FOR_OMX_COMPONENT_H
|
||||
|
||||
inline static const char *asString(OMX_PORTDOMAINTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_PortDomainAudio: return "Audio";
|
||||
case OMX_PortDomainVideo: return "Video";
|
||||
case OMX_PortDomainImage: return "Image";
|
||||
// case OMX_PortDomainOther: return "Other";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AS_STRING_FOR_OMX_COMPONENT_H
|
||||
|
||||
#endif // OMX_Component_h
|
||||
|
||||
#ifdef OMX_Core_h
|
||||
/* asString definitions if media/openmax/OMX_Core.h was included */
|
||||
|
||||
#ifndef AS_STRING_FOR_OMX_CORE_H
|
||||
#define AS_STRING_FOR_OMX_CORE_H
|
||||
|
||||
inline static const char *asString(OMX_COMMANDTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_CommandStateSet: return "StateSet";
|
||||
case OMX_CommandFlush: return "Flush";
|
||||
case OMX_CommandPortDisable: return "PortDisable";
|
||||
case OMX_CommandPortEnable: return "PortEnable";
|
||||
// case OMX_CommandMarkBuffer: return "MarkBuffer";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_STATETYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_StateInvalid: return "Invalid";
|
||||
case OMX_StateLoaded: return "Loaded";
|
||||
case OMX_StateIdle: return "Idle";
|
||||
case OMX_StateExecuting: return "Executing";
|
||||
// case OMX_StatePause: return "Pause";
|
||||
// case OMX_StateWaitForResources: return "WaitForResources";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_ERRORTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_ErrorNone: return "None";
|
||||
case OMX_ErrorInsufficientResources: return "InsufficientResources";
|
||||
case OMX_ErrorUndefined: return "Undefined";
|
||||
case OMX_ErrorInvalidComponentName: return "InvalidComponentName";
|
||||
case OMX_ErrorComponentNotFound: return "ComponentNotFound";
|
||||
case OMX_ErrorInvalidComponent: return "InvalidComponent"; // unused
|
||||
case OMX_ErrorBadParameter: return "BadParameter";
|
||||
case OMX_ErrorNotImplemented: return "NotImplemented";
|
||||
case OMX_ErrorUnderflow: return "Underflow"; // unused
|
||||
case OMX_ErrorOverflow: return "Overflow"; // unused
|
||||
case OMX_ErrorHardware: return "Hardware"; // unused
|
||||
case OMX_ErrorInvalidState: return "InvalidState";
|
||||
case OMX_ErrorStreamCorrupt: return "StreamCorrupt";
|
||||
case OMX_ErrorPortsNotCompatible: return "PortsNotCompatible"; // unused
|
||||
case OMX_ErrorResourcesLost: return "ResourcesLost";
|
||||
case OMX_ErrorNoMore: return "NoMore";
|
||||
case OMX_ErrorVersionMismatch: return "VersionMismatch"; // unused
|
||||
case OMX_ErrorNotReady: return "NotReady"; // unused
|
||||
case OMX_ErrorTimeout: return "Timeout"; // unused
|
||||
case OMX_ErrorSameState: return "SameState"; // unused
|
||||
case OMX_ErrorResourcesPreempted: return "ResourcesPreempted"; // unused
|
||||
case OMX_ErrorPortUnresponsiveDuringAllocation:
|
||||
return "PortUnresponsiveDuringAllocation"; // unused
|
||||
case OMX_ErrorPortUnresponsiveDuringDeallocation:
|
||||
return "PortUnresponsiveDuringDeallocation"; // unused
|
||||
case OMX_ErrorPortUnresponsiveDuringStop:
|
||||
return "PortUnresponsiveDuringStop"; // unused
|
||||
case OMX_ErrorIncorrectStateTransition:
|
||||
return "IncorrectStateTransition"; // unused
|
||||
case OMX_ErrorIncorrectStateOperation:
|
||||
return "IncorrectStateOperation"; // unused
|
||||
case OMX_ErrorUnsupportedSetting: return "UnsupportedSetting";
|
||||
case OMX_ErrorUnsupportedIndex: return "UnsupportedIndex";
|
||||
case OMX_ErrorBadPortIndex: return "BadPortIndex";
|
||||
case OMX_ErrorPortUnpopulated: return "PortUnpopulated"; // unused
|
||||
case OMX_ErrorComponentSuspended: return "ComponentSuspended"; // unused
|
||||
case OMX_ErrorDynamicResourcesUnavailable:
|
||||
return "DynamicResourcesUnavailable"; // unused
|
||||
case OMX_ErrorMbErrorsInFrame: return "MbErrorsInFrame"; // unused
|
||||
case OMX_ErrorFormatNotDetected: return "FormatNotDetected"; // unused
|
||||
case OMX_ErrorContentPipeOpenFailed: return "ContentPipeOpenFailed"; // unused
|
||||
case OMX_ErrorContentPipeCreationFailed:
|
||||
return "ContentPipeCreationFailed"; // unused
|
||||
case OMX_ErrorSeperateTablesUsed: return "SeperateTablesUsed"; // unused
|
||||
case OMX_ErrorTunnelingUnsupported: return "TunnelingUnsupported"; // unused
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_EVENTTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_EventCmdComplete: return "CmdComplete";
|
||||
case OMX_EventError: return "Error";
|
||||
// case OMX_EventMark: return "Mark";
|
||||
case OMX_EventPortSettingsChanged: return "PortSettingsChanged";
|
||||
case OMX_EventBufferFlag: return "BufferFlag";
|
||||
// case OMX_EventResourcesAcquired: return "ResourcesAcquired";
|
||||
// case OMX_EventComponentResumed: return "ComponentResumed";
|
||||
// case OMX_EventDynamicResourcesAvailable: return "DynamicResourcesAvailable";
|
||||
// case OMX_EventPortFormatDetected: return "PortFormatDetected";
|
||||
case OMX_EventOutputRendered: return "OutputRendered";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AS_STRING_FOR_OMX_CORE_H
|
||||
|
||||
#endif // OMX_Core_h
|
||||
|
||||
#ifdef OMX_Image_h
|
||||
/* asString definitions if media/openmax/OMX_Image.h was included */
|
||||
|
||||
#ifndef AS_STRING_FOR_OMX_IMAGE_H
|
||||
#define AS_STRING_FOR_OMX_IMAGE_H
|
||||
|
||||
inline static const char *asString(OMX_IMAGE_CODINGTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_IMAGE_CodingUnused: return "Unused";
|
||||
case OMX_IMAGE_CodingAutoDetect: return "AutoDetect"; // unused
|
||||
case OMX_IMAGE_CodingJPEG: return "JPEG";
|
||||
case OMX_IMAGE_CodingJPEG2K: return "JPEG2K"; // unused
|
||||
case OMX_IMAGE_CodingEXIF: return "EXIF"; // unused
|
||||
case OMX_IMAGE_CodingTIFF: return "TIFF"; // unused
|
||||
case OMX_IMAGE_CodingGIF: return "GIF"; // unused
|
||||
case OMX_IMAGE_CodingPNG: return "PNG"; // unused
|
||||
case OMX_IMAGE_CodingLZW: return "LZW"; // unused
|
||||
case OMX_IMAGE_CodingBMP: return "BMP"; // unused
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AS_STRING_FOR_OMX_IMAGE_H
|
||||
|
||||
#endif // OMX_Image_h
|
||||
|
||||
#ifdef OMX_Index_h
|
||||
/* asString definitions if media/openmax/OMX_Index.h was included */
|
||||
|
||||
#ifndef AS_STRING_FOR_OMX_INDEX_H
|
||||
#define AS_STRING_FOR_OMX_INDEX_H
|
||||
|
||||
inline static const char *asString(OMX_INDEXTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
// case OMX_IndexParamPriorityMgmt: return "ParamPriorityMgmt";
|
||||
// case OMX_IndexParamAudioInit: return "ParamAudioInit";
|
||||
// case OMX_IndexParamImageInit: return "ParamImageInit";
|
||||
// case OMX_IndexParamVideoInit: return "ParamVideoInit";
|
||||
// case OMX_IndexParamOtherInit: return "ParamOtherInit";
|
||||
// case OMX_IndexParamNumAvailableStreams: return "ParamNumAvailableStreams";
|
||||
// case OMX_IndexParamActiveStream: return "ParamActiveStream";
|
||||
// case OMX_IndexParamSuspensionPolicy: return "ParamSuspensionPolicy";
|
||||
// case OMX_IndexParamComponentSuspended: return "ParamComponentSuspended";
|
||||
// case OMX_IndexConfigCapturing: return "ConfigCapturing";
|
||||
// case OMX_IndexConfigCaptureMode: return "ConfigCaptureMode";
|
||||
// case OMX_IndexAutoPauseAfterCapture: return "AutoPauseAfterCapture";
|
||||
// case OMX_IndexParamContentURI: return "ParamContentURI";
|
||||
// case OMX_IndexParamCustomContentPipe: return "ParamCustomContentPipe";
|
||||
// case OMX_IndexParamDisableResourceConcealment:
|
||||
// return "ParamDisableResourceConcealment";
|
||||
// case OMX_IndexConfigMetadataItemCount: return "ConfigMetadataItemCount";
|
||||
// case OMX_IndexConfigContainerNodeCount: return "ConfigContainerNodeCount";
|
||||
// case OMX_IndexConfigMetadataItem: return "ConfigMetadataItem";
|
||||
// case OMX_IndexConfigCounterNodeID: return "ConfigCounterNodeID";
|
||||
// case OMX_IndexParamMetadataFilterType: return "ParamMetadataFilterType";
|
||||
// case OMX_IndexParamMetadataKeyFilter: return "ParamMetadataKeyFilter";
|
||||
// case OMX_IndexConfigPriorityMgmt: return "ConfigPriorityMgmt";
|
||||
case OMX_IndexParamStandardComponentRole: return "ParamStandardComponentRole";
|
||||
case OMX_IndexParamPortDefinition: return "ParamPortDefinition";
|
||||
// case OMX_IndexParamCompBufferSupplier: return "ParamCompBufferSupplier";
|
||||
case OMX_IndexParamAudioPortFormat: return "ParamAudioPortFormat";
|
||||
case OMX_IndexParamAudioPcm: return "ParamAudioPcm";
|
||||
case OMX_IndexParamAudioAac: return "ParamAudioAac";
|
||||
// case OMX_IndexParamAudioRa: return "ParamAudioRa";
|
||||
case OMX_IndexParamAudioMp3: return "ParamAudioMp3";
|
||||
// case OMX_IndexParamAudioAdpcm: return "ParamAudioAdpcm";
|
||||
// case OMX_IndexParamAudioG723: return "ParamAudioG723";
|
||||
// case OMX_IndexParamAudioG729: return "ParamAudioG729";
|
||||
case OMX_IndexParamAudioAmr: return "ParamAudioAmr";
|
||||
// case OMX_IndexParamAudioWma: return "ParamAudioWma";
|
||||
// case OMX_IndexParamAudioSbc: return "ParamAudioSbc";
|
||||
// case OMX_IndexParamAudioMidi: return "ParamAudioMidi";
|
||||
// case OMX_IndexParamAudioGsm_FR: return "ParamAudioGsm_FR";
|
||||
// case OMX_IndexParamAudioMidiLoadUserSound: return "ParamAudioMidiLoadUserSound";
|
||||
// case OMX_IndexParamAudioG726: return "ParamAudioG726";
|
||||
// case OMX_IndexParamAudioGsm_EFR: return "ParamAudioGsm_EFR";
|
||||
// case OMX_IndexParamAudioGsm_HR: return "ParamAudioGsm_HR";
|
||||
// case OMX_IndexParamAudioPdc_FR: return "ParamAudioPdc_FR";
|
||||
// case OMX_IndexParamAudioPdc_EFR: return "ParamAudioPdc_EFR";
|
||||
// case OMX_IndexParamAudioPdc_HR: return "ParamAudioPdc_HR";
|
||||
// case OMX_IndexParamAudioTdma_FR: return "ParamAudioTdma_FR";
|
||||
// case OMX_IndexParamAudioTdma_EFR: return "ParamAudioTdma_EFR";
|
||||
// case OMX_IndexParamAudioQcelp8: return "ParamAudioQcelp8";
|
||||
// case OMX_IndexParamAudioQcelp13: return "ParamAudioQcelp13";
|
||||
// case OMX_IndexParamAudioEvrc: return "ParamAudioEvrc";
|
||||
// case OMX_IndexParamAudioSmv: return "ParamAudioSmv";
|
||||
case OMX_IndexParamAudioVorbis: return "ParamAudioVorbis";
|
||||
case OMX_IndexParamAudioFlac: return "ParamAudioFlac";
|
||||
// case OMX_IndexConfigAudioMidiImmediateEvent: return "ConfigAudioMidiImmediateEvent";
|
||||
// case OMX_IndexConfigAudioMidiControl: return "ConfigAudioMidiControl";
|
||||
// case OMX_IndexConfigAudioMidiSoundBankProgram:
|
||||
// return "ConfigAudioMidiSoundBankProgram";
|
||||
// case OMX_IndexConfigAudioMidiStatus: return "ConfigAudioMidiStatus";
|
||||
// case OMX_IndexConfigAudioMidiMetaEvent: return "ConfigAudioMidiMetaEvent";
|
||||
// case OMX_IndexConfigAudioMidiMetaEventData: return "ConfigAudioMidiMetaEventData";
|
||||
// case OMX_IndexConfigAudioVolume: return "ConfigAudioVolume";
|
||||
// case OMX_IndexConfigAudioBalance: return "ConfigAudioBalance";
|
||||
// case OMX_IndexConfigAudioChannelMute: return "ConfigAudioChannelMute";
|
||||
// case OMX_IndexConfigAudioMute: return "ConfigAudioMute";
|
||||
// case OMX_IndexConfigAudioLoudness: return "ConfigAudioLoudness";
|
||||
// case OMX_IndexConfigAudioEchoCancelation: return "ConfigAudioEchoCancelation";
|
||||
// case OMX_IndexConfigAudioNoiseReduction: return "ConfigAudioNoiseReduction";
|
||||
// case OMX_IndexConfigAudioBass: return "ConfigAudioBass";
|
||||
// case OMX_IndexConfigAudioTreble: return "ConfigAudioTreble";
|
||||
// case OMX_IndexConfigAudioStereoWidening: return "ConfigAudioStereoWidening";
|
||||
// case OMX_IndexConfigAudioChorus: return "ConfigAudioChorus";
|
||||
// case OMX_IndexConfigAudioEqualizer: return "ConfigAudioEqualizer";
|
||||
// case OMX_IndexConfigAudioReverberation: return "ConfigAudioReverberation";
|
||||
// case OMX_IndexConfigAudioChannelVolume: return "ConfigAudioChannelVolume";
|
||||
// case OMX_IndexParamImagePortFormat: return "ParamImagePortFormat";
|
||||
// case OMX_IndexParamFlashControl: return "ParamFlashControl";
|
||||
// case OMX_IndexConfigFocusControl: return "ConfigFocusControl";
|
||||
// case OMX_IndexParamQFactor: return "ParamQFactor";
|
||||
// case OMX_IndexParamQuantizationTable: return "ParamQuantizationTable";
|
||||
// case OMX_IndexParamHuffmanTable: return "ParamHuffmanTable";
|
||||
// case OMX_IndexConfigFlashControl: return "ConfigFlashControl";
|
||||
case OMX_IndexParamVideoPortFormat: return "ParamVideoPortFormat";
|
||||
// case OMX_IndexParamVideoQuantization: return "ParamVideoQuantization";
|
||||
// case OMX_IndexParamVideoFastUpdate: return "ParamVideoFastUpdate";
|
||||
case OMX_IndexParamVideoBitrate: return "ParamVideoBitrate";
|
||||
// case OMX_IndexParamVideoMotionVector: return "ParamVideoMotionVector";
|
||||
case OMX_IndexParamVideoIntraRefresh: return "ParamVideoIntraRefresh";
|
||||
case OMX_IndexParamVideoErrorCorrection: return "ParamVideoErrorCorrection";
|
||||
// case OMX_IndexParamVideoVBSMC: return "ParamVideoVBSMC";
|
||||
// case OMX_IndexParamVideoMpeg2: return "ParamVideoMpeg2";
|
||||
case OMX_IndexParamVideoMpeg4: return "ParamVideoMpeg4";
|
||||
// case OMX_IndexParamVideoWmv: return "ParamVideoWmv";
|
||||
// case OMX_IndexParamVideoRv: return "ParamVideoRv";
|
||||
case OMX_IndexParamVideoAvc: return "ParamVideoAvc";
|
||||
case OMX_IndexParamVideoH263: return "ParamVideoH263";
|
||||
case OMX_IndexParamVideoProfileLevelQuerySupported:
|
||||
return "ParamVideoProfileLevelQuerySupported";
|
||||
case OMX_IndexParamVideoProfileLevelCurrent: return "ParamVideoProfileLevelCurrent";
|
||||
case OMX_IndexConfigVideoBitrate: return "ConfigVideoBitrate";
|
||||
// case OMX_IndexConfigVideoFramerate: return "ConfigVideoFramerate";
|
||||
case OMX_IndexConfigVideoIntraVOPRefresh: return "ConfigVideoIntraVOPRefresh";
|
||||
// case OMX_IndexConfigVideoIntraMBRefresh: return "ConfigVideoIntraMBRefresh";
|
||||
// case OMX_IndexConfigVideoMBErrorReporting: return "ConfigVideoMBErrorReporting";
|
||||
// case OMX_IndexParamVideoMacroblocksPerFrame: return "ParamVideoMacroblocksPerFrame";
|
||||
// case OMX_IndexConfigVideoMacroBlockErrorMap: return "ConfigVideoMacroBlockErrorMap";
|
||||
// case OMX_IndexParamVideoSliceFMO: return "ParamVideoSliceFMO";
|
||||
// case OMX_IndexConfigVideoAVCIntraPeriod: return "ConfigVideoAVCIntraPeriod";
|
||||
// case OMX_IndexConfigVideoNalSize: return "ConfigVideoNalSize";
|
||||
// case OMX_IndexParamCommonDeblocking: return "ParamCommonDeblocking";
|
||||
// case OMX_IndexParamCommonSensorMode: return "ParamCommonSensorMode";
|
||||
// case OMX_IndexParamCommonInterleave: return "ParamCommonInterleave";
|
||||
// case OMX_IndexConfigCommonColorFormatConversion:
|
||||
// return "ConfigCommonColorFormatConversion";
|
||||
case OMX_IndexConfigCommonScale: return "ConfigCommonScale";
|
||||
// case OMX_IndexConfigCommonImageFilter: return "ConfigCommonImageFilter";
|
||||
// case OMX_IndexConfigCommonColorEnhancement: return "ConfigCommonColorEnhancement";
|
||||
// case OMX_IndexConfigCommonColorKey: return "ConfigCommonColorKey";
|
||||
// case OMX_IndexConfigCommonColorBlend: return "ConfigCommonColorBlend";
|
||||
// case OMX_IndexConfigCommonFrameStabilisation: return "ConfigCommonFrameStabilisation";
|
||||
// case OMX_IndexConfigCommonRotate: return "ConfigCommonRotate";
|
||||
// case OMX_IndexConfigCommonMirror: return "ConfigCommonMirror";
|
||||
// case OMX_IndexConfigCommonOutputPosition: return "ConfigCommonOutputPosition";
|
||||
case OMX_IndexConfigCommonInputCrop: return "ConfigCommonInputCrop";
|
||||
case OMX_IndexConfigCommonOutputCrop: return "ConfigCommonOutputCrop";
|
||||
// case OMX_IndexConfigCommonDigitalZoom: return "ConfigCommonDigitalZoom";
|
||||
// case OMX_IndexConfigCommonOpticalZoom: return "ConfigCommonOpticalZoom";
|
||||
// case OMX_IndexConfigCommonWhiteBalance: return "ConfigCommonWhiteBalance";
|
||||
// case OMX_IndexConfigCommonExposure: return "ConfigCommonExposure";
|
||||
// case OMX_IndexConfigCommonContrast: return "ConfigCommonContrast";
|
||||
// case OMX_IndexConfigCommonBrightness: return "ConfigCommonBrightness";
|
||||
// case OMX_IndexConfigCommonBacklight: return "ConfigCommonBacklight";
|
||||
// case OMX_IndexConfigCommonGamma: return "ConfigCommonGamma";
|
||||
// case OMX_IndexConfigCommonSaturation: return "ConfigCommonSaturation";
|
||||
// case OMX_IndexConfigCommonLightness: return "ConfigCommonLightness";
|
||||
// case OMX_IndexConfigCommonExclusionRect: return "ConfigCommonExclusionRect";
|
||||
// case OMX_IndexConfigCommonDithering: return "ConfigCommonDithering";
|
||||
// case OMX_IndexConfigCommonPlaneBlend: return "ConfigCommonPlaneBlend";
|
||||
// case OMX_IndexConfigCommonExposureValue: return "ConfigCommonExposureValue";
|
||||
// case OMX_IndexConfigCommonOutputSize: return "ConfigCommonOutputSize";
|
||||
// case OMX_IndexParamCommonExtraQuantData: return "ParamCommonExtraQuantData";
|
||||
// case OMX_IndexConfigCommonFocusRegion: return "ConfigCommonFocusRegion";
|
||||
// case OMX_IndexConfigCommonFocusStatus: return "ConfigCommonFocusStatus";
|
||||
// case OMX_IndexConfigCommonTransitionEffect: return "ConfigCommonTransitionEffect";
|
||||
// case OMX_IndexParamOtherPortFormat: return "ParamOtherPortFormat";
|
||||
// case OMX_IndexConfigOtherPower: return "ConfigOtherPower";
|
||||
// case OMX_IndexConfigOtherStats: return "ConfigOtherStats";
|
||||
// case OMX_IndexConfigTimeScale: return "ConfigTimeScale";
|
||||
// case OMX_IndexConfigTimeClockState: return "ConfigTimeClockState";
|
||||
// case OMX_IndexConfigTimeActiveRefClock: return "ConfigTimeActiveRefClock";
|
||||
// case OMX_IndexConfigTimeCurrentMediaTime: return "ConfigTimeCurrentMediaTime";
|
||||
// case OMX_IndexConfigTimeCurrentWallTime: return "ConfigTimeCurrentWallTime";
|
||||
// case OMX_IndexConfigTimeCurrentAudioReference:
|
||||
// return "ConfigTimeCurrentAudioReference";
|
||||
// case OMX_IndexConfigTimeCurrentVideoReference:
|
||||
// return "ConfigTimeCurrentVideoReference";
|
||||
// case OMX_IndexConfigTimeMediaTimeRequest: return "ConfigTimeMediaTimeRequest";
|
||||
// case OMX_IndexConfigTimeClientStartTime: return "ConfigTimeClientStartTime";
|
||||
// case OMX_IndexConfigTimePosition: return "ConfigTimePosition";
|
||||
// case OMX_IndexConfigTimeSeekMode: return "ConfigTimeSeekMode";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AS_STRING_FOR_OMX_INDEX_H
|
||||
|
||||
#endif // OMX_Index_h
|
||||
|
||||
#ifdef OMX_IndexExt_h
|
||||
/* asString definitions if media/openmax/OMX_IndexExt.h was included */
|
||||
|
||||
#ifndef AS_STRING_FOR_OMX_INDEXEXT_H
|
||||
#define AS_STRING_FOR_OMX_INDEXEXT_H
|
||||
|
||||
inline static const char *asString(OMX_INDEXEXTTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
// case OMX_IndexConfigCallbackRequest: return "ConfigCallbackRequest";
|
||||
// case OMX_IndexConfigCommitMode: return "ConfigCommitMode";
|
||||
// case OMX_IndexConfigCommit: return "ConfigCommit";
|
||||
case OMX_IndexParamAudioAndroidAc3: return "ParamAudioAndroidAc3";
|
||||
case OMX_IndexParamAudioAndroidOpus: return "ParamAudioAndroidOpus";
|
||||
case OMX_IndexParamAudioAndroidAacPresentation: return "ParamAudioAndroidAacPresentation";
|
||||
// case OMX_IndexParamNalStreamFormatSupported: return "ParamNalStreamFormatSupported";
|
||||
// case OMX_IndexParamNalStreamFormat: return "ParamNalStreamFormat";
|
||||
// case OMX_IndexParamNalStreamFormatSelect: return "ParamNalStreamFormatSelect";
|
||||
case OMX_IndexParamVideoVp8: return "ParamVideoVp8";
|
||||
// case OMX_IndexConfigVideoVp8ReferenceFrame: return "ConfigVideoVp8ReferenceFrame";
|
||||
// case OMX_IndexConfigVideoVp8ReferenceFrameType: return "ConfigVideoVp8ReferenceFrameType";
|
||||
case OMX_IndexParamVideoAndroidVp8Encoder: return "ParamVideoAndroidVp8Encoder";
|
||||
case OMX_IndexParamVideoHevc: return "ParamVideoHevc";
|
||||
// case OMX_IndexParamSliceSegments: return "ParamSliceSegments";
|
||||
case OMX_IndexConfigAutoFramerateConversion: return "ConfigAutoFramerateConversion";
|
||||
case OMX_IndexConfigPriority: return "ConfigPriority";
|
||||
case OMX_IndexConfigOperatingRate: return "ConfigOperatingRate";
|
||||
case OMX_IndexParamConsumerUsageBits: return "ParamConsumerUsageBits";
|
||||
default: return asString((OMX_INDEXTYPE)i, def);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AS_STRING_FOR_OMX_INDEXEXT_H
|
||||
|
||||
#endif // OMX_IndexExt_h
|
||||
|
||||
#ifdef OMX_IVCommon_h
|
||||
/* asString definitions if media/openmax/OMX_IVCommon.h was included */
|
||||
|
||||
#ifndef AS_STRING_FOR_OMX_IVCOMMON_H
|
||||
#define AS_STRING_FOR_OMX_IVCOMMON_H
|
||||
|
||||
inline static const char *asString(OMX_COLOR_FORMATTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_COLOR_FormatUnused:
|
||||
return "COLOR_FormatUnused";
|
||||
case OMX_COLOR_FormatMonochrome:
|
||||
return "COLOR_FormatMonochrome";
|
||||
case OMX_COLOR_Format8bitRGB332:
|
||||
return "COLOR_Format8bitRGB332";
|
||||
case OMX_COLOR_Format12bitRGB444:
|
||||
return "COLOR_Format12bitRGB444";
|
||||
case OMX_COLOR_Format16bitARGB4444:
|
||||
return "COLOR_Format16bitARGB4444";
|
||||
case OMX_COLOR_Format16bitARGB1555:
|
||||
return "COLOR_Format16bitARGB1555";
|
||||
case OMX_COLOR_Format16bitRGB565:
|
||||
return "COLOR_Format16bitRGB565";
|
||||
case OMX_COLOR_Format16bitBGR565:
|
||||
return "COLOR_Format16bitBGR565";
|
||||
case OMX_COLOR_Format18bitRGB666:
|
||||
return "COLOR_Format18bitRGB666";
|
||||
case OMX_COLOR_Format18bitARGB1665:
|
||||
return "COLOR_Format18bitARGB1665";
|
||||
case OMX_COLOR_Format19bitARGB1666:
|
||||
return "COLOR_Format19bitARGB1666";
|
||||
case OMX_COLOR_Format24bitRGB888:
|
||||
return "COLOR_Format24bitRGB888";
|
||||
case OMX_COLOR_Format24bitBGR888:
|
||||
return "COLOR_Format24bitBGR888";
|
||||
case OMX_COLOR_Format24bitARGB1887:
|
||||
return "COLOR_Format24bitARGB1887";
|
||||
case OMX_COLOR_Format25bitARGB1888:
|
||||
return "COLOR_Format25bitARGB1888";
|
||||
case OMX_COLOR_Format32bitBGRA8888:
|
||||
return "COLOR_Format32bitBGRA8888";
|
||||
case OMX_COLOR_Format32bitARGB8888:
|
||||
return "COLOR_Format32bitARGB8888";
|
||||
case OMX_COLOR_FormatYUV411Planar:
|
||||
return "COLOR_FormatYUV411Planar";
|
||||
case OMX_COLOR_FormatYUV411PackedPlanar:
|
||||
return "COLOR_FormatYUV411PackedPlanar";
|
||||
case OMX_COLOR_FormatYUV420Planar:
|
||||
return "COLOR_FormatYUV420Planar";
|
||||
case OMX_COLOR_FormatYUV420PackedPlanar:
|
||||
return "COLOR_FormatYUV420PackedPlanar";
|
||||
case OMX_COLOR_FormatYUV420SemiPlanar:
|
||||
return "COLOR_FormatYUV420SemiPlanar";
|
||||
case OMX_COLOR_FormatYUV422Planar:
|
||||
return "COLOR_FormatYUV422Planar";
|
||||
case OMX_COLOR_FormatYUV422PackedPlanar:
|
||||
return "COLOR_FormatYUV422PackedPlanar";
|
||||
case OMX_COLOR_FormatYUV422SemiPlanar:
|
||||
return "COLOR_FormatYUV422SemiPlanar";
|
||||
case OMX_COLOR_FormatYCbYCr:
|
||||
return "COLOR_FormatYCbYCr";
|
||||
case OMX_COLOR_FormatYCrYCb:
|
||||
return "COLOR_FormatYCrYCb";
|
||||
case OMX_COLOR_FormatCbYCrY:
|
||||
return "COLOR_FormatCbYCrY";
|
||||
case OMX_COLOR_FormatCrYCbY:
|
||||
return "COLOR_FormatCrYCbY";
|
||||
case OMX_COLOR_FormatYUV444Interleaved:
|
||||
return "COLOR_FormatYUV444Interleaved";
|
||||
case OMX_COLOR_FormatRawBayer8bit:
|
||||
return "COLOR_FormatRawBayer8bit";
|
||||
case OMX_COLOR_FormatRawBayer10bit:
|
||||
return "COLOR_FormatRawBayer10bit";
|
||||
case OMX_COLOR_FormatRawBayer8bitcompressed:
|
||||
return "COLOR_FormatRawBayer8bitcompressed";
|
||||
case OMX_COLOR_FormatL2:
|
||||
return "COLOR_FormatL2";
|
||||
case OMX_COLOR_FormatL4:
|
||||
return "COLOR_FormatL4";
|
||||
case OMX_COLOR_FormatL8:
|
||||
return "COLOR_FormatL8";
|
||||
case OMX_COLOR_FormatL16:
|
||||
return "COLOR_FormatL16";
|
||||
case OMX_COLOR_FormatL24:
|
||||
return "COLOR_FormatL24";
|
||||
case OMX_COLOR_FormatL32:
|
||||
return "COLOR_FormatL32";
|
||||
case OMX_COLOR_FormatYUV420PackedSemiPlanar:
|
||||
return "COLOR_FormatYUV420PackedSemiPlanar";
|
||||
case OMX_COLOR_FormatYUV422PackedSemiPlanar:
|
||||
return "COLOR_FormatYUV422PackedSemiPlanar";
|
||||
case OMX_COLOR_Format18BitBGR666:
|
||||
return "COLOR_Format18BitBGR666";
|
||||
case OMX_COLOR_Format24BitARGB6666:
|
||||
return "COLOR_Format24BitARGB6666";
|
||||
case OMX_COLOR_Format24BitABGR6666:
|
||||
return "COLOR_Format24BitABGR6666";
|
||||
case OMX_COLOR_FormatAndroidOpaque:
|
||||
return "COLOR_FormatAndroidOpaque";
|
||||
case OMX_COLOR_FormatYUV420Flexible:
|
||||
return "COLOR_FormatYUV420Flexible";
|
||||
case OMX_TI_COLOR_FormatYUV420PackedSemiPlanar:
|
||||
return "TI_COLOR_FormatYUV420PackedSemiPlanar";
|
||||
case OMX_QCOM_COLOR_FormatYVU420SemiPlanar:
|
||||
return "QCOM_COLOR_FormatYVU420SemiPlanar";
|
||||
// case OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka:
|
||||
// return "QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka";
|
||||
// case OMX_SEC_COLOR_FormatNV12Tiled:
|
||||
// return "SEC_COLOR_FormatNV12Tiled";
|
||||
// case OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar32m:
|
||||
// return "QCOM_COLOR_FormatYUV420PackedSemiPlanar32m";
|
||||
default:
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AS_STRING_FOR_OMX_IVCOMMON_H
|
||||
|
||||
#endif // OMX_IVCommon_h
|
||||
|
||||
#ifdef OMX_Types_h
|
||||
/* asString definitions if media/openmax/OMX_Types.h was included */
|
||||
|
||||
#ifndef AS_STRING_FOR_OMX_TYPES_H
|
||||
#define AS_STRING_FOR_OMX_TYPES_H
|
||||
|
||||
inline static const char *asString(OMX_BOOL i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_FALSE: return "FALSE";
|
||||
case OMX_TRUE: return "TRUE";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_DIRTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_DirInput: return "Input";
|
||||
case OMX_DirOutput: return "Output";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_ENDIANTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_EndianBig: return "Big";
|
||||
// case OMX_EndianLittle: return "Little";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_NUMERICALDATATYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_NumericalDataSigned: return "Signed";
|
||||
// case OMX_NumericalDataUnsigned: return "Unsigned";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AS_STRING_FOR_OMX_TYPES_H
|
||||
|
||||
#endif // OMX_Types_h
|
||||
|
||||
#ifdef OMX_Video_h
|
||||
/* asString definitions if media/openmax/OMX_Video.h was included */
|
||||
|
||||
#ifndef AS_STRING_FOR_OMX_VIDEO_H
|
||||
#define AS_STRING_FOR_OMX_VIDEO_H
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_CODINGTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_CodingUnused: return "Unused";
|
||||
case OMX_VIDEO_CodingAutoDetect: return "AutoDetect"; // unused
|
||||
case OMX_VIDEO_CodingMPEG2: return "MPEG2";
|
||||
case OMX_VIDEO_CodingH263: return "H263";
|
||||
case OMX_VIDEO_CodingMPEG4: return "MPEG4";
|
||||
case OMX_VIDEO_CodingWMV: return "WMV"; // unused
|
||||
case OMX_VIDEO_CodingRV: return "RV"; // unused
|
||||
case OMX_VIDEO_CodingAVC: return "AVC";
|
||||
case OMX_VIDEO_CodingMJPEG: return "MJPEG"; // unused
|
||||
case OMX_VIDEO_CodingVP8: return "VP8";
|
||||
case OMX_VIDEO_CodingVP9: return "VP9";
|
||||
case OMX_VIDEO_CodingHEVC: return "HEVC";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_CONTROLRATETYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
// case OMX_Video_ControlRateDisable: return "Disable";
|
||||
case OMX_Video_ControlRateVariable: return "Variable";
|
||||
case OMX_Video_ControlRateConstant: return "Constant";
|
||||
// case OMX_Video_ControlRateVariableSkipFrames: return "VariableSkipFrames";
|
||||
// case OMX_Video_ControlRateConstantSkipFrames: return "ConstantSkipFrames";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_INTRAREFRESHTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_IntraRefreshCyclic: return "Cyclic";
|
||||
case OMX_VIDEO_IntraRefreshAdaptive: return "Adaptive";
|
||||
case OMX_VIDEO_IntraRefreshBoth: return "Both";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_H263PROFILETYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_H263ProfileBaseline: return "Baseline";
|
||||
case OMX_VIDEO_H263ProfileH320Coding: return "H320Coding";
|
||||
case OMX_VIDEO_H263ProfileBackwardCompatible: return "BackwardCompatible";
|
||||
case OMX_VIDEO_H263ProfileISWV2: return "ISWV2";
|
||||
case OMX_VIDEO_H263ProfileISWV3: return "ISWV3";
|
||||
case OMX_VIDEO_H263ProfileHighCompression: return "HighCompression";
|
||||
case OMX_VIDEO_H263ProfileInternet: return "Internet";
|
||||
case OMX_VIDEO_H263ProfileInterlace: return "Interlace";
|
||||
case OMX_VIDEO_H263ProfileHighLatency: return "HighLatency";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_H263LEVELTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_H263Level10: return "Level10";
|
||||
case OMX_VIDEO_H263Level20: return "Level20";
|
||||
case OMX_VIDEO_H263Level30: return "Level30";
|
||||
case OMX_VIDEO_H263Level40: return "Level40";
|
||||
case OMX_VIDEO_H263Level45: return "Level45";
|
||||
case OMX_VIDEO_H263Level50: return "Level50";
|
||||
case OMX_VIDEO_H263Level60: return "Level60";
|
||||
case OMX_VIDEO_H263Level70: return "Level70";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_PICTURETYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_PictureTypeI: return "I";
|
||||
case OMX_VIDEO_PictureTypeP: return "P";
|
||||
case OMX_VIDEO_PictureTypeB: return "B";
|
||||
// case OMX_VIDEO_PictureTypeSI: return "SI";
|
||||
// case OMX_VIDEO_PictureTypeSP: return "SP";
|
||||
// case OMX_VIDEO_PictureTypeEI: return "EI";
|
||||
// case OMX_VIDEO_PictureTypeEP: return "EP";
|
||||
// case OMX_VIDEO_PictureTypeS: return "S";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_MPEG4PROFILETYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_MPEG4ProfileSimple: return "Simple";
|
||||
case OMX_VIDEO_MPEG4ProfileSimpleScalable: return "SimpleScalable";
|
||||
case OMX_VIDEO_MPEG4ProfileCore: return "Core";
|
||||
case OMX_VIDEO_MPEG4ProfileMain: return "Main";
|
||||
case OMX_VIDEO_MPEG4ProfileNbit: return "Nbit";
|
||||
case OMX_VIDEO_MPEG4ProfileScalableTexture: return "ScalableTexture";
|
||||
case OMX_VIDEO_MPEG4ProfileSimpleFace: return "SimpleFace";
|
||||
case OMX_VIDEO_MPEG4ProfileSimpleFBA: return "SimpleFBA";
|
||||
case OMX_VIDEO_MPEG4ProfileBasicAnimated: return "BasicAnimated";
|
||||
case OMX_VIDEO_MPEG4ProfileHybrid: return "Hybrid";
|
||||
case OMX_VIDEO_MPEG4ProfileAdvancedRealTime: return "AdvancedRealTime";
|
||||
case OMX_VIDEO_MPEG4ProfileCoreScalable: return "CoreScalable";
|
||||
case OMX_VIDEO_MPEG4ProfileAdvancedCoding: return "AdvancedCoding";
|
||||
case OMX_VIDEO_MPEG4ProfileAdvancedCore: return "AdvancedCore";
|
||||
case OMX_VIDEO_MPEG4ProfileAdvancedScalable: return "AdvancedScalable";
|
||||
case OMX_VIDEO_MPEG4ProfileAdvancedSimple: return "AdvancedSimple";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_MPEG4LEVELTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_MPEG4Level0: return "Level0";
|
||||
case OMX_VIDEO_MPEG4Level0b: return "Level0b";
|
||||
case OMX_VIDEO_MPEG4Level1: return "Level1";
|
||||
case OMX_VIDEO_MPEG4Level2: return "Level2";
|
||||
case OMX_VIDEO_MPEG4Level3: return "Level3";
|
||||
case OMX_VIDEO_MPEG4Level4: return "Level4";
|
||||
case OMX_VIDEO_MPEG4Level4a: return "Level4a";
|
||||
case OMX_VIDEO_MPEG4Level5: return "Level5";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_AVCPROFILETYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_AVCProfileBaseline: return "Baseline";
|
||||
case OMX_VIDEO_AVCProfileMain: return "Main";
|
||||
case OMX_VIDEO_AVCProfileExtended: return "Extended";
|
||||
case OMX_VIDEO_AVCProfileHigh: return "High";
|
||||
case OMX_VIDEO_AVCProfileHigh10: return "High10";
|
||||
case OMX_VIDEO_AVCProfileHigh422: return "High422";
|
||||
case OMX_VIDEO_AVCProfileHigh444: return "High444";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_AVCLEVELTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_AVCLevel1: return "Level1";
|
||||
case OMX_VIDEO_AVCLevel1b: return "Level1b";
|
||||
case OMX_VIDEO_AVCLevel11: return "Level11";
|
||||
case OMX_VIDEO_AVCLevel12: return "Level12";
|
||||
case OMX_VIDEO_AVCLevel13: return "Level13";
|
||||
case OMX_VIDEO_AVCLevel2: return "Level2";
|
||||
case OMX_VIDEO_AVCLevel21: return "Level21";
|
||||
case OMX_VIDEO_AVCLevel22: return "Level22";
|
||||
case OMX_VIDEO_AVCLevel3: return "Level3";
|
||||
case OMX_VIDEO_AVCLevel31: return "Level31";
|
||||
case OMX_VIDEO_AVCLevel32: return "Level32";
|
||||
case OMX_VIDEO_AVCLevel4: return "Level4";
|
||||
case OMX_VIDEO_AVCLevel41: return "Level41";
|
||||
case OMX_VIDEO_AVCLevel42: return "Level42";
|
||||
case OMX_VIDEO_AVCLevel5: return "Level5";
|
||||
case OMX_VIDEO_AVCLevel51: return "Level51";
|
||||
case OMX_VIDEO_AVCLevel52: return "Level52";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_AVCLOOPFILTERTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_AVCLoopFilterEnable: return "Enable";
|
||||
// case OMX_VIDEO_AVCLoopFilterDisable: return "Disable";
|
||||
// case OMX_VIDEO_AVCLoopFilterDisableSliceBoundary: return "DisableSliceBoundary";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AS_STRING_FOR_OMX_VIDEO_H
|
||||
|
||||
#endif // OMX_Video_h
|
||||
|
||||
#ifdef OMX_VideoExt_h
|
||||
/* asString definitions if media/openmax/OMX_VideoExt.h was included */
|
||||
|
||||
#ifndef AS_STRING_FOR_OMX_VIDEOEXT_H
|
||||
#define AS_STRING_FOR_OMX_VIDEOEXT_H
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_VP8PROFILETYPE i, const char *def = "!!") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_VP8ProfileMain: return "Main";
|
||||
case OMX_VIDEO_VP8ProfileUnknown: return "Unknown"; // unused
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_VP8LEVELTYPE i, const char *def = "!!") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_VP8Level_Version0: return "_Version0";
|
||||
case OMX_VIDEO_VP8Level_Version1: return "_Version1";
|
||||
case OMX_VIDEO_VP8Level_Version2: return "_Version2";
|
||||
case OMX_VIDEO_VP8Level_Version3: return "_Version3";
|
||||
case OMX_VIDEO_VP8LevelUnknown: return "Unknown"; // unused
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(
|
||||
OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE i, const char *def = "??") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_VPXTemporalLayerPatternNone: return "VPXTemporalLayerPatternNone";
|
||||
case OMX_VIDEO_VPXTemporalLayerPatternWebRTC: return "VPXTemporalLayerPatternWebRTC";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_HEVCPROFILETYPE i, const char *def = "!!") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_HEVCProfileUnknown: return "Unknown"; // unused
|
||||
case OMX_VIDEO_HEVCProfileMain: return "Main";
|
||||
case OMX_VIDEO_HEVCProfileMain10: return "Main10";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
inline static const char *asString(OMX_VIDEO_HEVCLEVELTYPE i, const char *def = "!!") {
|
||||
switch (i) {
|
||||
case OMX_VIDEO_HEVCLevelUnknown: return "LevelUnknown"; // unused
|
||||
case OMX_VIDEO_HEVCMainTierLevel1: return "MainTierLevel1";
|
||||
case OMX_VIDEO_HEVCHighTierLevel1: return "HighTierLevel1";
|
||||
case OMX_VIDEO_HEVCMainTierLevel2: return "MainTierLevel2";
|
||||
case OMX_VIDEO_HEVCHighTierLevel2: return "HighTierLevel2";
|
||||
case OMX_VIDEO_HEVCMainTierLevel21: return "MainTierLevel21";
|
||||
case OMX_VIDEO_HEVCHighTierLevel21: return "HighTierLevel21";
|
||||
case OMX_VIDEO_HEVCMainTierLevel3: return "MainTierLevel3";
|
||||
case OMX_VIDEO_HEVCHighTierLevel3: return "HighTierLevel3";
|
||||
case OMX_VIDEO_HEVCMainTierLevel31: return "MainTierLevel31";
|
||||
case OMX_VIDEO_HEVCHighTierLevel31: return "HighTierLevel31";
|
||||
case OMX_VIDEO_HEVCMainTierLevel4: return "MainTierLevel4";
|
||||
case OMX_VIDEO_HEVCHighTierLevel4: return "HighTierLevel4";
|
||||
case OMX_VIDEO_HEVCMainTierLevel41: return "MainTierLevel41";
|
||||
case OMX_VIDEO_HEVCHighTierLevel41: return "HighTierLevel41";
|
||||
case OMX_VIDEO_HEVCMainTierLevel5: return "MainTierLevel5";
|
||||
case OMX_VIDEO_HEVCHighTierLevel5: return "HighTierLevel5";
|
||||
case OMX_VIDEO_HEVCMainTierLevel51: return "MainTierLevel51";
|
||||
case OMX_VIDEO_HEVCHighTierLevel51: return "HighTierLevel51";
|
||||
case OMX_VIDEO_HEVCMainTierLevel52: return "MainTierLevel52";
|
||||
case OMX_VIDEO_HEVCHighTierLevel52: return "HighTierLevel52";
|
||||
case OMX_VIDEO_HEVCMainTierLevel6: return "MainTierLevel6";
|
||||
case OMX_VIDEO_HEVCHighTierLevel6: return "HighTierLevel6";
|
||||
case OMX_VIDEO_HEVCMainTierLevel61: return "MainTierLevel61";
|
||||
case OMX_VIDEO_HEVCHighTierLevel61: return "HighTierLevel61";
|
||||
case OMX_VIDEO_HEVCMainTierLevel62: return "MainTierLevel62";
|
||||
case OMX_VIDEO_HEVCHighTierLevel62: return "HighTierLevel62";
|
||||
default: return def;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // AS_STRING_FOR_OMX_VIDEOEXT_H
|
||||
|
||||
#endif // OMX_VideoExt_h
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
* Copyright (c) 2010 The Khronos Group Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject
|
||||
* to the following conditions:
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
/** OMX_AudioExt.h - OpenMax IL version 1.1.2
|
||||
* The OMX_AudioExt header file contains extensions to the
|
||||
* definitions used by both the application and the component to
|
||||
* access video items.
|
||||
*/
|
||||
|
||||
#ifndef OMX_AudioExt_h
|
||||
#define OMX_AudioExt_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* Each OMX header shall include all required header files to allow the
|
||||
* header to compile without errors. The includes below are required
|
||||
* for this header file to compile successfully
|
||||
*/
|
||||
#include <OMX_Core.h>
|
||||
|
||||
#define OMX_AUDIO_AACToolAndroidSSBR (OMX_AUDIO_AACToolVendor << 0) /**< SSBR: MPEG-4 Single-rate (downsampled) Spectral Band Replication tool allowed or active */
|
||||
#define OMX_AUDIO_AACToolAndroidDSBR (OMX_AUDIO_AACToolVendor << 1) /**< DSBR: MPEG-4 Dual-rate Spectral Band Replication tool allowed or active */
|
||||
|
||||
typedef enum OMX_AUDIO_CODINGEXTTYPE {
|
||||
OMX_AUDIO_CodingAndroidUnused = OMX_AUDIO_CodingKhronosExtensions + 0x00100000,
|
||||
OMX_AUDIO_CodingAndroidAC3, /**< AC3 encoded data */
|
||||
OMX_AUDIO_CodingAndroidOPUS, /**< OPUS encoded data */
|
||||
OMX_AUDIO_CodingAndroidEAC3, /**< EAC3 encoded data */
|
||||
} OMX_AUDIO_CODINGEXTTYPE;
|
||||
|
||||
typedef struct OMX_AUDIO_PARAM_ANDROID_AC3TYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_U32 nPortIndex; /**< port that this structure applies to */
|
||||
OMX_U32 nChannels; /**< Number of channels */
|
||||
OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
|
||||
variable or unknown sampling rate. */
|
||||
} OMX_AUDIO_PARAM_ANDROID_AC3TYPE;
|
||||
|
||||
typedef struct OMX_AUDIO_PARAM_ANDROID_EAC3TYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_U32 nPortIndex; /**< port that this structure applies to */
|
||||
OMX_U32 nChannels; /**< Number of channels */
|
||||
OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
|
||||
variable or unknown sampling rate. */
|
||||
} OMX_AUDIO_PARAM_ANDROID_EAC3TYPE;
|
||||
|
||||
typedef struct OMX_AUDIO_PARAM_ANDROID_OPUSTYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_U32 nPortIndex; /**< port that this structure applies to */
|
||||
OMX_U32 nChannels; /**< Number of channels */
|
||||
OMX_U32 nBitRate; /**< Bit rate of the encoded data data. Use 0 for variable
|
||||
rate or unknown bit rates. Encoding is set to the
|
||||
bitrate closest to specified value (in bps) */
|
||||
OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
|
||||
variable or unknown sampling rate. */
|
||||
OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should
|
||||
limit the audio signal. Use 0 to let encoder decide */
|
||||
} OMX_AUDIO_PARAM_ANDROID_OPUSTYPE;
|
||||
|
||||
typedef struct OMX_AUDIO_PARAM_ANDROID_AACPRESENTATIONTYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_S32 nMaxOutputChannels; /**< Maximum channel count to be output, -1 if unspecified, 0 if downmixing disabled */
|
||||
OMX_S32 nDrcCut; /**< The DRC attenuation factor, between 0 and 127, -1 if unspecified */
|
||||
OMX_S32 nDrcBoost; /**< The DRC amplification factor, between 0 and 127, -1 if unspecified */
|
||||
OMX_S32 nHeavyCompression; /**< 0 for light compression, 1 for heavy compression, -1 if unspecified */
|
||||
OMX_S32 nTargetReferenceLevel; /**< Target reference level, between 0 and 127, -1 if unspecified */
|
||||
OMX_S32 nEncodedTargetLevel; /**< Target reference level assumed at the encoder, between 0 and 127, -1 if unspecified */
|
||||
OMX_S32 nPCMLimiterEnable; /**< Signal level limiting, 0 for disable, 1 for enable, -1 if unspecified */
|
||||
} OMX_AUDIO_PARAM_ANDROID_AACPRESENTATIONTYPE;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* OMX_AudioExt_h */
|
||||
/* File EOF */
|
||||
@@ -0,0 +1,596 @@
|
||||
/* ------------------------------------------------------------------
|
||||
* Copyright (C) 1998-2009 PacketVideo
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
||||
* express or implied.
|
||||
* See the License for the specific language governing permissions
|
||||
* and limitations under the License.
|
||||
* -------------------------------------------------------------------
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2008 The Khronos Group Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject
|
||||
* to the following conditions:
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
/** OMX_Component.h - OpenMax IL version 1.1.2
|
||||
* The OMX_Component header file contains the definitions used to define
|
||||
* the public interface of a component. This header file is intended to
|
||||
* be used by both the application and the component.
|
||||
*/
|
||||
|
||||
#ifndef OMX_Component_h
|
||||
#define OMX_Component_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
|
||||
|
||||
/* Each OMX header must include all required header files to allow the
|
||||
* header to compile without errors. The includes below are required
|
||||
* for this header file to compile successfully
|
||||
*/
|
||||
|
||||
#include <OMX_Audio.h>
|
||||
#include <OMX_Video.h>
|
||||
#include <OMX_Image.h>
|
||||
#include <OMX_Other.h>
|
||||
|
||||
/** @ingroup comp */
|
||||
typedef enum OMX_PORTDOMAINTYPE {
|
||||
OMX_PortDomainAudio,
|
||||
OMX_PortDomainVideo,
|
||||
OMX_PortDomainImage,
|
||||
OMX_PortDomainOther,
|
||||
OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_PortDomainMax = 0x7ffffff
|
||||
} OMX_PORTDOMAINTYPE;
|
||||
|
||||
/** @ingroup comp */
|
||||
typedef struct OMX_PARAM_PORTDEFINITIONTYPE {
|
||||
OMX_U32 nSize; /**< Size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_U32 nPortIndex; /**< Port number the structure applies to */
|
||||
OMX_DIRTYPE eDir; /**< Direction (input or output) of this port */
|
||||
OMX_U32 nBufferCountActual; /**< The actual number of buffers allocated on this port */
|
||||
OMX_U32 nBufferCountMin; /**< The minimum number of buffers this port requires */
|
||||
OMX_U32 nBufferSize; /**< Size, in bytes, for buffers to be used for this channel */
|
||||
OMX_BOOL bEnabled; /**< Ports default to enabled and are enabled/disabled by
|
||||
OMX_CommandPortEnable/OMX_CommandPortDisable.
|
||||
When disabled a port is unpopulated. A disabled port
|
||||
is not populated with buffers on a transition to IDLE. */
|
||||
OMX_BOOL bPopulated; /**< Port is populated with all of its buffers as indicated by
|
||||
nBufferCountActual. A disabled port is always unpopulated.
|
||||
An enabled port is populated on a transition to OMX_StateIdle
|
||||
and unpopulated on a transition to loaded. */
|
||||
OMX_PORTDOMAINTYPE eDomain; /**< Domain of the port. Determines the contents of metadata below. */
|
||||
union {
|
||||
OMX_AUDIO_PORTDEFINITIONTYPE audio;
|
||||
OMX_VIDEO_PORTDEFINITIONTYPE video;
|
||||
OMX_IMAGE_PORTDEFINITIONTYPE image;
|
||||
OMX_OTHER_PORTDEFINITIONTYPE other;
|
||||
} format;
|
||||
OMX_BOOL bBuffersContiguous;
|
||||
OMX_U32 nBufferAlignment;
|
||||
} OMX_PARAM_PORTDEFINITIONTYPE;
|
||||
|
||||
/** @ingroup comp */
|
||||
typedef struct OMX_PARAM_U32TYPE {
|
||||
OMX_U32 nSize; /**< Size of this structure, in Bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_U32 nPortIndex; /**< port that this structure applies to */
|
||||
OMX_U32 nU32; /**< U32 value */
|
||||
} OMX_PARAM_U32TYPE;
|
||||
|
||||
/** @ingroup rpm */
|
||||
typedef enum OMX_SUSPENSIONPOLICYTYPE {
|
||||
OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */
|
||||
OMX_SuspensionEnabled, /**< Suspension allowed */
|
||||
OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_SuspensionPolicyMax = 0x7fffffff
|
||||
} OMX_SUSPENSIONPOLICYTYPE;
|
||||
|
||||
/** @ingroup rpm */
|
||||
typedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_SUSPENSIONPOLICYTYPE ePolicy;
|
||||
} OMX_PARAM_SUSPENSIONPOLICYTYPE;
|
||||
|
||||
/** @ingroup rpm */
|
||||
typedef enum OMX_SUSPENSIONTYPE {
|
||||
OMX_NotSuspended, /**< component is not suspended */
|
||||
OMX_Suspended, /**< component is suspended */
|
||||
OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_SuspendMax = 0x7FFFFFFF
|
||||
} OMX_SUSPENSIONTYPE;
|
||||
|
||||
/** @ingroup rpm */
|
||||
typedef struct OMX_PARAM_SUSPENSIONTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_SUSPENSIONTYPE eType;
|
||||
} OMX_PARAM_SUSPENSIONTYPE ;
|
||||
|
||||
typedef struct OMX_CONFIG_BOOLEANTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_BOOL bEnabled;
|
||||
} OMX_CONFIG_BOOLEANTYPE;
|
||||
|
||||
/* Parameter specifying the content uri to use. */
|
||||
/** @ingroup cp */
|
||||
typedef struct OMX_PARAM_CONTENTURITYPE
|
||||
{
|
||||
OMX_U32 nSize; /**< size of the structure in bytes, including
|
||||
actual URI name */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_U8 contentURI[1]; /**< The URI name */
|
||||
} OMX_PARAM_CONTENTURITYPE;
|
||||
|
||||
/* Parameter specifying the pipe to use. */
|
||||
/** @ingroup cp */
|
||||
typedef struct OMX_PARAM_CONTENTPIPETYPE
|
||||
{
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_HANDLETYPE hPipe; /**< The pipe handle*/
|
||||
} OMX_PARAM_CONTENTPIPETYPE;
|
||||
|
||||
/** @ingroup rpm */
|
||||
typedef struct OMX_RESOURCECONCEALMENTTYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment
|
||||
methods (like degrading algorithm quality to
|
||||
lower resource consumption or functional bypass)
|
||||
on a component as a resolution to resource conflicts. */
|
||||
} OMX_RESOURCECONCEALMENTTYPE;
|
||||
|
||||
|
||||
/** @ingroup metadata */
|
||||
typedef enum OMX_METADATACHARSETTYPE {
|
||||
OMX_MetadataCharsetUnknown = 0,
|
||||
OMX_MetadataCharsetASCII,
|
||||
OMX_MetadataCharsetBinary,
|
||||
OMX_MetadataCharsetCodePage1252,
|
||||
OMX_MetadataCharsetUTF8,
|
||||
OMX_MetadataCharsetJavaConformantUTF8,
|
||||
OMX_MetadataCharsetUTF7,
|
||||
OMX_MetadataCharsetImapUTF7,
|
||||
OMX_MetadataCharsetUTF16LE,
|
||||
OMX_MetadataCharsetUTF16BE,
|
||||
OMX_MetadataCharsetGB12345,
|
||||
OMX_MetadataCharsetHZGB2312,
|
||||
OMX_MetadataCharsetGB2312,
|
||||
OMX_MetadataCharsetGB18030,
|
||||
OMX_MetadataCharsetGBK,
|
||||
OMX_MetadataCharsetBig5,
|
||||
OMX_MetadataCharsetISO88591,
|
||||
OMX_MetadataCharsetISO88592,
|
||||
OMX_MetadataCharsetISO88593,
|
||||
OMX_MetadataCharsetISO88594,
|
||||
OMX_MetadataCharsetISO88595,
|
||||
OMX_MetadataCharsetISO88596,
|
||||
OMX_MetadataCharsetISO88597,
|
||||
OMX_MetadataCharsetISO88598,
|
||||
OMX_MetadataCharsetISO88599,
|
||||
OMX_MetadataCharsetISO885910,
|
||||
OMX_MetadataCharsetISO885913,
|
||||
OMX_MetadataCharsetISO885914,
|
||||
OMX_MetadataCharsetISO885915,
|
||||
OMX_MetadataCharsetShiftJIS,
|
||||
OMX_MetadataCharsetISO2022JP,
|
||||
OMX_MetadataCharsetISO2022JP1,
|
||||
OMX_MetadataCharsetISOEUCJP,
|
||||
OMX_MetadataCharsetSMS7Bit,
|
||||
OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_MetadataCharsetTypeMax= 0x7FFFFFFF
|
||||
} OMX_METADATACHARSETTYPE;
|
||||
|
||||
/** @ingroup metadata */
|
||||
typedef enum OMX_METADATASCOPETYPE
|
||||
{
|
||||
OMX_MetadataScopeAllLevels,
|
||||
OMX_MetadataScopeTopLevel,
|
||||
OMX_MetadataScopePortLevel,
|
||||
OMX_MetadataScopeNodeLevel,
|
||||
OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_MetadataScopeTypeMax = 0x7fffffff
|
||||
} OMX_METADATASCOPETYPE;
|
||||
|
||||
/** @ingroup metadata */
|
||||
typedef enum OMX_METADATASEARCHMODETYPE
|
||||
{
|
||||
OMX_MetadataSearchValueSizeByIndex,
|
||||
OMX_MetadataSearchItemByIndex,
|
||||
OMX_MetadataSearchNextItemByKey,
|
||||
OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_MetadataSearchTypeMax = 0x7fffffff
|
||||
} OMX_METADATASEARCHMODETYPE;
|
||||
/** @ingroup metadata */
|
||||
typedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE
|
||||
{
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_METADATASCOPETYPE eScopeMode;
|
||||
OMX_U32 nScopeSpecifier;
|
||||
OMX_U32 nMetadataItemCount;
|
||||
} OMX_CONFIG_METADATAITEMCOUNTTYPE;
|
||||
|
||||
/** @ingroup metadata */
|
||||
typedef struct OMX_CONFIG_METADATAITEMTYPE
|
||||
{
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_METADATASCOPETYPE eScopeMode;
|
||||
OMX_U32 nScopeSpecifier;
|
||||
OMX_U32 nMetadataItemIndex;
|
||||
OMX_METADATASEARCHMODETYPE eSearchMode;
|
||||
OMX_METADATACHARSETTYPE eKeyCharset;
|
||||
OMX_U8 nKeySizeUsed;
|
||||
OMX_U8 nKey[128];
|
||||
OMX_METADATACHARSETTYPE eValueCharset;
|
||||
OMX_STRING sLanguageCountry;
|
||||
OMX_U32 nValueMaxSize;
|
||||
OMX_U32 nValueSizeUsed;
|
||||
OMX_U8 nValue[1];
|
||||
} OMX_CONFIG_METADATAITEMTYPE;
|
||||
|
||||
/* @ingroup metadata */
|
||||
typedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE
|
||||
{
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_BOOL bAllKeys;
|
||||
OMX_U32 nParentNodeID;
|
||||
OMX_U32 nNumNodes;
|
||||
} OMX_CONFIG_CONTAINERNODECOUNTTYPE;
|
||||
|
||||
/** @ingroup metadata */
|
||||
typedef struct OMX_CONFIG_CONTAINERNODEIDTYPE
|
||||
{
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_BOOL bAllKeys;
|
||||
OMX_U32 nParentNodeID;
|
||||
OMX_U32 nNodeIndex;
|
||||
OMX_U32 nNodeID;
|
||||
OMX_STRING cNodeName;
|
||||
OMX_BOOL bIsLeafType;
|
||||
} OMX_CONFIG_CONTAINERNODEIDTYPE;
|
||||
|
||||
/** @ingroup metadata */
|
||||
typedef struct OMX_PARAM_METADATAFILTERTYPE
|
||||
{
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_BOOL bAllKeys; /* if true then this structure refers to all keys and
|
||||
* the three key fields below are ignored */
|
||||
OMX_METADATACHARSETTYPE eKeyCharset;
|
||||
OMX_U32 nKeySizeUsed;
|
||||
OMX_U8 nKey [128];
|
||||
OMX_U32 nLanguageCountrySizeUsed;
|
||||
OMX_U8 nLanguageCountry[128];
|
||||
OMX_BOOL bEnabled; /* if true then key is part of filter (e.g.
|
||||
* retained for query later). If false then
|
||||
* key is not part of filter */
|
||||
} OMX_PARAM_METADATAFILTERTYPE;
|
||||
|
||||
/** The OMX_HANDLETYPE structure defines the component handle. The component
|
||||
* handle is used to access all of the component's public methods and also
|
||||
* contains pointers to the component's private data area. The component
|
||||
* handle is initialized by the OMX core (with help from the component)
|
||||
* during the process of loading the component. After the component is
|
||||
* successfully loaded, the application can safely access any of the
|
||||
* component's public functions (although some may return an error because
|
||||
* the state is inappropriate for the access).
|
||||
*
|
||||
* @ingroup comp
|
||||
*/
|
||||
typedef struct OMX_COMPONENTTYPE
|
||||
{
|
||||
/** The size of this structure, in bytes. It is the responsibility
|
||||
of the allocator of this structure to fill in this value. Since
|
||||
this structure is allocated by the GetHandle function, this
|
||||
function will fill in this value. */
|
||||
OMX_U32 nSize;
|
||||
|
||||
/** nVersion is the version of the OMX specification that the structure
|
||||
is built against. It is the responsibility of the creator of this
|
||||
structure to initialize this value and every user of this structure
|
||||
should verify that it knows how to use the exact version of
|
||||
this structure found herein. */
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
|
||||
/** pComponentPrivate is a pointer to the component private data area.
|
||||
This member is allocated and initialized by the component when the
|
||||
component is first loaded. The application should not access this
|
||||
data area. */
|
||||
OMX_PTR pComponentPrivate;
|
||||
|
||||
/** pApplicationPrivate is a pointer that is a parameter to the
|
||||
OMX_GetHandle method, and contains an application private value
|
||||
provided by the IL client. This application private data is
|
||||
returned to the IL Client by OMX in all callbacks */
|
||||
OMX_PTR pApplicationPrivate;
|
||||
|
||||
/** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL
|
||||
specification for details on the GetComponentVersion method.
|
||||
*/
|
||||
OMX_ERRORTYPE (*GetComponentVersion)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_OUT OMX_STRING pComponentName,
|
||||
OMX_OUT OMX_VERSIONTYPE* pComponentVersion,
|
||||
OMX_OUT OMX_VERSIONTYPE* pSpecVersion,
|
||||
OMX_OUT OMX_UUIDTYPE* pComponentUUID);
|
||||
|
||||
/** refer to OMX_SendCommand in OMX_core.h or the OMX IL
|
||||
specification for details on the SendCommand method.
|
||||
*/
|
||||
OMX_ERRORTYPE (*SendCommand)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_IN OMX_COMMANDTYPE Cmd,
|
||||
OMX_IN OMX_U32 nParam1,
|
||||
OMX_IN OMX_PTR pCmdData);
|
||||
|
||||
/** refer to OMX_GetParameter in OMX_core.h or the OMX IL
|
||||
specification for details on the GetParameter method.
|
||||
*/
|
||||
OMX_ERRORTYPE (*GetParameter)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_IN OMX_INDEXTYPE nParamIndex,
|
||||
OMX_INOUT OMX_PTR pComponentParameterStructure);
|
||||
|
||||
|
||||
/** refer to OMX_SetParameter in OMX_core.h or the OMX IL
|
||||
specification for details on the SetParameter method.
|
||||
*/
|
||||
OMX_ERRORTYPE (*SetParameter)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_IN OMX_INDEXTYPE nIndex,
|
||||
OMX_IN OMX_PTR pComponentParameterStructure);
|
||||
|
||||
|
||||
/** refer to OMX_GetConfig in OMX_core.h or the OMX IL
|
||||
specification for details on the GetConfig method.
|
||||
*/
|
||||
OMX_ERRORTYPE (*GetConfig)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_IN OMX_INDEXTYPE nIndex,
|
||||
OMX_INOUT OMX_PTR pComponentConfigStructure);
|
||||
|
||||
|
||||
/** refer to OMX_SetConfig in OMX_core.h or the OMX IL
|
||||
specification for details on the SetConfig method.
|
||||
*/
|
||||
OMX_ERRORTYPE (*SetConfig)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_IN OMX_INDEXTYPE nIndex,
|
||||
OMX_IN OMX_PTR pComponentConfigStructure);
|
||||
|
||||
|
||||
/** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL
|
||||
specification for details on the GetExtensionIndex method.
|
||||
*/
|
||||
OMX_ERRORTYPE (*GetExtensionIndex)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_IN OMX_STRING cParameterName,
|
||||
OMX_OUT OMX_INDEXTYPE* pIndexType);
|
||||
|
||||
|
||||
/** refer to OMX_GetState in OMX_core.h or the OMX IL
|
||||
specification for details on the GetState method.
|
||||
*/
|
||||
OMX_ERRORTYPE (*GetState)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_OUT OMX_STATETYPE* pState);
|
||||
|
||||
|
||||
/** The ComponentTunnelRequest method will interact with another OMX
|
||||
component to determine if tunneling is possible and to setup the
|
||||
tunneling. The return codes for this method can be used to
|
||||
determine if tunneling is not possible, or if tunneling is not
|
||||
supported.
|
||||
|
||||
Base profile components (i.e. non-interop) do not support this
|
||||
method and should return OMX_ErrorNotImplemented
|
||||
|
||||
The interop profile component MUST support tunneling to another
|
||||
interop profile component with a compatible port parameters.
|
||||
A component may also support proprietary communication.
|
||||
|
||||
If proprietary communication is supported the negotiation of
|
||||
proprietary communication is done outside of OMX in a vendor
|
||||
specific way. It is only required that the proper result be
|
||||
returned and the details of how the setup is done is left
|
||||
to the component implementation.
|
||||
|
||||
When this method is invoked when nPort in an output port, the
|
||||
component will:
|
||||
1. Populate the pTunnelSetup structure with the output port's
|
||||
requirements and constraints for the tunnel.
|
||||
|
||||
When this method is invoked when nPort in an input port, the
|
||||
component will:
|
||||
1. Query the necessary parameters from the output port to
|
||||
determine if the ports are compatible for tunneling
|
||||
2. If the ports are compatible, the component should store
|
||||
the tunnel step provided by the output port
|
||||
3. Determine which port (either input or output) is the buffer
|
||||
supplier, and call OMX_SetParameter on the output port to
|
||||
indicate this selection.
|
||||
|
||||
The component will return from this call within 5 msec.
|
||||
|
||||
@param [in] hComp
|
||||
Handle of the component to be accessed. This is the component
|
||||
handle returned by the call to the OMX_GetHandle method.
|
||||
@param [in] nPort
|
||||
nPort is used to select the port on the component to be used
|
||||
for tunneling.
|
||||
@param [in] hTunneledComp
|
||||
Handle of the component to tunnel with. This is the component
|
||||
handle returned by the call to the OMX_GetHandle method. When
|
||||
this parameter is 0x0 the component should setup the port for
|
||||
communication with the application / IL Client.
|
||||
@param [in] nPortOutput
|
||||
nPortOutput is used indicate the port the component should
|
||||
tunnel with.
|
||||
@param [in] pTunnelSetup
|
||||
Pointer to the tunnel setup structure. When nPort is an output port
|
||||
the component should populate the fields of this structure. When
|
||||
When nPort is an input port the component should review the setup
|
||||
provided by the component with the output port.
|
||||
@return OMX_ERRORTYPE
|
||||
If the command successfully executes, the return code will be
|
||||
OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
|
||||
@ingroup tun
|
||||
*/
|
||||
|
||||
OMX_ERRORTYPE (*ComponentTunnelRequest)(
|
||||
OMX_IN OMX_HANDLETYPE hComp,
|
||||
OMX_IN OMX_U32 nPort,
|
||||
OMX_IN OMX_HANDLETYPE hTunneledComp,
|
||||
OMX_IN OMX_U32 nTunneledPort,
|
||||
OMX_INOUT OMX_TUNNELSETUPTYPE* pTunnelSetup);
|
||||
|
||||
/** refer to OMX_UseBuffer in OMX_core.h or the OMX IL
|
||||
specification for details on the UseBuffer method.
|
||||
@ingroup buf
|
||||
*/
|
||||
OMX_ERRORTYPE (*UseBuffer)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
|
||||
OMX_IN OMX_U32 nPortIndex,
|
||||
OMX_IN OMX_PTR pAppPrivate,
|
||||
OMX_IN OMX_U32 nSizeBytes,
|
||||
OMX_IN OMX_U8* pBuffer);
|
||||
|
||||
/** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL
|
||||
specification for details on the AllocateBuffer method.
|
||||
@ingroup buf
|
||||
*/
|
||||
OMX_ERRORTYPE (*AllocateBuffer)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer,
|
||||
OMX_IN OMX_U32 nPortIndex,
|
||||
OMX_IN OMX_PTR pAppPrivate,
|
||||
OMX_IN OMX_U32 nSizeBytes);
|
||||
|
||||
/** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL
|
||||
specification for details on the FreeBuffer method.
|
||||
@ingroup buf
|
||||
*/
|
||||
OMX_ERRORTYPE (*FreeBuffer)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_IN OMX_U32 nPortIndex,
|
||||
OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
|
||||
|
||||
/** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL
|
||||
specification for details on the EmptyThisBuffer method.
|
||||
@ingroup buf
|
||||
*/
|
||||
OMX_ERRORTYPE (*EmptyThisBuffer)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
|
||||
|
||||
/** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL
|
||||
specification for details on the FillThisBuffer method.
|
||||
@ingroup buf
|
||||
*/
|
||||
OMX_ERRORTYPE (*FillThisBuffer)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
|
||||
|
||||
/** The SetCallbacks method is used by the core to specify the callback
|
||||
structure from the application to the component. This is a blocking
|
||||
call. The component will return from this call within 5 msec.
|
||||
@param [in] hComponent
|
||||
Handle of the component to be accessed. This is the component
|
||||
handle returned by the call to the GetHandle function.
|
||||
@param [in] pCallbacks
|
||||
pointer to an OMX_CALLBACKTYPE structure used to provide the
|
||||
callback information to the component
|
||||
@param [in] pAppData
|
||||
pointer to an application defined value. It is anticipated that
|
||||
the application will pass a pointer to a data structure or a "this
|
||||
pointer" in this area to allow the callback (in the application)
|
||||
to determine the context of the call
|
||||
@return OMX_ERRORTYPE
|
||||
If the command successfully executes, the return code will be
|
||||
OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
|
||||
*/
|
||||
OMX_ERRORTYPE (*SetCallbacks)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_IN OMX_CALLBACKTYPE* pCallbacks,
|
||||
OMX_IN OMX_PTR pAppData);
|
||||
|
||||
/** ComponentDeInit method is used to deinitialize the component
|
||||
providing a means to free any resources allocated at component
|
||||
initialization. NOTE: After this call the component handle is
|
||||
not valid for further use.
|
||||
@param [in] hComponent
|
||||
Handle of the component to be accessed. This is the component
|
||||
handle returned by the call to the GetHandle function.
|
||||
@return OMX_ERRORTYPE
|
||||
If the command successfully executes, the return code will be
|
||||
OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
|
||||
*/
|
||||
OMX_ERRORTYPE (*ComponentDeInit)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent);
|
||||
|
||||
/** @ingroup buf */
|
||||
OMX_ERRORTYPE (*UseEGLImage)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
|
||||
OMX_IN OMX_U32 nPortIndex,
|
||||
OMX_IN OMX_PTR pAppPrivate,
|
||||
OMX_IN void* eglImage);
|
||||
|
||||
OMX_ERRORTYPE (*ComponentRoleEnum)(
|
||||
OMX_IN OMX_HANDLETYPE hComponent,
|
||||
OMX_OUT OMX_U8 *cRole,
|
||||
OMX_IN OMX_U32 nIndex);
|
||||
|
||||
} OMX_COMPONENTTYPE;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
||||
/* File EOF */
|
||||
@@ -0,0 +1,212 @@
|
||||
/* ------------------------------------------------------------------
|
||||
* Copyright (C) 1998-2009 PacketVideo
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
||||
* express or implied.
|
||||
* See the License for the specific language governing permissions
|
||||
* and limitations under the License.
|
||||
* -------------------------------------------------------------------
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2008 The Khronos Group Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject
|
||||
* to the following conditions:
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
/** OMX_ContentPipe.h - OpenMax IL version 1.1.2
|
||||
* The OMX_ContentPipe header file contains the definitions used to define
|
||||
* the public interface for content piples. This header file is intended to
|
||||
* be used by the component.
|
||||
*/
|
||||
|
||||
#ifndef OMX_CONTENTPIPE_H
|
||||
#define OMX_CONTENTPIPE_H
|
||||
|
||||
#ifndef KD_EACCES
|
||||
/* OpenKODE error codes. CPResult values may be zero (indicating success
|
||||
or one of the following values) */
|
||||
#define KD_EACCES (1)
|
||||
#define KD_EADDRINUSE (2)
|
||||
#define KD_EAGAIN (5)
|
||||
#define KD_EBADF (7)
|
||||
#define KD_EBUSY (8)
|
||||
#define KD_ECONNREFUSED (9)
|
||||
#define KD_ECONNRESET (10)
|
||||
#define KD_EDEADLK (11)
|
||||
#define KD_EDESTADDRREQ (12)
|
||||
#define KD_ERANGE (35)
|
||||
#define KD_EEXIST (13)
|
||||
#define KD_EFBIG (14)
|
||||
#define KD_EHOSTUNREACH (15)
|
||||
#define KD_EINVAL (17)
|
||||
#define KD_EIO (18)
|
||||
#define KD_EISCONN (20)
|
||||
#define KD_EISDIR (21)
|
||||
#define KD_EMFILE (22)
|
||||
#define KD_ENAMETOOLONG (23)
|
||||
#define KD_ENOENT (24)
|
||||
#define KD_ENOMEM (25)
|
||||
#define KD_ENOSPC (26)
|
||||
#define KD_ENOSYS (27)
|
||||
#define KD_ENOTCONN (28)
|
||||
#define KD_EPERM (33)
|
||||
#define KD_ETIMEDOUT (36)
|
||||
#define KD_EILSEQ (19)
|
||||
#endif
|
||||
|
||||
/** Map types from OMX standard types only here so interface is as generic as possible. */
|
||||
typedef OMX_U32 CPresult;
|
||||
typedef char * CPstring;
|
||||
typedef void * CPhandle;
|
||||
typedef OMX_U32 CPuint;
|
||||
typedef OMX_S32 CPint;
|
||||
typedef char CPbyte;
|
||||
typedef OMX_BOOL CPbool;
|
||||
|
||||
/** enumeration of origin types used in the CP_PIPETYPE's Seek function
|
||||
* @ingroup cp
|
||||
*/
|
||||
typedef enum CP_ORIGINTYPE {
|
||||
CP_OriginBegin,
|
||||
CP_OriginCur,
|
||||
CP_OriginEnd,
|
||||
CP_OriginKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
CP_OriginVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
CP_OriginMax = 0X7FFFFFFF
|
||||
} CP_ORIGINTYPE;
|
||||
|
||||
/** enumeration of contact access types used in the CP_PIPETYPE's Open function
|
||||
* @ingroup cp
|
||||
*/
|
||||
typedef enum CP_ACCESSTYPE {
|
||||
CP_AccessRead,
|
||||
CP_AccessWrite,
|
||||
CP_AccessReadWrite,
|
||||
CP_AccessKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
CP_AccessVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
CP_AccessMax = 0X7FFFFFFF
|
||||
} CP_ACCESSTYPE;
|
||||
|
||||
/** enumeration of results returned by the CP_PIPETYPE's CheckAvailableBytes function
|
||||
* @ingroup cp
|
||||
*/
|
||||
typedef enum CP_CHECKBYTESRESULTTYPE
|
||||
{
|
||||
CP_CheckBytesOk, /**< There are at least the request number
|
||||
of bytes available */
|
||||
CP_CheckBytesNotReady, /**< The pipe is still retrieving bytes
|
||||
and presently lacks sufficient bytes.
|
||||
Client will be called when they are
|
||||
sufficient bytes are available. */
|
||||
CP_CheckBytesInsufficientBytes, /**< The pipe has retrieved all bytes
|
||||
but those available are less than those
|
||||
requested */
|
||||
CP_CheckBytesAtEndOfStream, /**< The pipe has reached the end of stream
|
||||
and no more bytes are available. */
|
||||
CP_CheckBytesOutOfBuffers, /**< All read/write buffers are currently in use. */
|
||||
CP_CheckBytesKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
CP_CheckBytesVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
CP_CheckBytesMax = 0X7FFFFFFF
|
||||
} CP_CHECKBYTESRESULTTYPE;
|
||||
|
||||
/** enumeration of content pipe events sent to the client callback.
|
||||
* @ingroup cp
|
||||
*/
|
||||
typedef enum CP_EVENTTYPE{
|
||||
CP_BytesAvailable, /** bytes requested in a CheckAvailableBytes call are now available*/
|
||||
CP_Overflow, /** enumeration of content pipe events sent to the client callback*/
|
||||
CP_PipeDisconnected, /** enumeration of content pipe events sent to the client callback*/
|
||||
CP_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
CP_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
CP_EventMax = 0X7FFFFFFF
|
||||
} CP_EVENTTYPE;
|
||||
|
||||
/** content pipe definition
|
||||
* @ingroup cp
|
||||
*/
|
||||
typedef struct CP_PIPETYPE
|
||||
{
|
||||
/** Open a content stream for reading or writing. */
|
||||
CPresult (*Open)( CPhandle* hContent, CPstring szURI, CP_ACCESSTYPE eAccess );
|
||||
|
||||
/** Close a content stream. */
|
||||
CPresult (*Close)( CPhandle hContent );
|
||||
|
||||
/** Create a content source and open it for writing. */
|
||||
CPresult (*Create)( CPhandle *hContent, CPstring szURI );
|
||||
|
||||
/** Check the that specified number of bytes are available for reading or writing (depending on access type).*/
|
||||
CPresult (*CheckAvailableBytes)( CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE *eResult );
|
||||
|
||||
/** Seek to certain position in the content relative to the specified origin. */
|
||||
CPresult (*SetPosition)( CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin);
|
||||
|
||||
/** Retrieve the current position relative to the start of the content. */
|
||||
CPresult (*GetPosition)( CPhandle hContent, CPuint *pPosition);
|
||||
|
||||
/** Retrieve data of the specified size from the content stream (advance content pointer by size of data).
|
||||
Note: pipe client provides pointer. This function is appropriate for small high frequency reads. */
|
||||
CPresult (*Read)( CPhandle hContent, CPbyte *pData, CPuint nSize);
|
||||
|
||||
/** Retrieve a buffer allocated by the pipe that contains the requested number of bytes.
|
||||
Buffer contains the next block of bytes, as specified by nSize, of the content. nSize also
|
||||
returns the size of the block actually read. Content pointer advances the by the returned size.
|
||||
Note: pipe provides pointer. This function is appropriate for large reads. The client must call
|
||||
ReleaseReadBuffer when done with buffer.
|
||||
|
||||
In some cases the requested block may not reside in contiguous memory within the
|
||||
pipe implementation. For instance if the pipe leverages a circular buffer then the requested
|
||||
block may straddle the boundary of the circular buffer. By default a pipe implementation
|
||||
performs a copy in this case to provide the block to the pipe client in one contiguous buffer.
|
||||
If, however, the client sets bForbidCopy, then the pipe returns only those bytes preceding the memory
|
||||
boundary. Here the client may retrieve the data in segments over successive calls. */
|
||||
CPresult (*ReadBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint *nSize, CPbool bForbidCopy);
|
||||
|
||||
/** Release a buffer obtained by ReadBuffer back to the pipe. */
|
||||
CPresult (*ReleaseReadBuffer)(CPhandle hContent, CPbyte *pBuffer);
|
||||
|
||||
/** Write data of the specified size to the content (advance content pointer by size of data).
|
||||
Note: pipe client provides pointer. This function is appropriate for small high frequency writes. */
|
||||
CPresult (*Write)( CPhandle hContent, CPbyte *data, CPuint nSize);
|
||||
|
||||
/** Retrieve a buffer allocated by the pipe used to write data to the content.
|
||||
Client will fill buffer with output data. Note: pipe provides pointer. This function is appropriate
|
||||
for large writes. The client must call WriteBuffer when done it has filled the buffer with data.*/
|
||||
CPresult (*GetWriteBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint nSize);
|
||||
|
||||
/** Deliver a buffer obtained via GetWriteBuffer to the pipe. Pipe will write the
|
||||
the contents of the buffer to content and advance content pointer by the size of the buffer */
|
||||
CPresult (*WriteBuffer)( CPhandle hContent, CPbyte *pBuffer, CPuint nFilledSize);
|
||||
|
||||
/** Register a per-handle client callback with the content pipe. */
|
||||
CPresult (*RegisterCallback)( CPhandle hContent, CPresult (*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam));
|
||||
|
||||
} CP_PIPETYPE;
|
||||
|
||||
#endif
|
||||
|
||||
1464
phonelibs/android_frameworks_native/include/media/openmax/OMX_Core.h
Normal file
1464
phonelibs/android_frameworks_native/include/media/openmax/OMX_Core.h
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,958 @@
|
||||
/* ------------------------------------------------------------------
|
||||
* Copyright (C) 1998-2009 PacketVideo
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
||||
* express or implied.
|
||||
* See the License for the specific language governing permissions
|
||||
* and limitations under the License.
|
||||
* -------------------------------------------------------------------
|
||||
*/
|
||||
/**
|
||||
* Copyright (c) 2008 The Khronos Group Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject
|
||||
* to the following conditions:
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file OMX_IVCommon.h - OpenMax IL version 1.1.2
|
||||
* The structures needed by Video and Image components to exchange
|
||||
* parameters and configuration data with the components.
|
||||
*/
|
||||
#ifndef OMX_IVCommon_h
|
||||
#define OMX_IVCommon_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/**
|
||||
* Each OMX header must include all required header files to allow the header
|
||||
* to compile without errors. The includes below are required for this header
|
||||
* file to compile successfully
|
||||
*/
|
||||
|
||||
#include <OMX_Core.h>
|
||||
|
||||
/** @defgroup iv OpenMAX IL Imaging and Video Domain
|
||||
* Common structures for OpenMAX IL Imaging and Video domains
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Enumeration defining possible uncompressed image/video formats.
|
||||
*
|
||||
* ENUMS:
|
||||
* Unused : Placeholder value when format is N/A
|
||||
* Monochrome : black and white
|
||||
* 8bitRGB332 : Red 7:5, Green 4:2, Blue 1:0
|
||||
* 12bitRGB444 : Red 11:8, Green 7:4, Blue 3:0
|
||||
* 16bitARGB4444 : Alpha 15:12, Red 11:8, Green 7:4, Blue 3:0
|
||||
* 16bitARGB1555 : Alpha 15, Red 14:10, Green 9:5, Blue 4:0
|
||||
* 16bitRGB565 : Red 15:11, Green 10:5, Blue 4:0
|
||||
* 16bitBGR565 : Blue 15:11, Green 10:5, Red 4:0
|
||||
* 18bitRGB666 : Red 17:12, Green 11:6, Blue 5:0
|
||||
* 18bitARGB1665 : Alpha 17, Red 16:11, Green 10:5, Blue 4:0
|
||||
* 19bitARGB1666 : Alpha 18, Red 17:12, Green 11:6, Blue 5:0
|
||||
* 24bitRGB888 : Red 24:16, Green 15:8, Blue 7:0
|
||||
* 24bitBGR888 : Blue 24:16, Green 15:8, Red 7:0
|
||||
* 24bitARGB1887 : Alpha 23, Red 22:15, Green 14:7, Blue 6:0
|
||||
* 25bitARGB1888 : Alpha 24, Red 23:16, Green 15:8, Blue 7:0
|
||||
* 32bitBGRA8888 : Blue 31:24, Green 23:16, Red 15:8, Alpha 7:0
|
||||
* 32bitARGB8888 : Alpha 31:24, Red 23:16, Green 15:8, Blue 7:0
|
||||
* YUV411Planar : U,Y are subsampled by a factor of 4 horizontally
|
||||
* YUV411PackedPlanar : packed per payload in planar slices
|
||||
* YUV420Planar : Three arrays Y,U,V.
|
||||
* YUV420PackedPlanar : packed per payload in planar slices
|
||||
* YUV420SemiPlanar : Two arrays, one is all Y, the other is U and V
|
||||
* YUV422Planar : Three arrays Y,U,V.
|
||||
* YUV422PackedPlanar : packed per payload in planar slices
|
||||
* YUV422SemiPlanar : Two arrays, one is all Y, the other is U and V
|
||||
* YCbYCr : Organized as 16bit YUYV (i.e. YCbYCr)
|
||||
* YCrYCb : Organized as 16bit YVYU (i.e. YCrYCb)
|
||||
* CbYCrY : Organized as 16bit UYVY (i.e. CbYCrY)
|
||||
* CrYCbY : Organized as 16bit VYUY (i.e. CrYCbY)
|
||||
* YUV444Interleaved : Each pixel contains equal parts YUV
|
||||
* RawBayer8bit : SMIA camera output format
|
||||
* RawBayer10bit : SMIA camera output format
|
||||
* RawBayer8bitcompressed : SMIA camera output format
|
||||
*/
|
||||
typedef enum OMX_COLOR_FORMATTYPE {
|
||||
OMX_COLOR_FormatUnused,
|
||||
OMX_COLOR_FormatMonochrome,
|
||||
OMX_COLOR_Format8bitRGB332,
|
||||
OMX_COLOR_Format12bitRGB444,
|
||||
OMX_COLOR_Format16bitARGB4444,
|
||||
OMX_COLOR_Format16bitARGB1555,
|
||||
OMX_COLOR_Format16bitRGB565,
|
||||
OMX_COLOR_Format16bitBGR565,
|
||||
OMX_COLOR_Format18bitRGB666,
|
||||
OMX_COLOR_Format18bitARGB1665,
|
||||
OMX_COLOR_Format19bitARGB1666,
|
||||
OMX_COLOR_Format24bitRGB888,
|
||||
OMX_COLOR_Format24bitBGR888,
|
||||
OMX_COLOR_Format24bitARGB1887,
|
||||
OMX_COLOR_Format25bitARGB1888,
|
||||
OMX_COLOR_Format32bitBGRA8888,
|
||||
OMX_COLOR_Format32bitARGB8888,
|
||||
OMX_COLOR_FormatYUV411Planar,
|
||||
OMX_COLOR_FormatYUV411PackedPlanar,
|
||||
OMX_COLOR_FormatYUV420Planar,
|
||||
OMX_COLOR_FormatYUV420PackedPlanar,
|
||||
OMX_COLOR_FormatYUV420SemiPlanar,
|
||||
OMX_COLOR_FormatYUV422Planar,
|
||||
OMX_COLOR_FormatYUV422PackedPlanar,
|
||||
OMX_COLOR_FormatYUV422SemiPlanar,
|
||||
OMX_COLOR_FormatYCbYCr,
|
||||
OMX_COLOR_FormatYCrYCb,
|
||||
OMX_COLOR_FormatCbYCrY,
|
||||
OMX_COLOR_FormatCrYCbY,
|
||||
OMX_COLOR_FormatYUV444Interleaved,
|
||||
OMX_COLOR_FormatRawBayer8bit,
|
||||
OMX_COLOR_FormatRawBayer10bit,
|
||||
OMX_COLOR_FormatRawBayer8bitcompressed,
|
||||
OMX_COLOR_FormatL2,
|
||||
OMX_COLOR_FormatL4,
|
||||
OMX_COLOR_FormatL8,
|
||||
OMX_COLOR_FormatL16,
|
||||
OMX_COLOR_FormatL24,
|
||||
OMX_COLOR_FormatL32,
|
||||
OMX_COLOR_FormatYUV420PackedSemiPlanar,
|
||||
OMX_COLOR_FormatYUV422PackedSemiPlanar,
|
||||
OMX_COLOR_Format18BitBGR666,
|
||||
OMX_COLOR_Format24BitARGB6666,
|
||||
OMX_COLOR_Format24BitABGR6666,
|
||||
OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
/**<Reserved android opaque colorformat. Tells the encoder that
|
||||
* the actual colorformat will be relayed by the
|
||||
* Gralloc Buffers.
|
||||
* FIXME: In the process of reserving some enum values for
|
||||
* Android-specific OMX IL colorformats. Change this enum to
|
||||
* an acceptable range once that is done.
|
||||
* */
|
||||
OMX_COLOR_FormatAndroidOpaque = 0x7F000789,
|
||||
OMX_COLOR_Format32BitRGBA8888 = 0x7F00A000,
|
||||
/** Flexible 8-bit YUV format. Codec should report this format
|
||||
* as being supported if it supports any YUV420 packed planar
|
||||
* or semiplanar formats. When port is set to use this format,
|
||||
* codec can substitute any YUV420 packed planar or semiplanar
|
||||
* format for it. */
|
||||
OMX_COLOR_FormatYUV420Flexible = 0x7F420888,
|
||||
|
||||
OMX_TI_COLOR_FormatYUV420PackedSemiPlanar = 0x7F000100,
|
||||
OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00,
|
||||
OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka = 0x7FA30C03,
|
||||
OMX_SEC_COLOR_FormatNV12Tiled = 0x7FC00002,
|
||||
OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar32m = 0x7FA30C04,
|
||||
OMX_COLOR_FormatMax = 0x7FFFFFFF
|
||||
} OMX_COLOR_FORMATTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Defines the matrix for conversion from RGB to YUV or vice versa.
|
||||
* iColorMatrix should be initialized with the fixed point values
|
||||
* used in converting between formats.
|
||||
*/
|
||||
typedef struct OMX_CONFIG_COLORCONVERSIONTYPE {
|
||||
OMX_U32 nSize; /**< Size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version info */
|
||||
OMX_U32 nPortIndex; /**< Port that this struct applies to */
|
||||
OMX_S32 xColorMatrix[3][3]; /**< Stored in signed Q16 format */
|
||||
OMX_S32 xColorOffset[4]; /**< Stored in signed Q16 format */
|
||||
}OMX_CONFIG_COLORCONVERSIONTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Structure defining percent to scale each frame dimension. For example:
|
||||
* To make the width 50% larger, use fWidth = 1.5 and to make the width
|
||||
* 1/2 the original size, use fWidth = 0.5
|
||||
*/
|
||||
typedef struct OMX_CONFIG_SCALEFACTORTYPE {
|
||||
OMX_U32 nSize; /**< Size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version info */
|
||||
OMX_U32 nPortIndex; /**< Port that this struct applies to */
|
||||
OMX_S32 xWidth; /**< Fixed point value stored as Q16 */
|
||||
OMX_S32 xHeight; /**< Fixed point value stored as Q16 */
|
||||
}OMX_CONFIG_SCALEFACTORTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Enumeration of possible image filter types
|
||||
*/
|
||||
typedef enum OMX_IMAGEFILTERTYPE {
|
||||
OMX_ImageFilterNone,
|
||||
OMX_ImageFilterNoise,
|
||||
OMX_ImageFilterEmboss,
|
||||
OMX_ImageFilterNegative,
|
||||
OMX_ImageFilterSketch,
|
||||
OMX_ImageFilterOilPaint,
|
||||
OMX_ImageFilterHatch,
|
||||
OMX_ImageFilterGpen,
|
||||
OMX_ImageFilterAntialias,
|
||||
OMX_ImageFilterDeRing,
|
||||
OMX_ImageFilterSolarize,
|
||||
OMX_ImageFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_ImageFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_ImageFilterMax = 0x7FFFFFFF
|
||||
} OMX_IMAGEFILTERTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Image filter configuration
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* eImageFilter : Image filter type enumeration
|
||||
*/
|
||||
typedef struct OMX_CONFIG_IMAGEFILTERTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_IMAGEFILTERTYPE eImageFilter;
|
||||
} OMX_CONFIG_IMAGEFILTERTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Customized U and V for color enhancement
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* bColorEnhancement : Enable/disable color enhancement
|
||||
* nCustomizedU : Practical values: 16-240, range: 0-255, value set for
|
||||
* U component
|
||||
* nCustomizedV : Practical values: 16-240, range: 0-255, value set for
|
||||
* V component
|
||||
*/
|
||||
typedef struct OMX_CONFIG_COLORENHANCEMENTTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_BOOL bColorEnhancement;
|
||||
OMX_U8 nCustomizedU;
|
||||
OMX_U8 nCustomizedV;
|
||||
} OMX_CONFIG_COLORENHANCEMENTTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Define color key and color key mask
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nARGBColor : 32bit Alpha, Red, Green, Blue Color
|
||||
* nARGBMask : 32bit Mask for Alpha, Red, Green, Blue channels
|
||||
*/
|
||||
typedef struct OMX_CONFIG_COLORKEYTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_U32 nARGBColor;
|
||||
OMX_U32 nARGBMask;
|
||||
} OMX_CONFIG_COLORKEYTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* List of color blend types for pre/post processing
|
||||
*
|
||||
* ENUMS:
|
||||
* None : No color blending present
|
||||
* AlphaConstant : Function is (alpha_constant * src) +
|
||||
* (1 - alpha_constant) * dst)
|
||||
* AlphaPerPixel : Function is (alpha * src) + (1 - alpha) * dst)
|
||||
* Alternate : Function is alternating pixels from src and dst
|
||||
* And : Function is (src & dst)
|
||||
* Or : Function is (src | dst)
|
||||
* Invert : Function is ~src
|
||||
*/
|
||||
typedef enum OMX_COLORBLENDTYPE {
|
||||
OMX_ColorBlendNone,
|
||||
OMX_ColorBlendAlphaConstant,
|
||||
OMX_ColorBlendAlphaPerPixel,
|
||||
OMX_ColorBlendAlternate,
|
||||
OMX_ColorBlendAnd,
|
||||
OMX_ColorBlendOr,
|
||||
OMX_ColorBlendInvert,
|
||||
OMX_ColorBlendKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_ColorBlendVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_ColorBlendMax = 0x7FFFFFFF
|
||||
} OMX_COLORBLENDTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Color blend configuration
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nRGBAlphaConstant : Constant global alpha values when global alpha is used
|
||||
* eColorBlend : Color blend type enumeration
|
||||
*/
|
||||
typedef struct OMX_CONFIG_COLORBLENDTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_U32 nRGBAlphaConstant;
|
||||
OMX_COLORBLENDTYPE eColorBlend;
|
||||
} OMX_CONFIG_COLORBLENDTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Hold frame dimension
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nWidth : Frame width in pixels
|
||||
* nHeight : Frame height in pixels
|
||||
*/
|
||||
typedef struct OMX_FRAMESIZETYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_U32 nWidth;
|
||||
OMX_U32 nHeight;
|
||||
} OMX_FRAMESIZETYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Rotation configuration
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nRotation : +/- integer rotation value
|
||||
*/
|
||||
typedef struct OMX_CONFIG_ROTATIONTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_S32 nRotation;
|
||||
} OMX_CONFIG_ROTATIONTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Possible mirroring directions for pre/post processing
|
||||
*
|
||||
* ENUMS:
|
||||
* None : No mirroring
|
||||
* Vertical : Vertical mirroring, flip on X axis
|
||||
* Horizontal : Horizontal mirroring, flip on Y axis
|
||||
* Both : Both vertical and horizontal mirroring
|
||||
*/
|
||||
typedef enum OMX_MIRRORTYPE {
|
||||
OMX_MirrorNone = 0,
|
||||
OMX_MirrorVertical,
|
||||
OMX_MirrorHorizontal,
|
||||
OMX_MirrorBoth,
|
||||
OMX_MirrorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_MirrorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_MirrorMax = 0x7FFFFFFF
|
||||
} OMX_MIRRORTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Mirroring configuration
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* eMirror : Mirror type enumeration
|
||||
*/
|
||||
typedef struct OMX_CONFIG_MIRRORTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_MIRRORTYPE eMirror;
|
||||
} OMX_CONFIG_MIRRORTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Position information only
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nX : X coordinate for the point
|
||||
* nY : Y coordinate for the point
|
||||
*/
|
||||
typedef struct OMX_CONFIG_POINTTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_S32 nX;
|
||||
OMX_S32 nY;
|
||||
} OMX_CONFIG_POINTTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Frame size plus position
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nLeft : X Coordinate of the top left corner of the rectangle
|
||||
* nTop : Y Coordinate of the top left corner of the rectangle
|
||||
* nWidth : Width of the rectangle
|
||||
* nHeight : Height of the rectangle
|
||||
*/
|
||||
typedef struct OMX_CONFIG_RECTTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_S32 nLeft;
|
||||
OMX_S32 nTop;
|
||||
OMX_U32 nWidth;
|
||||
OMX_U32 nHeight;
|
||||
} OMX_CONFIG_RECTTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Deblocking state; it is required to be set up before starting the codec
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* bDeblocking : Enable/disable deblocking mode
|
||||
*/
|
||||
typedef struct OMX_PARAM_DEBLOCKINGTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_BOOL bDeblocking;
|
||||
} OMX_PARAM_DEBLOCKINGTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Stabilization state
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* bStab : Enable/disable frame stabilization state
|
||||
*/
|
||||
typedef struct OMX_CONFIG_FRAMESTABTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_BOOL bStab;
|
||||
} OMX_CONFIG_FRAMESTABTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* White Balance control type
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* SunLight : Referenced in JSR-234
|
||||
* Flash : Optimal for device's integrated flash
|
||||
*/
|
||||
typedef enum OMX_WHITEBALCONTROLTYPE {
|
||||
OMX_WhiteBalControlOff = 0,
|
||||
OMX_WhiteBalControlAuto,
|
||||
OMX_WhiteBalControlSunLight,
|
||||
OMX_WhiteBalControlCloudy,
|
||||
OMX_WhiteBalControlShade,
|
||||
OMX_WhiteBalControlTungsten,
|
||||
OMX_WhiteBalControlFluorescent,
|
||||
OMX_WhiteBalControlIncandescent,
|
||||
OMX_WhiteBalControlFlash,
|
||||
OMX_WhiteBalControlHorizon,
|
||||
OMX_WhiteBalControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_WhiteBalControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_WhiteBalControlMax = 0x7FFFFFFF
|
||||
} OMX_WHITEBALCONTROLTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* White Balance control configuration
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* eWhiteBalControl : White balance enumeration
|
||||
*/
|
||||
typedef struct OMX_CONFIG_WHITEBALCONTROLTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_WHITEBALCONTROLTYPE eWhiteBalControl;
|
||||
} OMX_CONFIG_WHITEBALCONTROLTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Exposure control type
|
||||
*/
|
||||
typedef enum OMX_EXPOSURECONTROLTYPE {
|
||||
OMX_ExposureControlOff = 0,
|
||||
OMX_ExposureControlAuto,
|
||||
OMX_ExposureControlNight,
|
||||
OMX_ExposureControlBackLight,
|
||||
OMX_ExposureControlSpotLight,
|
||||
OMX_ExposureControlSports,
|
||||
OMX_ExposureControlSnow,
|
||||
OMX_ExposureControlBeach,
|
||||
OMX_ExposureControlLargeAperture,
|
||||
OMX_ExposureControlSmallApperture,
|
||||
OMX_ExposureControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_ExposureControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_ExposureControlMax = 0x7FFFFFFF
|
||||
} OMX_EXPOSURECONTROLTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* White Balance control configuration
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* eExposureControl : Exposure control enumeration
|
||||
*/
|
||||
typedef struct OMX_CONFIG_EXPOSURECONTROLTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_EXPOSURECONTROLTYPE eExposureControl;
|
||||
} OMX_CONFIG_EXPOSURECONTROLTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Defines sensor supported mode.
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nFrameRate : Single shot mode is indicated by a 0
|
||||
* bOneShot : Enable for single shot, disable for streaming
|
||||
* sFrameSize : Framesize
|
||||
*/
|
||||
typedef struct OMX_PARAM_SENSORMODETYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_U32 nFrameRate;
|
||||
OMX_BOOL bOneShot;
|
||||
OMX_FRAMESIZETYPE sFrameSize;
|
||||
} OMX_PARAM_SENSORMODETYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Defines contrast level
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nContrast : Values allowed for contrast -100 to 100, zero means no change
|
||||
*/
|
||||
typedef struct OMX_CONFIG_CONTRASTTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_S32 nContrast;
|
||||
} OMX_CONFIG_CONTRASTTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Defines brightness level
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nBrightness : 0-100%
|
||||
*/
|
||||
typedef struct OMX_CONFIG_BRIGHTNESSTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_U32 nBrightness;
|
||||
} OMX_CONFIG_BRIGHTNESSTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Defines backlight level configuration for a video sink, e.g. LCD panel
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nBacklight : Values allowed for backlight 0-100%
|
||||
* nTimeout : Number of milliseconds before backlight automatically turns
|
||||
* off. A value of 0x0 disables backight timeout
|
||||
*/
|
||||
typedef struct OMX_CONFIG_BACKLIGHTTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_U32 nBacklight;
|
||||
OMX_U32 nTimeout;
|
||||
} OMX_CONFIG_BACKLIGHTTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Defines setting for Gamma
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nGamma : Values allowed for gamma -100 to 100, zero means no change
|
||||
*/
|
||||
typedef struct OMX_CONFIG_GAMMATYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_S32 nGamma;
|
||||
} OMX_CONFIG_GAMMATYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Define for setting saturation
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nSaturation : Values allowed for saturation -100 to 100, zero means
|
||||
* no change
|
||||
*/
|
||||
typedef struct OMX_CONFIG_SATURATIONTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_S32 nSaturation;
|
||||
} OMX_CONFIG_SATURATIONTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Define for setting Lightness
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nLightness : Values allowed for lightness -100 to 100, zero means no
|
||||
* change
|
||||
*/
|
||||
typedef struct OMX_CONFIG_LIGHTNESSTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_S32 nLightness;
|
||||
} OMX_CONFIG_LIGHTNESSTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Plane blend configuration
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Index of input port associated with the plane.
|
||||
* nDepth : Depth of the plane in relation to the screen. Higher
|
||||
* numbered depths are "behind" lower number depths.
|
||||
* This number defaults to the Port Index number.
|
||||
* nAlpha : Transparency blending component for the entire plane.
|
||||
* See blending modes for more detail.
|
||||
*/
|
||||
typedef struct OMX_CONFIG_PLANEBLENDTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_U32 nDepth;
|
||||
OMX_U32 nAlpha;
|
||||
} OMX_CONFIG_PLANEBLENDTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Define interlace type
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* bEnable : Enable control variable for this functionality
|
||||
* (see below)
|
||||
* nInterleavePortIndex : Index of input or output port associated with
|
||||
* the interleaved plane.
|
||||
* pPlanarPortIndexes[4] : Index of input or output planar ports.
|
||||
*/
|
||||
typedef struct OMX_PARAM_INTERLEAVETYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_BOOL bEnable;
|
||||
OMX_U32 nInterleavePortIndex;
|
||||
} OMX_PARAM_INTERLEAVETYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Defines the picture effect used for an input picture
|
||||
*/
|
||||
typedef enum OMX_TRANSITIONEFFECTTYPE {
|
||||
OMX_EffectNone,
|
||||
OMX_EffectFadeFromBlack,
|
||||
OMX_EffectFadeToBlack,
|
||||
OMX_EffectUnspecifiedThroughConstantColor,
|
||||
OMX_EffectDissolve,
|
||||
OMX_EffectWipe,
|
||||
OMX_EffectUnspecifiedMixOfTwoScenes,
|
||||
OMX_EffectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_EffectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_EffectMax = 0x7FFFFFFF
|
||||
} OMX_TRANSITIONEFFECTTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Structure used to configure current transition effect
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* eEffect : Effect to enable
|
||||
*/
|
||||
typedef struct OMX_CONFIG_TRANSITIONEFFECTTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_TRANSITIONEFFECTTYPE eEffect;
|
||||
} OMX_CONFIG_TRANSITIONEFFECTTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Defines possible data unit types for encoded video data. The data unit
|
||||
* types are used both for encoded video input for playback as well as
|
||||
* encoded video output from recording.
|
||||
*/
|
||||
typedef enum OMX_DATAUNITTYPE {
|
||||
OMX_DataUnitCodedPicture,
|
||||
OMX_DataUnitVideoSegment,
|
||||
OMX_DataUnitSeveralSegments,
|
||||
OMX_DataUnitArbitraryStreamSection,
|
||||
OMX_DataUnitKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_DataUnitVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_DataUnitMax = 0x7FFFFFFF
|
||||
} OMX_DATAUNITTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Defines possible encapsulation types for coded video data unit. The
|
||||
* encapsulation information is used both for encoded video input for
|
||||
* playback as well as encoded video output from recording.
|
||||
*/
|
||||
typedef enum OMX_DATAUNITENCAPSULATIONTYPE {
|
||||
OMX_DataEncapsulationElementaryStream,
|
||||
OMX_DataEncapsulationGenericPayload,
|
||||
OMX_DataEncapsulationRtpPayload,
|
||||
OMX_DataEncapsulationKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_DataEncapsulationVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_DataEncapsulationMax = 0x7FFFFFFF
|
||||
} OMX_DATAUNITENCAPSULATIONTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Structure used to configure the type of being decoded/encoded
|
||||
*/
|
||||
typedef struct OMX_PARAM_DATAUNITTYPE {
|
||||
OMX_U32 nSize; /**< Size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_U32 nPortIndex; /**< Port that this structure applies to */
|
||||
OMX_DATAUNITTYPE eUnitType;
|
||||
OMX_DATAUNITENCAPSULATIONTYPE eEncapsulationType;
|
||||
} OMX_PARAM_DATAUNITTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Defines dither types
|
||||
*/
|
||||
typedef enum OMX_DITHERTYPE {
|
||||
OMX_DitherNone,
|
||||
OMX_DitherOrdered,
|
||||
OMX_DitherErrorDiffusion,
|
||||
OMX_DitherOther,
|
||||
OMX_DitherKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_DitherVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_DitherMax = 0x7FFFFFFF
|
||||
} OMX_DITHERTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Structure used to configure current type of dithering
|
||||
*/
|
||||
typedef struct OMX_CONFIG_DITHERTYPE {
|
||||
OMX_U32 nSize; /**< Size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_U32 nPortIndex; /**< Port that this structure applies to */
|
||||
OMX_DITHERTYPE eDither; /**< Type of dithering to use */
|
||||
} OMX_CONFIG_DITHERTYPE;
|
||||
|
||||
typedef struct OMX_CONFIG_CAPTUREMODETYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex; /**< Port that this structure applies to */
|
||||
OMX_BOOL bContinuous; /**< If true then ignore frame rate and emit capture
|
||||
* data as fast as possible (otherwise obey port's frame rate). */
|
||||
OMX_BOOL bFrameLimited; /**< If true then terminate capture after the port emits the
|
||||
* specified number of frames (otherwise the port does not
|
||||
* terminate the capture until instructed to do so by the client).
|
||||
* Even if set, the client may manually terminate the capture prior
|
||||
* to reaching the limit. */
|
||||
OMX_U32 nFrameLimit; /**< Limit on number of frames emitted during a capture (only
|
||||
* valid if bFrameLimited is set). */
|
||||
} OMX_CONFIG_CAPTUREMODETYPE;
|
||||
|
||||
typedef enum OMX_METERINGTYPE {
|
||||
|
||||
OMX_MeteringModeAverage, /**< Center-weighted average metering. */
|
||||
OMX_MeteringModeSpot, /**< Spot (partial) metering. */
|
||||
OMX_MeteringModeMatrix, /**< Matrix or evaluative metering. */
|
||||
|
||||
OMX_MeteringKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_MeteringVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_EVModeMax = 0x7fffffff
|
||||
} OMX_METERINGTYPE;
|
||||
|
||||
typedef struct OMX_CONFIG_EXPOSUREVALUETYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_METERINGTYPE eMetering;
|
||||
OMX_S32 xEVCompensation; /**< Fixed point value stored as Q16 */
|
||||
OMX_U32 nApertureFNumber; /**< e.g. nApertureFNumber = 2 implies "f/2" - Q16 format */
|
||||
OMX_BOOL bAutoAperture; /**< Whether aperture number is defined automatically */
|
||||
OMX_U32 nShutterSpeedMsec; /**< Shutterspeed in milliseconds */
|
||||
OMX_BOOL bAutoShutterSpeed; /**< Whether shutter speed is defined automatically */
|
||||
OMX_U32 nSensitivity; /**< e.g. nSensitivity = 100 implies "ISO 100" */
|
||||
OMX_BOOL bAutoSensitivity; /**< Whether sensitivity is defined automatically */
|
||||
} OMX_CONFIG_EXPOSUREVALUETYPE;
|
||||
|
||||
/**
|
||||
* Focus region configuration
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* bCenter : Use center region as focus region of interest
|
||||
* bLeft : Use left region as focus region of interest
|
||||
* bRight : Use right region as focus region of interest
|
||||
* bTop : Use top region as focus region of interest
|
||||
* bBottom : Use bottom region as focus region of interest
|
||||
* bTopLeft : Use top left region as focus region of interest
|
||||
* bTopRight : Use top right region as focus region of interest
|
||||
* bBottomLeft : Use bottom left region as focus region of interest
|
||||
* bBottomRight : Use bottom right region as focus region of interest
|
||||
*/
|
||||
typedef struct OMX_CONFIG_FOCUSREGIONTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_BOOL bCenter;
|
||||
OMX_BOOL bLeft;
|
||||
OMX_BOOL bRight;
|
||||
OMX_BOOL bTop;
|
||||
OMX_BOOL bBottom;
|
||||
OMX_BOOL bTopLeft;
|
||||
OMX_BOOL bTopRight;
|
||||
OMX_BOOL bBottomLeft;
|
||||
OMX_BOOL bBottomRight;
|
||||
} OMX_CONFIG_FOCUSREGIONTYPE;
|
||||
|
||||
/**
|
||||
* Focus Status type
|
||||
*/
|
||||
typedef enum OMX_FOCUSSTATUSTYPE {
|
||||
OMX_FocusStatusOff = 0,
|
||||
OMX_FocusStatusRequest,
|
||||
OMX_FocusStatusReached,
|
||||
OMX_FocusStatusUnableToReach,
|
||||
OMX_FocusStatusLost,
|
||||
OMX_FocusStatusKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_FocusStatusVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_FocusStatusMax = 0x7FFFFFFF
|
||||
} OMX_FOCUSSTATUSTYPE;
|
||||
|
||||
/**
|
||||
* Focus status configuration
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* eFocusStatus : Specifies the focus status
|
||||
* bCenterStatus : Use center region as focus region of interest
|
||||
* bLeftStatus : Use left region as focus region of interest
|
||||
* bRightStatus : Use right region as focus region of interest
|
||||
* bTopStatus : Use top region as focus region of interest
|
||||
* bBottomStatus : Use bottom region as focus region of interest
|
||||
* bTopLeftStatus : Use top left region as focus region of interest
|
||||
* bTopRightStatus : Use top right region as focus region of interest
|
||||
* bBottomLeftStatus : Use bottom left region as focus region of interest
|
||||
* bBottomRightStatus : Use bottom right region as focus region of interest
|
||||
*/
|
||||
typedef struct OMX_PARAM_FOCUSSTATUSTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_FOCUSSTATUSTYPE eFocusStatus;
|
||||
OMX_BOOL bCenterStatus;
|
||||
OMX_BOOL bLeftStatus;
|
||||
OMX_BOOL bRightStatus;
|
||||
OMX_BOOL bTopStatus;
|
||||
OMX_BOOL bBottomStatus;
|
||||
OMX_BOOL bTopLeftStatus;
|
||||
OMX_BOOL bTopRightStatus;
|
||||
OMX_BOOL bBottomLeftStatus;
|
||||
OMX_BOOL bBottomRightStatus;
|
||||
} OMX_PARAM_FOCUSSTATUSTYPE;
|
||||
|
||||
/** @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
||||
/* File EOF */
|
||||
@@ -0,0 +1,345 @@
|
||||
/* ------------------------------------------------------------------
|
||||
* Copyright (C) 1998-2009 PacketVideo
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
||||
* express or implied.
|
||||
* See the License for the specific language governing permissions
|
||||
* and limitations under the License.
|
||||
* -------------------------------------------------------------------
|
||||
*/
|
||||
/**
|
||||
* Copyright (c) 2008 The Khronos Group Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject
|
||||
* to the following conditions:
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file OMX_Image.h - OpenMax IL version 1.1.2
|
||||
* The structures needed by Image components to exchange parameters and
|
||||
* configuration data with the components.
|
||||
*/
|
||||
#ifndef OMX_Image_h
|
||||
#define OMX_Image_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
|
||||
/**
|
||||
* Each OMX header must include all required header files to allow the
|
||||
* header to compile without errors. The includes below are required
|
||||
* for this header file to compile successfully
|
||||
*/
|
||||
|
||||
#include <OMX_IVCommon.h>
|
||||
|
||||
/** @defgroup imaging OpenMAX IL Imaging Domain
|
||||
* @ingroup iv
|
||||
* Structures for OpenMAX IL Imaging domain
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Enumeration used to define the possible image compression coding.
|
||||
*/
|
||||
typedef enum OMX_IMAGE_CODINGTYPE {
|
||||
OMX_IMAGE_CodingUnused, /**< Value when format is N/A */
|
||||
OMX_IMAGE_CodingAutoDetect, /**< Auto detection of image format */
|
||||
OMX_IMAGE_CodingJPEG, /**< JPEG/JFIF image format */
|
||||
OMX_IMAGE_CodingJPEG2K, /**< JPEG 2000 image format */
|
||||
OMX_IMAGE_CodingEXIF, /**< EXIF image format */
|
||||
OMX_IMAGE_CodingTIFF, /**< TIFF image format */
|
||||
OMX_IMAGE_CodingGIF, /**< Graphics image format */
|
||||
OMX_IMAGE_CodingPNG, /**< PNG image format */
|
||||
OMX_IMAGE_CodingLZW, /**< LZW image format */
|
||||
OMX_IMAGE_CodingBMP, /**< Windows Bitmap format */
|
||||
OMX_IMAGE_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_IMAGE_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_IMAGE_CodingMax = 0x7FFFFFFF
|
||||
} OMX_IMAGE_CODINGTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Data structure used to define an image path. The number of image paths
|
||||
* for input and output will vary by type of the image component.
|
||||
*
|
||||
* Input (aka Source) : Zero Inputs, one Output,
|
||||
* Splitter : One Input, 2 or more Outputs,
|
||||
* Processing Element : One Input, one output,
|
||||
* Mixer : 2 or more inputs, one output,
|
||||
* Output (aka Sink) : One Input, zero outputs.
|
||||
*
|
||||
* The PortDefinition structure is used to define all of the parameters
|
||||
* necessary for the compliant component to setup an input or an output
|
||||
* image path. If additional vendor specific data is required, it should
|
||||
* be transmitted to the component using the CustomCommand function.
|
||||
* Compliant components will prepopulate this structure with optimal
|
||||
* values during the OMX_GetParameter() command.
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* cMIMEType : MIME type of data for the port
|
||||
* pNativeRender : Platform specific reference for a display if a
|
||||
* sync, otherwise this field is 0
|
||||
* nFrameWidth : Width of frame to be used on port if
|
||||
* uncompressed format is used. Use 0 for
|
||||
* unknown, don't care or variable
|
||||
* nFrameHeight : Height of frame to be used on port if
|
||||
* uncompressed format is used. Use 0 for
|
||||
* unknown, don't care or variable
|
||||
* nStride : Number of bytes per span of an image (i.e.
|
||||
* indicates the number of bytes to get from
|
||||
* span N to span N+1, where negative stride
|
||||
* indicates the image is bottom up
|
||||
* nSliceHeight : Height used when encoding in slices
|
||||
* bFlagErrorConcealment : Turns on error concealment if it is supported by
|
||||
* the OMX component
|
||||
* eCompressionFormat : Compression format used in this instance of
|
||||
* the component. When OMX_IMAGE_CodingUnused is
|
||||
* specified, eColorFormat is valid
|
||||
* eColorFormat : Decompressed format used by this component
|
||||
* pNativeWindow : Platform specific reference for a window object if a
|
||||
* display sink , otherwise this field is 0x0.
|
||||
*/
|
||||
typedef struct OMX_IMAGE_PORTDEFINITIONTYPE {
|
||||
OMX_STRING cMIMEType;
|
||||
OMX_NATIVE_DEVICETYPE pNativeRender;
|
||||
OMX_U32 nFrameWidth;
|
||||
OMX_U32 nFrameHeight;
|
||||
OMX_S32 nStride;
|
||||
OMX_U32 nSliceHeight;
|
||||
OMX_BOOL bFlagErrorConcealment;
|
||||
OMX_IMAGE_CODINGTYPE eCompressionFormat;
|
||||
OMX_COLOR_FORMATTYPE eColorFormat;
|
||||
OMX_NATIVE_WINDOWTYPE pNativeWindow;
|
||||
} OMX_IMAGE_PORTDEFINITIONTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Port format parameter. This structure is used to enumerate the various
|
||||
* data input/output format supported by the port.
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Indicates which port to set
|
||||
* nIndex : Indicates the enumeration index for the format from
|
||||
* 0x0 to N-1
|
||||
* eCompressionFormat : Compression format used in this instance of the
|
||||
* component. When OMX_IMAGE_CodingUnused is specified,
|
||||
* eColorFormat is valid
|
||||
* eColorFormat : Decompressed format used by this component
|
||||
*/
|
||||
typedef struct OMX_IMAGE_PARAM_PORTFORMATTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_U32 nIndex;
|
||||
OMX_IMAGE_CODINGTYPE eCompressionFormat;
|
||||
OMX_COLOR_FORMATTYPE eColorFormat;
|
||||
} OMX_IMAGE_PARAM_PORTFORMATTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Flash control type
|
||||
*
|
||||
* ENUMS
|
||||
* Torch : Flash forced constantly on
|
||||
*/
|
||||
typedef enum OMX_IMAGE_FLASHCONTROLTYPE {
|
||||
OMX_IMAGE_FlashControlOn = 0,
|
||||
OMX_IMAGE_FlashControlOff,
|
||||
OMX_IMAGE_FlashControlAuto,
|
||||
OMX_IMAGE_FlashControlRedEyeReduction,
|
||||
OMX_IMAGE_FlashControlFillin,
|
||||
OMX_IMAGE_FlashControlTorch,
|
||||
OMX_IMAGE_FlashControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_IMAGE_FlashControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_IMAGE_FlashControlMax = 0x7FFFFFFF
|
||||
} OMX_IMAGE_FLASHCONTROLTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Flash control configuration
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* eFlashControl : Flash control type
|
||||
*/
|
||||
typedef struct OMX_IMAGE_PARAM_FLASHCONTROLTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_IMAGE_FLASHCONTROLTYPE eFlashControl;
|
||||
} OMX_IMAGE_PARAM_FLASHCONTROLTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Focus control type
|
||||
*/
|
||||
typedef enum OMX_IMAGE_FOCUSCONTROLTYPE {
|
||||
OMX_IMAGE_FocusControlOn = 0,
|
||||
OMX_IMAGE_FocusControlOff,
|
||||
OMX_IMAGE_FocusControlAuto,
|
||||
OMX_IMAGE_FocusControlAutoLock,
|
||||
OMX_IMAGE_FocusControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_IMAGE_FocusControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_IMAGE_FocusControlMax = 0x7FFFFFFF
|
||||
} OMX_IMAGE_FOCUSCONTROLTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Focus control configuration
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* eFocusControl : Focus control
|
||||
* nFocusSteps : Focus can take on values from 0 mm to infinity.
|
||||
* Interest is only in number of steps over this range.
|
||||
* nFocusStepIndex : Current focus step index
|
||||
*/
|
||||
typedef struct OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_IMAGE_FOCUSCONTROLTYPE eFocusControl;
|
||||
OMX_U32 nFocusSteps;
|
||||
OMX_U32 nFocusStepIndex;
|
||||
} OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Q Factor for JPEG compression, which controls the tradeoff between image
|
||||
* quality and size. Q Factor provides a more simple means of controlling
|
||||
* JPEG compression quality, without directly programming Quantization
|
||||
* tables for chroma and luma
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nQFactor : JPEG Q factor value in the range of 1-100. A factor of 1
|
||||
* produces the smallest, worst quality images, and a factor
|
||||
* of 100 produces the largest, best quality images. A
|
||||
* typical default is 75 for small good quality images
|
||||
*/
|
||||
typedef struct OMX_IMAGE_PARAM_QFACTORTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_U32 nQFactor;
|
||||
} OMX_IMAGE_PARAM_QFACTORTYPE;
|
||||
|
||||
/**
|
||||
* Quantization table type
|
||||
*/
|
||||
|
||||
typedef enum OMX_IMAGE_QUANTIZATIONTABLETYPE {
|
||||
OMX_IMAGE_QuantizationTableLuma = 0,
|
||||
OMX_IMAGE_QuantizationTableChroma,
|
||||
OMX_IMAGE_QuantizationTableChromaCb,
|
||||
OMX_IMAGE_QuantizationTableChromaCr,
|
||||
OMX_IMAGE_QuantizationTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_IMAGE_QuantizationTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_IMAGE_QuantizationTableMax = 0x7FFFFFFF
|
||||
} OMX_IMAGE_QUANTIZATIONTABLETYPE;
|
||||
|
||||
/**
|
||||
* JPEG quantization tables are used to determine DCT compression for
|
||||
* YUV data, as an alternative to specifying Q factor, providing exact
|
||||
* control of compression
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* eQuantizationTable : Quantization table type
|
||||
* nQuantizationMatrix[64] : JPEG quantization table of coefficients stored
|
||||
* in increasing columns then by rows of data (i.e.
|
||||
* row 1, ... row 8). Quantization values are in
|
||||
* the range 0-255 and stored in linear order
|
||||
* (i.e. the component will zig-zag the
|
||||
* quantization table data if required internally)
|
||||
*/
|
||||
typedef struct OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_IMAGE_QUANTIZATIONTABLETYPE eQuantizationTable;
|
||||
OMX_U8 nQuantizationMatrix[64];
|
||||
} OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE;
|
||||
|
||||
|
||||
/**
|
||||
* Huffman table type, the same Huffman table is applied for chroma and
|
||||
* luma component
|
||||
*/
|
||||
typedef enum OMX_IMAGE_HUFFMANTABLETYPE {
|
||||
OMX_IMAGE_HuffmanTableAC = 0,
|
||||
OMX_IMAGE_HuffmanTableDC,
|
||||
OMX_IMAGE_HuffmanTableACLuma,
|
||||
OMX_IMAGE_HuffmanTableACChroma,
|
||||
OMX_IMAGE_HuffmanTableDCLuma,
|
||||
OMX_IMAGE_HuffmanTableDCChroma,
|
||||
OMX_IMAGE_HuffmanTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_IMAGE_HuffmanTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_IMAGE_HuffmanTableMax = 0x7FFFFFFF
|
||||
} OMX_IMAGE_HUFFMANTABLETYPE;
|
||||
|
||||
/**
|
||||
* JPEG Huffman table
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* eHuffmanTable : Huffman table type
|
||||
* nNumberOfHuffmanCodeOfLength[16] : 0-16, number of Huffman codes of each
|
||||
* possible length
|
||||
* nHuffmanTable[256] : 0-255, the size used for AC and DC
|
||||
* HuffmanTable are 16 and 162
|
||||
*/
|
||||
typedef struct OMX_IMAGE_PARAM_HUFFMANTTABLETYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_IMAGE_HUFFMANTABLETYPE eHuffmanTable;
|
||||
OMX_U8 nNumberOfHuffmanCodeOfLength[16];
|
||||
OMX_U8 nHuffmanTable[256];
|
||||
}OMX_IMAGE_PARAM_HUFFMANTTABLETYPE;
|
||||
|
||||
/** @} */
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
||||
/* File EOF */
|
||||
@@ -0,0 +1,274 @@
|
||||
/* ------------------------------------------------------------------
|
||||
* Copyright (C) 1998-2009 PacketVideo
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
||||
* express or implied.
|
||||
* See the License for the specific language governing permissions
|
||||
* and limitations under the License.
|
||||
* -------------------------------------------------------------------
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2008 The Khronos Group Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject
|
||||
* to the following conditions:
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
/** @file OMX_Index.h - OpenMax IL version 1.1.2
|
||||
* The OMX_Index header file contains the definitions for both applications
|
||||
* and components .
|
||||
*/
|
||||
|
||||
|
||||
#ifndef OMX_Index_h
|
||||
#define OMX_Index_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* Each OMX header must include all required header files to allow the
|
||||
* header to compile without errors. The includes below are required
|
||||
* for this header file to compile successfully
|
||||
*/
|
||||
#include <OMX_Types.h>
|
||||
|
||||
/** The OMX_INDEXTYPE enumeration is used to select a structure when either
|
||||
* getting or setting parameters and/or configuration data. Each entry in
|
||||
* this enumeration maps to an OMX specified structure. When the
|
||||
* OMX_GetParameter, OMX_SetParameter, OMX_GetConfig or OMX_SetConfig methods
|
||||
* are used, the second parameter will always be an entry from this enumeration
|
||||
* and the third entry will be the structure shown in the comments for the entry.
|
||||
* For example, if the application is initializing a cropping function, the
|
||||
* OMX_SetConfig command would have OMX_IndexConfigCommonInputCrop as the second parameter
|
||||
* and would send a pointer to an initialized OMX_RECTTYPE structure as the
|
||||
* third parameter.
|
||||
*
|
||||
* The enumeration entries named with the OMX_Config prefix are sent using
|
||||
* the OMX_SetConfig command and the enumeration entries named with the
|
||||
* OMX_PARAM_ prefix are sent using the OMX_SetParameter command.
|
||||
*/
|
||||
typedef enum OMX_INDEXTYPE {
|
||||
|
||||
OMX_IndexComponentStartUnused = 0x01000000,
|
||||
OMX_IndexParamPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */
|
||||
OMX_IndexParamAudioInit, /**< reference: OMX_PORT_PARAM_TYPE */
|
||||
OMX_IndexParamImageInit, /**< reference: OMX_PORT_PARAM_TYPE */
|
||||
OMX_IndexParamVideoInit, /**< reference: OMX_PORT_PARAM_TYPE */
|
||||
OMX_IndexParamOtherInit, /**< reference: OMX_PORT_PARAM_TYPE */
|
||||
OMX_IndexParamNumAvailableStreams, /**< reference: OMX_PARAM_U32TYPE */
|
||||
OMX_IndexParamActiveStream, /**< reference: OMX_PARAM_U32TYPE */
|
||||
OMX_IndexParamSuspensionPolicy, /**< reference: OMX_PARAM_SUSPENSIONPOLICYTYPE */
|
||||
OMX_IndexParamComponentSuspended, /**< reference: OMX_PARAM_SUSPENSIONTYPE */
|
||||
OMX_IndexConfigCapturing, /**< reference: OMX_CONFIG_BOOLEANTYPE */
|
||||
OMX_IndexConfigCaptureMode, /**< reference: OMX_CONFIG_CAPTUREMODETYPE */
|
||||
OMX_IndexAutoPauseAfterCapture, /**< reference: OMX_CONFIG_BOOLEANTYPE */
|
||||
OMX_IndexParamContentURI, /**< reference: OMX_PARAM_CONTENTURITYPE */
|
||||
OMX_IndexParamCustomContentPipe, /**< reference: OMX_PARAM_CONTENTPIPETYPE */
|
||||
OMX_IndexParamDisableResourceConcealment, /**< reference: OMX_RESOURCECONCEALMENTTYPE */
|
||||
OMX_IndexConfigMetadataItemCount, /**< reference: OMX_CONFIG_METADATAITEMCOUNTTYPE */
|
||||
OMX_IndexConfigContainerNodeCount, /**< reference: OMX_CONFIG_CONTAINERNODECOUNTTYPE */
|
||||
OMX_IndexConfigMetadataItem, /**< reference: OMX_CONFIG_METADATAITEMTYPE */
|
||||
OMX_IndexConfigCounterNodeID, /**< reference: OMX_CONFIG_CONTAINERNODEIDTYPE */
|
||||
OMX_IndexParamMetadataFilterType, /**< reference: OMX_PARAM_METADATAFILTERTYPE */
|
||||
OMX_IndexParamMetadataKeyFilter, /**< reference: OMX_PARAM_METADATAFILTERTYPE */
|
||||
OMX_IndexConfigPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */
|
||||
OMX_IndexParamStandardComponentRole, /**< reference: OMX_PARAM_COMPONENTROLETYPE */
|
||||
|
||||
OMX_IndexPortStartUnused = 0x02000000,
|
||||
OMX_IndexParamPortDefinition, /**< reference: OMX_PARAM_PORTDEFINITIONTYPE */
|
||||
OMX_IndexParamCompBufferSupplier, /**< reference: OMX_PARAM_BUFFERSUPPLIERTYPE */
|
||||
OMX_IndexReservedStartUnused = 0x03000000,
|
||||
|
||||
/* Audio parameters and configurations */
|
||||
OMX_IndexAudioStartUnused = 0x04000000,
|
||||
OMX_IndexParamAudioPortFormat, /**< reference: OMX_AUDIO_PARAM_PORTFORMATTYPE */
|
||||
OMX_IndexParamAudioPcm, /**< reference: OMX_AUDIO_PARAM_PCMMODETYPE */
|
||||
OMX_IndexParamAudioAac, /**< reference: OMX_AUDIO_PARAM_AACPROFILETYPE */
|
||||
OMX_IndexParamAudioRa, /**< reference: OMX_AUDIO_PARAM_RATYPE */
|
||||
OMX_IndexParamAudioMp3, /**< reference: OMX_AUDIO_PARAM_MP3TYPE */
|
||||
OMX_IndexParamAudioAdpcm, /**< reference: OMX_AUDIO_PARAM_ADPCMTYPE */
|
||||
OMX_IndexParamAudioG723, /**< reference: OMX_AUDIO_PARAM_G723TYPE */
|
||||
OMX_IndexParamAudioG729, /**< reference: OMX_AUDIO_PARAM_G729TYPE */
|
||||
OMX_IndexParamAudioAmr, /**< reference: OMX_AUDIO_PARAM_AMRTYPE */
|
||||
OMX_IndexParamAudioWma, /**< reference: OMX_AUDIO_PARAM_WMATYPE */
|
||||
OMX_IndexParamAudioSbc, /**< reference: OMX_AUDIO_PARAM_SBCTYPE */
|
||||
OMX_IndexParamAudioMidi, /**< reference: OMX_AUDIO_PARAM_MIDITYPE */
|
||||
OMX_IndexParamAudioGsm_FR, /**< reference: OMX_AUDIO_PARAM_GSMFRTYPE */
|
||||
OMX_IndexParamAudioMidiLoadUserSound, /**< reference: OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE */
|
||||
OMX_IndexParamAudioG726, /**< reference: OMX_AUDIO_PARAM_G726TYPE */
|
||||
OMX_IndexParamAudioGsm_EFR, /**< reference: OMX_AUDIO_PARAM_GSMEFRTYPE */
|
||||
OMX_IndexParamAudioGsm_HR, /**< reference: OMX_AUDIO_PARAM_GSMHRTYPE */
|
||||
OMX_IndexParamAudioPdc_FR, /**< reference: OMX_AUDIO_PARAM_PDCFRTYPE */
|
||||
OMX_IndexParamAudioPdc_EFR, /**< reference: OMX_AUDIO_PARAM_PDCEFRTYPE */
|
||||
OMX_IndexParamAudioPdc_HR, /**< reference: OMX_AUDIO_PARAM_PDCHRTYPE */
|
||||
OMX_IndexParamAudioTdma_FR, /**< reference: OMX_AUDIO_PARAM_TDMAFRTYPE */
|
||||
OMX_IndexParamAudioTdma_EFR, /**< reference: OMX_AUDIO_PARAM_TDMAEFRTYPE */
|
||||
OMX_IndexParamAudioQcelp8, /**< reference: OMX_AUDIO_PARAM_QCELP8TYPE */
|
||||
OMX_IndexParamAudioQcelp13, /**< reference: OMX_AUDIO_PARAM_QCELP13TYPE */
|
||||
OMX_IndexParamAudioEvrc, /**< reference: OMX_AUDIO_PARAM_EVRCTYPE */
|
||||
OMX_IndexParamAudioSmv, /**< reference: OMX_AUDIO_PARAM_SMVTYPE */
|
||||
OMX_IndexParamAudioVorbis, /**< reference: OMX_AUDIO_PARAM_VORBISTYPE */
|
||||
OMX_IndexParamAudioFlac, /**< reference: OMX_AUDIO_PARAM_FLACTYPE */
|
||||
|
||||
OMX_IndexConfigAudioMidiImmediateEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE */
|
||||
OMX_IndexConfigAudioMidiControl, /**< reference: OMX_AUDIO_CONFIG_MIDICONTROLTYPE */
|
||||
OMX_IndexConfigAudioMidiSoundBankProgram, /**< reference: OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE */
|
||||
OMX_IndexConfigAudioMidiStatus, /**< reference: OMX_AUDIO_CONFIG_MIDISTATUSTYPE */
|
||||
OMX_IndexConfigAudioMidiMetaEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE */
|
||||
OMX_IndexConfigAudioMidiMetaEventData, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE */
|
||||
OMX_IndexConfigAudioVolume, /**< reference: OMX_AUDIO_CONFIG_VOLUMETYPE */
|
||||
OMX_IndexConfigAudioBalance, /**< reference: OMX_AUDIO_CONFIG_BALANCETYPE */
|
||||
OMX_IndexConfigAudioChannelMute, /**< reference: OMX_AUDIO_CONFIG_CHANNELMUTETYPE */
|
||||
OMX_IndexConfigAudioMute, /**< reference: OMX_AUDIO_CONFIG_MUTETYPE */
|
||||
OMX_IndexConfigAudioLoudness, /**< reference: OMX_AUDIO_CONFIG_LOUDNESSTYPE */
|
||||
OMX_IndexConfigAudioEchoCancelation, /**< reference: OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE */
|
||||
OMX_IndexConfigAudioNoiseReduction, /**< reference: OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE */
|
||||
OMX_IndexConfigAudioBass, /**< reference: OMX_AUDIO_CONFIG_BASSTYPE */
|
||||
OMX_IndexConfigAudioTreble, /**< reference: OMX_AUDIO_CONFIG_TREBLETYPE */
|
||||
OMX_IndexConfigAudioStereoWidening, /**< reference: OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE */
|
||||
OMX_IndexConfigAudioChorus, /**< reference: OMX_AUDIO_CONFIG_CHORUSTYPE */
|
||||
OMX_IndexConfigAudioEqualizer, /**< reference: OMX_AUDIO_CONFIG_EQUALIZERTYPE */
|
||||
OMX_IndexConfigAudioReverberation, /**< reference: OMX_AUDIO_CONFIG_REVERBERATIONTYPE */
|
||||
OMX_IndexConfigAudioChannelVolume, /**< reference: OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE */
|
||||
|
||||
/* Image specific parameters and configurations */
|
||||
OMX_IndexImageStartUnused = 0x05000000,
|
||||
OMX_IndexParamImagePortFormat, /**< reference: OMX_IMAGE_PARAM_PORTFORMATTYPE */
|
||||
OMX_IndexParamFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */
|
||||
OMX_IndexConfigFocusControl, /**< reference: OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE */
|
||||
OMX_IndexParamQFactor, /**< reference: OMX_IMAGE_PARAM_QFACTORTYPE */
|
||||
OMX_IndexParamQuantizationTable, /**< reference: OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE */
|
||||
OMX_IndexParamHuffmanTable, /**< reference: OMX_IMAGE_PARAM_HUFFMANTTABLETYPE */
|
||||
OMX_IndexConfigFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */
|
||||
|
||||
/* Video specific parameters and configurations */
|
||||
OMX_IndexVideoStartUnused = 0x06000000,
|
||||
OMX_IndexParamVideoPortFormat, /**< reference: OMX_VIDEO_PARAM_PORTFORMATTYPE */
|
||||
OMX_IndexParamVideoQuantization, /**< reference: OMX_VIDEO_PARAM_QUANTIZATIONTYPE */
|
||||
OMX_IndexParamVideoFastUpdate, /**< reference: OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE */
|
||||
OMX_IndexParamVideoBitrate, /**< reference: OMX_VIDEO_PARAM_BITRATETYPE */
|
||||
OMX_IndexParamVideoMotionVector, /**< reference: OMX_VIDEO_PARAM_MOTIONVECTORTYPE */
|
||||
OMX_IndexParamVideoIntraRefresh, /**< reference: OMX_VIDEO_PARAM_INTRAREFRESHTYPE */
|
||||
OMX_IndexParamVideoErrorCorrection, /**< reference: OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE */
|
||||
OMX_IndexParamVideoVBSMC, /**< reference: OMX_VIDEO_PARAM_VBSMCTYPE */
|
||||
OMX_IndexParamVideoMpeg2, /**< reference: OMX_VIDEO_PARAM_MPEG2TYPE */
|
||||
OMX_IndexParamVideoMpeg4, /**< reference: OMX_VIDEO_PARAM_MPEG4TYPE */
|
||||
OMX_IndexParamVideoWmv, /**< reference: OMX_VIDEO_PARAM_WMVTYPE */
|
||||
OMX_IndexParamVideoRv, /**< reference: OMX_VIDEO_PARAM_RVTYPE */
|
||||
OMX_IndexParamVideoAvc, /**< reference: OMX_VIDEO_PARAM_AVCTYPE */
|
||||
OMX_IndexParamVideoH263, /**< reference: OMX_VIDEO_PARAM_H263TYPE */
|
||||
OMX_IndexParamVideoProfileLevelQuerySupported, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */
|
||||
OMX_IndexParamVideoProfileLevelCurrent, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */
|
||||
OMX_IndexConfigVideoBitrate, /**< reference: OMX_VIDEO_CONFIG_BITRATETYPE */
|
||||
OMX_IndexConfigVideoFramerate, /**< reference: OMX_CONFIG_FRAMERATETYPE */
|
||||
OMX_IndexConfigVideoIntraVOPRefresh, /**< reference: OMX_CONFIG_INTRAREFRESHVOPTYPE */
|
||||
OMX_IndexConfigVideoIntraMBRefresh, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */
|
||||
OMX_IndexConfigVideoMBErrorReporting, /**< reference: OMX_CONFIG_MBERRORREPORTINGTYPE */
|
||||
OMX_IndexParamVideoMacroblocksPerFrame, /**< reference: OMX_PARAM_MACROBLOCKSTYPE */
|
||||
OMX_IndexConfigVideoMacroBlockErrorMap, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */
|
||||
OMX_IndexParamVideoSliceFMO, /**< reference: OMX_VIDEO_PARAM_AVCSLICEFMO */
|
||||
OMX_IndexConfigVideoAVCIntraPeriod, /**< reference: OMX_VIDEO_CONFIG_AVCINTRAPERIOD */
|
||||
OMX_IndexConfigVideoNalSize, /**< reference: OMX_VIDEO_CONFIG_NALSIZE */
|
||||
|
||||
/* Image & Video common Configurations */
|
||||
OMX_IndexCommonStartUnused = 0x07000000,
|
||||
OMX_IndexParamCommonDeblocking, /**< reference: OMX_PARAM_DEBLOCKINGTYPE */
|
||||
OMX_IndexParamCommonSensorMode, /**< reference: OMX_PARAM_SENSORMODETYPE */
|
||||
OMX_IndexParamCommonInterleave, /**< reference: OMX_PARAM_INTERLEAVETYPE */
|
||||
OMX_IndexConfigCommonColorFormatConversion, /**< reference: OMX_CONFIG_COLORCONVERSIONTYPE */
|
||||
OMX_IndexConfigCommonScale, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */
|
||||
OMX_IndexConfigCommonImageFilter, /**< reference: OMX_CONFIG_IMAGEFILTERTYPE */
|
||||
OMX_IndexConfigCommonColorEnhancement, /**< reference: OMX_CONFIG_COLORENHANCEMENTTYPE */
|
||||
OMX_IndexConfigCommonColorKey, /**< reference: OMX_CONFIG_COLORKEYTYPE */
|
||||
OMX_IndexConfigCommonColorBlend, /**< reference: OMX_CONFIG_COLORBLENDTYPE */
|
||||
OMX_IndexConfigCommonFrameStabilisation,/**< reference: OMX_CONFIG_FRAMESTABTYPE */
|
||||
OMX_IndexConfigCommonRotate, /**< reference: OMX_CONFIG_ROTATIONTYPE */
|
||||
OMX_IndexConfigCommonMirror, /**< reference: OMX_CONFIG_MIRRORTYPE */
|
||||
OMX_IndexConfigCommonOutputPosition, /**< reference: OMX_CONFIG_POINTTYPE */
|
||||
OMX_IndexConfigCommonInputCrop, /**< reference: OMX_CONFIG_RECTTYPE */
|
||||
OMX_IndexConfigCommonOutputCrop, /**< reference: OMX_CONFIG_RECTTYPE */
|
||||
OMX_IndexConfigCommonDigitalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */
|
||||
OMX_IndexConfigCommonOpticalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE*/
|
||||
OMX_IndexConfigCommonWhiteBalance, /**< reference: OMX_CONFIG_WHITEBALCONTROLTYPE */
|
||||
OMX_IndexConfigCommonExposure, /**< reference: OMX_CONFIG_EXPOSURECONTROLTYPE */
|
||||
OMX_IndexConfigCommonContrast, /**< reference: OMX_CONFIG_CONTRASTTYPE */
|
||||
OMX_IndexConfigCommonBrightness, /**< reference: OMX_CONFIG_BRIGHTNESSTYPE */
|
||||
OMX_IndexConfigCommonBacklight, /**< reference: OMX_CONFIG_BACKLIGHTTYPE */
|
||||
OMX_IndexConfigCommonGamma, /**< reference: OMX_CONFIG_GAMMATYPE */
|
||||
OMX_IndexConfigCommonSaturation, /**< reference: OMX_CONFIG_SATURATIONTYPE */
|
||||
OMX_IndexConfigCommonLightness, /**< reference: OMX_CONFIG_LIGHTNESSTYPE */
|
||||
OMX_IndexConfigCommonExclusionRect, /**< reference: OMX_CONFIG_RECTTYPE */
|
||||
OMX_IndexConfigCommonDithering, /**< reference: OMX_CONFIG_DITHERTYPE */
|
||||
OMX_IndexConfigCommonPlaneBlend, /**< reference: OMX_CONFIG_PLANEBLENDTYPE */
|
||||
OMX_IndexConfigCommonExposureValue, /**< reference: OMX_CONFIG_EXPOSUREVALUETYPE */
|
||||
OMX_IndexConfigCommonOutputSize, /**< reference: OMX_FRAMESIZETYPE */
|
||||
OMX_IndexParamCommonExtraQuantData, /**< reference: OMX_OTHER_EXTRADATATYPE */
|
||||
OMX_IndexConfigCommonFocusRegion, /**< reference: OMX_CONFIG_FOCUSREGIONTYPE */
|
||||
OMX_IndexConfigCommonFocusStatus, /**< reference: OMX_PARAM_FOCUSSTATUSTYPE */
|
||||
OMX_IndexConfigCommonTransitionEffect, /**< reference: OMX_CONFIG_TRANSITIONEFFECTTYPE */
|
||||
|
||||
/* Reserved Configuration range */
|
||||
OMX_IndexOtherStartUnused = 0x08000000,
|
||||
OMX_IndexParamOtherPortFormat, /**< reference: OMX_OTHER_PARAM_PORTFORMATTYPE */
|
||||
OMX_IndexConfigOtherPower, /**< reference: OMX_OTHER_CONFIG_POWERTYPE */
|
||||
OMX_IndexConfigOtherStats, /**< reference: OMX_OTHER_CONFIG_STATSTYPE */
|
||||
|
||||
|
||||
/* Reserved Time range */
|
||||
OMX_IndexTimeStartUnused = 0x09000000,
|
||||
OMX_IndexConfigTimeScale, /**< reference: OMX_TIME_CONFIG_SCALETYPE */
|
||||
OMX_IndexConfigTimeClockState, /**< reference: OMX_TIME_CONFIG_CLOCKSTATETYPE */
|
||||
OMX_IndexConfigTimeActiveRefClock, /**< reference: OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE */
|
||||
OMX_IndexConfigTimeCurrentMediaTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */
|
||||
OMX_IndexConfigTimeCurrentWallTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */
|
||||
OMX_IndexConfigTimeCurrentAudioReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */
|
||||
OMX_IndexConfigTimeCurrentVideoReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */
|
||||
OMX_IndexConfigTimeMediaTimeRequest, /**< reference: OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE (write only) */
|
||||
OMX_IndexConfigTimeClientStartTime, /**<reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */
|
||||
OMX_IndexConfigTimePosition, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE */
|
||||
OMX_IndexConfigTimeSeekMode, /**< reference: OMX_TIME_CONFIG_SEEKMODETYPE */
|
||||
|
||||
|
||||
OMX_IndexKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
/* Vendor specific area */
|
||||
OMX_IndexVendorStartUnused = 0x7F000000,
|
||||
/* Vendor specific structures should be in the range of 0x7F000000
|
||||
to 0x7FFFFFFE. This range is not broken out by vendor, so
|
||||
private indexes are not guaranteed unique and therefore should
|
||||
only be sent to the appropriate component. */
|
||||
|
||||
OMX_IndexMax = 0x7FFFFFFF
|
||||
|
||||
} OMX_INDEXTYPE;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
||||
/* File EOF */
|
||||
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
* Copyright (c) 2010 The Khronos Group Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject
|
||||
* to the following conditions:
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
/** @file OMX_IndexExt.h - OpenMax IL version 1.1.2
|
||||
* The OMX_IndexExt header file contains extensions to the definitions
|
||||
* for both applications and components .
|
||||
*/
|
||||
|
||||
#ifndef OMX_IndexExt_h
|
||||
#define OMX_IndexExt_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* Each OMX header shall include all required header files to allow the
|
||||
* header to compile without errors. The includes below are required
|
||||
* for this header file to compile successfully
|
||||
*/
|
||||
#include <OMX_Index.h>
|
||||
|
||||
|
||||
/** Khronos standard extension indices.
|
||||
|
||||
This enum lists the current Khronos extension indices to OpenMAX IL.
|
||||
*/
|
||||
typedef enum OMX_INDEXEXTTYPE {
|
||||
|
||||
/* Component parameters and configurations */
|
||||
OMX_IndexExtComponentStartUnused = OMX_IndexKhronosExtensions + 0x00100000,
|
||||
OMX_IndexConfigCallbackRequest, /**< reference: OMX_CONFIG_CALLBACKREQUESTTYPE */
|
||||
OMX_IndexConfigCommitMode, /**< reference: OMX_CONFIG_COMMITMODETYPE */
|
||||
OMX_IndexConfigCommit, /**< reference: OMX_CONFIG_COMMITTYPE */
|
||||
|
||||
/* Port parameters and configurations */
|
||||
OMX_IndexExtPortStartUnused = OMX_IndexKhronosExtensions + 0x00200000,
|
||||
|
||||
/* Audio parameters and configurations */
|
||||
OMX_IndexExtAudioStartUnused = OMX_IndexKhronosExtensions + 0x00400000,
|
||||
OMX_IndexParamAudioAndroidAc3, /**< reference: OMX_AUDIO_PARAM_ANDROID_AC3TYPE */
|
||||
OMX_IndexParamAudioAndroidOpus, /**< reference: OMX_AUDIO_PARAM_ANDROID_OPUSTYPE */
|
||||
OMX_IndexParamAudioAndroidAacPresentation, /**< reference: OMX_AUDIO_PARAM_ANDROID_AACPRESENTATIONTYPE */
|
||||
OMX_IndexParamAudioAndroidEac3, /**< reference: OMX_AUDIO_PARAM_ANDROID_EAC3TYPE */
|
||||
|
||||
/* Image parameters and configurations */
|
||||
OMX_IndexExtImageStartUnused = OMX_IndexKhronosExtensions + 0x00500000,
|
||||
|
||||
/* Video parameters and configurations */
|
||||
OMX_IndexExtVideoStartUnused = OMX_IndexKhronosExtensions + 0x00600000,
|
||||
OMX_IndexParamNalStreamFormatSupported, /**< reference: OMX_NALSTREAMFORMATTYPE */
|
||||
OMX_IndexParamNalStreamFormat, /**< reference: OMX_NALSTREAMFORMATTYPE */
|
||||
OMX_IndexParamNalStreamFormatSelect, /**< reference: OMX_NALSTREAMFORMATTYPE */
|
||||
OMX_IndexParamVideoVp8, /**< reference: OMX_VIDEO_PARAM_VP8TYPE */
|
||||
OMX_IndexConfigVideoVp8ReferenceFrame, /**< reference: OMX_VIDEO_VP8REFERENCEFRAMETYPE */
|
||||
OMX_IndexConfigVideoVp8ReferenceFrameType, /**< reference: OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE */
|
||||
OMX_IndexParamVideoAndroidVp8Encoder, /**< reference: OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE */
|
||||
OMX_IndexParamVideoHevc, /**< reference: OMX_VIDEO_PARAM_HEVCTYPE */
|
||||
OMX_IndexParamSliceSegments, /**< reference: OMX_VIDEO_SLICESEGMENTSTYPE */
|
||||
|
||||
/* Image & Video common configurations */
|
||||
OMX_IndexExtCommonStartUnused = OMX_IndexKhronosExtensions + 0x00700000,
|
||||
|
||||
/* Other configurations */
|
||||
OMX_IndexExtOtherStartUnused = OMX_IndexKhronosExtensions + 0x00800000,
|
||||
OMX_IndexConfigAutoFramerateConversion, /**< reference: OMX_CONFIG_BOOLEANTYPE */
|
||||
OMX_IndexConfigPriority, /**< reference: OMX_PARAM_U32TYPE */
|
||||
OMX_IndexConfigOperatingRate, /**< reference: OMX_PARAM_U32TYPE in Q16 format for video and in Hz for audio */
|
||||
OMX_IndexParamConsumerUsageBits, /**< reference: OMX_PARAM_U32TYPE */
|
||||
|
||||
/* Time configurations */
|
||||
OMX_IndexExtTimeStartUnused = OMX_IndexKhronosExtensions + 0x00900000,
|
||||
|
||||
OMX_IndexExtMax = 0x7FFFFFFF
|
||||
} OMX_INDEXEXTTYPE;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* OMX_IndexExt_h */
|
||||
/* File EOF */
|
||||
@@ -0,0 +1,354 @@
|
||||
/* ------------------------------------------------------------------
|
||||
* Copyright (C) 1998-2009 PacketVideo
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
||||
* express or implied.
|
||||
* See the License for the specific language governing permissions
|
||||
* and limitations under the License.
|
||||
* -------------------------------------------------------------------
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2008 The Khronos Group Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject
|
||||
* to the following conditions:
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
/** @file OMX_Other.h - OpenMax IL version 1.1.2
|
||||
* The structures needed by Other components to exchange
|
||||
* parameters and configuration data with the components.
|
||||
*/
|
||||
|
||||
#ifndef OMX_Other_h
|
||||
#define OMX_Other_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
|
||||
/* Each OMX header must include all required header files to allow the
|
||||
* header to compile without errors. The includes below are required
|
||||
* for this header file to compile successfully
|
||||
*/
|
||||
|
||||
#include <OMX_Core.h>
|
||||
|
||||
|
||||
/**
|
||||
* Enumeration of possible data types which match to multiple domains or no
|
||||
* domain at all. For types which are vendor specific, a value above
|
||||
* OMX_OTHER_VENDORTSTART should be used.
|
||||
*/
|
||||
typedef enum OMX_OTHER_FORMATTYPE {
|
||||
OMX_OTHER_FormatTime = 0, /**< Transmission of various timestamps, elapsed time,
|
||||
time deltas, etc */
|
||||
OMX_OTHER_FormatPower, /**< Perhaps used for enabling/disabling power
|
||||
management, setting clocks? */
|
||||
OMX_OTHER_FormatStats, /**< Could be things such as frame rate, frames
|
||||
dropped, etc */
|
||||
OMX_OTHER_FormatBinary, /**< Arbitrary binary data */
|
||||
OMX_OTHER_FormatVendorReserved = 1000, /**< Starting value for vendor specific
|
||||
formats */
|
||||
|
||||
OMX_OTHER_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_OTHER_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_OTHER_FormatMax = 0x7FFFFFFF
|
||||
} OMX_OTHER_FORMATTYPE;
|
||||
|
||||
/**
|
||||
* Enumeration of seek modes.
|
||||
*/
|
||||
typedef enum OMX_TIME_SEEKMODETYPE {
|
||||
OMX_TIME_SeekModeFast = 0, /**< Prefer seeking to an approximation
|
||||
* of the requested seek position over
|
||||
* the actual seek position if it
|
||||
* results in a faster seek. */
|
||||
OMX_TIME_SeekModeAccurate, /**< Prefer seeking to the actual seek
|
||||
* position over an approximation
|
||||
* of the requested seek position even
|
||||
* if it results in a slower seek. */
|
||||
OMX_TIME_SeekModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_TIME_SeekModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_TIME_SeekModeMax = 0x7FFFFFFF
|
||||
} OMX_TIME_SEEKMODETYPE;
|
||||
|
||||
/* Structure representing the seekmode of the component */
|
||||
typedef struct OMX_TIME_CONFIG_SEEKMODETYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_TIME_SEEKMODETYPE eType; /**< The seek mode */
|
||||
} OMX_TIME_CONFIG_SEEKMODETYPE;
|
||||
|
||||
/** Structure representing a time stamp used with the following configs
|
||||
* on the Clock Component (CC):
|
||||
*
|
||||
* OMX_IndexConfigTimeCurrentWallTime: query of the CC's current wall
|
||||
* time
|
||||
* OMX_IndexConfigTimeCurrentMediaTime: query of the CC's current media
|
||||
* time
|
||||
* OMX_IndexConfigTimeCurrentAudioReference and
|
||||
* OMX_IndexConfigTimeCurrentVideoReference: audio/video reference
|
||||
* clock sending SC its reference time
|
||||
* OMX_IndexConfigTimeClientStartTime: a Clock Component client sends
|
||||
* this structure to the Clock Component via a SetConfig on its
|
||||
* client port when it receives a buffer with
|
||||
* OMX_BUFFERFLAG_STARTTIME set. It must use the timestamp
|
||||
* specified by that buffer for nStartTimestamp.
|
||||
*
|
||||
* It's also used with the following config on components in general:
|
||||
*
|
||||
* OMX_IndexConfigTimePosition: IL client querying component position
|
||||
* (GetConfig) or commanding a component to seek to the given location
|
||||
* (SetConfig)
|
||||
*/
|
||||
typedef struct OMX_TIME_CONFIG_TIMESTAMPTYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version
|
||||
* information */
|
||||
OMX_U32 nPortIndex; /**< port that this structure applies to */
|
||||
OMX_TICKS nTimestamp; /**< timestamp .*/
|
||||
} OMX_TIME_CONFIG_TIMESTAMPTYPE;
|
||||
|
||||
/** Enumeration of possible reference clocks to the media time. */
|
||||
typedef enum OMX_TIME_UPDATETYPE {
|
||||
OMX_TIME_UpdateRequestFulfillment, /**< Update is the fulfillment of a media time request. */
|
||||
OMX_TIME_UpdateScaleChanged, /**< Update was generated because the scale chagned. */
|
||||
OMX_TIME_UpdateClockStateChanged, /**< Update was generated because the clock state changed. */
|
||||
OMX_TIME_UpdateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_TIME_UpdateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_TIME_UpdateMax = 0x7FFFFFFF
|
||||
} OMX_TIME_UPDATETYPE;
|
||||
|
||||
/** Enumeration of possible reference clocks to the media time. */
|
||||
typedef enum OMX_TIME_REFCLOCKTYPE {
|
||||
OMX_TIME_RefClockNone, /**< Use no references. */
|
||||
OMX_TIME_RefClockAudio, /**< Use references sent through OMX_IndexConfigTimeCurrentAudioReference */
|
||||
OMX_TIME_RefClockVideo, /**< Use references sent through OMX_IndexConfigTimeCurrentVideoReference */
|
||||
OMX_TIME_RefClockKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_TIME_RefClockVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_TIME_RefClockMax = 0x7FFFFFFF
|
||||
} OMX_TIME_REFCLOCKTYPE;
|
||||
|
||||
/** Enumeration of clock states. */
|
||||
typedef enum OMX_TIME_CLOCKSTATE {
|
||||
OMX_TIME_ClockStateRunning, /**< Clock running. */
|
||||
OMX_TIME_ClockStateWaitingForStartTime, /**< Clock waiting until the
|
||||
* prescribed clients emit their
|
||||
* start time. */
|
||||
OMX_TIME_ClockStateStopped, /**< Clock stopped. */
|
||||
OMX_TIME_ClockStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_TIME_ClockStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
OMX_TIME_ClockStateMax = 0x7FFFFFFF
|
||||
} OMX_TIME_CLOCKSTATE;
|
||||
|
||||
/** Structure representing a media time request to the clock component.
|
||||
*
|
||||
* A client component sends this structure to the Clock Component via a SetConfig
|
||||
* on its client port to specify a media timestamp the Clock Component
|
||||
* should emit. The Clock Component should fulfill the request by sending a
|
||||
* OMX_TIME_MEDIATIMETYPE when its media clock matches the requested
|
||||
* timestamp.
|
||||
*
|
||||
* The client may require a media time request be fulfilled slightly
|
||||
* earlier than the media time specified. In this case the client specifies
|
||||
* an offset which is equal to the difference between wall time corresponding
|
||||
* to the requested media time and the wall time when it will be
|
||||
* fulfilled.
|
||||
*
|
||||
* A client component may uses these requests and the OMX_TIME_MEDIATIMETYPE to
|
||||
* time events according to timestamps. If a client must perform an operation O at
|
||||
* a time T (e.g. deliver a video frame at its corresponding timestamp), it makes a
|
||||
* media time request at T (perhaps specifying an offset to ensure the request fulfillment
|
||||
* is a little early). When the clock component passes the resulting OMX_TIME_MEDIATIMETYPE
|
||||
* structure back to the client component, the client may perform operation O (perhaps having
|
||||
* to wait a slight amount more time itself as specified by the return values).
|
||||
*/
|
||||
|
||||
typedef struct OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_U32 nPortIndex; /**< port that this structure applies to */
|
||||
OMX_PTR pClientPrivate; /**< Client private data to disabiguate this media time
|
||||
* from others (e.g. the number of the frame to deliver).
|
||||
* Duplicated in the media time structure that fulfills
|
||||
* this request. A value of zero is reserved for time scale
|
||||
* updates. */
|
||||
OMX_TICKS nMediaTimestamp; /**< Media timestamp requested.*/
|
||||
OMX_TICKS nOffset; /**< Amount of wall clock time by which this
|
||||
* request should be fulfilled early */
|
||||
} OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE;
|
||||
|
||||
/**< Structure sent from the clock component client either when fulfilling
|
||||
* a media time request or when the time scale has changed.
|
||||
*
|
||||
* In the former case the Clock Component fills this structure and times its emission
|
||||
* to a client component (via the client port) according to the corresponding media
|
||||
* time request sent by the client. The Clock Component should time the emission to occur
|
||||
* when the requested timestamp matches the Clock Component's media time but also the
|
||||
* prescribed offset early.
|
||||
*
|
||||
* Upon scale changes the clock component clears the nClientPrivate data, sends the current
|
||||
* media time and sets the nScale to the new scale via the client port. It emits a
|
||||
* OMX_TIME_MEDIATIMETYPE to all clients independent of any requests. This allows clients to
|
||||
* alter processing to accomodate scaling. For instance a video component might skip inter-frames
|
||||
* in the case of extreme fastforward. Likewise an audio component might add or remove samples
|
||||
* from an audio frame to scale audio data.
|
||||
*
|
||||
* It is expected that some clock components may not be able to fulfill requests
|
||||
* at exactly the prescribed time. This is acceptable so long as the request is
|
||||
* fulfilled at least as early as described and not later. This structure provides
|
||||
* fields the client may use to wait for the remaining time.
|
||||
*
|
||||
* The client may use either the nOffset or nWallTimeAtMedia fields to determine the
|
||||
* wall time until the nMediaTimestamp actually occurs. In the latter case the
|
||||
* client can get a more accurate value for offset by getting the current wall
|
||||
* from the cloc component and subtracting it from nWallTimeAtMedia.
|
||||
*/
|
||||
|
||||
typedef struct OMX_TIME_MEDIATIMETYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_U32 nClientPrivate; /**< Client private data to disabiguate this media time
|
||||
* from others. Copied from the media time request.
|
||||
* A value of zero is reserved for time scale updates. */
|
||||
OMX_TIME_UPDATETYPE eUpdateType; /**< Reason for the update */
|
||||
OMX_TICKS nMediaTimestamp; /**< Media time requested. If no media time was
|
||||
* requested then this is the current media time. */
|
||||
OMX_TICKS nOffset; /**< Amount of wall clock time by which this
|
||||
* request was actually fulfilled early */
|
||||
|
||||
OMX_TICKS nWallTimeAtMediaTime; /**< Wall time corresponding to nMediaTimeStamp.
|
||||
* A client may compare this value to current
|
||||
* media time obtained from the Clock Component to determine
|
||||
* the wall time until the media timestamp is really
|
||||
* current. */
|
||||
OMX_S32 xScale; /**< Current media time scale in Q16 format. */
|
||||
OMX_TIME_CLOCKSTATE eState; /* Seeking Change. Added 7/12.*/
|
||||
/**< State of the media time. */
|
||||
} OMX_TIME_MEDIATIMETYPE;
|
||||
|
||||
/** Structure representing the current media time scale factor. Applicable only to clock
|
||||
* component, other components see scale changes via OMX_TIME_MEDIATIMETYPE buffers sent via
|
||||
* the clock component client ports. Upon recieving this config the clock component changes
|
||||
* the rate by which the media time increases or decreases effectively implementing trick modes.
|
||||
*/
|
||||
typedef struct OMX_TIME_CONFIG_SCALETYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_S32 xScale; /**< This is a value in Q16 format which is used for
|
||||
* scaling the media time */
|
||||
} OMX_TIME_CONFIG_SCALETYPE;
|
||||
|
||||
/** Bits used to identify a clock port. Used in OMX_TIME_CONFIG_CLOCKSTATETYPE's nWaitMask field */
|
||||
#define OMX_CLOCKPORT0 0x00000001
|
||||
#define OMX_CLOCKPORT1 0x00000002
|
||||
#define OMX_CLOCKPORT2 0x00000004
|
||||
#define OMX_CLOCKPORT3 0x00000008
|
||||
#define OMX_CLOCKPORT4 0x00000010
|
||||
#define OMX_CLOCKPORT5 0x00000020
|
||||
#define OMX_CLOCKPORT6 0x00000040
|
||||
#define OMX_CLOCKPORT7 0x00000080
|
||||
|
||||
/** Structure representing the current mode of the media clock.
|
||||
* IL Client uses this config to change or query the mode of the
|
||||
* media clock of the clock component. Applicable only to clock
|
||||
* component.
|
||||
*
|
||||
* On a SetConfig if eState is OMX_TIME_ClockStateRunning media time
|
||||
* starts immediately at the prescribed start time. If
|
||||
* OMX_TIME_ClockStateWaitingForStartTime the Clock Component ignores
|
||||
* the given nStartTime and waits for all clients specified in the
|
||||
* nWaitMask to send starttimes (via
|
||||
* OMX_IndexConfigTimeClientStartTime). The Clock Component then starts
|
||||
* the media clock using the earliest start time supplied. */
|
||||
typedef struct OMX_TIME_CONFIG_CLOCKSTATETYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version
|
||||
* information */
|
||||
OMX_TIME_CLOCKSTATE eState; /**< State of the media time. */
|
||||
OMX_TICKS nStartTime; /**< Start time of the media time. */
|
||||
OMX_TICKS nOffset; /**< Time to offset the media time by
|
||||
* (e.g. preroll). Media time will be
|
||||
* reported to be nOffset ticks earlier.
|
||||
*/
|
||||
OMX_U32 nWaitMask; /**< Mask of OMX_CLOCKPORT values. */
|
||||
} OMX_TIME_CONFIG_CLOCKSTATETYPE;
|
||||
|
||||
/** Structure representing the reference clock currently being used to
|
||||
* compute media time. IL client uses this config to change or query the
|
||||
* clock component's active reference clock */
|
||||
typedef struct OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_TIME_REFCLOCKTYPE eClock; /**< Reference clock used to compute media time */
|
||||
} OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE;
|
||||
|
||||
/** Descriptor for setting specifics of power type.
|
||||
* Note: this structure is listed for backwards compatibility. */
|
||||
typedef struct OMX_OTHER_CONFIG_POWERTYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_BOOL bEnablePM; /**< Flag to enable Power Management */
|
||||
} OMX_OTHER_CONFIG_POWERTYPE;
|
||||
|
||||
|
||||
/** Descriptor for setting specifics of stats type.
|
||||
* Note: this structure is listed for backwards compatibility. */
|
||||
typedef struct OMX_OTHER_CONFIG_STATSTYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
/* what goes here */
|
||||
} OMX_OTHER_CONFIG_STATSTYPE;
|
||||
|
||||
|
||||
/**
|
||||
* The PortDefinition structure is used to define all of the parameters
|
||||
* necessary for the compliant component to setup an input or an output other
|
||||
* path.
|
||||
*/
|
||||
typedef struct OMX_OTHER_PORTDEFINITIONTYPE {
|
||||
OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */
|
||||
} OMX_OTHER_PORTDEFINITIONTYPE;
|
||||
|
||||
/** Port format parameter. This structure is used to enumerate
|
||||
* the various data input/output format supported by the port.
|
||||
*/
|
||||
typedef struct OMX_OTHER_PARAM_PORTFORMATTYPE {
|
||||
OMX_U32 nSize; /**< size of the structure in bytes */
|
||||
OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
|
||||
OMX_U32 nPortIndex; /**< Indicates which port to set */
|
||||
OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */
|
||||
OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */
|
||||
} OMX_OTHER_PARAM_PORTFORMATTYPE;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
||||
/* File EOF */
|
||||
@@ -0,0 +1,387 @@
|
||||
/* ------------------------------------------------------------------
|
||||
* Copyright (C) 1998-2009 PacketVideo
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
||||
* express or implied.
|
||||
* See the License for the specific language governing permissions
|
||||
* and limitations under the License.
|
||||
* -------------------------------------------------------------------
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2008 The Khronos Group Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject
|
||||
* to the following conditions:
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
/** OMX_Types.h - OpenMax IL version 1.1.2
|
||||
* The OMX_Types header file contains the primitive type definitions used by
|
||||
* the core, the application and the component. This file may need to be
|
||||
* modified to be used on systems that do not have "char" set to 8 bits,
|
||||
* "short" set to 16 bits and "long" set to 32 bits.
|
||||
*/
|
||||
|
||||
#ifndef OMX_Types_h
|
||||
#define OMX_Types_h
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/** The OMX_API and OMX_APIENTRY are platform specific definitions used
|
||||
* to declare OMX function prototypes. They are modified to meet the
|
||||
* requirements for a particular platform */
|
||||
#ifdef __SYMBIAN32__
|
||||
# ifdef __OMX_EXPORTS
|
||||
# define OMX_API __declspec(dllexport)
|
||||
# else
|
||||
# ifdef _WIN32
|
||||
# define OMX_API __declspec(dllexport)
|
||||
# else
|
||||
# define OMX_API __declspec(dllimport)
|
||||
# endif
|
||||
# endif
|
||||
#else
|
||||
# ifdef _WIN32
|
||||
# ifdef __OMX_EXPORTS
|
||||
# define OMX_API __declspec(dllexport)
|
||||
# else
|
||||
//# define OMX_API __declspec(dllimport)
|
||||
#define OMX_API
|
||||
# endif
|
||||
# else
|
||||
# ifdef __OMX_EXPORTS
|
||||
# define OMX_API
|
||||
# else
|
||||
# define OMX_API extern
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef OMX_APIENTRY
|
||||
#define OMX_APIENTRY
|
||||
#endif
|
||||
|
||||
/** OMX_IN is used to identify inputs to an OMX function. This designation
|
||||
will also be used in the case of a pointer that points to a parameter
|
||||
that is used as an output. */
|
||||
#ifndef OMX_IN
|
||||
#define OMX_IN
|
||||
#endif
|
||||
|
||||
/** OMX_OUT is used to identify outputs from an OMX function. This
|
||||
designation will also be used in the case of a pointer that points
|
||||
to a parameter that is used as an input. */
|
||||
#ifndef OMX_OUT
|
||||
#define OMX_OUT
|
||||
#endif
|
||||
|
||||
|
||||
/** OMX_INOUT is used to identify parameters that may be either inputs or
|
||||
outputs from an OMX function at the same time. This designation will
|
||||
also be used in the case of a pointer that points to a parameter that
|
||||
is used both as an input and an output. */
|
||||
#ifndef OMX_INOUT
|
||||
#define OMX_INOUT
|
||||
#endif
|
||||
|
||||
/** OMX_ALL is used to as a wildcard to select all entities of the same type
|
||||
* when specifying the index, or referring to a object by an index. (i.e.
|
||||
* use OMX_ALL to indicate all N channels). When used as a port index
|
||||
* for a config or parameter this OMX_ALL denotes that the config or
|
||||
* parameter applies to the entire component not just one port. */
|
||||
#define OMX_ALL 0xFFFFFFFF
|
||||
|
||||
/** In the following we define groups that help building doxygen documentation */
|
||||
|
||||
/** @defgroup core OpenMAX IL core
|
||||
* Functions and structure related to the OMX IL core
|
||||
*/
|
||||
|
||||
/** @defgroup comp OpenMAX IL component
|
||||
* Functions and structure related to the OMX IL component
|
||||
*/
|
||||
|
||||
/** @defgroup rpm Resource and Policy Management
|
||||
* Structures for resource and policy management of components
|
||||
*/
|
||||
|
||||
/** @defgroup buf Buffer Management
|
||||
* Buffer handling functions and structures
|
||||
*/
|
||||
|
||||
/** @defgroup tun Tunneling
|
||||
* @ingroup core comp
|
||||
* Structures and functions to manage tunnels among component ports
|
||||
*/
|
||||
|
||||
/** @defgroup cp Content Pipes
|
||||
* @ingroup core
|
||||
*/
|
||||
|
||||
/** @defgroup metadata Metadata handling
|
||||
*
|
||||
*/
|
||||
|
||||
/** OMX_U8 is an 8 bit unsigned quantity that is byte aligned */
|
||||
typedef unsigned char OMX_U8;
|
||||
|
||||
/** OMX_S8 is an 8 bit signed quantity that is byte aligned */
|
||||
typedef signed char OMX_S8;
|
||||
|
||||
/** OMX_U16 is a 16 bit unsigned quantity that is 16 bit word aligned */
|
||||
typedef unsigned short OMX_U16;
|
||||
|
||||
/** OMX_S16 is a 16 bit signed quantity that is 16 bit word aligned */
|
||||
typedef signed short OMX_S16;
|
||||
|
||||
/** OMX_U32 is a 32 bit unsigned quantity that is 32 bit word aligned */
|
||||
typedef uint32_t OMX_U32;
|
||||
|
||||
/** OMX_S32 is a 32 bit signed quantity that is 32 bit word aligned */
|
||||
typedef int32_t OMX_S32;
|
||||
|
||||
|
||||
/* Users with compilers that cannot accept the "long long" designation should
|
||||
define the OMX_SKIP64BIT macro. It should be noted that this may cause
|
||||
some components to fail to compile if the component was written to require
|
||||
64 bit integral types. However, these components would NOT compile anyway
|
||||
since the compiler does not support the way the component was written.
|
||||
*/
|
||||
#ifndef OMX_SKIP64BIT
|
||||
#ifdef __SYMBIAN32__
|
||||
/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
|
||||
typedef unsigned long long OMX_U64;
|
||||
|
||||
/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
|
||||
typedef signed long long OMX_S64;
|
||||
|
||||
#elif defined(WIN32)
|
||||
|
||||
/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
|
||||
typedef unsigned __int64 OMX_U64;
|
||||
|
||||
/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
|
||||
typedef signed __int64 OMX_S64;
|
||||
|
||||
#else /* WIN32 */
|
||||
|
||||
/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
|
||||
typedef unsigned long long OMX_U64;
|
||||
|
||||
/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
|
||||
typedef signed long long OMX_S64;
|
||||
|
||||
#endif /* WIN32 */
|
||||
#endif
|
||||
|
||||
|
||||
/** The OMX_BOOL type is intended to be used to represent a true or a false
|
||||
value when passing parameters to and from the OMX core and components. The
|
||||
OMX_BOOL is a 32 bit quantity and is aligned on a 32 bit word boundary.
|
||||
*/
|
||||
typedef enum OMX_BOOL {
|
||||
OMX_FALSE = 0,
|
||||
OMX_TRUE = !OMX_FALSE,
|
||||
OMX_BOOL_MAX = 0x7FFFFFFF
|
||||
} OMX_BOOL;
|
||||
|
||||
/*
|
||||
* Temporary Android 64 bit modification
|
||||
*
|
||||
* #define OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS
|
||||
* overrides all OMX pointer types to be uint32_t.
|
||||
*
|
||||
* After this change, OMX codecs will work in 32 bit only, so 64 bit processes
|
||||
* must communicate to a remote 32 bit process for OMX to work.
|
||||
*/
|
||||
|
||||
#ifdef OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS
|
||||
|
||||
typedef uint32_t OMX_PTR;
|
||||
typedef OMX_PTR OMX_STRING;
|
||||
typedef OMX_PTR OMX_BYTE;
|
||||
|
||||
#else /* OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS */
|
||||
|
||||
/** The OMX_PTR type is intended to be used to pass pointers between the OMX
|
||||
applications and the OMX Core and components. This is a 32 bit pointer and
|
||||
is aligned on a 32 bit boundary.
|
||||
*/
|
||||
typedef void* OMX_PTR;
|
||||
|
||||
/** The OMX_STRING type is intended to be used to pass "C" type strings between
|
||||
the application and the core and component. The OMX_STRING type is a 32
|
||||
bit pointer to a zero terminated string. The pointer is word aligned and
|
||||
the string is byte aligned.
|
||||
*/
|
||||
typedef char* OMX_STRING;
|
||||
|
||||
/** The OMX_BYTE type is intended to be used to pass arrays of bytes such as
|
||||
buffers between the application and the component and core. The OMX_BYTE
|
||||
type is a 32 bit pointer to a zero terminated string. The pointer is word
|
||||
aligned and the string is byte aligned.
|
||||
*/
|
||||
typedef unsigned char* OMX_BYTE;
|
||||
|
||||
#endif /* OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS */
|
||||
|
||||
/** OMX_UUIDTYPE is a very long unique identifier to uniquely identify
|
||||
at runtime. This identifier should be generated by a component in a way
|
||||
that guarantees that every instance of the identifier running on the system
|
||||
is unique. */
|
||||
typedef unsigned char OMX_UUIDTYPE[128];
|
||||
|
||||
/** The OMX_DIRTYPE enumeration is used to indicate if a port is an input or
|
||||
an output port. This enumeration is common across all component types.
|
||||
*/
|
||||
typedef enum OMX_DIRTYPE
|
||||
{
|
||||
OMX_DirInput, /**< Port is an input port */
|
||||
OMX_DirOutput, /**< Port is an output port */
|
||||
OMX_DirMax = 0x7FFFFFFF
|
||||
} OMX_DIRTYPE;
|
||||
|
||||
/** The OMX_ENDIANTYPE enumeration is used to indicate the bit ordering
|
||||
for numerical data (i.e. big endian, or little endian).
|
||||
*/
|
||||
typedef enum OMX_ENDIANTYPE
|
||||
{
|
||||
OMX_EndianBig, /**< big endian */
|
||||
OMX_EndianLittle, /**< little endian */
|
||||
OMX_EndianMax = 0x7FFFFFFF
|
||||
} OMX_ENDIANTYPE;
|
||||
|
||||
|
||||
/** The OMX_NUMERICALDATATYPE enumeration is used to indicate if data
|
||||
is signed or unsigned
|
||||
*/
|
||||
typedef enum OMX_NUMERICALDATATYPE
|
||||
{
|
||||
OMX_NumericalDataSigned, /**< signed data */
|
||||
OMX_NumericalDataUnsigned, /**< unsigned data */
|
||||
OMX_NumercialDataMax = 0x7FFFFFFF
|
||||
} OMX_NUMERICALDATATYPE;
|
||||
|
||||
|
||||
/** Unsigned bounded value type */
|
||||
typedef struct OMX_BU32 {
|
||||
OMX_U32 nValue; /**< actual value */
|
||||
OMX_U32 nMin; /**< minimum for value (i.e. nValue >= nMin) */
|
||||
OMX_U32 nMax; /**< maximum for value (i.e. nValue <= nMax) */
|
||||
} OMX_BU32;
|
||||
|
||||
|
||||
/** Signed bounded value type */
|
||||
typedef struct OMX_BS32 {
|
||||
OMX_S32 nValue; /**< actual value */
|
||||
OMX_S32 nMin; /**< minimum for value (i.e. nValue >= nMin) */
|
||||
OMX_S32 nMax; /**< maximum for value (i.e. nValue <= nMax) */
|
||||
} OMX_BS32;
|
||||
|
||||
|
||||
/** Structure representing some time or duration in microseconds. This structure
|
||||
* must be interpreted as a signed 64 bit value. The quantity is signed to accommodate
|
||||
* negative deltas and preroll scenarios. The quantity is represented in microseconds
|
||||
* to accomodate high resolution timestamps (e.g. DVD presentation timestamps based
|
||||
* on a 90kHz clock) and to allow more accurate and synchronized delivery (e.g.
|
||||
* individual audio samples delivered at 192 kHz). The quantity is 64 bit to
|
||||
* accommodate a large dynamic range (signed 32 bit values would allow only for plus
|
||||
* or minus 35 minutes).
|
||||
*
|
||||
* Implementations with limited precision may convert the signed 64 bit value to
|
||||
* a signed 32 bit value internally but risk loss of precision.
|
||||
*/
|
||||
#ifndef OMX_SKIP64BIT
|
||||
typedef OMX_S64 OMX_TICKS;
|
||||
#else
|
||||
typedef struct OMX_TICKS
|
||||
{
|
||||
OMX_U32 nLowPart; /** low bits of the signed 64 bit tick value */
|
||||
OMX_U32 nHighPart; /** high bits of the signed 64 bit tick value */
|
||||
} OMX_TICKS;
|
||||
#endif
|
||||
#define OMX_TICKS_PER_SECOND 1000000
|
||||
|
||||
/** Define the public interface for the OMX Handle. The core will not use
|
||||
this value internally, but the application should only use this value.
|
||||
*/
|
||||
typedef OMX_PTR OMX_HANDLETYPE;
|
||||
|
||||
typedef struct OMX_MARKTYPE
|
||||
{
|
||||
OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will
|
||||
generate a mark event upon
|
||||
processing the mark. */
|
||||
OMX_PTR pMarkData; /**< Application specific data associated with
|
||||
the mark sent on a mark event to disambiguate
|
||||
this mark from others. */
|
||||
} OMX_MARKTYPE;
|
||||
|
||||
|
||||
/** OMX_NATIVE_DEVICETYPE is used to map a OMX video port to the
|
||||
* platform & operating specific object used to reference the display
|
||||
* or can be used by a audio port for native audio rendering */
|
||||
typedef OMX_PTR OMX_NATIVE_DEVICETYPE;
|
||||
|
||||
/** OMX_NATIVE_WINDOWTYPE is used to map a OMX video port to the
|
||||
* platform & operating specific object used to reference the window */
|
||||
typedef OMX_PTR OMX_NATIVE_WINDOWTYPE;
|
||||
|
||||
/** The OMX_VERSIONTYPE union is used to specify the version for
|
||||
a structure or component. For a component, the version is entirely
|
||||
specified by the component vendor. Components doing the same function
|
||||
from different vendors may or may not have the same version. For
|
||||
structures, the version shall be set by the entity that allocates the
|
||||
structure. For structures specified in the OMX 1.1 specification, the
|
||||
value of the version shall be set to 1.1.0.0 in all cases. Access to the
|
||||
OMX_VERSIONTYPE can be by a single 32 bit access (e.g. by nVersion) or
|
||||
by accessing one of the structure elements to, for example, check only
|
||||
the Major revision.
|
||||
*/
|
||||
typedef union OMX_VERSIONTYPE
|
||||
{
|
||||
struct
|
||||
{
|
||||
OMX_U8 nVersionMajor; /**< Major version accessor element */
|
||||
OMX_U8 nVersionMinor; /**< Minor version accessor element */
|
||||
OMX_U8 nRevision; /**< Revision version accessor element */
|
||||
OMX_U8 nStep; /**< Step version accessor element */
|
||||
} s;
|
||||
OMX_U32 nVersion; /**< 32 bit value to make accessing the
|
||||
version easily done in a single word
|
||||
size copy/compare operation */
|
||||
} OMX_VERSIONTYPE;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
||||
/* File EOF */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,224 @@
|
||||
/*
|
||||
* Copyright (c) 2010 The Khronos Group Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject
|
||||
* to the following conditions:
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
/** OMX_VideoExt.h - OpenMax IL version 1.1.2
|
||||
* The OMX_VideoExt header file contains extensions to the
|
||||
* definitions used by both the application and the component to
|
||||
* access video items.
|
||||
*/
|
||||
|
||||
#ifndef OMX_VideoExt_h
|
||||
#define OMX_VideoExt_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* Each OMX header shall include all required header files to allow the
|
||||
* header to compile without errors. The includes below are required
|
||||
* for this header file to compile successfully
|
||||
*/
|
||||
#include <OMX_Core.h>
|
||||
|
||||
/** NALU Formats */
|
||||
typedef enum OMX_NALUFORMATSTYPE {
|
||||
OMX_NaluFormatStartCodes = 1,
|
||||
OMX_NaluFormatOneNaluPerBuffer = 2,
|
||||
OMX_NaluFormatOneByteInterleaveLength = 4,
|
||||
OMX_NaluFormatTwoByteInterleaveLength = 8,
|
||||
OMX_NaluFormatFourByteInterleaveLength = 16,
|
||||
OMX_NaluFormatCodingMax = 0x7FFFFFFF
|
||||
} OMX_NALUFORMATSTYPE;
|
||||
|
||||
/** NAL Stream Format */
|
||||
typedef struct OMX_NALSTREAMFORMATTYPE{
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_NALUFORMATSTYPE eNaluFormat;
|
||||
} OMX_NALSTREAMFORMATTYPE;
|
||||
|
||||
/** VP8 profiles */
|
||||
typedef enum OMX_VIDEO_VP8PROFILETYPE {
|
||||
OMX_VIDEO_VP8ProfileMain = 0x01,
|
||||
OMX_VIDEO_VP8ProfileUnknown = 0x6EFFFFFF,
|
||||
OMX_VIDEO_VP8ProfileMax = 0x7FFFFFFF
|
||||
} OMX_VIDEO_VP8PROFILETYPE;
|
||||
|
||||
/** VP8 levels */
|
||||
typedef enum OMX_VIDEO_VP8LEVELTYPE {
|
||||
OMX_VIDEO_VP8Level_Version0 = 0x01,
|
||||
OMX_VIDEO_VP8Level_Version1 = 0x02,
|
||||
OMX_VIDEO_VP8Level_Version2 = 0x04,
|
||||
OMX_VIDEO_VP8Level_Version3 = 0x08,
|
||||
OMX_VIDEO_VP8LevelUnknown = 0x6EFFFFFF,
|
||||
OMX_VIDEO_VP8LevelMax = 0x7FFFFFFF
|
||||
} OMX_VIDEO_VP8LEVELTYPE;
|
||||
|
||||
/** VP8 Param */
|
||||
typedef struct OMX_VIDEO_PARAM_VP8TYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_VIDEO_VP8PROFILETYPE eProfile;
|
||||
OMX_VIDEO_VP8LEVELTYPE eLevel;
|
||||
OMX_U32 nDCTPartitions;
|
||||
OMX_BOOL bErrorResilientMode;
|
||||
} OMX_VIDEO_PARAM_VP8TYPE;
|
||||
|
||||
/** Structure for configuring VP8 reference frames */
|
||||
typedef struct OMX_VIDEO_VP8REFERENCEFRAMETYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_BOOL bPreviousFrameRefresh;
|
||||
OMX_BOOL bGoldenFrameRefresh;
|
||||
OMX_BOOL bAlternateFrameRefresh;
|
||||
OMX_BOOL bUsePreviousFrame;
|
||||
OMX_BOOL bUseGoldenFrame;
|
||||
OMX_BOOL bUseAlternateFrame;
|
||||
} OMX_VIDEO_VP8REFERENCEFRAMETYPE;
|
||||
|
||||
/** Structure for querying VP8 reference frame type */
|
||||
typedef struct OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_BOOL bIsIntraFrame;
|
||||
OMX_BOOL bIsGoldenOrAlternateFrame;
|
||||
} OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE;
|
||||
|
||||
/** Maximum number of VP8 temporal layers */
|
||||
#define OMX_VIDEO_ANDROID_MAXVP8TEMPORALLAYERS 3
|
||||
|
||||
/** VP8 temporal layer patterns */
|
||||
typedef enum OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE {
|
||||
OMX_VIDEO_VPXTemporalLayerPatternNone = 0,
|
||||
OMX_VIDEO_VPXTemporalLayerPatternWebRTC = 1,
|
||||
OMX_VIDEO_VPXTemporalLayerPatternMax = 0x7FFFFFFF
|
||||
} OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE;
|
||||
|
||||
/**
|
||||
* Android specific VP8 encoder params
|
||||
*
|
||||
* STRUCT MEMBERS:
|
||||
* nSize : Size of the structure in bytes
|
||||
* nVersion : OMX specification version information
|
||||
* nPortIndex : Port that this structure applies to
|
||||
* nKeyFrameInterval : Key frame interval in frames
|
||||
* eTemporalPattern : Type of temporal layer pattern
|
||||
* nTemporalLayerCount : Number of temporal coding layers
|
||||
* nTemporalLayerBitrateRatio : Bitrate ratio allocation between temporal
|
||||
* streams in percentage
|
||||
* nMinQuantizer : Minimum (best quality) quantizer
|
||||
* nMaxQuantizer : Maximum (worst quality) quantizer
|
||||
*/
|
||||
typedef struct OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_U32 nKeyFrameInterval;
|
||||
OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE eTemporalPattern;
|
||||
OMX_U32 nTemporalLayerCount;
|
||||
OMX_U32 nTemporalLayerBitrateRatio[OMX_VIDEO_ANDROID_MAXVP8TEMPORALLAYERS];
|
||||
OMX_U32 nMinQuantizer;
|
||||
OMX_U32 nMaxQuantizer;
|
||||
} OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE;
|
||||
|
||||
/** HEVC Profile enum type */
|
||||
typedef enum OMX_VIDEO_HEVCPROFILETYPE {
|
||||
OMX_VIDEO_HEVCProfileUnknown = 0x0,
|
||||
OMX_VIDEO_HEVCProfileMain = 0x1,
|
||||
OMX_VIDEO_HEVCProfileMain10 = 0x2,
|
||||
OMX_VIDEO_HEVCProfileMax = 0x7FFFFFFF
|
||||
} OMX_VIDEO_HEVCPROFILETYPE;
|
||||
|
||||
/** HEVC Level enum type */
|
||||
typedef enum OMX_VIDEO_HEVCLEVELTYPE {
|
||||
OMX_VIDEO_HEVCLevelUnknown = 0x0,
|
||||
OMX_VIDEO_HEVCMainTierLevel1 = 0x1,
|
||||
OMX_VIDEO_HEVCHighTierLevel1 = 0x2,
|
||||
OMX_VIDEO_HEVCMainTierLevel2 = 0x4,
|
||||
OMX_VIDEO_HEVCHighTierLevel2 = 0x8,
|
||||
OMX_VIDEO_HEVCMainTierLevel21 = 0x10,
|
||||
OMX_VIDEO_HEVCHighTierLevel21 = 0x20,
|
||||
OMX_VIDEO_HEVCMainTierLevel3 = 0x40,
|
||||
OMX_VIDEO_HEVCHighTierLevel3 = 0x80,
|
||||
OMX_VIDEO_HEVCMainTierLevel31 = 0x100,
|
||||
OMX_VIDEO_HEVCHighTierLevel31 = 0x200,
|
||||
OMX_VIDEO_HEVCMainTierLevel4 = 0x400,
|
||||
OMX_VIDEO_HEVCHighTierLevel4 = 0x800,
|
||||
OMX_VIDEO_HEVCMainTierLevel41 = 0x1000,
|
||||
OMX_VIDEO_HEVCHighTierLevel41 = 0x2000,
|
||||
OMX_VIDEO_HEVCMainTierLevel5 = 0x4000,
|
||||
OMX_VIDEO_HEVCHighTierLevel5 = 0x8000,
|
||||
OMX_VIDEO_HEVCMainTierLevel51 = 0x10000,
|
||||
OMX_VIDEO_HEVCHighTierLevel51 = 0x20000,
|
||||
OMX_VIDEO_HEVCMainTierLevel52 = 0x40000,
|
||||
OMX_VIDEO_HEVCHighTierLevel52 = 0x80000,
|
||||
OMX_VIDEO_HEVCMainTierLevel6 = 0x100000,
|
||||
OMX_VIDEO_HEVCHighTierLevel6 = 0x200000,
|
||||
OMX_VIDEO_HEVCMainTierLevel61 = 0x400000,
|
||||
OMX_VIDEO_HEVCHighTierLevel61 = 0x800000,
|
||||
OMX_VIDEO_HEVCMainTierLevel62 = 0x1000000,
|
||||
OMX_VIDEO_HEVCHighTierLevel62 = 0x2000000,
|
||||
OMX_VIDEO_HEVCHighTiermax = 0x7FFFFFFF
|
||||
} OMX_VIDEO_HEVCLEVELTYPE;
|
||||
|
||||
/** Structure for controlling HEVC video encoding and decoding */
|
||||
typedef struct OMX_VIDEO_PARAM_HEVCTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_VIDEO_HEVCPROFILETYPE eProfile;
|
||||
OMX_VIDEO_HEVCLEVELTYPE eLevel;
|
||||
} OMX_VIDEO_PARAM_HEVCTYPE;
|
||||
|
||||
/** Structure to define if dependent slice segments should be used */
|
||||
typedef struct OMX_VIDEO_SLICESEGMENTSTYPE {
|
||||
OMX_U32 nSize;
|
||||
OMX_VERSIONTYPE nVersion;
|
||||
OMX_U32 nPortIndex;
|
||||
OMX_BOOL bDepedentSegments;
|
||||
OMX_BOOL bEnableLoopFilterAcrossSlices;
|
||||
} OMX_VIDEO_SLICESEGMENTSTYPE;
|
||||
|
||||
/** Structure to return timestamps of rendered output frames as well as EOS
|
||||
* for tunneled components.
|
||||
*/
|
||||
typedef struct OMX_VIDEO_RENDEREVENTTYPE {
|
||||
OMX_S64 nMediaTimeUs; // timestamp of rendered video frame
|
||||
OMX_S64 nSystemTimeNs; // system monotonic time at the time frame was rendered
|
||||
// Use INT64_MAX for nMediaTimeUs to signal that the EOS
|
||||
// has been reached. In this case, nSystemTimeNs MUST be
|
||||
// the system time when the last frame was rendered.
|
||||
// This MUST be done in addition to returning (and
|
||||
// following) the render information for the last frame.
|
||||
} OMX_VIDEO_RENDEREVENTTYPE;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* OMX_VideoExt_h */
|
||||
/* File EOF */
|
||||
Reference in New Issue
Block a user