/* * Copyright (C) 2014 The CyanogenMod 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 FFMPEG_SOFT_CODEC_H_ #define FFMPEG_SOFT_CODEC_H_ #include #include #include #include #include #include #include namespace android { struct FFMPEGSoftCodec { enum { kPortIndexInput = 0, kPortIndexOutput = 1 }; static void convertMessageToMetaDataFF( const sp &msg, sp &meta); static void convertMetaDataToMessageFF( const sp &meta, sp *format); static const char* overrideComponentName( uint32_t quirks, const sp &meta, const char *mime, bool isEncoder); static void overrideComponentName( uint32_t quirks, const sp &msg, AString* componentName, AString* mime, int32_t isEncoder); static status_t setSupportedRole( const sp &omx, IOMX::node_id node, bool isEncoder, const char *mime); static status_t setAudioFormat( const sp &msg, const char* mime, sp OMXhandle, IOMX::node_id nodeID); static status_t setVideoFormat( status_t status, const sp &msg, const char* mime, sp OMXhandle,IOMX::node_id nodeID, bool isEncoder, OMX_VIDEO_CODINGTYPE *compressionFormat, const char* componentName); static status_t getAudioPortFormat( OMX_U32 portIndex, int coding, sp ¬ify, sp OMXhandle, IOMX::node_id nodeID); static status_t getVideoPortFormat( OMX_U32 portIndex, int coding, sp ¬ify, sp OMXhandle, IOMX::node_id nodeID); private: static const char* getMsgKey(int key); static status_t setWMVFormat( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); static status_t setRVFormat( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); static status_t setFFmpegVideoFormat( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); static status_t setRawAudioFormat( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); static status_t setWMAFormat( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); static status_t setVORBISFormat( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); static status_t setRAFormat( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); static status_t setFLACFormat( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); static status_t setMP2Format( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); static status_t setAC3Format( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); static status_t setAPEFormat( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); static status_t setDTSFormat( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); static status_t setFFmpegAudioFormat( const sp &msg, sp OMXhandle, IOMX::node_id nodeID); #ifdef QCOM_HARDWARE static status_t setQCDIVXFormat( const sp &msg, const char* mime, sp OMXhandle, IOMX::node_id nodeID, int port_index); #endif }; } #endif