diff -r 000000000000 -r 5d29cba61097 omxilvideocomps/omxilgraphicsink/tsrc/src/omxilmmbuffer.cpp --- /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(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& COmxILMMBuffer::OffsetInfoArray() + { + return iArrayOffsets; + }