diff -r 000000000000 -r bb31fbe78861 h264_enc/arih264encwrapper/export_hdr/arivideoenccommon.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/h264_enc/arih264encwrapper/export_hdr/arivideoenccommon.h Fri Jul 23 16:58:44 2010 +0100 @@ -0,0 +1,227 @@ +/* +* Copyright (c) 2009 Aricent and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Aricent - initial contribution. +* +* Contributors: +* +* Description: +* Defines the structures shared by HwDevice and wrapper +* +*/ + +#ifndef ARIVIDEOENCCOMMON_H +#define ARIVIDEOENCCOMMON_H + +#include +#include +#include + +#define MAX_SCALABILITY_LAYERS 1 + + +//Control SUB MEssages +enum TSetCommands + { + CONTROL_CMD_SET_BIT_RATE = 2051, + CONTROL_CMD_SET_FRAME_RATE = 2052, + CONTROL_CMD_SET_FORCED_I_FRAME = 2053, + CONTROL_CMD_SET_GOVLENGTH = 2054, + CONTROL_CMD_SET_CHANNEL_PACKET_LOSS_RATE = 2059, + CONTROL_CMD_SET_CHANNEL_BIT_ERROR_RATE = 2060, + CONTROL_CMD_SET_SEGMENT_TARGET_SIZE = 2061, + CONTROL_CMD_SET_RATE_CONTROL_OPTIONS = 2062, + CONTROL_CMD_SET_COMMIT_OPTIONS = 2065, + CONTROL_CMD_SET_COMPLEXITY_LEVEL = 2068, + CONTROL_CMD_SET_SLICELOSS = 2069, + CONTROL_CMD_SET_PACKET_SIZE = 2070, + CONTROL_CMD_SET_PACKET_MODE = 2071, + CONTROL_CMD_SET_FRAME_MODE = 2072 + }; + +enum TGetCommands + { + CONTROL_CMD_GET_CONFIG_HEADER = 3051, + CONTROL_CMD_GET_PACKET_OFFSET_DATA, + CONTROL_CMD_GET_MAX_FRAME_SIZE, + CONTROL_CMD_GET_MAX_NUM_PACKETS, + CONTROL_CMD_GET_CONFIG_LENGTH, + CONTROL_CMD_GET_PICTURES_SKIPPED + + + }; + +/* + Enumeration covering SetInputFormatL, SetOutputFormatL, SetInputDevice, + SetNumBitrateLayersL, SetScalabilityLayerTypeL, SetGlobalReferenceOptions, + SetBufferOptionsL, SetMinRandomAccessRate,SetSourceMemoryL of Hw Device. + All these seven methods can be called only before + Initialize. +*/ + +enum TOutputFormat + { + EH264 = 0x00000001, + }; + + +enum TPanicCodes + { + EPanicArgument=1, + EPanicInitializationPreCondViolation, + EPanicNotSupported, + EPanicNotPaused, + EPanicNotFreezed, + EPanicInvalidState, + EPanicAlreadyStopped + }; + +enum TEncBeforeInitialize + { + EEncBeforeInitNone = 0x00000000, + EEncInputFormat = 0x00000001, + EEncOutputFormat = 0x00000002, + EEncInputDevice = 0x00000004, + EEncNumBitrateLayers = 0x00000008, + EEncScalabilityLayer = 0x00000010, + EEncGlobalRefOptions = 0x00000020, + EEncBufferOptions = 0x00000040, + EEncRandomAccessRate = 0x00000080, + EEncSourceMemory = 0x00000100, + EEncInpBufferOptions = 0x00000200, + EEncErrorProtectionLevelFEC = 0x00000400, + EEncSegmentTargetSize = 0x00000800, + EEncCodingStandardSpecificOptions = 0x00001000, + EEncOutputRectSize = 0x00002000, + EEncErrorsExpected = 0x00004000, + EEncSourceCamera = 0x00008000, + EEncComplexityLevel = 0x00010000, + EEncLayerRefOptions = 0x00020000, + }; + +class TH264EncLayerReferenceOptions +{ +public: + TUint iMaxReferencePictures; + TUint iMaxPictureOrderDelay; + + TH264EncLayerReferenceOptions () : + iMaxReferencePictures (1), + iMaxPictureOrderDelay (0) + { + } +}; + +/* + * slice loss structure +*/ +class TH264EncSliceLoss +{ +public: + TUint iFirstMacroblock; + TUint iNumMacroblocks; + + TH264EncSliceLoss() : + iFirstMacroblock (0), + iNumMacroblocks (0) + { + } +}; + +/* + * Parameters used by the HwDevice which are sent to codec +*/ + +class TH264EncInitParams + { +public: + // Specifies which parameters are being sent in the Initialize method + TUint32 iBeforeInitialize; + TUint32 iAfterInitialize; + + // For SetInputFormatL + TUncompressedVideoFormat iInputFormat; + TInt32 iAspectRatio; + TSize iPictureSize; + + // For SetOutputFormatL + TOutputFormat iOutputFormat; + TVideoDataUnitType iDataUnitType; + TVideoDataUnitEncapsulation iDataEncapsulation; + TBool iSegmentationAllowed; + + // For SetSourceMemoryL + TReal iMaxPictureRate; + TBool iConstantPictureRate; + TBool iProcessRealtime; + TUint iNumInputBuffers; + TSize iInputSize; + + // For SetNumBitrateLayersL + TUint iNumBitRateLayers; + + // For SetScalabilityLayerTypeL + TUint iLayer; + TScalabilityType iScalabilityType; + + // For SetGlobalReferenceOptions & SetLayerReferenceOptions + TH264EncLayerReferenceOptions iLayerReferenceOptions[ + MAX_SCALABILITY_LAYERS]; + + // For SetBufferOptionsL + TUint iMaxPreEncoderBufferPictures; + THrdVbvSpecification iHrdVbvSpec; + T3gppHrdVbvParams iHrdVbvParams; + TUint iMaxOutputBufferSize; + TUint iMaxCodedPictureSize; + TUint iMaxCodedSegmentSize; + TUint iMinNumOutputBuffers; + + // For SetErrorProtectionLevelL + TUint iFECStrength; + + // For SetRamdomAccessRate + TReal iRandomAccessRate; + + // For SetOutputRectL + TRect iOutputRect; + + // For SetCodingStandardSpecificOptionsL + TAvcVideoMode iCodingStandardSpecificOptions; + + + // For SetErrorsExpected + TBool iBitErrors; + TBool iPacketLosses; + + // For SetMinRandomAccessRate + TReal iRate; + TInt iLevel; + + TUint iBitRate; + TReal iTargetPictureRate; + // complexity level + TUint iComplexityLevel; + + //for H324AnnexK VTFastCallSetUp + TBool iVTFastCallSetUp; + }; + + +class TPictureCountersInfo + { +public: + TUint iPicturesSkippedBufferOverflow; + TUint iPicturesSkippedProcPower; + TUint iPicturesSkippedRateControl; + TUint iPicturesProcessed; + TUint iInputPictures; + }; + +#endif //ARIVIDEOENCCOMMON_H