OMX_ERRORTYPE EnableDataFlow::freeHandles()
{
    DBGT_PROLOG("");

    OMX_ERRORTYPE err = OMX_ErrorNone;

    DBGT_ASSERT(NULL != mArmIvProc, "mArmIvProc is NULL");
    DBGT_ASSERT(NULL != mSwJpegEnc, "mSwJpegEnc is NULL");

    DBGT_PTRACE("Sending ArmIv to unloaded State");
    err = mOmxUtils.interface()->GetpOMX_FreeHandle()(mArmIvProc);
    if(OMX_ErrorNone != err) {
        DBGT_CRITICAL("GetpOMX_FreeHandle ArmIVProc failed err = %d", err);
        DBGT_EPILOG("");
        return err;
    }

    mArmIvProc = NULL ;

    DBGT_PTRACE("Sending SwJpegEnc to unloaded State");
    err = mOmxUtils.interface()->GetpOMX_FreeHandle()(mSwJpegEnc);
    if(OMX_ErrorNone != err) {
        DBGT_CRITICAL("GetpOMX_FreeHandle SwJpegenc failed err = %d", err);
        DBGT_EPILOG("");
        return err;
    }

    mSwJpegEnc = NULL ;

    DBGT_EPILOG("");
    return err;
}
OMX_ERRORTYPE DisableDataFlow::updateSnapShot(const ImageInfo &aPreviewInfo)
{
    DBGT_PROLOG("");

    DBGT_EPILOG("");
    return OMX_ErrorNone;
}
OMX_ERRORTYPE EnableDataFlow::setupTunneling()
{
    DBGT_PROLOG("");

    OMX_ERRORTYPE err = OMX_ErrorNone;

    //make tunnel between output port1 of ARMIV Proc and input port of SW JPEG Enc
    DBGT_PTRACE("ARM IV  port: %lu SW JPEG ENcport: %lu", mParamArmIvOutput.nPortIndex, mParamSwJpegInput.nPortIndex);
    err = (mOmxUtils.interface()->GetpOMX_SetupTunnel())(mArmIvProc, mParamArmIvOutput.nPortIndex,
            mSwJpegEnc, mParamSwJpegInput.nPortIndex);
    if(OMX_ErrorNone != err) {
        DBGT_CRITICAL(" OMX_SetupTunnel failed between ARMIV Proc and SW JPEGEnc err = %d", err);
        DBGT_EPILOG("");
        return err;
    }

    //make tunnel between Output port of  SWJPEGENC with input port 0 of EXIF MIxer
    DBGT_PTRACE("SW JPEG ENcport: %lu EXIF Mixer POrt: %lu", mParamSwJpegOutput.nPortIndex, mParamExifInput.nPortIndex);
    err = (mOmxUtils.interface()->GetpOMX_SetupTunnel())(mSwJpegEnc, mParamSwJpegOutput.nPortIndex,
            mExifMixer, mParamExifInput.nPortIndex);
    if(OMX_ErrorNone != err) {
        DBGT_CRITICAL(" OMX_SetupTunnel failed between SWJPEGENC and EXIFMIXER err = %d", err);
        DBGT_EPILOG("");
        return err;
    }

    DBGT_EPILOG("");
    return err;
}
OMX_ERRORTYPE STEOMXCodecsPlugin::makeComponentInstance(
    const char *name,
    const OMX_CALLBACKTYPE *callbacks,
    OMX_PTR appData,
    OMX_COMPONENTTYPE **component) {

    DBGT_PROLOG();

    OMX_ERRORTYPE err = (mInterface->GetpOMX_GetHandle())(
            reinterpret_cast<OMX_HANDLETYPE *>(component),
            const_cast<char *>(name),
            appData,
            const_cast<OMX_CALLBACKTYPE *>(callbacks));

    if (err) {
        /*DBGT_ERROR("failed for %s, err=%s" ,
                   name,
                   OMX_TYPE_TO_STR(OMX_ERRORTYPE, err));*/
        goto error;
    }

    DBGT_PINFO("%s: handle=%p", name, *component);

    DBGT_EPILOG("%s: handle=%p", name, *component);
    return OMX_ErrorNone;

error:
    /*DBGT_EPILOG("err=%s", OMX_TYPE_TO_STR(OMX_ERRORTYPE, err));*/
    return err;

}
EnableDataFlow::EnableDataFlow (OMX_HANDLETYPE &aExifMixer,
                                OmxBuffInfo &aArmIvOmxBuffInfo,
                                OMX_OSI_CONFIG_SHARED_CHUNK_METADATA &aChunkData_ArmIvProc,
                                OmxUtils &aOmxUtils,
                                const OMX_COLOR_FORMATTYPE &aPreviewOmxColorFormat,
                                PerfManager &aPerfManager,
                                sem_t &aStateExifSem) :

                                mExifMixer(aExifMixer),
                                mArmIvOmxBuffInfo(aArmIvOmxBuffInfo),
                                mChunkData_ArmIvProc(aChunkData_ArmIvProc),
                                mOmxUtils(aOmxUtils),
                                mPreviewOmxColorFormat(aPreviewOmxColorFormat),
                                mPerfManager(aPerfManager),
                                mStateExifSem(aStateExifSem)
{
    DBGT_PROLOG("");

    mArmIvProc = NULL;
    mSwJpegEnc = NULL;
    mArmIvInBuffer = NULL;
    mPortsEnabled = true;

    DBGT_EPILOG("");
}
ImageRotHandler::~ImageRotHandler()
{
    DBGT_PROLOG("");

    mSTECamera = NULL;

    DBGT_EPILOG("");
};
void ImageRotHandler::updateImageInfo(int aRotation)
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
}
FocusHandler::~FocusHandler()
{
    DBGT_PROLOG("");

    mSTECamera = NULL;

    DBGT_EPILOG("");
};
void DisableDataFlow::handleEvent()
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
}
void ImageRotHandler::doUpdateExtraDataOrientation(OMX_SYMBIAN_CAPTUREPARAMETERSTYPE *aCaptureParameters, char *aExifParameters)
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
}
OMX_ERRORTYPE DisableDataFlow::handleBuffer(OMX_U32 aFilledLen, OMX_U32 aFlags)
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
    return OMX_ErrorNone;
}
OMX_ERRORTYPE  FixedFocusHandler::doFocus()
{
    DBGT_PROLOG("");

   /* Do nothing in case of fixed focus mode*/

   DBGT_EPILOG("");
   return OMX_ErrorNone;
}
OMX_ERRORTYPE  FixedFocusHandler::moveLensToDefaultPos()
{
    DBGT_PROLOG("");

    /** Reset the Lens position to rest position */

    DBGT_EPILOG("");
    return OMX_ErrorNone;
}
OMX_ERRORTYPE DisableDataFlow::release()
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
    return OMX_ErrorNone;
}
OMX_ERRORTYPE DisableDataFlow::resetComponents()
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
    return OMX_ErrorNone;
}
void SystemTimePerfTimer::init()
    {
    DBGT_PROLOG("");

    //store current time
    mInitTime = systemTime(SYSTEM_TIME_REALTIME);

    DBGT_EPILOG("");
    }
