173dd808754c641fe798273d356ee38368715fa7bLajos Molnar/* 273dd808754c641fe798273d356ee38368715fa7bLajos Molnar * Copyright (C) 2016 The Android Open Source Project 373dd808754c641fe798273d356ee38368715fa7bLajos Molnar * 473dd808754c641fe798273d356ee38368715fa7bLajos Molnar * Licensed under the Apache License, Version 2.0 (the "License"); 573dd808754c641fe798273d356ee38368715fa7bLajos Molnar * you may not use this file except in compliance with the License. 673dd808754c641fe798273d356ee38368715fa7bLajos Molnar * You may obtain a copy of the License at 773dd808754c641fe798273d356ee38368715fa7bLajos Molnar * 873dd808754c641fe798273d356ee38368715fa7bLajos Molnar * http://www.apache.org/licenses/LICENSE-2.0 973dd808754c641fe798273d356ee38368715fa7bLajos Molnar * 1073dd808754c641fe798273d356ee38368715fa7bLajos Molnar * Unless required by applicable law or agreed to in writing, software 1173dd808754c641fe798273d356ee38368715fa7bLajos Molnar * distributed under the License is distributed on an "AS IS" BASIS, 1273dd808754c641fe798273d356ee38368715fa7bLajos Molnar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1373dd808754c641fe798273d356ee38368715fa7bLajos Molnar * See the License for the specific language governing permissions and 1473dd808754c641fe798273d356ee38368715fa7bLajos Molnar * limitations under the License. 1573dd808754c641fe798273d356ee38368715fa7bLajos Molnar */ 1673dd808754c641fe798273d356ee38368715fa7bLajos Molnar 1773dd808754c641fe798273d356ee38368715fa7bLajos Molnar#ifndef OMX_UTILS_H_ 1873dd808754c641fe798273d356ee38368715fa7bLajos Molnar#define OMX_UTILS_H_ 1973dd808754c641fe798273d356ee38368715fa7bLajos Molnar 201ad5b240bfd49aa918092dbdc18c1a24c5e6c3a4Wonsik Kim#include <media/IOMX.h> 211ad5b240bfd49aa918092dbdc18c1a24c5e6c3a4Wonsik Kim 2273dd808754c641fe798273d356ee38368715fa7bLajos Molnar/***** DO NOT USE THIS INCLUDE!!! INTERAL ONLY!!! UNLESS YOU RESIDE IN media/libstagefright *****/ 2373dd808754c641fe798273d356ee38368715fa7bLajos Molnar 2473dd808754c641fe798273d356ee38368715fa7bLajos Molnar// OMXUtils contains omx-specific utility functions for stagefright/omx library 2573dd808754c641fe798273d356ee38368715fa7bLajos Molnar// TODO: move ACodec and OMXClient into this library 2673dd808754c641fe798273d356ee38368715fa7bLajos Molnar 2773dd808754c641fe798273d356ee38368715fa7bLajos Molnarnamespace android { 2873dd808754c641fe798273d356ee38368715fa7bLajos Molnar 2973dd808754c641fe798273d356ee38368715fa7bLajos Molnartemplate<class T> 3073dd808754c641fe798273d356ee38368715fa7bLajos Molnarstatic void InitOMXParams(T *params) { 3173dd808754c641fe798273d356ee38368715fa7bLajos Molnar memset(params, 0, sizeof(T)); 3273dd808754c641fe798273d356ee38368715fa7bLajos Molnar params->nSize = sizeof(T); 3373dd808754c641fe798273d356ee38368715fa7bLajos Molnar params->nVersion.s.nVersionMajor = 1; 3473dd808754c641fe798273d356ee38368715fa7bLajos Molnar params->nVersion.s.nVersionMinor = 0; 3573dd808754c641fe798273d356ee38368715fa7bLajos Molnar params->nVersion.s.nRevision = 0; 3673dd808754c641fe798273d356ee38368715fa7bLajos Molnar params->nVersion.s.nStep = 0; 3773dd808754c641fe798273d356ee38368715fa7bLajos Molnar} 3873dd808754c641fe798273d356ee38368715fa7bLajos Molnar 3973dd808754c641fe798273d356ee38368715fa7bLajos Molnarstatus_t StatusFromOMXError(OMX_ERRORTYPE err); 4073dd808754c641fe798273d356ee38368715fa7bLajos Molnar 411ad5b240bfd49aa918092dbdc18c1a24c5e6c3a4Wonsik Kimconst char *GetComponentRole(bool isEncoder, const char *mime); 42d59b97223424a3974d2ac31cff998d02eecf2eedChong Zhangstatus_t SetComponentRole(const sp<IOMXNode> &omxNode, const char *role); 431ad5b240bfd49aa918092dbdc18c1a24c5e6c3a4Wonsik Kim 441ad5b240bfd49aa918092dbdc18c1a24c5e6c3a4Wonsik Kimstruct DescribeColorFormat2Params; 451ad5b240bfd49aa918092dbdc18c1a24c5e6c3a4Wonsik Kim 461ad5b240bfd49aa918092dbdc18c1a24c5e6c3a4Wonsik Kimbool IsFlexibleColorFormat( 47d59b97223424a3974d2ac31cff998d02eecf2eedChong Zhang const sp<IOMXNode> &omxNode, uint32_t colorFormat, 48d59b97223424a3974d2ac31cff998d02eecf2eedChong Zhang bool usingNativeBuffers, OMX_U32 *flexibleEquivalent); 491ad5b240bfd49aa918092dbdc18c1a24c5e6c3a4Wonsik Kimbool DescribeDefaultColorFormat(DescribeColorFormat2Params &describeParams); 501ad5b240bfd49aa918092dbdc18c1a24c5e6c3a4Wonsik Kimbool DescribeColorFormat( 51d59b97223424a3974d2ac31cff998d02eecf2eedChong Zhang const sp<IOMXNode> &omxNode, 521ad5b240bfd49aa918092dbdc18c1a24c5e6c3a4Wonsik Kim DescribeColorFormat2Params &describeParams); 531ad5b240bfd49aa918092dbdc18c1a24c5e6c3a4Wonsik Kim 54d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhanginline static const char *asString(MetadataBufferType i, const char *def = "??") { 55d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang using namespace android; 56d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang switch (i) { 57d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang case kMetadataBufferTypeCameraSource: return "CameraSource"; 58d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang case kMetadataBufferTypeGrallocSource: return "GrallocSource"; 59d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang case kMetadataBufferTypeANWBuffer: return "ANWBuffer"; 60d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang case kMetadataBufferTypeNativeHandleSource: return "NativeHandleSource"; 61d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang case kMetadataBufferTypeInvalid: return "Invalid"; 62d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang default: return def; 63d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang } 64d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang} 65d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang 66d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhanginline static const char *asString(IOMX::PortMode mode, const char *def = "??") { 67d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang using namespace android; 68d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang switch (mode) { 69d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang case IOMX::kPortModePresetByteBuffer: return "PresetByteBuffer"; 70d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang case IOMX::kPortModePresetANWBuffer: return "PresetANWBuffer"; 71d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang case IOMX::kPortModePresetSecureBuffer: return "PresetSecureBuffer"; 72d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang case IOMX::kPortModeDynamicANWBuffer: return "DynamicANWBuffer"; 73d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang case IOMX::kPortModeDynamicNativeHandle:return "DynamicNativeHandle"; 74d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang default: return def; 75d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang } 76d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang} 77d02c08671d666e12a94bcadd943787a9ab2ceea8Chong Zhang 7873dd808754c641fe798273d356ee38368715fa7bLajos Molnar} // namespace android 7973dd808754c641fe798273d356ee38368715fa7bLajos Molnar 8073dd808754c641fe798273d356ee38368715fa7bLajos Molnar#endif 81