Loading media/1.0/types.hal +1 −1 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * Copyright (C) 2017 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. Loading media/omx/1.0/Android.bp +7 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ filegroup { "IOmxBufferSource.hal", "IOmxNode.hal", "IOmxObserver.hal", "IOmxStore.hal", ], } Loading @@ -26,6 +27,7 @@ genrule { "android/hardware/media/omx/1.0/OmxBufferSourceAll.cpp", "android/hardware/media/omx/1.0/OmxNodeAll.cpp", "android/hardware/media/omx/1.0/OmxObserverAll.cpp", "android/hardware/media/omx/1.0/OmxStoreAll.cpp", ], } Loading Loading @@ -64,6 +66,11 @@ genrule { "android/hardware/media/omx/1.0/BnHwOmxObserver.h", "android/hardware/media/omx/1.0/BpHwOmxObserver.h", "android/hardware/media/omx/1.0/BsOmxObserver.h", "android/hardware/media/omx/1.0/IOmxStore.h", "android/hardware/media/omx/1.0/IHwOmxStore.h", "android/hardware/media/omx/1.0/BnHwOmxStore.h", "android/hardware/media/omx/1.0/BpHwOmxStore.h", "android/hardware/media/omx/1.0/BsOmxStore.h", ], } Loading media/omx/1.0/IOmx.hal +13 −11 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * Copyright (C) 2017 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. Loading @@ -26,7 +26,7 @@ import IGraphicBufferSource; /** * Ref: frameworks/av/include/media/IOMX.h: IOMX * * IOmx is the main entry point for communicating with OMX components. * IOmx has the ability to create OMX nodes. */ interface IOmx { Loading @@ -41,8 +41,8 @@ interface IOmx { /** * List available components. * * @param[out] status The status of the call. * @param[out] nodeList The list of ComponentInfo. * @return status The status of the call. * @return nodeList The list of ComponentInfo. */ listNodes( ) generates ( Loading @@ -50,14 +50,15 @@ interface IOmx { vec<ComponentInfo> nodeList ); /** * Allocate an IOmxNode instance with the specified component name. * Allocate an IOmxNode instance with the specified node name. * * @param[in] name The name of the component to create. * @param[in] observer An observer object that will receive messages from * @param name The name of the node to create. * @param observer An observer object that will receive messages from * the created instance. * @param[out] status The status of the call. * @param[out] omxNode The allocated instance of IOmxNode. * @return status The status of the call. * @return omxNode The allocated instance of `IOmxNode`. */ allocateNode( string name, Loading @@ -70,8 +71,9 @@ interface IOmx { /** * Create an input surface for recording. * * @param[out] producer The associated producer end of the buffer queue. * @param[out] source The associated `IGraphicBufferSource`. * @return status The status of the call. * @return producer The associated producer end of the buffer queue. * @return source The associated `IGraphicBufferSource`. */ createInputSurface( ) generates ( Loading media/omx/1.0/IOmxNode.hal +63 −74 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ interface IOmxNode { /** * Free the node. * * @param[out] status Status of the call. * @return status Status of the call. */ freeNode( ) generates ( Loading @@ -45,9 +45,9 @@ interface IOmxNode { /** * Invoke a command on the node. * * @param[in] cmd Type of the command. * @param[in] param Parameter for the command. * @param[out] status Status of the call. * @param cmd Type of the command. * @param param Parameter for the command. * @return status Status of the call. * * @see OMX_SendCommand() in the OpenMax IL standard. */ Loading @@ -61,10 +61,10 @@ interface IOmxNode { /** * Retrieve a parameter setting from the node. * * @param[in] index Type of the parameter to retrieve. * @param[in] inParams Information about the retrieval. * @param[out] status Status of the call. * @param[out] outParams Current parameter setting. * @param index Type of the parameter to retrieve. * @param inParams Information about the retrieval. * @return status Status of the call. * @return outParams Current parameter setting. * * @see OMX_GetParameter() in the OpenMax IL standard. */ Loading @@ -79,9 +79,9 @@ interface IOmxNode { /** * Change a parameter setting of the node. * * @param[in] index Type of the parameter to change. * @param[in] params New parameter setting. * @param[out] status Status of the call. * @param index Type of the parameter to change. * @param params New parameter setting. * @return status Status of the call. * * @see OMX_SetParameter() in the OpenMax IL standard. */ Loading @@ -95,10 +95,10 @@ interface IOmxNode { /** * Retrieve a configuration from the node. * * @param[in] index Type of the configuration to retrieve. * @param[in] inConfig Information about the retrieval. * @param[out] status Status of the call. * @param[out] outConfig Current configuration. * @param index Type of the configuration to retrieve. * @param inConfig Information about the retrieval. * @return status Status of the call. * @return outConfig Current configuration. * * @see OMX_GetConfig() in the OpenMax IL standard. */ Loading @@ -113,9 +113,9 @@ interface IOmxNode { /** * Change a configuration of the node. * * @param[in] index Type of the configuration to change. * @param[in] config New configuration. * @param[out] status Status of the call. * @param index Type of the configuration to change. * @param config New configuration. * @return status Status of the call. * * @see OMX_SetConfig() in the OpenMax IL standard. */ Loading @@ -129,9 +129,9 @@ interface IOmxNode { /** * Set the mode of a port on the node. * * @param[in] portIndex Index of the port. * @param[in] mode Target mode on the specified port. * @param[out] status Status of the call. * @param portIndex Index of the port. * @param mode Target mode on the specified port. * @return status Status of the call. */ setPortMode( uint32_t portIndex, Loading @@ -144,11 +144,11 @@ interface IOmxNode { * Prepare a port for adaptive playback. This is based on the extension * "OMX.google.android.index.prepareForAdaptivePlayback". * * @param[in] portIndex Index of the port. * @param[in] enable Whether the adaptive playback is enabled or not. * @param[in] maxFrameWidth Maximum frame width. * @param[in] maxFrameHeight Maximum frame height. * @param[out] status Status of the call. * @param portIndex Index of the port. * @param enable Whether the adaptive playback is enabled or not. * @param maxFrameWidth Maximum frame width. * @param maxFrameHeight Maximum frame height. * @return status Status of the call. */ prepareForAdaptivePlayback( uint32_t portIndex, Loading @@ -163,12 +163,12 @@ interface IOmxNode { * Configure a port for a tunneled playback mode. This is based on the * extension "OMX.google.android.index.configureVideoTunnelMode". * * @param[in] portIndex Index of the port. * @param[in] tunneled Whether the tunneled mode is used or not. * @param[in] audioHwSync HW SYNC ID of the audio HAL output stream to sync * @param portIndex Index of the port. * @param tunneled Whether the tunneled mode is used or not. * @param audioHwSync HW SYNC ID of the audio HAL output stream to sync * the video with. * @param[out] status Status of the call. * @param[out] sidebandHandle Codec-allocated sideband window handle. * @return status Status of the call. * @return sidebandHandle Codec-allocated sideband window handle. */ configureVideoTunnelMode( uint32_t portIndex, Loading @@ -183,9 +183,9 @@ interface IOmxNode { * Retrieve the buffer usage on a port. This is based on the extension * "OMX.google.android.index.getAndroidNativeBufferUsage". * * @param[in] portIndex Index of the port. * @param[out] status Status of the call. * @param[out] usage Current graphic buffer usage. * @param portIndex Index of the port. * @return status Status of the call. * @return usage Current graphic buffer usage. */ getGraphicBufferUsage( uint32_t portIndex Loading @@ -197,9 +197,9 @@ interface IOmxNode { /** * Set up a listener to events related to the input surface. * * @param[in] bufferSource Listener object that implements * @param bufferSource Listener object that implements * IOmxBufferSource. * @param[out] status Status of the call. * @return status Status of the call. * * @see IOmxBufferSource. */ Loading @@ -212,12 +212,12 @@ interface IOmxNode { /** * Allocate an opaque buffer on a port as a native handle. * * @param[in] portIndex Index of the port. * @param[in] size Desired size of the buffer. * @param[out] status Status of the call. * @param[out] buffer Id of the allocated buffer, which will be needed in * @param portIndex Index of the port. * @param size Desired size of the buffer. * @return status Status of the call. * @return buffer Id of the allocated buffer, which will be needed in * other buffer-related functions. * @param[out] nativeHandle Native handle of the allocated buffer. * @return nativeHandle Native handle of the allocated buffer. * * @see OMX_AllocateBuffer() in the OpenMax IL standard. */ Loading @@ -233,10 +233,10 @@ interface IOmxNode { /** * Assign a buffer to a port. * * @param[in] portIndex Index of the port. * @param[in] omxBuffer Buffer to be assigned to the port. * @param[out] status Status of the call. * @param[out] buffer Id of the assigned buffer, which will be needed in * @param portIndex Index of the port. * @param omxBuffer Buffer to be assigned to the port. * @return status Status of the call. * @return buffer Id of the assigned buffer, which will be needed in * other buffer-related functions. * * @see OMX_UseBuffer() in the OpenMax IL standard. Loading @@ -253,9 +253,9 @@ interface IOmxNode { * Free a buffer previously assigned to a port by allocateSecureBuffer() or * useBuffer(). * * @param[in] portIndex Index of the port. * @param[in] buffer Id of the buffer to be freed. * @param[out] status Status of the call. * @param portIndex Index of the port. * @param buffer Id of the buffer to be freed. * @return status Status of the call. * * @see OMX_FreeBuffer() in the OpenMax IL standard. */ Loading @@ -275,10 +275,10 @@ interface IOmxNode { * the new buffer passed in via \p omxBuffer before OMX_FillThisBuffer() is * called. Otherwise, \p omxBuffer is not used. * * @param[in] buffer Id of the buffer to fill. * @param[in] omxBuffer New buffer information (in metadata mode). * @param[in] fence Fence to wait for (if not null). * @param[out] status Status of the call. * @param buffer Id of the buffer to fill. * @param omxBuffer New buffer information (in metadata mode). * @param fence Fence to wait for (if not null). * @return status Status of the call. * * @see OMX_FillThisBuffer() in the OpenMax IL standard. */ Loading @@ -299,12 +299,12 @@ interface IOmxNode { * the new buffer passed in via \p omxBuffer before OMX_EmptyThisBuffer() is * called. Otherwise, \p omxBuffer is not used. * * @param[in] buffer Id of the buffer to fill. * @param[in] omxBuffer New buffer information (in metadata mode). * @param[in] flags Flags to be passed to OMX_EmptyBuffer(). * @param[in] timestampUs Timestamp OMX_EmptyBuffer(). * @param[in] fence Fence to wait for (if not null). * @param[out] status Status of the call. * @param buffer Id of the buffer to fill. * @param omxBuffer New buffer information (in metadata mode). * @param flags Flags to be passed to OMX_EmptyBuffer(). * @param timestampUs Timestamp OMX_EmptyBuffer(). * @param fence Fence to wait for (if not null). * @return status Status of the call. * * @see OMX_EmptyThisBuffer() in the OpenMax IL standard. */ Loading @@ -321,9 +321,9 @@ interface IOmxNode { /** * Request the node to translate an extension string to an index. * * @param[in] parameterName Requested extension string. * @param[out] status Status of the call. * @param[out] index Translated index. * @param parameterName Requested extension string. * @return status Status of the call. * @return index Translated index. * * @see OMX_GetExtensionIndex() in the OpenMax IL standard. */ Loading @@ -340,8 +340,8 @@ interface IOmxNode { * receive the message in batches by the callback * IOmxObserver::onMessages(). * * @param[in] msg Message to send. * @param[out] status Status of the call. * @param msg Message to send. * @return status Status of the call. * * @see IOmxObserver::onMessages(). */ Loading @@ -350,16 +350,5 @@ interface IOmxNode { ) generates ( Status status ); /** * Set quirks. * * @param[in] quirks Quirks for the component, generally obtained from * MediaCodecList::getQuirksFor(). */ oneway setQuirks( uint32_t quirks ); }; media/omx/1.0/IOmxStore.hal 0 → 100644 +215 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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. */ package android.hardware.media.omx@1.0; import IOmx; /** * Ref: frameworks/av/include/media/IOMX.h: IOMX * * There will be two instances of IOmxStore: "platform" and "vendor". * * The IOmxStore service provided by the platform must present "platform" as the * interface name. * * The IOmxStore service provided by the vendor must present "vendor" as the * instance name. */ interface IOmxStore { /** * Attribute is a key-value pair of strings. The `value` member is generally * a stringified value of the following: * enum<v1,v2,...,vn>: v1 | v2 | ... | vn * num: 0 | [1-9][0-9]* * string: arbitrary string * size: <num>x<num> * ratio: <num>:<num> * range<type>: <type>-<type> * list<type>: <type> | <type>,<list<type>> */ struct Attribute { string key; string value; }; /** * Service attribute * * Optional service attributes: * key: 'max-video-encoder-input-buffers', value-type: num * key: 'supports-multiple-secure-codecs', value-type: enum<0,1> * key: 'supports-secure-with-non-secure-codec', value-type: enum<0,1> * * For keys with prefix 'supports-', the value of 0 means "no" (not * supported) while the value of 1 means "yes" (supported). */ typedef Attribute ServiceAttribute; /** * List attributes that are service-specific (not node-specific). * * @return attributes The list of `Attribute`s that are specific to this * service. */ listServiceAttributes( ) generates ( Status status, vec<ServiceAttribute> attributes ); /** * Node attribute * * Optional node attributes to describe supported values: * key: 'bitrate-range', value-type: range<num> * key: 'max-concurrent-instances', value-type: num * key: 'max-supported-instances', value-type: num * * Optional node attributes for audio nodes to describe supported values: * key: 'max-channel-count', value-type: num * key: 'sample-rate-ranges', value-type: list<range<num>> * * Optional node attributes for video nodes to describe supported values: * key: 'alignment', value-type: size * key: 'block-aspect-ratio-range', value-type: range<ratio> * key: 'block-count-range', value-type: range<num> * key: 'block-size', value-type: size * key: 'blocks-per-second-range', value-type: range<num> * key: 'feature-can-swap-width-height', value-type: enum<0,1> * key: 'frame-rate-range', value-type: range<num> * key: 'pixel-aspect-ratio-range', value-type: range<ratio> * key: 'size-range', value-type: range<size> * * Required node attributes for video nodes that are required by Android to * describe measured values for this device: * key: 'measured-frame-rate-<width>-<height>-range', * value-type: range<num>; where width: num, height: num * * Optional node attributes for decoders to describe supported values: * key: 'feature-adaptive-playback', value: enum<0,1> * key: 'feature-secure-playback', value: enum<0,1> * key: 'feature-tunneled-playback', value: enum<0,1> * * Optional node attributes for video decoders to describe supported values: * key: 'feature-partial-frame', value: enum<0,1> * * Optional node attributes for encoders to describe supported values: * key: 'complexity-default', value-type: num * key: 'complexity-range', value-type: range<num> * key: 'feature-bitrate-control', value-type: list<enum<VBR,CBR,CQ>> * key: 'feature-intra-refresh', value-type: enum<0,1> * key: 'quality-default', value-type: num * key: 'quality-range', value-type: range<num> * key: 'quality-scale', value-type: string * * For keys with prefix 'feature-' and value type enum<0,1>, the value of 0 * means "optional", while the value of 1 means "required". */ typedef Attribute NodeAttribute; /** * Information for an IOmxNode node. */ struct NodeInfo { /** * Name of this node. * * `name` can be supplied to `IOmx::allocateNode` of a * corresponding `IOmx` instance to create the node. */ string name; /** * Name of the `IOmx` instance that can create this node. * * To obtain the `IOmx` instance, call `getOmx(owner)`. */ string owner; /** * List of node attributes. */ vec<NodeAttribute> attributes; }; /** * Information about nodes provided for a supported node role */ struct RoleInfo { /** * Standard OMX node role. */ string role; /** * Corresponding media type (as defined in MediaFormat.MIMETYPE_* * constants for types required by Android). */ string type; /** * Whether this role is for an encoder or a decoder. */ bool isEncoder; /** * Whether to prefer platform nodes for this role. */ bool preferPlatformNodes; /** * List of nodes that support this role, ordered by preference. */ vec<NodeInfo> nodes; }; /** * Return the prefix of names of supported nodes. * * @return prefix The prefix of the names of all nodes supported by this * service. */ getNodePrefix( ) generates ( string prefix ); /** * List roles of supported nodes. * * The name of each node inside `NodeInfo` must start with the prefix * returned by `getNodePrefix()`. * * @return roleList The list of `RoleInfo`s. * * @see RoleInfo */ listRoles( ) generates ( vec<RoleInfo> roleList ); /** * Obtain an `IOmx` instance with a specified name. * * @param name The name of the instance. * @return omx The `IOmx` interface associated with `name`. This must be * null if the name is not found. */ getOmx( string name ) generates ( IOmx omx ); }; Loading
media/1.0/types.hal +1 −1 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * Copyright (C) 2017 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. Loading
media/omx/1.0/Android.bp +7 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ filegroup { "IOmxBufferSource.hal", "IOmxNode.hal", "IOmxObserver.hal", "IOmxStore.hal", ], } Loading @@ -26,6 +27,7 @@ genrule { "android/hardware/media/omx/1.0/OmxBufferSourceAll.cpp", "android/hardware/media/omx/1.0/OmxNodeAll.cpp", "android/hardware/media/omx/1.0/OmxObserverAll.cpp", "android/hardware/media/omx/1.0/OmxStoreAll.cpp", ], } Loading Loading @@ -64,6 +66,11 @@ genrule { "android/hardware/media/omx/1.0/BnHwOmxObserver.h", "android/hardware/media/omx/1.0/BpHwOmxObserver.h", "android/hardware/media/omx/1.0/BsOmxObserver.h", "android/hardware/media/omx/1.0/IOmxStore.h", "android/hardware/media/omx/1.0/IHwOmxStore.h", "android/hardware/media/omx/1.0/BnHwOmxStore.h", "android/hardware/media/omx/1.0/BpHwOmxStore.h", "android/hardware/media/omx/1.0/BsOmxStore.h", ], } Loading
media/omx/1.0/IOmx.hal +13 −11 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * Copyright (C) 2017 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. Loading @@ -26,7 +26,7 @@ import IGraphicBufferSource; /** * Ref: frameworks/av/include/media/IOMX.h: IOMX * * IOmx is the main entry point for communicating with OMX components. * IOmx has the ability to create OMX nodes. */ interface IOmx { Loading @@ -41,8 +41,8 @@ interface IOmx { /** * List available components. * * @param[out] status The status of the call. * @param[out] nodeList The list of ComponentInfo. * @return status The status of the call. * @return nodeList The list of ComponentInfo. */ listNodes( ) generates ( Loading @@ -50,14 +50,15 @@ interface IOmx { vec<ComponentInfo> nodeList ); /** * Allocate an IOmxNode instance with the specified component name. * Allocate an IOmxNode instance with the specified node name. * * @param[in] name The name of the component to create. * @param[in] observer An observer object that will receive messages from * @param name The name of the node to create. * @param observer An observer object that will receive messages from * the created instance. * @param[out] status The status of the call. * @param[out] omxNode The allocated instance of IOmxNode. * @return status The status of the call. * @return omxNode The allocated instance of `IOmxNode`. */ allocateNode( string name, Loading @@ -70,8 +71,9 @@ interface IOmx { /** * Create an input surface for recording. * * @param[out] producer The associated producer end of the buffer queue. * @param[out] source The associated `IGraphicBufferSource`. * @return status The status of the call. * @return producer The associated producer end of the buffer queue. * @return source The associated `IGraphicBufferSource`. */ createInputSurface( ) generates ( Loading
media/omx/1.0/IOmxNode.hal +63 −74 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ interface IOmxNode { /** * Free the node. * * @param[out] status Status of the call. * @return status Status of the call. */ freeNode( ) generates ( Loading @@ -45,9 +45,9 @@ interface IOmxNode { /** * Invoke a command on the node. * * @param[in] cmd Type of the command. * @param[in] param Parameter for the command. * @param[out] status Status of the call. * @param cmd Type of the command. * @param param Parameter for the command. * @return status Status of the call. * * @see OMX_SendCommand() in the OpenMax IL standard. */ Loading @@ -61,10 +61,10 @@ interface IOmxNode { /** * Retrieve a parameter setting from the node. * * @param[in] index Type of the parameter to retrieve. * @param[in] inParams Information about the retrieval. * @param[out] status Status of the call. * @param[out] outParams Current parameter setting. * @param index Type of the parameter to retrieve. * @param inParams Information about the retrieval. * @return status Status of the call. * @return outParams Current parameter setting. * * @see OMX_GetParameter() in the OpenMax IL standard. */ Loading @@ -79,9 +79,9 @@ interface IOmxNode { /** * Change a parameter setting of the node. * * @param[in] index Type of the parameter to change. * @param[in] params New parameter setting. * @param[out] status Status of the call. * @param index Type of the parameter to change. * @param params New parameter setting. * @return status Status of the call. * * @see OMX_SetParameter() in the OpenMax IL standard. */ Loading @@ -95,10 +95,10 @@ interface IOmxNode { /** * Retrieve a configuration from the node. * * @param[in] index Type of the configuration to retrieve. * @param[in] inConfig Information about the retrieval. * @param[out] status Status of the call. * @param[out] outConfig Current configuration. * @param index Type of the configuration to retrieve. * @param inConfig Information about the retrieval. * @return status Status of the call. * @return outConfig Current configuration. * * @see OMX_GetConfig() in the OpenMax IL standard. */ Loading @@ -113,9 +113,9 @@ interface IOmxNode { /** * Change a configuration of the node. * * @param[in] index Type of the configuration to change. * @param[in] config New configuration. * @param[out] status Status of the call. * @param index Type of the configuration to change. * @param config New configuration. * @return status Status of the call. * * @see OMX_SetConfig() in the OpenMax IL standard. */ Loading @@ -129,9 +129,9 @@ interface IOmxNode { /** * Set the mode of a port on the node. * * @param[in] portIndex Index of the port. * @param[in] mode Target mode on the specified port. * @param[out] status Status of the call. * @param portIndex Index of the port. * @param mode Target mode on the specified port. * @return status Status of the call. */ setPortMode( uint32_t portIndex, Loading @@ -144,11 +144,11 @@ interface IOmxNode { * Prepare a port for adaptive playback. This is based on the extension * "OMX.google.android.index.prepareForAdaptivePlayback". * * @param[in] portIndex Index of the port. * @param[in] enable Whether the adaptive playback is enabled or not. * @param[in] maxFrameWidth Maximum frame width. * @param[in] maxFrameHeight Maximum frame height. * @param[out] status Status of the call. * @param portIndex Index of the port. * @param enable Whether the adaptive playback is enabled or not. * @param maxFrameWidth Maximum frame width. * @param maxFrameHeight Maximum frame height. * @return status Status of the call. */ prepareForAdaptivePlayback( uint32_t portIndex, Loading @@ -163,12 +163,12 @@ interface IOmxNode { * Configure a port for a tunneled playback mode. This is based on the * extension "OMX.google.android.index.configureVideoTunnelMode". * * @param[in] portIndex Index of the port. * @param[in] tunneled Whether the tunneled mode is used or not. * @param[in] audioHwSync HW SYNC ID of the audio HAL output stream to sync * @param portIndex Index of the port. * @param tunneled Whether the tunneled mode is used or not. * @param audioHwSync HW SYNC ID of the audio HAL output stream to sync * the video with. * @param[out] status Status of the call. * @param[out] sidebandHandle Codec-allocated sideband window handle. * @return status Status of the call. * @return sidebandHandle Codec-allocated sideband window handle. */ configureVideoTunnelMode( uint32_t portIndex, Loading @@ -183,9 +183,9 @@ interface IOmxNode { * Retrieve the buffer usage on a port. This is based on the extension * "OMX.google.android.index.getAndroidNativeBufferUsage". * * @param[in] portIndex Index of the port. * @param[out] status Status of the call. * @param[out] usage Current graphic buffer usage. * @param portIndex Index of the port. * @return status Status of the call. * @return usage Current graphic buffer usage. */ getGraphicBufferUsage( uint32_t portIndex Loading @@ -197,9 +197,9 @@ interface IOmxNode { /** * Set up a listener to events related to the input surface. * * @param[in] bufferSource Listener object that implements * @param bufferSource Listener object that implements * IOmxBufferSource. * @param[out] status Status of the call. * @return status Status of the call. * * @see IOmxBufferSource. */ Loading @@ -212,12 +212,12 @@ interface IOmxNode { /** * Allocate an opaque buffer on a port as a native handle. * * @param[in] portIndex Index of the port. * @param[in] size Desired size of the buffer. * @param[out] status Status of the call. * @param[out] buffer Id of the allocated buffer, which will be needed in * @param portIndex Index of the port. * @param size Desired size of the buffer. * @return status Status of the call. * @return buffer Id of the allocated buffer, which will be needed in * other buffer-related functions. * @param[out] nativeHandle Native handle of the allocated buffer. * @return nativeHandle Native handle of the allocated buffer. * * @see OMX_AllocateBuffer() in the OpenMax IL standard. */ Loading @@ -233,10 +233,10 @@ interface IOmxNode { /** * Assign a buffer to a port. * * @param[in] portIndex Index of the port. * @param[in] omxBuffer Buffer to be assigned to the port. * @param[out] status Status of the call. * @param[out] buffer Id of the assigned buffer, which will be needed in * @param portIndex Index of the port. * @param omxBuffer Buffer to be assigned to the port. * @return status Status of the call. * @return buffer Id of the assigned buffer, which will be needed in * other buffer-related functions. * * @see OMX_UseBuffer() in the OpenMax IL standard. Loading @@ -253,9 +253,9 @@ interface IOmxNode { * Free a buffer previously assigned to a port by allocateSecureBuffer() or * useBuffer(). * * @param[in] portIndex Index of the port. * @param[in] buffer Id of the buffer to be freed. * @param[out] status Status of the call. * @param portIndex Index of the port. * @param buffer Id of the buffer to be freed. * @return status Status of the call. * * @see OMX_FreeBuffer() in the OpenMax IL standard. */ Loading @@ -275,10 +275,10 @@ interface IOmxNode { * the new buffer passed in via \p omxBuffer before OMX_FillThisBuffer() is * called. Otherwise, \p omxBuffer is not used. * * @param[in] buffer Id of the buffer to fill. * @param[in] omxBuffer New buffer information (in metadata mode). * @param[in] fence Fence to wait for (if not null). * @param[out] status Status of the call. * @param buffer Id of the buffer to fill. * @param omxBuffer New buffer information (in metadata mode). * @param fence Fence to wait for (if not null). * @return status Status of the call. * * @see OMX_FillThisBuffer() in the OpenMax IL standard. */ Loading @@ -299,12 +299,12 @@ interface IOmxNode { * the new buffer passed in via \p omxBuffer before OMX_EmptyThisBuffer() is * called. Otherwise, \p omxBuffer is not used. * * @param[in] buffer Id of the buffer to fill. * @param[in] omxBuffer New buffer information (in metadata mode). * @param[in] flags Flags to be passed to OMX_EmptyBuffer(). * @param[in] timestampUs Timestamp OMX_EmptyBuffer(). * @param[in] fence Fence to wait for (if not null). * @param[out] status Status of the call. * @param buffer Id of the buffer to fill. * @param omxBuffer New buffer information (in metadata mode). * @param flags Flags to be passed to OMX_EmptyBuffer(). * @param timestampUs Timestamp OMX_EmptyBuffer(). * @param fence Fence to wait for (if not null). * @return status Status of the call. * * @see OMX_EmptyThisBuffer() in the OpenMax IL standard. */ Loading @@ -321,9 +321,9 @@ interface IOmxNode { /** * Request the node to translate an extension string to an index. * * @param[in] parameterName Requested extension string. * @param[out] status Status of the call. * @param[out] index Translated index. * @param parameterName Requested extension string. * @return status Status of the call. * @return index Translated index. * * @see OMX_GetExtensionIndex() in the OpenMax IL standard. */ Loading @@ -340,8 +340,8 @@ interface IOmxNode { * receive the message in batches by the callback * IOmxObserver::onMessages(). * * @param[in] msg Message to send. * @param[out] status Status of the call. * @param msg Message to send. * @return status Status of the call. * * @see IOmxObserver::onMessages(). */ Loading @@ -350,16 +350,5 @@ interface IOmxNode { ) generates ( Status status ); /** * Set quirks. * * @param[in] quirks Quirks for the component, generally obtained from * MediaCodecList::getQuirksFor(). */ oneway setQuirks( uint32_t quirks ); };
media/omx/1.0/IOmxStore.hal 0 → 100644 +215 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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. */ package android.hardware.media.omx@1.0; import IOmx; /** * Ref: frameworks/av/include/media/IOMX.h: IOMX * * There will be two instances of IOmxStore: "platform" and "vendor". * * The IOmxStore service provided by the platform must present "platform" as the * interface name. * * The IOmxStore service provided by the vendor must present "vendor" as the * instance name. */ interface IOmxStore { /** * Attribute is a key-value pair of strings. The `value` member is generally * a stringified value of the following: * enum<v1,v2,...,vn>: v1 | v2 | ... | vn * num: 0 | [1-9][0-9]* * string: arbitrary string * size: <num>x<num> * ratio: <num>:<num> * range<type>: <type>-<type> * list<type>: <type> | <type>,<list<type>> */ struct Attribute { string key; string value; }; /** * Service attribute * * Optional service attributes: * key: 'max-video-encoder-input-buffers', value-type: num * key: 'supports-multiple-secure-codecs', value-type: enum<0,1> * key: 'supports-secure-with-non-secure-codec', value-type: enum<0,1> * * For keys with prefix 'supports-', the value of 0 means "no" (not * supported) while the value of 1 means "yes" (supported). */ typedef Attribute ServiceAttribute; /** * List attributes that are service-specific (not node-specific). * * @return attributes The list of `Attribute`s that are specific to this * service. */ listServiceAttributes( ) generates ( Status status, vec<ServiceAttribute> attributes ); /** * Node attribute * * Optional node attributes to describe supported values: * key: 'bitrate-range', value-type: range<num> * key: 'max-concurrent-instances', value-type: num * key: 'max-supported-instances', value-type: num * * Optional node attributes for audio nodes to describe supported values: * key: 'max-channel-count', value-type: num * key: 'sample-rate-ranges', value-type: list<range<num>> * * Optional node attributes for video nodes to describe supported values: * key: 'alignment', value-type: size * key: 'block-aspect-ratio-range', value-type: range<ratio> * key: 'block-count-range', value-type: range<num> * key: 'block-size', value-type: size * key: 'blocks-per-second-range', value-type: range<num> * key: 'feature-can-swap-width-height', value-type: enum<0,1> * key: 'frame-rate-range', value-type: range<num> * key: 'pixel-aspect-ratio-range', value-type: range<ratio> * key: 'size-range', value-type: range<size> * * Required node attributes for video nodes that are required by Android to * describe measured values for this device: * key: 'measured-frame-rate-<width>-<height>-range', * value-type: range<num>; where width: num, height: num * * Optional node attributes for decoders to describe supported values: * key: 'feature-adaptive-playback', value: enum<0,1> * key: 'feature-secure-playback', value: enum<0,1> * key: 'feature-tunneled-playback', value: enum<0,1> * * Optional node attributes for video decoders to describe supported values: * key: 'feature-partial-frame', value: enum<0,1> * * Optional node attributes for encoders to describe supported values: * key: 'complexity-default', value-type: num * key: 'complexity-range', value-type: range<num> * key: 'feature-bitrate-control', value-type: list<enum<VBR,CBR,CQ>> * key: 'feature-intra-refresh', value-type: enum<0,1> * key: 'quality-default', value-type: num * key: 'quality-range', value-type: range<num> * key: 'quality-scale', value-type: string * * For keys with prefix 'feature-' and value type enum<0,1>, the value of 0 * means "optional", while the value of 1 means "required". */ typedef Attribute NodeAttribute; /** * Information for an IOmxNode node. */ struct NodeInfo { /** * Name of this node. * * `name` can be supplied to `IOmx::allocateNode` of a * corresponding `IOmx` instance to create the node. */ string name; /** * Name of the `IOmx` instance that can create this node. * * To obtain the `IOmx` instance, call `getOmx(owner)`. */ string owner; /** * List of node attributes. */ vec<NodeAttribute> attributes; }; /** * Information about nodes provided for a supported node role */ struct RoleInfo { /** * Standard OMX node role. */ string role; /** * Corresponding media type (as defined in MediaFormat.MIMETYPE_* * constants for types required by Android). */ string type; /** * Whether this role is for an encoder or a decoder. */ bool isEncoder; /** * Whether to prefer platform nodes for this role. */ bool preferPlatformNodes; /** * List of nodes that support this role, ordered by preference. */ vec<NodeInfo> nodes; }; /** * Return the prefix of names of supported nodes. * * @return prefix The prefix of the names of all nodes supported by this * service. */ getNodePrefix( ) generates ( string prefix ); /** * List roles of supported nodes. * * The name of each node inside `NodeInfo` must start with the prefix * returned by `getNodePrefix()`. * * @return roleList The list of `RoleInfo`s. * * @see RoleInfo */ listRoles( ) generates ( vec<RoleInfo> roleList ); /** * Obtain an `IOmx` instance with a specified name. * * @param name The name of the instance. * @return omx The `IOmx` interface associated with `name`. This must be * null if the name is not found. */ getOmx( string name ) generates ( IOmx omx ); };