omxilvideocomps/omxilgraphicsink/tsrc/src/omxilmmbuffer.cpp
changeset 0 5d29cba61097
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omxilvideocomps/omxilgraphicsink/tsrc/src/omxilmmbuffer.cpp	Fri Oct 08 22:09:17 2010 +0100
@@ -0,0 +1,220 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "omxilmmbuffer.h"
+
+EXPORT_C COmxILMMBuffer* COmxILMMBuffer::NewL(const RChunk& aChunk)
+	{
+	COmxILMMBuffer* self = new (ELeave) COmxILMMBuffer(aChunk);
+	return self;
+	}
+	
+EXPORT_C COmxILMMBuffer* COmxILMMBuffer::CreateL(const COmxILMMBuffer& aCamBuf)
+	{
+	COmxILMMBuffer* self = new (ELeave) COmxILMMBuffer(aCamBuf);
+	return self;
+	}
+
+EXPORT_C COmxILMMBuffer::~COmxILMMBuffer()
+	{	
+	iArrayOffsets.Close();
+	}
+	
+COmxILMMBuffer::COmxILMMBuffer(const RChunk& aChunk) 
+  : iChunk(const_cast<RChunk&>(aChunk)),
+  iChunkOwnerThreadId(RThread().Id())
+	{
+	// reset offsets
+	iArrayOffsets.Reset();
+	}
+
+COmxILMMBuffer::COmxILMMBuffer(const COmxILMMBuffer& aCamBuf)
+: iSurfaceId(aCamBuf.iSurfaceId),
+  iSurfaceInfo(aCamBuf.iSurfaceInfo),
+  iChunk(aCamBuf.iChunk),
+  iChunkOwnerThreadId(aCamBuf.iChunkOwnerThreadId)
+	{
+	// reset offsets
+	iArrayOffsets.Reset();
+	
+	// deep copy
+	for (TInt i = 0 ; i < aCamBuf.iArrayOffsets.Count() ; i++)
+		{
+		iArrayOffsets.Append(aCamBuf.iArrayOffsets[i]);
+		}
+	}
+		
+EXPORT_C RChunk& COmxILMMBuffer::Chunk()
+	{
+	return iChunk;
+	}
+
+EXPORT_C TSurfaceId& COmxILMMBuffer::SurfaceId()
+	{
+	return iSurfaceId;
+	}
+
+EXPORT_C TThreadId& COmxILMMBuffer::ChunkOwnerThreadId()
+	{
+	return iChunkOwnerThreadId;
+	}
+
+EXPORT_C RSurfaceManager::TSurfaceInfoV01& COmxILMMBuffer::SurfaceInfoV01()
+	{
+	return iSurfaceInfo;
+	}
+
+//EXPORT_C void COmxILMMBuffer::SetChunk(RChunk* aChunk) {iChunk = *aChunk;}
+//EXPORT_C void COmxILMMBuffer::SetSurfaceId(TSurfaceId* aSurfaceId) {iSurfaceId = &aSurfacdId;}
+
+EXPORT_C TInt COmxILMMBuffer::BytesPerPixel(OMX_COLOR_FORMATTYPE aPixelFormat)
+	{
+	switch (aPixelFormat)
+		{
+		//fall through
+		
+		//case EUidPixelFormatRGB_565:
+		case OMX_COLOR_Format16bitRGB565:
+    	//case EUidPixelFormatBGR_565:
+    	case OMX_COLOR_Format16bitBGR565:		
+		//case EUidPixelFormatARGB_1555:
+		case OMX_COLOR_Format16bitARGB1555:
+		//case EUidPixelFormatXRGB_1555:
+		//case EUidPixelFormatARGB_4444:
+		case OMX_COLOR_Format16bitARGB4444:
+		//case EUidPixelFormatARGB_8332:
+		case OMX_COLOR_Format8bitRGB332:
+		//case EUidPixelFormatBGRX_5551:
+		//case EUidPixelFormatBGRA_5551:
+		//case EUidPixelFormatBGRA_4444:
+		//case EUidPixelFormatBGRX_4444:
+		//case EUidPixelFormatAP_88:
+		//case EUidPixelFormatXRGB_4444:
+		//case EUidPixelFormatXBGR_4444:
+		//case EUidPixelFormatYUV_422Interleaved:
+		//case EUidPixelFormatYUV_422Planar:
+		case OMX_COLOR_FormatYUV422Planar:
+		//case EUidPixelFormatYUV_422Reversed:
+		case OMX_COLOR_FormatYCrYCb:
+		//case EUidPixelFormatYUV_422SemiPlanar:
+		case OMX_COLOR_FormatYUV422SemiPlanar:
+		//case EUidPixelFormatYUV_422InterleavedReversed:
+		//case EUidPixelFormatYYUV_422Interleaved:
+		case OMX_COLOR_FormatCbYCrY:
+		case OMX_COLOR_FormatYCbYCr:
+		case OMX_COLOR_FormatRawBayer10bit:
+		   	{
+			return 2;
+			}
+			
+		//fall through
+		//case EUidPixelFormatXRGB_8888:
+		//case EUidPixelFormatBGRX_8888:
+		//case EUidPixelFormatXBGR_8888:
+		//case EUidPixelFormatBGRA_8888:
+		case OMX_COLOR_Format32bitBGRA8888:
+    	//case EUidPixelFormatARGB_8888:
+		case OMX_COLOR_Format32bitARGB8888:
+		//case EUidPixelFormatABGR_8888:
+		//case EUidPixelFormatARGB_8888_PRE:
+		//case EUidPixelFormatABGR_8888_PRE:
+		//case EUidPixelFormatBGRA_8888_PRE:
+		//case EUidPixelFormatARGB_2101010:
+		//case EUidPixelFormatABGR_2101010:
+			{
+			return 4;
+			}
+			
+		//fall through	
+		//case EUidPixelFormatBGR_888:
+		case OMX_COLOR_Format24bitBGR888:
+		//case EUidPixelFormatRGB_888:
+		case OMX_COLOR_Format24bitRGB888:
+			{
+			return 3;	
+			}
+			
+		default:
+			return 0;
+		}
+	}
+
+EXPORT_C TInt COmxILMMBuffer::BytesPerPixel(TUidPixelFormat aPixelFormat)
+	{
+	switch (aPixelFormat)
+		{
+		//fall through
+		
+		case EUidPixelFormatRGB_565:
+    	case EUidPixelFormatBGR_565:
+		case EUidPixelFormatARGB_1555:
+		case EUidPixelFormatXRGB_1555:
+		case EUidPixelFormatARGB_4444:
+		case EUidPixelFormatARGB_8332:
+		case EUidPixelFormatBGRX_5551:
+		case EUidPixelFormatBGRA_5551:
+		case EUidPixelFormatBGRA_4444:
+		case EUidPixelFormatBGRX_4444:
+		case EUidPixelFormatAP_88:
+		case EUidPixelFormatXRGB_4444:
+		case EUidPixelFormatXBGR_4444:
+		case EUidPixelFormatYUV_422Interleaved:
+		case EUidPixelFormatYUV_422Planar:
+		case EUidPixelFormatYUV_422Reversed:
+		case EUidPixelFormatYUV_422SemiPlanar:
+		case EUidPixelFormatYUV_422InterleavedReversed:
+		case EUidPixelFormatRawBayer10bit:
+		   	{
+			return 2;
+			}
+			
+		//fall through
+		case EUidPixelFormatXRGB_8888:
+		case EUidPixelFormatBGRX_8888:
+		case EUidPixelFormatXBGR_8888:
+		case EUidPixelFormatBGRA_8888:
+		case EUidPixelFormatARGB_8888:
+		case EUidPixelFormatABGR_8888:
+		case EUidPixelFormatARGB_8888_PRE:
+		case EUidPixelFormatABGR_8888_PRE:
+		case EUidPixelFormatBGRA_8888_PRE:
+		case EUidPixelFormatARGB_2101010:
+		case EUidPixelFormatABGR_2101010:
+			{
+			return 4;
+			}
+			
+		//fall through	
+		case EUidPixelFormatBGR_888:
+		case EUidPixelFormatRGB_888:
+			{
+			return 3;	
+			}
+			
+		default:
+			return 0;
+		}
+	}
+
+EXPORT_C RArray<TInt>& COmxILMMBuffer::OffsetInfoArray()
+	{
+	return iArrayOffsets;
+	}