camerauis/cameraxui/cxengine/src/cxevideorecorderutilitysymbian.cpp
branchRCL_3
changeset 24 bac7acad7cb3
parent 23 61bc0f252b2b
child 25 2c87b2808fd7
--- a/camerauis/cameraxui/cxengine/src/cxevideorecorderutilitysymbian.cpp	Tue Aug 31 15:03:46 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,338 +0,0 @@
-/*
-* Copyright (c) 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 "cxevideorecorderutilitysymbian.h"
-#include "cxenamespace.h"
-#include "cxutils.h"
-#include <AudioPreference.h>
-
-namespace
-{
-    // Controller UId, can be used by the client to identify the controller, e.g. if the custom command can be used
-    const TUid KCamCControllerImplementationUid = {0x101F8503};
-
-    // Custom command for setting a new filename without closing & reopening the controller
-    enum TCamCControllerCustomCommands
-        {
-        ECamCControllerCCNewFilename = 0,
-        ECamCControllerCCVideoStopAsync
-        };
-
-    const uint KOneMillion = 1000000;
-}
-
-
-CxeVideoRecorderUtilitySymbian::~CxeVideoRecorderUtilitySymbian()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    delete mVideoRecorder;
-    mVideoRecorder = NULL;
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-CxeVideoRecorderUtilitySymbian::CxeVideoRecorderUtilitySymbian(MVideoRecorderUtilityObserver& aObserver)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    QT_TRAP_THROWING(mVideoRecorder =
-            CVideoRecorderUtility::NewL(aObserver,
-                                        KAudioPriorityVideoRecording,
-                                        TMdaPriorityPreference(KAudioPrefVideoRecording)));
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Open new file for recording.
-* @param cameraHandle Handle for camera.
-* @param filename Full filename of the video file to open.
-* @param fileMimeType MIME type for the video file.
-* @param supplier Preferred supplier.
-* @param videoType Video codec MIME type.
-* @param audioType Audio FourCC type.
-*/
-void CxeVideoRecorderUtilitySymbian::open(int cameraHandle,
-                                          const QString &filename,
-                                          const QString &fileMimeType,
-                                          const QString &supplier,
-                                          const QString &videoType,
-                                          const QString &audioType)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    CX_DEBUG(("CxeVideoRecorderUtilitySymbian - filename     [%s]", filename.toAscii().constData()));
-    CX_DEBUG(("CxeVideoRecorderUtilitySymbian - file mime    [%s]", fileMimeType.toAscii().constData()));
-    CX_DEBUG(("CxeVideoRecorderUtilitySymbian - supplier     [%s]", supplier.toAscii().constData()));
-    CX_DEBUG(("CxeVideoRecorderUtilitySymbian - codec mime   [%s]", videoType.toAscii().constData()));
-    CX_DEBUG(("CxeVideoRecorderUtilitySymbian - audio FourCC [%s]", audioType.toAscii().constData()));
-
-    QByteArray bytes = videoType.toLatin1();
-    TPtrC8 videoTypeDesC(reinterpret_cast<const TUint8*>(bytes.constData()), bytes.size());
-    TPtrC16 filenameDesC(reinterpret_cast<const TUint16*>(filename.utf16()));
-
-    TUid controllerId;
-    TUid formatId;
-    QT_TRAP_THROWING({
-        // Find the video controller id and video format id.
-        findControllerL(fileMimeType, supplier, controllerId, formatId);
-
-        // Try to open new video file with given parameters.
-        mVideoRecorder->OpenFileL(filenameDesC, cameraHandle, controllerId,
-                                  formatId, videoTypeDesC, audioFourCC(audioType));
-    });
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Set frame size.
-* @param size The video frame size.
-*/
-void CxeVideoRecorderUtilitySymbian::setVideoFrameSize(const QSize &size)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    TSize frameSize(size.width(), size.height());
-    QT_TRAP_THROWING(mVideoRecorder->SetVideoFrameSizeL(frameSize));
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Set video frame rate.
-* @param rate The video frame rate.
-*/
-void CxeVideoRecorderUtilitySymbian::setVideoFrameRate(int rate)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    QT_TRAP_THROWING(mVideoRecorder->SetVideoFrameRateL(rate));
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Set video bit rate.
-* @param The video bit rate.
-*/
-void CxeVideoRecorderUtilitySymbian::setVideoBitRate(int rate)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    QT_TRAP_THROWING(mVideoRecorder->SetVideoBitRateL(rate));
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Set if audio recording is on or not.
-* @param enabled Is audio recording enabled.
-*/
-void CxeVideoRecorderUtilitySymbian::setAudioEnabled(bool enabled)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    QT_TRAP_THROWING(mVideoRecorder->SetAudioEnabledL(enabled));
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Set maximum video clip size in bytes.
-* @param sizeInBytes Video clip size limit.
-*/
-void CxeVideoRecorderUtilitySymbian::setVideoMaxSize(int sizeInBytes)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    if (sizeInBytes <= 0) {
-        sizeInBytes = KMMFNoMaxClipSize;
-    }
-    QT_TRAP_THROWING(mVideoRecorder->SetMaxClipSizeL(sizeInBytes));
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Close video recorder, freeing its resources.
-*/
-void CxeVideoRecorderUtilitySymbian::close()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    mVideoRecorder->Close();
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Prepare for video recording.
-*/
-void CxeVideoRecorderUtilitySymbian::prepare()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    mVideoRecorder->Prepare();
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Start recording.
-*/
-void CxeVideoRecorderUtilitySymbian::record()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    mVideoRecorder->Record();
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Stop recording.
-* @param asynchronous Use asynchronous (true) or synchronous (false) stopping.
-*/
-void CxeVideoRecorderUtilitySymbian::stop(bool asynchronous)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    if (asynchronous) {
-        TMMFMessageDestination dest(KCamCControllerImplementationUid, KMMFObjectHandleController);
-        qt_symbian_throwIfError(mVideoRecorder->CustomCommandSync(
-                                    dest, ECamCControllerCCVideoStopAsync, KNullDesC8, KNullDesC8));
-    } else {
-        qt_symbian_throwIfError(mVideoRecorder->Stop());
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Pause recording.
-*/
-void CxeVideoRecorderUtilitySymbian::pause()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    QT_TRAP_THROWING(mVideoRecorder->PauseL());
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Get estimated available recording time.
-* @return Available recording time estimate in seconds.
-*/
-int CxeVideoRecorderUtilitySymbian::availableRecordingTime()
-{
-    CX_DEBUG_IN_FUNCTION();
-    // Convert microseconds to seconds.
-    return mVideoRecorder->RecordTimeAvailable().Int64() * 1.0 / KOneMillion;
-}
-
-/*!
-* Get elapsed duration of the recorded video.
-* @return Duration of the video in seconds.
-*/
-int CxeVideoRecorderUtilitySymbian::duration()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    int time(0);
-    // Convert microseconds to seconds.
-    QT_TRAP_THROWING(time = mVideoRecorder->DurationL().Int64() * 1.0 / KOneMillion);
-    CX_DEBUG_EXIT_FUNCTION();
-    return time;
-}
-
-/*!
-* Find video controller and format UIDs based on file mime type and preferred supplier.
-* @param fileMimeType MIME type for the video file.
-* @param supplier Preferred supplier.
-* @param controllerId Returns found controller UID.
-* @param formatId Returns found format UID.
-*/
-void CxeVideoRecorderUtilitySymbian::findControllerL(const QString& fileMimeType,
-                                                     const QString& supplier,
-                                                     TUid& controllerId,
-                                                     TUid& formatId)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    // Retrieve a list of possible controllers from ECOM.
-    // Controller must support recording the requested mime type.
-    // Controller must be provided by preferred supplier.
-    controllerId = KNullUid;
-    formatId = KNullUid;
-
-    QByteArray bytes = fileMimeType.toLatin1();
-    TPtrC8 mimeTPtr(reinterpret_cast<const TUint8*>(bytes.constData()), bytes.size());
-    TPtrC16 supplierTPtr(reinterpret_cast<const TUint16*>(supplier.utf16()));
-
-    CMMFControllerPluginSelectionParameters* cSelect(NULL);
-    CMMFFormatSelectionParameters* fSelect(NULL);
-    RMMFControllerImplInfoArray controllers;
-
-    cSelect = CMMFControllerPluginSelectionParameters::NewLC();
-    fSelect = CMMFFormatSelectionParameters::NewLC();
-
-    fSelect->SetMatchToMimeTypeL(mimeTPtr);
-    cSelect->SetRequiredRecordFormatSupportL(*fSelect);
-    cSelect->SetPreferredSupplierL(supplierTPtr,
-                                   CMMFPluginSelectionParameters::EOnlyPreferredSupplierPluginsReturned);
-    cSelect->ListImplementationsL(controllers);
-    CleanupResetAndDestroyPushL(controllers);
-
-    if (controllers.Count() <= 0) {
-        CX_DEBUG(("CxeVideoRecorderUtilitySymbian - zero controllers found, leaving!"));
-        User::Leave(KErrNotFound);
-    }
-
-    // Inquires the controller about supported formats.
-    // We use the first controller found having index 0.
-    const RMMFFormatImplInfoArray& formats = controllers[0]->RecordFormats();
-
-    // Get the first format that supports our mime type.
-    int count(formats.Count());
-    for (int i=0; i<count; i++) {
-        if (formats[i]->SupportsMimeType(mimeTPtr)) {
-            CX_DEBUG(("CxeVideoRecorderUtilitySymbian - found controller"));
-            // Store the format UID
-            formatId = formats[i]->Uid();
-            // Store the controller UID
-            controllerId = controllers[0]->Uid();
-            break;
-        }
-    }
-
-    // Check that we found the uids.
-    if (controllerId == KNullUid) {
-        CX_DEBUG(("CxeVideoRecorderUtilitySymbian - no matching controller found, leaving!"));
-        User::Leave(KErrNotFound);
-    }
-
-    CleanupStack::PopAndDestroy(3); // controllers, fSelect, cSelect
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-/*!
-* Helper method to convert QString to TFourCC.
-* @param str String to convert.
-*/
-TFourCC CxeVideoRecorderUtilitySymbian::audioFourCC(const QString& str)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    QByteArray audioType = str.toAscii();
-
-    quint8 char1(' ');
-    quint8 char2(' ');
-    quint8 char3(' ');
-    quint8 char4(' ');
-
-    if (audioType.count() > 3) {
-        char1 = audioType[0];
-        char2 = audioType[1];
-        char3 = audioType[2];
-
-        if (audioType.count() == 4) {
-            char4 = audioType[3];
-        }
-    }
-
-    CX_DEBUG_EXIT_FUNCTION();
-    return TFourCC(char1, char2, char3, char4);
-}
-
-
-// end of file