1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#ifndef OMX_UTILS_H_ 18#define OMX_UTILS_H_ 19 20#include <media/IOMX.h> 21 22/***** DO NOT USE THIS INCLUDE!!! INTERAL ONLY!!! UNLESS YOU RESIDE IN media/libstagefright *****/ 23 24// OMXUtils contains omx-specific utility functions for stagefright/omx library 25// TODO: move ACodec and OMXClient into this library 26 27namespace android { 28 29template<class T> 30static void InitOMXParams(T *params) { 31 memset(params, 0, sizeof(T)); 32 params->nSize = sizeof(T); 33 params->nVersion.s.nVersionMajor = 1; 34 params->nVersion.s.nVersionMinor = 0; 35 params->nVersion.s.nRevision = 0; 36 params->nVersion.s.nStep = 0; 37} 38 39status_t StatusFromOMXError(OMX_ERRORTYPE err); 40 41const char *GetComponentRole(bool isEncoder, const char *mime); 42status_t SetComponentRole(const sp<IOMXNode> &omxNode, const char *role); 43 44struct DescribeColorFormat2Params; 45 46bool IsFlexibleColorFormat( 47 const sp<IOMXNode> &omxNode, uint32_t colorFormat, 48 bool usingNativeBuffers, OMX_U32 *flexibleEquivalent); 49bool DescribeDefaultColorFormat(DescribeColorFormat2Params &describeParams); 50bool DescribeColorFormat( 51 const sp<IOMXNode> &omxNode, 52 DescribeColorFormat2Params &describeParams); 53 54inline static const char *asString(MetadataBufferType i, const char *def = "??") { 55 using namespace android; 56 switch (i) { 57 case kMetadataBufferTypeCameraSource: return "CameraSource"; 58 case kMetadataBufferTypeGrallocSource: return "GrallocSource"; 59 case kMetadataBufferTypeANWBuffer: return "ANWBuffer"; 60 case kMetadataBufferTypeNativeHandleSource: return "NativeHandleSource"; 61 case kMetadataBufferTypeInvalid: return "Invalid"; 62 default: return def; 63 } 64} 65 66inline static const char *asString(IOMX::PortMode mode, const char *def = "??") { 67 using namespace android; 68 switch (mode) { 69 case IOMX::kPortModePresetByteBuffer: return "PresetByteBuffer"; 70 case IOMX::kPortModePresetANWBuffer: return "PresetANWBuffer"; 71 case IOMX::kPortModePresetSecureBuffer: return "PresetSecureBuffer"; 72 case IOMX::kPortModeDynamicANWBuffer: return "DynamicANWBuffer"; 73 case IOMX::kPortModeDynamicNativeHandle:return "DynamicNativeHandle"; 74 default: return def; 75 } 76} 77 78} // namespace android 79 80#endif 81