diff -r 000000000000 -r 40261b775718 imagingandcamerafws/imagingfws/src/ImageRelay.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imagingandcamerafws/imagingfws/src/ImageRelay.cpp Tue Feb 02 01:56:55 2010 +0200 @@ -0,0 +1,156 @@ +// Copyright (c) 2002-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: +// + +#include "ImageRelay.h" +#include "icl/ImageConstruct.h" +#include "ImageClientMain.h" +#include "ImageStraightRelay.h" +#include "ThreadRelay.h" +#include "ImageClientMain.h" +#include "fwextconstants.h" +// +// MImageDecoderRelay +// +MImageDecoderRelay* MImageDecoderRelay::NewL(CImageDecodeConstruct* aConstruct, TBool aAlwaysThread) + { + TBool wantThread = aAlwaysThread || aConstruct->RequestThread(); + + if (wantThread) + return CThreadDecoderRelay::NewL(aConstruct); + else + return CImageDecoderStraightRelay::NewL(aConstruct); + } + +MImageDecoderRelay::~MImageDecoderRelay() + { + } + +// +// CImageConvExtensionCache +// +CImageConvExtensionCache* CImageConvExtensionCache::NewL() + { + return new (ELeave) CImageConvExtensionCache(); + } + +CImageConvExtensionCache::~CImageConvExtensionCache() + { + iProxyList.ResetAndDestroy(); + + delete iOperationExtension; + iOperationExtension = NULL; + delete iScalerExtension; + iScalerExtension = NULL; + delete iStreamedDecodeExtension; + iStreamedDecodeExtension = NULL; + delete iStreamedEncodeExtension; + iStreamedEncodeExtension = NULL; + } + +TImageConvOperation* CImageConvExtensionCache::Operation() + { + return iOperationExtension; + } + +TImageConvScaler* CImageConvExtensionCache::Scaler() + { + return iScalerExtension; + } + +TImageConvStreamedDecode* CImageConvExtensionCache::DecodeBlockStreamer() + { + return iStreamedDecodeExtension; + } + +TImageConvStreamedEncode* CImageConvExtensionCache::EncodeBlockStreamer() + { + return iStreamedEncodeExtension; + } + +TImageConvPrepare* CImageConvExtensionCache::Prepare() + { + return iPrepareExtension; + } + +void CImageConvExtensionCache::SetOperationExtension(TImageConvOperation* aOperationExtension) + { + __ASSERT_ALWAYS(!iOperationExtension, Panic(EExtensionAlreadySet)); + iOperationExtension = aOperationExtension; + } + +void CImageConvExtensionCache::SetScalerExtension(TImageConvScaler* aScalerExtension) + { + __ASSERT_ALWAYS(!iScalerExtension, Panic(EExtensionAlreadySet)); + iScalerExtension = aScalerExtension; + } + +void CImageConvExtensionCache::SetBlockStreamerExtension(TImageConvStreamedDecode* aStreamedDecodeExtension) + { + __ASSERT_ALWAYS(!iStreamedDecodeExtension, Panic(EExtensionAlreadySet)); + iStreamedDecodeExtension = aStreamedDecodeExtension; + } + +void CImageConvExtensionCache::SetBlockStreamerExtension(TImageConvStreamedEncode* aStreamedEncodeExtension) + { + __ASSERT_ALWAYS(!iStreamedEncodeExtension, Panic(EExtensionAlreadySet)); + iStreamedEncodeExtension = aStreamedEncodeExtension; + } + +void CImageConvExtensionCache::SetPrepareExtension(TImageConvPrepare* aPrepareExtension) + { + __ASSERT_ALWAYS(!iPrepareExtension, Panic(EExtensionAlreadySet)); + iPrepareExtension = aPrepareExtension; + } + +void CImageConvExtensionCache::SetProxyL(CImageConvProxyBase* aProxy) + { + iProxyList.AppendL(aProxy); + } + +// +// MImageEncoderRelay +// + +MImageEncoderRelay* MImageEncoderRelay::NewL(CImageEncodeConstruct* aConstruct, TBool aAlwaysThread) + { + TBool wantThread = aAlwaysThread || aConstruct->RequestThread(); + + if (wantThread) + return CThreadEncoderRelay::NewL(aConstruct); + else + return CImageEncoderStraightRelay::NewL(aConstruct); + } + +MImageEncoderRelay::~MImageEncoderRelay() + { + } + +TImageConvPrepare::TImageConvPrepare() +: iExtension(NULL) + { + } + +void TImageConvPrepare::Prepare(TRequestStatus* aStatus) + { + __ASSERT_ALWAYS(iExtension != NULL, Panic(ENullImageConvExtension)); + return iExtension->Prepare(aStatus); + } + +void TImageConvPrepare::SetExtension(MImageConvExtension* aExtension) + { + __ASSERT_ALWAYS(aExtension->Uid() == KICLPrepareUid, Panic(EInvalidFwExtensionUid)); + iExtension = static_cast(aExtension); + } +