summaryrefslogtreecommitdiffstats
path: root/src/plugins/symbian/openmaxal/mediarecorder/qxarecordsession.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/symbian/openmaxal/mediarecorder/qxarecordsession.cpp')
-rw-r--r--src/plugins/symbian/openmaxal/mediarecorder/qxarecordsession.cpp766
1 files changed, 0 insertions, 766 deletions
diff --git a/src/plugins/symbian/openmaxal/mediarecorder/qxarecordsession.cpp b/src/plugins/symbian/openmaxal/mediarecorder/qxarecordsession.cpp
deleted file mode 100644
index ec86761e2..000000000
--- a/src/plugins/symbian/openmaxal/mediarecorder/qxarecordsession.cpp
+++ /dev/null
@@ -1,766 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt Mobility Components.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QVariant>
-#include <QtCore/qdir.h>
-#include <qtmedianamespace.h>
-#include "qxarecordsession.h"
-#include "xarecordsessionimpl.h"
-#include "qxacommon.h"
-
-/* The following declaration is required to allow QList<int> to be added to
- * QVariant
- */
-Q_DECLARE_METATYPE(QList<uint>)
-
-/* This macro checks for m_impl null pointer. If it is, emits an error signal
- * error(QMediaRecorder::ResourceError, tr("Service has not been started"));
- * and returns from function immediately with value 's'.
- */
-
-#define RETURN_s_IF_m_impl_IS_NULL(s) \
- if (!m_impl) { \
- emit error(QMediaRecorder::ResourceError, QXARecordSession::tr("Service has not been started")); \
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::ResourceError, tr(\"Service has not been started\"))"); \
- return s; \
- }
-
-/* This macro checks for m_impl null pointer. If it is, emits an error signal
- * error(QMediaRecorder::ResourceError, tr("Service has not been started"));
- * and returns from function immediately.
- */
-#define RETURN_IF_m_impl_IS_NULL \
- if (!m_impl) { \
- emit error(QMediaRecorder::ResourceError, QXARecordSession::tr("Service has not been started")); \
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::ResourceError, tr(\"Service has not been started\"))"); \
- return; \
- }
-
-QXARecordSession::QXARecordSession(QObject *parent)
-:QObject(parent),
-m_state(QMediaRecorder::StoppedState),
-m_previousState(QMediaRecorder::StoppedState)
-{
- QT_TRACE_FUNCTION_ENTRY;
- m_impl = NULL;
- m_impl = new XARecordSessionImpl(*this);
- if (m_impl) {
- if (m_impl->postConstruct() == KErrNone) {
- initCodecsList();
- initContainersList();
- m_containerMimeType = QString("audio/wav");
- m_audioencodersettings.setCodec("pcm");
- m_audioencodersettings.setBitRate(0);
- m_audioencodersettings.setChannelCount(-1);
- m_audioencodersettings.setEncodingMode(QtMultimediaKit::ConstantQualityEncoding);
- m_audioencodersettings.setQuality(QtMultimediaKit::NormalQuality);
- m_audioencodersettings.setSampleRate(-1);
- setEncoderSettingsToImpl();
- m_URItoImplSet = false;
- QT_TRACE1("Initialized implementation");
- }
- else {
- delete m_impl;
- m_impl = NULL;
- QT_TRACE1("Error initializing implementation");
- }
- }
- else {
- emit error(QMediaRecorder::ResourceError, tr("Unable to start Service"));
- }
- QT_TRACE_FUNCTION_EXIT;
-}
-
-QXARecordSession::~QXARecordSession()
-{
- QT_TRACE_FUNCTION_ENTRY;
- delete m_impl;
- QT_TRACE_FUNCTION_EXIT;
-}
-
-QUrl QXARecordSession::outputLocation()
-{
- return m_outputLocation;
-}
-
-bool QXARecordSession::setOutputLocation(const QUrl &location)
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- RETURN_s_IF_m_impl_IS_NULL(false);
-
- // Location can be set only when recorder is in stopped state.
- if (state() != QMediaRecorder::StoppedState)
- return false;
-
- // Validate URL
- if (!location.isValid())
- return false;
-
- // If old and new locations are same, do nothing.
- QString newUrlStr = (QUrl::fromUserInput(location.toString())).toString();
- QString curUrlStr = (QUrl::fromUserInput(m_outputLocation.toString())).toString();
- if (curUrlStr.compare(newUrlStr) == KErrNone)
- return true;
-
- QT_TRACE2("Location:", newUrlStr);
- m_outputLocation = location;
- /* New file, so user can set new settings */
- m_previousState = QMediaRecorder::StoppedState;
- m_URItoImplSet = false;
-
- QT_TRACE_FUNCTION_EXIT;
- return true;
-}
-
-QMediaRecorder::State QXARecordSession::state()
-{
- return m_state;
-}
-
-qint64 QXARecordSession::duration()
-{
- TInt64 dur(0);
-
- QT_TRACE_FUNCTION_ENTRY;
-
- RETURN_s_IF_m_impl_IS_NULL(dur);
-
- m_impl->duration(dur);
-
- QT_TRACE_FUNCTION_EXIT;
- return (qint64)dur;
-}
-
-void QXARecordSession::applySettings()
-{
- /* Settings can only be applied when the recorder is in the stopped
- * state after creation. */
- if ((state() == QMediaRecorder::StoppedState) && (m_state == m_previousState)) {
- if (m_appliedaudioencodersettings != m_audioencodersettings)
- setEncoderSettingsToImpl();
- }
- else {
- emit error(QMediaRecorder::FormatError, tr("Settings cannot be changed once recording started"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::FormatError, tr(\"Settings cannot be changed once recording started\"))");
- }
-}
-
-void QXARecordSession::record()
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- RETURN_IF_m_impl_IS_NULL;
-
- /* No op if object is already in recording state */
- if (state() == QMediaRecorder::RecordingState)
- return;
-
- /* 1. Set encoder settings here */
- if (m_appliedaudioencodersettings != m_audioencodersettings)
- RET_IF_FALSE(setEncoderSettingsToImpl());
-
- /* 2. Set URI to impl */
- RET_IF_FALSE(setURIToImpl());
-
- /* 3. Start recording...
- * If successful, setRecorderState(QMediaRecorder::RecordingState);
- * will be called from the callback cbRecordingStarted()
- */
- if (m_impl->record() != KErrNone) {
- emit error(QMediaRecorder::ResourceError, tr("Generic error"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::ResourceError, tr(\"Generic error\"))");
- }
-
- QT_TRACE_FUNCTION_EXIT;
-}
-
-void QXARecordSession::pause()
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- RETURN_IF_m_impl_IS_NULL;
-
- /* No op if object is already in paused/stopped state */
- if ((state() == QMediaRecorder::PausedState) || (state() == QMediaRecorder::StoppedState)) {
- return;
- }
-
- if (m_impl->pause() == KErrNone) {
- setRecorderState(QMediaRecorder::PausedState);
- }
- else {
- emit error(QMediaRecorder::ResourceError, tr("Unable to pause"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::ResourceError, tr(\"Unable to pause\"))");
- }
-
- QT_TRACE_FUNCTION_EXIT;
-}
-
-void QXARecordSession::stop()
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- RETURN_IF_m_impl_IS_NULL;
-
- /* No op if object is already in paused state */
- if (state() == QMediaRecorder::StoppedState)
- return;
-
- if ((m_impl->stop() == KErrNone)) {
- setRecorderState(QMediaRecorder::StoppedState);
- }
- else {
- emit error(QMediaRecorder::ResourceError, tr("Unable to stop"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::ResourceError, tr(\"Unable to stop\"))");
- }
-
- QT_TRACE_FUNCTION_EXIT;
-}
-
-void QXARecordSession::cbDurationChanged(TInt64 new_pos)
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- emit durationChanged((qint64)new_pos);
- SIGNAL_EMIT_TRACE1("emit durationChanged((qint64)new_pos);");
-
- QT_TRACE_FUNCTION_EXIT;
-}
-
-void QXARecordSession::cbAvailableAudioInputsChanged()
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- emit availableAudioInputsChanged();
- SIGNAL_EMIT_TRACE1("emit availableAudioInputsChanged();");
-
- QT_TRACE_FUNCTION_EXIT;
-}
-
-void QXARecordSession::cbRecordingStarted()
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- setRecorderState(QMediaRecorder::RecordingState);
-
- QT_TRACE_FUNCTION_EXIT;
-}
-
-void QXARecordSession::cbRecordingStopped()
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- emit error(QMediaRecorder::ResourceError, tr("Resources Unavailable"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::ResourceError, tr(\"Resources Unavailable\"))");
- setRecorderState(QMediaRecorder::StoppedState);
- /* Set record state to Stopped */
- if (m_impl)
- m_impl->stop();
-
- QT_TRACE_FUNCTION_EXIT;
-}
-
-/* For QAudioEndpointSelector begin */
-QList<QString> QXARecordSession::availableEndpoints()
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- QList<QString> strList;
-
- RETURN_s_IF_m_impl_IS_NULL(strList);
-
- QString str;
- RArray<TPtrC> names;
- m_impl->getAudioInputDeviceNames(names);
- for (TInt index = 0; index < names.Count(); index++) {
- str = QString((QChar*)names[index].Ptr(), names[index].Length());
- strList.append(str);
- }
-
- QT_TRACE_FUNCTION_EXIT;
- return strList;
-}
-
-QString QXARecordSession::endpointDescription(const QString &name)
-{
- /* From AL we get only device name */
- return name;
-}
-
-QString QXARecordSession::defaultEndpoint()
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- QString str;
-
- RETURN_s_IF_m_impl_IS_NULL(str);
-
- TPtrC name;
- if(m_impl->defaultAudioInputDevice(name) == KErrNone)
- str = QString((QChar*)name.Ptr(), name.Length());
-
- QT_TRACE_FUNCTION_EXIT;
- return str;
-}
-
-QString QXARecordSession::activeEndpoint()
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- QString str;
-
- RETURN_s_IF_m_impl_IS_NULL(str);
-
- TPtrC name;
- if(m_impl->activeAudioInputDevice(name) == KErrNone)
- str = QString((QChar*)name.Ptr(), name.Length());
-
- QT_TRACE_FUNCTION_EXIT;
- return str;
-}
-
-void QXARecordSession::setActiveEndpoint(const QString &name)
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- RETURN_IF_m_impl_IS_NULL;
-
- if (name.isNull() || name.isEmpty())
- return;
-
- TPtrC16 tempPtr(reinterpret_cast<const TUint16*>(name.utf16()));
- if (m_impl->setAudioInputDevice(tempPtr) == true) {
- emit activeEndpointChanged(name);
- SIGNAL_EMIT_TRACE1("emit activeEndpointChanged(name)");
- }
- else {
- emit error(QMediaRecorder::ResourceError, tr("Invalid endpoint"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::ResourceError, tr(\"Invalid endpoint\"))");
- }
-
- QT_TRACE_FUNCTION_EXIT;
-}
-/* For QAudioEndpointSelector end */
-
-/* For QAudioEncoderControl begin */
-QStringList QXARecordSession::supportedAudioCodecs()
-{
- return m_codecs;
-}
-
-QString QXARecordSession::codecDescription(const QString &codecName)
-{
- if (m_codecs.contains(codecName))
- return QString(codecName);
- return QString();
-}
-
-QList<int> QXARecordSession::supportedSampleRates(
- const QAudioEncoderSettings &settings,
- bool *continuous)
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- QList<int> srList;
-
- RETURN_s_IF_m_impl_IS_NULL(srList);
-
- QString selectedCodec = settings.codec();
- if (selectedCodec.isNull() || selectedCodec.isEmpty())
- selectedCodec = QString("pcm");
-
- if (m_codecs.indexOf(selectedCodec) >= 0) {
- RArray<TInt32> sampleRates;
- TBool isContinuous;
- TPtrC16 tempPtr(reinterpret_cast<const TUint16*>(selectedCodec.utf16()));
- if (m_impl->getSampleRates(tempPtr, sampleRates, isContinuous) == KErrNone) {
- for (TInt index = 0; index < sampleRates.Count(); index++)
- srList.append(sampleRates[index]);
- sampleRates.Close();
- if (continuous)
- {
- *continuous = false;
- if (isContinuous == true)
- *continuous = true;
- }
- }
- }
-
- QT_TRACE_FUNCTION_EXIT;
- return srList;
-}
-
-QAudioEncoderSettings QXARecordSession::audioSettings()
-{
- return m_appliedaudioencodersettings;
-}
-
-void QXARecordSession::setAudioSettings(const QAudioEncoderSettings &settings)
-{
- /* Settings can only be set when the recorder is in the stopped
- * state after creation. */
- if ((state() == QMediaRecorder::StoppedState) && (m_state == m_previousState)) {
- /* Validate and ignore rest of the settings */
- m_audioencodersettings = settings;
- }
- else {
- emit error(QMediaRecorder::FormatError, tr("Settings cannot be changed once recording started"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::FormatError, tr(\"Settings cannot be changed once recording started\"))");
- }
-}
-
-QStringList QXARecordSession::supportedEncodingOptions(const QString &codec)
-{
- QT_TRACE_FUNCTION_ENTRY;
- Q_UNUSED(codec);
- QStringList options;
- if ((codec.compare("aac") == 0) ||
- (codec.compare("amr") == 0))
- {
- options << "bitrate" << "quality";
- }
-
-
- QT_TRACE_FUNCTION_EXIT;
- return options;
-}
-
-QVariant QXARecordSession::encodingOption(const QString &codec, const QString &name)
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- QVariant encodingOption;
- QMap<QString, QVariant> map;
- RETURN_s_IF_m_impl_IS_NULL(encodingOption);
-
- if (name.compare("bitrate") == 0) {
- TPtrC16 tempPtr(reinterpret_cast<const TUint16*>(codec.utf16()));
- QList<uint> bitrateList;
- RArray<TUint32> bitrates;
- TBool continuous;
- if (m_impl->getBitrates(tempPtr, bitrates, continuous) == KErrNone) {
- for (TInt index = 0; index < bitrates.Count(); index++)
- bitrateList.append(bitrates[index]);
- bitrates.Close();
- }
- encodingOption.setValue(bitrateList);
- map.insert("continuous", QVariant(continuous));
- map.insert("bitrates", encodingOption);
- }
-
- QT_TRACE_FUNCTION_EXIT;
- return map;
-}
-
-void QXARecordSession::setEncodingOption(
- const QString &codec,
- const QString &name,
- const QVariant &value)
-{
- /*
- * Currently nothing can be set via this function.
- * Bitrate is set via QAudioEncoderSettings::setBitrate().
- */
- Q_UNUSED(codec);
- Q_UNUSED(name);
- Q_UNUSED(value);
-}
-/* For QAudioEncoderControl end */
-
-QStringList QXARecordSession::supportedContainers()
-{
- return m_containers;
-}
-
-QString QXARecordSession::containerMimeType()
-{
- return m_containerMimeType;
-}
-
-void QXARecordSession::setContainerMimeType(const QString &formatMimeType)
-{
- if (formatMimeType.isNull() || formatMimeType.isEmpty())
- return;
- else if (m_containers.indexOf(formatMimeType) >= 0 )
- m_containerMimeType = formatMimeType;
- else {
- emit error(QMediaRecorder::FormatError, tr("Invalid container"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::FormatError, tr(\"Invalid container\"))");
- }
-}
-
-QString QXARecordSession::containerDescription(const QString &formatMimeType)
-{
- int index = m_containers.indexOf(formatMimeType);
- if (index >= 0) {
- return m_containersDesc.at(index);
- }
- else {
- emit error(QMediaRecorder::FormatError, tr("Invalid container"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::FormatError, tr(\"Invalid container\"))");
- }
- return QString();
-}
-
-void QXARecordSession::setRecorderState(QMediaRecorder::State state)
-{
- if (state != m_state) {
- m_previousState = m_state;
- m_state = state;
- emit stateChanged(m_state);
- SIGNAL_EMIT_TRACE1("emit stateChanged(m_state);");
- }
-}
-
-void QXARecordSession::initCodecsList()
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- RETURN_IF_m_impl_IS_NULL;
-
- m_codecs.clear();
-
- const RArray<TPtrC>& names = m_impl->getAudioEncoderNames();
- QString str;
-
- for (TInt index = 0; index < names.Count(); index++) {
- str = QString((QChar*)names[index].Ptr(), names[index].Length());
- m_codecs.append(str);
- }
- QT_TRACE_FUNCTION_EXIT;
-}
-
-void QXARecordSession::initContainersList()
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- RETURN_IF_m_impl_IS_NULL;
-
- m_containers.clear();
- m_containersDesc.clear();
-
- const RArray<TPtrC>& names = m_impl->getContainerNames();
- const RArray<TPtrC>& descs = m_impl->getContainerDescs();
- QString str;
-
- for (TInt32 index = 0; index < names.Count(); index++) {
- str = QString((QChar*)names[index].Ptr(), names[index].Length());
- m_containers.append(str);
- str = QString((QChar*)descs[index].Ptr(), descs[index].Length());
- m_containersDesc.append(str);
- }
- QT_TRACE_FUNCTION_EXIT;
-}
-
-bool QXARecordSession::setEncoderSettingsToImpl()
-{
- QT_TRACE_FUNCTION_ENTRY;
-
- RETURN_s_IF_m_impl_IS_NULL(false);
-
- m_impl->resetEncoderAttributes();
-
- /* m_containerMimeType is alredy validated in ::setContainerMimeType() */
- QString tempStr = m_containerMimeType;
- TPtrC16 tempPtr(reinterpret_cast<const TUint16 *>(tempStr.utf16()));
- m_impl->setContainerType(tempPtr);
-
- /* vaidate and assign codec */
- if (m_audioencodersettings.codec().isNull() || m_audioencodersettings.codec().isEmpty()) {
- m_audioencodersettings.setCodec(m_appliedaudioencodersettings.codec());
- }
- tempStr = m_audioencodersettings.codec();
- if (m_codecs.indexOf(tempStr) >= 0) {
- tempPtr.Set(reinterpret_cast<const TUint16*>(tempStr.utf16()));
- /* We already did validation above, so function always returns true */
- m_impl->setCodec(tempPtr);
- }
- else {
- QT_TRACE2("Codec selected is :", m_audioencodersettings.codec());
- emit error(QMediaRecorder::FormatError, tr("Invalid codec"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::FormatError, tr(\"Invalid codec\"));");
- return false;
- }
-
- /* Validate and set bitrate only if encoding mode is other than quality encoding and container type is not wav*/
- if ((m_audioencodersettings.encodingMode() != QtMultimediaKit::ConstantQualityEncoding) &&
- (m_containerMimeType.compare("audio/wav") != 0)) {
- m_impl->setBitRate(m_audioencodersettings.bitRate());
- m_audioencodersettings.setBitRate(m_impl->getBitRate());
- }
-
- if (m_audioencodersettings.channelCount() == -1) {
- m_impl->setOptimalChannelCount();
- }
- else {
- m_impl->setChannels(m_audioencodersettings.channelCount());
- m_audioencodersettings.setChannelCount(m_impl->getChannels());
- }
-
- switch (m_audioencodersettings.encodingMode()) {
- case QtMultimediaKit::ConstantQualityEncoding: {
- switch (m_audioencodersettings.quality()) {
- case QtMultimediaKit::VeryLowQuality:
- m_impl->setVeryLowQuality();
- m_audioencodersettings.setBitRate(m_impl->getBitRate());
- break;
- case QtMultimediaKit::LowQuality:
- m_impl->setLowQuality();
- m_audioencodersettings.setBitRate(m_impl->getBitRate());
- break;
- case QtMultimediaKit::NormalQuality:
- m_impl->setNormalQuality();
- m_audioencodersettings.setBitRate(m_impl->getBitRate());
- break;
- case QtMultimediaKit::HighQuality:
- m_impl->setHighQuality();
- m_audioencodersettings.setBitRate(m_impl->getBitRate());
- break;
- case QtMultimediaKit::VeryHighQuality:
- m_impl->setVeryHighQuality();
- m_audioencodersettings.setBitRate(m_impl->getBitRate());
- break;
- default:
- break;
- }; /* end of switch (m_audioencodersettings.quality())*/
- }
- break;
- case QtMultimediaKit::ConstantBitRateEncoding: {
- TInt32 status = m_impl->setCBRMode();
- if (status == KErrNotSupported) {
- emit error(QMediaRecorder::FormatError, tr("Invalid encoding mode setting"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::FormatError, tr(\"Invalid encoding mode setting\"));");
- return false;
- }
- else if (status != KErrNone) {
- emit error(QMediaRecorder::ResourceError, tr("Internal error"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::ResourceError, tr(\"Internal error\"));");
- return false;
- }
- }
- break;
- case QtMultimediaKit::AverageBitRateEncoding: {
- TInt32 status = m_impl->setVBRMode();
- if (status == KErrNotSupported) {
- emit error(QMediaRecorder::FormatError, tr("Invalid encoding mode setting"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::FormatError, tr(\"Invalid encoding mode setting\"));");
- return false;
- }
- else if (status != KErrNone) {
- emit error(QMediaRecorder::ResourceError, tr("Internal error"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::ResourceError, tr(\"Internal error\"));");
- return false;
- }
- }
- break;
- case QtMultimediaKit::TwoPassEncoding:
- // fall through
- default: {
- emit error(QMediaRecorder::FormatError, tr("Invalid encoding mode setting"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::FormatError, tr(\"Invalid encoding mode setting\"));");
- return false;
- }
- }; /* switch (m_audioencodersettings.encodingMode()) */
-
- if (m_audioencodersettings.sampleRate() == -1) {
- m_impl->setOptimalSampleRate();
- }
- else {
- m_impl->setSampleRate(m_audioencodersettings.sampleRate());
- m_audioencodersettings.setSampleRate(m_impl->getSampleRate());
- }
- m_appliedaudioencodersettings = m_audioencodersettings;
-
- QT_TRACE_FUNCTION_EXIT;
- return true;
-}
-
-bool QXARecordSession::setURIToImpl()
-{
- QT_TRACE_FUNCTION_ENTRY;
- if (m_URItoImplSet)
- return true;
-
- /* If m_outputLocation is null, set a default location */
- if (m_outputLocation.isEmpty()) {
- QDir outputDir(QDir::rootPath());
-
- int lastImage = 0;
- int fileCount = 0;
- foreach(QString fileName, outputDir.entryList(QStringList() << "recordclip_*")) {
- int imgNumber = fileName.mid(5, fileName.size() - 9).toInt();
- lastImage = qMax(lastImage, imgNumber);
- if (outputDir.exists(fileName))
- fileCount += 1;
- }
- lastImage += fileCount;
- m_outputLocation = QUrl(QDir::toNativeSeparators(outputDir.canonicalPath() + QString("/recordclip_%1").arg(lastImage + 1, 4, 10, QLatin1Char('0'))));
- }
-
- QString newUrlStr = (QUrl::fromUserInput(m_outputLocation.toString())).toString();
- // append file prefix if required
- if (newUrlStr.lastIndexOf('.') == -1) {
- QString fileExtension;
- if ((m_containerMimeType.compare("audio/wav")) == KErrNone) {
- fileExtension = QString(".wav");
- }
- else if ((m_containerMimeType.compare("audio/amr")) == KErrNone) {
- fileExtension = QString(".amr");
- }
- else if ((m_containerMimeType.compare("audio/mpeg")) == KErrNone) {
- fileExtension = QString(".mp4");
- }
- newUrlStr.append(fileExtension);
- }
-
- QT_TRACE2("Filename selected is :", newUrlStr);
- TPtrC16 tempPtr(reinterpret_cast<const TUint16 *>(newUrlStr.utf16()));
- if (m_impl->setURI(tempPtr) != 0) {
- emit error(QMediaRecorder::ResourceError, tr("Generic error"));
- SIGNAL_EMIT_TRACE1("emit error(QMediaRecorder::ResourceError, tr(\"Generic error\"))");
- return false;
- }
- m_URItoImplSet = true;
- m_outputLocation = QUrl(newUrlStr);
- QT_TRACE_FUNCTION_EXIT;
- return true;
-}