omxilvideocomps/omxilgraphicsink/src/omxilgraphicsinkvpb0port.h
author hgs
Fri, 08 Oct 2010 22:09:17 +0100
changeset 0 5d29cba61097
permissions -rw-r--r--
2010wk38_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     1
/*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     2
* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     3
* All rights reserved.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     8
*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
     9
* Initial Contributors:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    11
*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    12
* Contributors:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    13
*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    14
* Description:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    15
*
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    16
*/
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    17
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    18
/**
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    19
 @file
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    20
 @internalComponent
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    21
*/
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    22
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    23
#ifndef OMXILGRAPHICSINKVPB0PORT_H
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    24
#define OMXILGRAPHICSINKVPB0PORT_H
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    25
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    26
#include <openmax/il/common/omxilvideoport.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    27
#include "omxilgraphicsinkprocessingfunction.h"
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    28
#include <openmax/il/extensions/omxilsymbianvideographicsinkextensions.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    29
#include <openmax/il/shai/OMX_Symbian_ComponentExt.h>
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    30
#include "mmfbuffershared.h"
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    31
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    32
/**
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    33
Class COmxILGraphicSinkVPB0Port represents the input port 0 for the OpenMAX IL based graphics sink component.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    34
*/
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    35
class COmxILGraphicSinkVPB0Port : public COmxILVideoPort
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    36
	{	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    37
public:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    38
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    39
	static COmxILGraphicSinkVPB0Port* NewL(
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    40
		const TOmxILCommonPortData& aCommonPortData,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    41
		const RArray<OMX_VIDEO_CODINGTYPE>& aSupportedVideoFormats,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    42
		const RArray<OMX_COLOR_FORMATTYPE>& aSupportedColorFormats,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    43
		COmxILGraphicSinkProcessingFunction& aGraphicSinkPF);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    44
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    45
	~COmxILGraphicSinkVPB0Port();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    46
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    47
	OMX_ERRORTYPE GetLocalOmxParamIndexes(RArray<TUint>& aIndexArray) const;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    48
	OMX_ERRORTYPE GetLocalOmxConfigIndexes(RArray<TUint>& aIndexArray) const;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    49
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    50
	OMX_ERRORTYPE GetParameter(OMX_INDEXTYPE aParamIndex, TAny* apComponentParameterStructure) const;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    51
	OMX_ERRORTYPE SetParameter(OMX_INDEXTYPE aParamIndex, const TAny* apComponentParameterStructure, TBool& aUpdateProcessingFunction);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    52
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    53
	OMX_ERRORTYPE GetConfig(OMX_INDEXTYPE aConfigIndex, TAny* apComponentConfigStructure) const;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    54
	OMX_ERRORTYPE SetConfig(OMX_INDEXTYPE aConfigIndex, const TAny* apComponentConfigStructure, TBool& aUpdateProcessingFunction);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    55
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    56
	OMX_ERRORTYPE GetExtensionIndex(OMX_STRING aParameterName, OMX_INDEXTYPE* apIndexType) const;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    57
	OMX_ERRORTYPE ValidateStride();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    58
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    59
private:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    60
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    61
	COmxILGraphicSinkVPB0Port(
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    62
		COmxILGraphicSinkProcessingFunction& aGraphicSinkPF);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    63
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    64
	void ConstructL(const TOmxILCommonPortData& aCommonPortData,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    65
	        const RArray<OMX_VIDEO_CODINGTYPE>& aSupportedVideoFormats,
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    66
	        const RArray<OMX_COLOR_FORMATTYPE>& aSupportedColorFormats);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    67
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    68
	OMX_ERRORTYPE SetFormatInPortDefinition(const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition, TBool& aUpdateProcessingFunction);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    69
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    70
	TBool IsTunnelledPortCompatible(const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition) const;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    71
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    72
	OMX_ERRORTYPE DoBufferAllocation(OMX_U32 aSizeBytes, OMX_U8*& apPortSpecificBuffer, OMX_PTR& apPortPrivate, OMX_PTR& apPlatformPrivate, OMX_PTR apAppPrivate = 0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    73
	void DoBufferDeallocation(OMX_PTR apPortSpecificBuffer, OMX_PTR apPortPrivate, OMX_PTR apPlatformPrivate, OMX_PTR apAppPrivate = 0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    74
	OMX_ERRORTYPE DoBufferWrapping(OMX_U32 aSizeBytes, OMX_U8* apBuffer, OMX_PTR& apPortPrivate, OMX_PTR& apPlatformPrivate, OMX_PTR apAppPrivate = 0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    75
	void DoBufferUnwrapping(OMX_PTR apPortSpecificBuffer, OMX_PTR apPortPrivate, OMX_PTR apPlatformPrivate, OMX_PTR apAppPrivate = 0);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    76
	OMX_ERRORTYPE DoOmxUseBuffer(OMX_HANDLETYPE aTunnelledComponent, OMX_BUFFERHEADERTYPE** appBufferHdr, OMX_U32 aTunnelledPortIndex, OMX_PTR apPortPrivate, OMX_PTR apPlatformPrivate, OMX_U32 aSizeBytes, OMX_U8* apBuffer);
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    77
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    78
	void InitParamsAndConfigs();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    79
	void UpdateParamInPortDefinitionStruct();
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    80
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    81
private:
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    82
	/** The reference of GraphicSink ProcessingFunction. */
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    83
	COmxILGraphicSinkProcessingFunction& iGraphicSinkPF;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    84
	/** The type of Mime. */
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    85
	RBuf8 iMimeTypeBuf;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    86
	
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    87
	// The scaling size of video or image data.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    88
	OMX_CONFIG_SCALEFACTORTYPE iConfigScaleFactor;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    89
	// The size of frame.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    90
	OMX_FRAMESIZETYPE iConfigFrameSize;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    91
	// The size of rectangle.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    92
	OMX_CONFIG_RECTTYPE iConfigRec;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    93
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    94
	// Extension to provide a structure for Surface Configuration.
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    95
	OMX_SYMBIAN_VIDEO_PARAM_SURFACECONFIGURATION iParamVideoSurfaceConfiguration;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    96
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    97
    TMMSharedChunkBufConfig iSharedChunkBufConfig;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    98
    OMX_INDEXTYPE iSharedChunkMetadataExtensionIndex;
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
    99
	};
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   100
5d29cba61097 2010wk38_02
hgs
parents:
diff changeset
   101
#endif // OMXILGRAPHICSINKVPB0PORT_H