--- a/mmshplugins/mmcctranscoder/src/transcodersessioninfo.cpp Tue Feb 02 00:09:07 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,557 +0,0 @@
-/*
-* Copyright (c) 2002-2004 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 FILES
-#include <e32math.h>
-#include <mmcctranscoder.h>
-#include <mmcccodecinformation.h>
-
-#include "transcodersessioninfo.h"
-#include "mcctranscoderlogs.h"
-
-// CONSTANTS
-
-const TInt KMccTranscoderProgressMultiplier = 2;
-const TInt KMccTranscoderProgressMiddle = 50;
-
-const TInt KMccTranscoderVideoOnlyBitrate = 64000;
-
-const TInt KMccTranscoderAvcTargetSegmentSize = 1300; // Try to fit to MTU
-
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::CMccTranscoderSessionInfo
-// default constructor
-// -----------------------------------------------------------------------------
-//
-CMccTranscoderSessionInfo::CMccTranscoderSessionInfo()
- {
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::ConstructL( )
- {
-
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::NewL
-// Static constructor.
-// -----------------------------------------------------------------------------
-//
-CMccTranscoderSessionInfo* CMccTranscoderSessionInfo::NewLC()
- {
- CMccTranscoderSessionInfo* self = new (ELeave) CMccTranscoderSessionInfo;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::~CMccTranscoderSessionInfo
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CMccTranscoderSessionInfo::~CMccTranscoderSessionInfo()
- {
- __TRANSCODER( "CMccTranscoderSessionInfo::~CMccTranscoderSessionInfo" )
-
- delete iMovie;
- delete iVideoCodec;
- delete iAudioCodec;
-
- __TRANSCODER( "CMccTranscoderSessionInfo::~CMccTranscoderSessionInfo, exit" )
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::SetQuality
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::SetQuality( TUint32 aQuality )
- {
- __TRANSCODER_INT1( "CMccTranscoderSessionInfo::SetQuality, quality=", aQuality )
-
- switch( aQuality )
- {
- case CVedMovie::EQualityAutomatic:
- iQuality = CVedMovie::EQualityAutomatic;
- break;
- case CVedMovie::EQualityMMSInteroperability:
- iQuality = CVedMovie::EQualityMMSInteroperability;
- break;
- case CVedMovie::EQualityResolutionCIF:
- iQuality = CVedMovie::EQualityResolutionCIF;
- break;
- case CVedMovie::EQualityResolutionQCIF:
- iQuality = CVedMovie::EQualityResolutionQCIF;
- break;
- case CVedMovie::EQualityLast:
- iQuality = CVedMovie::EQualityLast;
- break;
- default:
- iQuality = CVedMovie::EQualityLast;
- break;
- }
-
- __TRANSCODER( "CMccTranscoderSessionInfo::SetQuality, exits" )
-
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::SetDesFileL
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::SetDesFileL( const TDesC& aFileName )
- {
- __TRANSCODER( "CMccTranscoderSessionInfo::SetDesFileL" )
-
- __ASSERT_ALWAYS( aFileName.Length() > 0, User::Leave( KErrArgument ) );
-
- iDesFile.Copy( aFileName );
-
- __TRANSCODER( "CMccTranscoderSessionInfo::SetDesFileL, exit" )
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::SetVideoType
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::SetVideoType(
- const TDesC8& aSdpName,
- const TInt aVideoBitRate )
- {
- __TRANSCODER( "CMccTranscoderSessionInfo::SetVideoType" )
-
- if ( aSdpName.CompareF( KAVCSdpName ) == 0 )
- {
- iVideoCodec->SetVideoType( EVedVideoTypeAVCBaselineProfile );
- // Other than zero value will cause transcoding failure for AVC
- iSyncIntervalInPicture = 0;
- iSegmentSizeInBytes = KMccTranscoderAvcTargetSegmentSize;
- }
- else if ( aSdpName.CompareF( KH263SdpName ) == 0 ||
- aSdpName.CompareF( KH2631998SdpName ) == 0||
- aSdpName.CompareF( KH2632000SdpName ) == 0 )
- {
- const TInt maxBitRateOne = 64000;
- const TInt maxBitRateTwo = 128000;
- if ( aVideoBitRate <= maxBitRateOne )
- {
- iVideoCodec->SetVideoType( EVedVideoTypeH263Profile0Level10 );
- }
- if ( aVideoBitRate > maxBitRateOne &&
- aVideoBitRate < maxBitRateTwo )
- {
- iVideoCodec->SetVideoType( EVedVideoTypeH263Profile0Level45 );
- }
- iSyncIntervalInPicture = 1;
- }
- else
- {
- iVideoCodec->SetVideoType( EVedVideoTypeUnrecognized) ;
- }
-
- __TRANSCODER( "CMccTranscoderSessionInfo::SetVideoType, exit" )
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::SetVideoType
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::SetAudioType( const TDesC8& aSdpName )
- {
- __TRANSCODER( "CMccTranscoderSessionInfo::SetAudioType" )
-
- if ( iAudioCodec )
- {
- if ( aSdpName.CompareF( KAACSdpName ) == 0 )
- {
- iAudioCodec->SetAudioType( EVedAudioTypeAAC_LC );
- }
- else if ( aSdpName.CompareF( KAMRSdpName ) == 0 )
- {
- iAudioCodec->SetAudioType( EVedAudioTypeAMR );
- }
- else
- {
- iAudioCodec->SetAudioType( EVedAudioTypeUnrecognized );
- }
- }
- __TRANSCODER( "CMccTranscoderSessionInfo::SetAudioType, exit" )
-
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::SetVideoType
-// -----------------------------------------------------------------------------
-//
-TUint32 CMccTranscoderSessionInfo::SessionId()
- {
- return iSessionId;
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::SetVideoType
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::GenerateSessionId()
- {
- __TRANSCODER( "CMccTranscoderSessionInfo::GenerateSessionId" )
-
- iSessionId = 0;
-
- while( iSessionId == 0 )
- {
- iSessionId = static_cast<TUint32>( Math::Random() );
- }
-
- __TRANSCODER( "CMccTranscoderSessionInfo::GenerateSessionId, exit" )
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::CreateMovieL()
-// -----------------------------------------------------------------------------
-//
-// ownership is transferred
-void CMccTranscoderSessionInfo::CreateMovieL( )
- {
- __TRANSCODER( "CMccTranscoderSessionInfo::CreateMovieL" )
-
- if ( iMovie )
- {
- delete iMovie;
- iMovie = NULL;
- }
- iMovie = CVedMovie::NewL( 0 );
-
- __TRANSCODER( "CMccTranscoderSessionInfo::CreateMovieL, exit" )
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::Movie
-// -----------------------------------------------------------------------------
-//
-CVedMovie& CMccTranscoderSessionInfo::Movie()
- {
- return *iMovie;
- }
-
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::Quality
-// -----------------------------------------------------------------------------
-//
-CVedMovie::TVedMovieQuality CMccTranscoderSessionInfo::Quality()
- {
- return iQuality;
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::DesFile
-// -----------------------------------------------------------------------------
-//
-const TDesC& CMccTranscoderSessionInfo::DesFile()
- {
- return iDesFile;
- }
-
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::VideoCodec
-// -----------------------------------------------------------------------------
-//
-CMccTranscoderVideoCodec& CMccTranscoderSessionInfo::VideoCodec()
- {
- return *iVideoCodec;
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::SetVideoCodec
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::SetVideoCodec( CMccTranscoderVideoCodec* aCodec )
- {
- __TRANSCODER( "CMccTranscoderSessionInfo::SetVideoCodec" )
-
- if ( iVideoCodec )
- {
- delete iVideoCodec;
- }
- iVideoCodec = aCodec;
-
- __TRANSCODER( "CMccTranscoderSessionInfo::SetVideoCodec, exit" )
-
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::AudioCodec
-// -----------------------------------------------------------------------------
-//
-CMccTranscoderAudioCodec& CMccTranscoderSessionInfo::AudioCodec()
- {
- return *iAudioCodec;
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::SetAudioCodec
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::SetAudioCodec( CMccTranscoderAudioCodec* aCodec )
- {
- __TRANSCODER( "CMccTranscoderSessionInfo::SetAudioCodec " )
-
- if ( iAudioCodec )
- {
- delete iAudioCodec;
- }
-
- iAudioCodec = aCodec;
-
- __TRANSCODER( "CMccTranscoderSessionInfo::SetAudioCodec, exit" )
-
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::CheckVideoCodecL
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::CheckVideoCodecL(
- const TMccTranscoderCodecInfo& aCodecInfo )
- {
- __TRANSCODER( "CMccTranscoderSessionInfo::CheckVideoCodecL " )
-
- // check if video code info is not empty, save it
- if ( aCodecInfo.iMimeType.Length() )
- {
- if ( iVideoCodec )
- {
- delete iVideoCodec;
- iVideoCodec = NULL;
- }
- iVideoCodec = CMccTranscoderVideoCodec::NewL();
-
- iVideoCodec->SetBitrate( aCodecInfo.iBitrate );
- iVideoCodec->SetFrameRate( aCodecInfo.iFramerate );
- iVideoCodec->SetVideoResolution(
- TSize(aCodecInfo.iVideoWidth, aCodecInfo.iVideoHeight) );
-
- SetVideoType( aCodecInfo.iMimeType, aCodecInfo.iBitrate );
- }
-
- __TRANSCODER( "CMccTranscoderSessionInfo::CheckVideoCodecL, exit " )
-
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::CheckAudioCodecL
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::CheckAudioCodecL(
- const TMccTranscoderCodecInfo& aCodecInfo )
- {
- __TRANSCODER( "CMccTranscoderSessionInfo::CheckAudioCodecL " )
-
- // check if audio code info is not empty, save it
- if (aCodecInfo.iMimeType.Length() )
- {
- if ( iAudioCodec )
- {
- delete iAudioCodec;
- iAudioCodec = NULL;
- }
- iAudioCodec = CMccTranscoderAudioCodec::NewL();
- iAudioCodec->SetBitrate( aCodecInfo.iBitrate );
- iAudioCodec->SetAudioChannelMode( EVedAudioChannelModeSingleChannel );
- iAudioCodec->SetSamplingRate( aCodecInfo.iSamplingFreq );
- SetAudioType( aCodecInfo.iMimeType );
- }
-
- __TRANSCODER( "CMccTranscoderSessionInfo::CheckAudioCodecL, exit " )
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::CheckAudioCodecL
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::GetPutputParameters(
- TVedOutputParameters& params )
- {
- __TRANSCODER( "CMccTranscoderSessionInfo::GetPutputParameters " )
-
- if ( iVideoCodec )
- {
- __TRANSCODER( "Set video output values from codec" )
- params.iVideoType = iVideoCodec->VideoType();
- params.iVideoResolution = iVideoCodec->VideoResolution();
- params.iVideoBitrate = iVideoCodec->Bitrate();
- params.iVideoFrameRate = iVideoCodec->FrameRate();
- }
- else if ( iMovie )// set video parameters from clip
- {
- __TRANSCODER( "Set video output values from mov" )
- params.iVideoType = iMovie->VideoType();
- params.iVideoResolution = iMovie->Resolution();
- params.iVideoBitrate = CalculateVideoBitrate( *iMovie );
- params.iVideoFrameRate = iMovie->VideoFrameRate();
- }
-
- //insert GOBs into clip
- params.iSyncIntervalInPicture = iSyncIntervalInPicture;
- params.iSegmentSizeInBytes = iSegmentSizeInBytes;
-
- // audio parameters are stored in session,
- // copy those parameters from session,
- if ( iAudioCodec )
- {
- __TRANSCODER( "Set audio output values from codec" )
- params.iAudioType = iAudioCodec->AudioType();
- params.iAudioBitrate = iAudioCodec->Bitrate();
- params.iAudioChannelMode = EVedAudioChannelModeSingleChannel;
- params.iAudioSamplingRate = iAudioCodec->SamplingRate();
- }
- else if ( iMovie )// set audio parameters from clip
- {
- params.iAudioType = iMovie->AudioType();
- if ( params.iAudioType != EVedAudioTypeNoAudio )
- {
- __TRANSCODER( "Set audio output values from mov" )
- params.iAudioBitrate = iMovie->AudioBitrate();
- params.iAudioChannelMode = iMovie->AudioChannelMode();
- params.iAudioSamplingRate = iMovie->AudioSamplingRate();
- }
- else if ( params.iVideoType == EVedVideoTypeAVCBaselineProfile )
- {
- __TRANSCODER( "No audio for avc, set compatibility values" )
-
- // VideoEditorEngine strangely wants still these specific
- // audio values if video type is AVC and clip does not contain
- // audio.
- const TInt KMccTranscoderVedCompatibility = 16000;
- params.iAudioBitrate = KMccTranscoderVedCompatibility;
- params.iAudioSamplingRate = KMccTranscoderVedCompatibility;
- }
- else
- {
- __TRANSCODER( "No audio, do not set audio output values" )
- }
- }
-
- __TRANSCODER( "CMccTranscoderSessionInfo::GetPutputParameters, exit " )
-
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::SetRemoved
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::SetRemoved( TBool aIsRemoved )
- {
- iIsRemoved = aIsRemoved;
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::IsRemoved
-// -----------------------------------------------------------------------------
-//
-TBool CMccTranscoderSessionInfo::IsRemoved() const
- {
- return iIsRemoved;
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::Progressed
-// -----------------------------------------------------------------------------
-//
-TInt CMccTranscoderSessionInfo::Progressed( TInt aProgressPercentage )
- {
- // If only one media element is present, ved engine progress
- // percentage has to be multiplied by two (otherwise it goes only to 50%)
- if ( iAudioNotPresent &&
- ( aProgressPercentage <= KMccTranscoderProgressMiddle ) )
- {
- aProgressPercentage =
- ( aProgressPercentage * KMccTranscoderProgressMultiplier );
- }
- return aProgressPercentage;
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::Progressed
-// -----------------------------------------------------------------------------
-//
-void CMccTranscoderSessionInfo::ClipAdded()
- {
- if ( iMovie )
- {
- __TRANSCODER_INT1( "CMccTranscoderSessionInfo::ClipAdded, audio type:",
- iMovie->AudioType() )
-
- iAudioNotPresent =
- ( iMovie->AudioType() == EVedAudioTypeNoAudio ||
- iMovie->AudioType() == EVedAudioTypeUnrecognized );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::QualityChangeNeeded
-// If client has set output video codec, quality setting is ignored
-// -----------------------------------------------------------------------------
-//
-TBool CMccTranscoderSessionInfo::QualityChangeNeeded()
- {
- return ( iQuality != CVedMovie::EQualityAutomatic && !iVideoCodec );
- }
-
-// -----------------------------------------------------------------------------
-// CMccTranscoderSessionInfo::CalculateVideoBitrate
-// -----------------------------------------------------------------------------
-//
-TInt CMccTranscoderSessionInfo::CalculateVideoBitrate( CVedMovie& aMovie )
- {
- __TRANSCODER( "CMccTranscoderSessionInfo::CalculateVideoBitrate" )
-
- TInt videoBitrate( KMccTranscoderVideoOnlyBitrate );
- if ( aMovie.AudioType() != EVedAudioTypeNoAudio &&
- aMovie.AudioBitrate() > 0 &&
- aMovie.AudioBitrate() < videoBitrate )
- {
- videoBitrate -= aMovie.AudioBitrate();
- }
-
- __TRANSCODER_INT1( "CMccTranscoderSessionInfo::CalculateVideoBitrate, exit bitrate:",
- videoBitrate )
- return videoBitrate;
- }
-
-// End of file
-