OMX_ERRORTYPE DisableDataFlow::sendComponentToExecuting()
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
    return OMX_ErrorNone;
}
OMX_ERRORTYPE ImageRotHandler::setupRotationProcessing()
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
    return OMX_ErrorNone;
}
OMX_ERRORTYPE DisableDataFlow::freeBuffers()
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
    return OMX_ErrorNone;
}
OMX_ERRORTYPE ImageRotHandler::handleBuffer(const OMX_BUFFERHEADERTYPE* const aOmxBuffHdr)
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
    return OMX_ErrorNone;
}
OMX_ERRORTYPE ImageRotHandler::configAutoRotate()
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
    return OMX_ErrorNone;
}
OMX_ERRORTYPE ImageRotHandler::doConfiguration()
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
    return OMX_ErrorNone;
}
void ExifRotation::updateImageInfo(int aRotation)
{
    DBGT_PROLOG("aRotation %d", aRotation);

    mSTECamera->mPictureInfo.setRotation(aRotation);
    mSTECamera->mThumbnailInfo.setRotation(aRotation);

    DBGT_EPILOG("");
}
DeviceRotation::DeviceRotation (STECamera *aSTECamera) : ImageRotHandler(aSTECamera)
{
    DBGT_PROLOG("");

    aSTECamera->mPictureInfo.enableSwapParams();
    aSTECamera->mThumbnailInfo.enableSwapParams();

    DBGT_EPILOG("");
}
void FixedFocusHandler::setupFocusControl(OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE& aFocusControl)
{
    DBGT_PROLOG("");

    aFocusControl.nFocusStepIndex = 0;
    aFocusControl.nFocusSteps = 100;
    aFocusControl.eFocusControl = OMX_IMAGE_FocusControlOff;

    DBGT_EPILOG("");
}
OMX_ERRORTYPE DisableDataFlow::init(const ImageInfo &aThumbnailInfo,
                   const ImageInfo &aPreviewInfo)
{
    DBGT_PROLOG("");

    //do nothing

    DBGT_EPILOG("");
    return OMX_ErrorNone;
}
    OMXPluginBase * createOMXPlugin() {

    DBGT_TRACE_INIT(stecodecsplugin);
    DBGT_PROLOG();

    OMXPluginBase *pPluginBase = new STEOMXCodecsPlugin();

    DBGT_EPILOG();
    return pPluginBase;
}
void ExifRotation::doUpdateExtraDataOrientation(OMX_SYMBIAN_CAPTUREPARAMETERSTYPE *aCaptureParameters, char *aExifParameters)
{
    DBGT_PROLOG("aCaptureParameters->eSceneOrientation: %d", aCaptureParameters->eSceneOrientation);

    DBGT_ASSERT(NULL != aCaptureParameters, "pCaptureParameters is null");
    DBGT_ASSERT(NULL != aExifParameters, "aExifParameters is null");

    updateExifParamsOrientation(aExifParameters, aCaptureParameters->eSceneOrientation);

    DBGT_EPILOG("");
}
OMX_ERRORTYPE EnableDataFlow::resetComponents()
{
    DBGT_PROLOG("");

    OMX_ERRORTYPE err = OMX_ErrorNone;

    DBGT_PTRACE("Sending Command StateIdle to SwJpegEnc");
    err = OMX_SendCommand(mSwJpegEnc, OMX_CommandStateSet, OMX_StateIdle, NULL);
    if(OMX_ErrorNone != err) {
        DBGT_CRITICAL("Sending OMX_StateIdle failed for SwJpegEnc err = %d", err);
        DBGT_EPILOG("");
        return err;
    }

    DBGT_PTRACE("Sending Command StateIdle to ArmIv");
    err = OMX_SendCommand(mArmIvProc, OMX_CommandStateSet, OMX_StateIdle, NULL);
    if(OMX_ErrorNone != err) {
        DBGT_CRITICAL("Sending OMX_StateIdle failed for ArmIVProc err = %d", err);
        DBGT_EPILOG("");
        return err;
    }

    mStateArmIvSem.wait();
    mStateSWJpegSem.wait();

    DBGT_PTRACE("Sending Command StateLoaded to ArmIv");
    err = OMX_SendCommand(mArmIvProc, OMX_CommandStateSet, OMX_StateLoaded, NULL);
    if(OMX_ErrorNone != err) {
        DBGT_CRITICAL("Sending OMX_StateLoaded failed for ArmIVProc err = %d", err);
        DBGT_EPILOG("");
        return err;
    }

    DBGT_PTRACE("Sending Command StateLoaded to SwJpegEnc");
    err = OMX_SendCommand(mSwJpegEnc, OMX_CommandStateSet, OMX_StateLoaded, NULL);
    if(OMX_ErrorNone != err) {
        DBGT_CRITICAL("Sending OMX_StateLoaded failed for SwJpegEnc err = %d", err);
        DBGT_EPILOG("");
        return err;
    }

    err = freeBuffers();
    if(OMX_ErrorNone != err) {
        DBGT_CRITICAL("Free buffers err = %d", err);
        DBGT_EPILOG("");
        return err;
    }

    mStateSWJpegSem.wait();
    mStateArmIvSem.wait();

    DBGT_EPILOG("");
    return err;
}
OMX_ERRORTYPE ExifRotation::handleBuffer(const OMX_BUFFERHEADERTYPE* const aOmxBuffHdr)
{
    DBGT_PROLOG("aOmxBuffHdr: %p", aOmxBuffHdr);

    OMX_ERRORTYPE err = OMX_ErrorNone;

    int rotation = mSTECamera->mPictureInfo.getRotation();

    DBGT_PROLOG("rotation = %d", rotation);

    if (180 == rotation) {
        err = updateExtraDataOrientation(aOmxBuffHdr);
        if(OMX_ErrorNone != err) {
            DBGT_CRITICAL("updateExtraDataOrientation failed err = %d", err);
            DBGT_EPILOG("");
            return err;
        }
    }
    DBGT_EPILOG("");
    return err;
}