tsrc/musenginestub/src/musengcamerahandler.cpp
branchRCL_3
changeset 33 bc78a40cd63c
parent 32 73a1feb507fb
child 35 6c57ef9392d2
equal deleted inserted replaced
32:73a1feb507fb 33:bc78a40cd63c
     1 /*
       
     2 * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // USER
       
    20 #include "musengcamerahandler.h"
       
    21 #include "musunittesting.h"
       
    22 #include "musengmceutils.h"
       
    23 #include "musenglogger.h"
       
    24 
       
    25 // SYSTEM
       
    26 #include <mcemanager.h>
       
    27 #include <mcecamerasource.h>
       
    28 #include <mcevideostream.h>
       
    29 #include <mcertpsink.h>
       
    30 #include <mcedisplaysink.h>
       
    31 #include <mcefilesink.h>
       
    32 #include <mcesession.h>
       
    33 
       
    34 const TInt KMaxBrightness = 100;
       
    35 const TInt KMinBrightness = -100;
       
    36 const TInt KBrightnessStepSize = 10;
       
    37 
       
    38 
       
    39 //Number of big and small zoom steps on Zoom scale
       
    40 const TInt KZoomBigStepCount = 15;
       
    41 const TInt KZoomSmallStepCount = KZoomBigStepCount*2;
       
    42 const TInt KZoomStepMinSize = 1;
       
    43 
       
    44 const TInt64 KZoomFasterTime = 333333; // 1/3 second
       
    45 const TInt KOneCameraOnly = 1;
       
    46 
       
    47 
       
    48 // -----------------------------------------------------------------------------
       
    49 //
       
    50 // -----------------------------------------------------------------------------
       
    51 //
       
    52 TMusEngCameraHandler::TMusEngCameraHandler() :
       
    53     iSession( NULL ),
       
    54     iDefaultZoomFactor( -1 ),
       
    55     iDefaultBrightness( 0 ),
       
    56     iZoomInTime(0),
       
    57     iZoomOutTime(0),
       
    58     iSmallZoomStep( KZoomStepMinSize ),
       
    59     iBigZoomStep( KZoomStepMinSize ),
       
    60     iCameraUsage( MusSettingsKeys::EUseCameraSwapping )
       
    61     {
       
    62     
       
    63     }
       
    64 
       
    65 // -----------------------------------------------------------------------------
       
    66 //
       
    67 // -----------------------------------------------------------------------------
       
    68 //
       
    69 void TMusEngCameraHandler::SetSession( CMceSession* aSession )
       
    70     {
       
    71     iSession = aSession;
       
    72     }
       
    73 
       
    74 // -----------------------------------------------------------------------------
       
    75 //
       
    76 // -----------------------------------------------------------------------------
       
    77 //
       
    78 void TMusEngCameraHandler::InitializeL( CMceCameraSource& aCamera )
       
    79     {
       
    80     aCamera.GetCameraInfo( iCameraInfo );
       
    81     iDefaultZoomFactor = aCamera.ZoomFactorL();
       
    82     
       
    83     InitializeZoomStepSize();
       
    84     
       
    85     iCurrentCamera = EBackCamera;
       
    86     if ( iCameraUsage == MusSettingsKeys::EUseOnlySecondaryCamera )
       
    87        {
       
    88        iCurrentCamera = EFrontCamera;
       
    89        }
       
    90     aCamera.SetCameraIndexL( (TInt)iCurrentCamera );
       
    91     }
       
    92 
       
    93 // -----------------------------------------------------------------------------
       
    94 //
       
    95 // -----------------------------------------------------------------------------
       
    96 //
       
    97 EXPORT_C void TMusEngCameraHandler::PlayL()
       
    98     {
       
    99     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::PlayL()" )
       
   100 
       
   101     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   102     
       
   103     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   104 
       
   105     if ( !camera->IsEnabled() )
       
   106         {
       
   107         camera->EnableL();
       
   108         }
       
   109     else
       
   110         {
       
   111         MUS_LOG( "mus: [ENGINE]    Camera already enabled, ignore request" )
       
   112         }
       
   113         
       
   114     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::PlayL()" )
       
   115     }
       
   116 
       
   117 
       
   118 // -----------------------------------------------------------------------------
       
   119 // Disable camera if not already disabled
       
   120 // -----------------------------------------------------------------------------
       
   121 //
       
   122 EXPORT_C void TMusEngCameraHandler::PauseL()
       
   123     {
       
   124     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::PauseL()" )
       
   125 
       
   126     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   127 
       
   128     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   129 
       
   130     if ( camera->IsEnabled() )
       
   131         {
       
   132         camera->DisableL();
       
   133         }
       
   134     else
       
   135         {
       
   136         MUS_LOG( "mus: [ENGINE]    Camera already disabled, ignore request" )
       
   137         }
       
   138 
       
   139     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::PauseL()" )
       
   140     }
       
   141 
       
   142 
       
   143 // -----------------------------------------------------------------------------
       
   144 //
       
   145 // -----------------------------------------------------------------------------
       
   146 //
       
   147 EXPORT_C TBool TMusEngCameraHandler::IsPlayingL()
       
   148     {
       
   149     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   150     
       
   151     return ( MusEngMceUtils::GetCameraL( *iSession )->IsEnabled() );
       
   152     }
       
   153 
       
   154 // -----------------------------------------------------------------------------
       
   155 //
       
   156 // -----------------------------------------------------------------------------
       
   157 //
       
   158 EXPORT_C TInt TMusEngCameraHandler::CamerasAvailableL( 
       
   159     TCurrentCamera& aCurrentCamera )
       
   160     {
       
   161     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::CamerasAvailableL()" )
       
   162     __ASSERT_ALWAYS( iSession != NULL, User::Leave( KErrNotReady ) );
       
   163     
       
   164     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   165     __ASSERT_ALWAYS( camera != NULL, User::Leave( KErrNotReady ) );
       
   166     aCurrentCamera = iCurrentCamera;
       
   167     TInt camerasAvailable = camera->CamerasAvailable();
       
   168     
       
   169     if ( camerasAvailable > KOneCameraOnly && 
       
   170          iCameraUsage != MusSettingsKeys::EUseCameraSwapping )
       
   171         {
       
   172         camerasAvailable = KOneCameraOnly;
       
   173         }
       
   174          
       
   175     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::CamerasAvailable()" )
       
   176     return camerasAvailable;  
       
   177     }
       
   178 
       
   179 // -----------------------------------------------------------------------------
       
   180 //
       
   181 // -----------------------------------------------------------------------------
       
   182 //
       
   183 EXPORT_C void TMusEngCameraHandler::ChangeCameraL( TCurrentCamera aCurrentCamera ) 
       
   184     {
       
   185     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::ChangeCameraL()" )
       
   186     __ASSERT_ALWAYS( iSession != NULL, User::Leave( KErrNotReady ) );
       
   187     
       
   188     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   189     CMceDisplaySink* display = MusEngMceUtils::GetDisplayL( *iSession );
       
   190     
       
   191     if ( camera->CamerasAvailable() )
       
   192         {
       
   193         if ( TMusEngCameraHandler::EFrontCamera == aCurrentCamera &&
       
   194              TMusEngCameraHandler::EFrontCamera != iCurrentCamera )
       
   195             {
       
   196             MUS_LOG( "mus: [ENGINE]  Set Front camera" )
       
   197             iCurrentCamera = TMusEngCameraHandler::EFrontCamera;
       
   198             ChangeActiveCameraL( iCurrentCamera );
       
   199             }
       
   200         else if ( TMusEngCameraHandler::EBackCamera == aCurrentCamera && 
       
   201                   TMusEngCameraHandler::EBackCamera != iCurrentCamera )
       
   202             {
       
   203             MUS_LOG( "mus: [ENGINE]  Set Back camera " )
       
   204             iCurrentCamera = TMusEngCameraHandler::EBackCamera;
       
   205             ChangeActiveCameraL( iCurrentCamera );;
       
   206             }
       
   207         else if ( TMusEngCameraHandler::ENextCamera == aCurrentCamera )
       
   208             {
       
   209             if ( iCurrentCamera  == TMusEngCameraHandler::EBackCamera )
       
   210                 {
       
   211                 iCurrentCamera  = TMusEngCameraHandler::EFrontCamera;
       
   212                 }
       
   213             else
       
   214                 {
       
   215                 iCurrentCamera  = TMusEngCameraHandler::EBackCamera;
       
   216                 }
       
   217             ChangeActiveCameraL( iCurrentCamera );
       
   218             }
       
   219         }
       
   220     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::ChangeCameraL()" )
       
   221     }
       
   222 // -----------------------------------------------------------------------------
       
   223 //
       
   224 // -----------------------------------------------------------------------------
       
   225 //
       
   226 EXPORT_C TInt TMusEngCameraHandler::CurrentZoomL() const
       
   227     {
       
   228     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::CurrentZoomL()" )
       
   229     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   230 
       
   231     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   232 
       
   233     TInt currentZoom = camera->ZoomFactorL() + camera->DigitalZoomFactorL();
       
   234 
       
   235     MUS_LOG1( "mus: [ENGINE]  <- TMusEngCameraHandler::CurrentZoomL( %d )",
       
   236               currentZoom )
       
   237 
       
   238     return currentZoom;
       
   239     }
       
   240 
       
   241 
       
   242 // -----------------------------------------------------------------------------
       
   243 //
       
   244 // -----------------------------------------------------------------------------
       
   245 //
       
   246 EXPORT_C void TMusEngCameraHandler::SetZoomL( TInt aNewZoomFactor )
       
   247     {
       
   248     MUS_LOG1( "mus: [ENGINE]  -> TMusEngCameraHandler::SetZoomL( %d )", 
       
   249               aNewZoomFactor )
       
   250               
       
   251     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   252     __ASSERT_ALWAYS( aNewZoomFactor <= MaxZoomL() &&
       
   253                      aNewZoomFactor >= MinZoomL(), 
       
   254                      User::Leave( KErrArgument ) );
       
   255     
       
   256     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   257 
       
   258     if ( aNewZoomFactor <= iCameraInfo.iMaxZoom )
       
   259         {
       
   260         MUS_LOG( "mus: [ENGINE]     Optical zoom factor increased" )
       
   261         camera->SetZoomFactorL( aNewZoomFactor ); 
       
   262         }
       
   263     
       
   264     if ( aNewZoomFactor - iCameraInfo.iMaxZoom > 0 )
       
   265         {
       
   266         camera->SetDigitalZoomFactorL( aNewZoomFactor - iCameraInfo.iMaxZoom );
       
   267         MUS_LOG1( "mus: [ENGINE]     Digital zoom factor increased to %d",
       
   268                   aNewZoomFactor - iCameraInfo.iMaxZoom )
       
   269         }
       
   270     
       
   271     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::SetZoomL()" )
       
   272     }
       
   273 
       
   274 
       
   275 // -----------------------------------------------------------------------------
       
   276 //
       
   277 // -----------------------------------------------------------------------------
       
   278 //
       
   279 EXPORT_C TInt TMusEngCameraHandler::MinZoomL() const
       
   280     {
       
   281     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::MinZoomL()" )
       
   282     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   283 
       
   284     // Although we do not need camera for return value, we have to have it in
       
   285     // order to have proper iCameraInfo
       
   286     MusEngMceUtils::GetCameraL( *iSession );
       
   287 
       
   288     MUS_LOG1( "mus: [ENGINE]  <- TMusEngCameraHandler::MinZoomL( %d )",
       
   289               iCameraInfo.iMinZoom )
       
   290 
       
   291     return iCameraInfo.iMinZoom;
       
   292     }
       
   293     
       
   294         
       
   295 // -----------------------------------------------------------------------------
       
   296 //
       
   297 // -----------------------------------------------------------------------------
       
   298 //
       
   299 EXPORT_C TInt TMusEngCameraHandler::MaxZoomL() const
       
   300     {
       
   301     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::MaxZoomL()" )
       
   302     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   303 
       
   304     // Although we do not need camera for return value, we have to have it in
       
   305     // order to have proper iCameraInfo
       
   306     MusEngMceUtils::GetCameraL( *iSession );
       
   307 
       
   308     TInt maxZoom = iCameraInfo.iMaxZoom + iCameraInfo.iMaxDigitalZoom;
       
   309 
       
   310     MUS_LOG1( "mus: [ENGINE]     Max optical zoom( %d )",
       
   311               iCameraInfo.iMaxZoom )
       
   312     MUS_LOG1( "mus: [ENGINE]     Max digital zoom( %d )",
       
   313               iCameraInfo.iMaxDigitalZoom )
       
   314     MUS_LOG1( "mus: [ENGINE]  <- TMusEngCameraHandler::MaxZoomL( %d )",
       
   315               maxZoom )
       
   316 
       
   317     return maxZoom;
       
   318     }
       
   319 
       
   320 
       
   321 // -----------------------------------------------------------------------------
       
   322 //
       
   323 // -----------------------------------------------------------------------------
       
   324 //
       
   325 EXPORT_C void TMusEngCameraHandler::ZoomInL()
       
   326     {
       
   327     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::ZoomInL()" )
       
   328     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   329 
       
   330     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   331 
       
   332     // First try to increase optical zoom factor. If in maximum value, try to
       
   333     // increase digital zoom factor.
       
   334     TInt stepSize = ZoomStepSize( iZoomInTime );
       
   335     TInt zoomFactor = camera->ZoomFactorL();
       
   336     TInt zoomDigitalFactor = camera->DigitalZoomFactorL();
       
   337  
       
   338     //increate optical zoom factor
       
   339     if ( zoomFactor + stepSize <= iCameraInfo.iMaxZoom )
       
   340         {
       
   341         //optical zoom factor is enough
       
   342         camera->SetZoomFactorL( zoomFactor + stepSize );
       
   343         stepSize = 0;
       
   344         }
       
   345     else if (zoomFactor <  iCameraInfo.iMaxZoom)
       
   346        {
       
   347             stepSize -=  iCameraInfo.iMaxZoom - zoomFactor;
       
   348             camera->SetZoomFactorL( iCameraInfo.iMaxZoom );
       
   349        }
       
   350 
       
   351     //increate digital zoom factor
       
   352     if (stepSize > 0)
       
   353         {
       
   354         if ( zoomDigitalFactor + stepSize <= iCameraInfo.iMaxDigitalZoom )
       
   355             {
       
   356             camera->SetDigitalZoomFactorL( zoomDigitalFactor + stepSize );
       
   357             }
       
   358         else 
       
   359             {
       
   360             camera->SetDigitalZoomFactorL( iCameraInfo.iMaxDigitalZoom );
       
   361             MUS_LOG( "mus: [ENGINE]     TMusEngCameraHandler::ZoomInL(): Optical \
       
   362                              and digital zoom factors are in maximum value" )
       
   363             }
       
   364         }
       
   365     
       
   366     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::ZoomInL()" )
       
   367 
       
   368     }
       
   369 
       
   370 
       
   371 // -----------------------------------------------------------------------------
       
   372 //
       
   373 // -----------------------------------------------------------------------------
       
   374 //
       
   375 EXPORT_C void TMusEngCameraHandler::ZoomOutL()
       
   376     {
       
   377     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::ZoomOutL()" )
       
   378     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   379 
       
   380     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   381 
       
   382     // First try to decrease digital zoom factor. If already zero, try to
       
   383     // decrease optical zoom factor.
       
   384     TInt stepSize = ZoomStepSize( iZoomOutTime );
       
   385     TInt zoomFactor = camera->ZoomFactorL();
       
   386     TInt zoomDigitalFactor = camera->DigitalZoomFactorL();
       
   387     
       
   388     //decreate digital zoom factor firstly
       
   389     if ( zoomDigitalFactor - stepSize >= 0  )
       
   390         {
       
   391         //digital zoom factor is enough
       
   392         camera->SetDigitalZoomFactorL( zoomDigitalFactor - stepSize );
       
   393         stepSize = 0;
       
   394         }
       
   395     else if ( zoomDigitalFactor > 0 )
       
   396         {
       
   397         stepSize -= zoomDigitalFactor;
       
   398         camera->SetDigitalZoomFactorL( 0 );
       
   399         MUS_LOG("mus: [ENGINE] Digigal Factor to zero")
       
   400         }
       
   401    
       
   402     //decreate optical zoom factor firstly
       
   403     if ( stepSize > 0 )
       
   404         {
       
   405         if ( zoomFactor - stepSize > iCameraInfo.iMinZoom )
       
   406             {
       
   407             camera->SetZoomFactorL( zoomFactor - stepSize );
       
   408             }
       
   409         else 
       
   410             {
       
   411             MUS_LOG( "mus: [ENGINE]    TMusEngCameraHandler::ZoomOutL(): Optical and \
       
   412                         digital zoom factors are in minimum value" )
       
   413             camera->SetZoomFactorL( iCameraInfo.iMinZoom );
       
   414             }
       
   415         }
       
   416 
       
   417     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::ZoomOutL()" )
       
   418     }
       
   419 
       
   420 
       
   421 // -----------------------------------------------------------------------------
       
   422 //
       
   423 // -----------------------------------------------------------------------------
       
   424 //
       
   425 EXPORT_C void TMusEngCameraHandler::ZoomDefaultL()
       
   426     {
       
   427     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::ZoomDefaultL()" )
       
   428 
       
   429     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   430 
       
   431     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   432 
       
   433     camera->SetZoomFactorL( iDefaultZoomFactor );
       
   434     camera->SetDigitalZoomFactorL( 0 );
       
   435 
       
   436     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::ZoomDefaultL()" )
       
   437     }
       
   438 
       
   439 
       
   440 // -----------------------------------------------------------------------------
       
   441 //
       
   442 // -----------------------------------------------------------------------------
       
   443 //
       
   444 EXPORT_C void TMusEngCameraHandler::SetBrightnessL( TInt aBrightness ) const
       
   445     {
       
   446     MUS_LOG1( "mus: [ENGINE]  -> TMusEngCameraHandler::SetBrightnessL( %d )",
       
   447               aBrightness )
       
   448 
       
   449     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   450 
       
   451     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   452     camera->SetBrightnessL( aBrightness );
       
   453 
       
   454     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::SetBrightnessL()" )
       
   455     }
       
   456 
       
   457 
       
   458 // -----------------------------------------------------------------------------
       
   459 //
       
   460 // -----------------------------------------------------------------------------
       
   461 //
       
   462 EXPORT_C TInt TMusEngCameraHandler::CurrentBrightnessL() const
       
   463     {
       
   464     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::CurrentBrightnessL()" )
       
   465     
       
   466     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   467 
       
   468     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   469     TInt currentBrightness = camera->BrightnessL();
       
   470 
       
   471     MUS_LOG1( "mus: [ENGINE]  <- TMusEngCameraHandler::CurrentBrightnessL(): %d",
       
   472               currentBrightness )
       
   473 
       
   474     return currentBrightness;
       
   475     }
       
   476 
       
   477 
       
   478 // -----------------------------------------------------------------------------
       
   479 //
       
   480 // -----------------------------------------------------------------------------
       
   481 //
       
   482 EXPORT_C TInt TMusEngCameraHandler::MaxBrightnessL() const
       
   483     {
       
   484     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::MaxBrightnessL()" )
       
   485     
       
   486     // maximum brightness is not in camera info, but a constant 100
       
   487 
       
   488     MUS_LOG1( "mus: [ENGINE]  <- TMusEngCameraHandler::MaxBrightnessL(): %d",
       
   489               KMaxBrightness )
       
   490 
       
   491     return KMaxBrightness;
       
   492     }
       
   493 
       
   494 
       
   495 // -----------------------------------------------------------------------------
       
   496 //
       
   497 // -----------------------------------------------------------------------------
       
   498 //
       
   499 EXPORT_C TInt TMusEngCameraHandler::MinBrightnessL() const
       
   500     {
       
   501     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::MinBrightnessL()" )
       
   502  
       
   503     // maximum brightness is not in camera info, but a constant -100
       
   504 
       
   505     MUS_LOG1( "mus: [ENGINE]  <- TMusEngCameraHandler::MinBrightnessL(): %d",
       
   506               KMinBrightness )
       
   507 
       
   508     return KMinBrightness;
       
   509     }
       
   510 
       
   511 
       
   512 // -----------------------------------------------------------------------------
       
   513 //
       
   514 // -----------------------------------------------------------------------------
       
   515 //
       
   516 EXPORT_C void TMusEngCameraHandler::IncreaseBrightnessL()
       
   517     {
       
   518     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::IncreaseBrightnessL()" )
       
   519     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   520 
       
   521     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   522 
       
   523     TInt newBrightness = camera->BrightnessL() + KBrightnessStepSize;
       
   524     
       
   525     if ( newBrightness < KMaxBrightness )
       
   526         {
       
   527         camera->SetBrightnessL( newBrightness );
       
   528         }
       
   529     else
       
   530         {
       
   531         camera->SetBrightnessL( KMaxBrightness );
       
   532         }
       
   533 
       
   534     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::IncreaseBrightnessL()" )
       
   535     }
       
   536 
       
   537 
       
   538 // -----------------------------------------------------------------------------
       
   539 //
       
   540 // -----------------------------------------------------------------------------
       
   541 //
       
   542 EXPORT_C void TMusEngCameraHandler::DecreaseBrightnessL()
       
   543     {
       
   544     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::DecreaseBrightnessL()" )
       
   545     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   546 
       
   547     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   548 
       
   549     TInt newBrightness = camera->BrightnessL() - KBrightnessStepSize;
       
   550 
       
   551     if ( newBrightness > KMinBrightness )
       
   552         {
       
   553         camera->SetBrightnessL( newBrightness );
       
   554         }
       
   555     else
       
   556         {
       
   557         camera->SetBrightnessL( KMinBrightness );
       
   558         }
       
   559 
       
   560     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::DecreaseBrightnessL()" )
       
   561     }
       
   562 
       
   563 
       
   564 // -----------------------------------------------------------------------------
       
   565 //
       
   566 // -----------------------------------------------------------------------------
       
   567 //
       
   568 EXPORT_C void TMusEngCameraHandler::BrightnessDefaultL()
       
   569     {
       
   570     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::BrightnessDefaultL()" )
       
   571     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   572 
       
   573     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   574 
       
   575     camera->SetBrightnessL( iDefaultBrightness );
       
   576 
       
   577     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::BrightnessDefaultL()" )
       
   578     }
       
   579 
       
   580 
       
   581 // -----------------------------------------------------------------------------
       
   582 //
       
   583 // -----------------------------------------------------------------------------
       
   584 //
       
   585 EXPORT_C void TMusEngCameraHandler::BrightnessAutoL()
       
   586     {
       
   587     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::BrightnessAutoL()" )
       
   588     __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) );
       
   589 
       
   590     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   591 
       
   592     camera->SetBrightnessL( CCamera::EBrightnessAuto );
       
   593 
       
   594     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::BrightnessAutoL()" )
       
   595     }
       
   596 
       
   597 // -----------------------------------------------------------------------------
       
   598 //
       
   599 // -----------------------------------------------------------------------------
       
   600 //
       
   601 void TMusEngCameraHandler::InitializeZoomStepSize()
       
   602     {
       
   603     MUS_LOG( "mus: [ENGINE]  -> TMusEngCameraHandler::InitializeZoomStepSize()" )
       
   604     MUS_LOG2( "iMaxZoom = %d, iMinZoom = %d", iCameraInfo.iMaxZoom, iCameraInfo.iMinZoom);
       
   605     MUS_LOG2( "iMaxDigitalZoom = %d, iMaxDigitalZoomFactor = %d", 
       
   606             iCameraInfo.iMaxDigitalZoom, iCameraInfo.iMaxDigitalZoomFactor);
       
   607 
       
   608     iBigZoomStep = ( iCameraInfo.iMaxZoom + iCameraInfo.iMaxDigitalZoom - 
       
   609             iCameraInfo.iMinZoom ) / KZoomBigStepCount;
       
   610             
       
   611     if ( iBigZoomStep < KZoomStepMinSize )
       
   612         iBigZoomStep = KZoomStepMinSize;
       
   613 
       
   614     iSmallZoomStep = ( iCameraInfo.iMaxZoom + iCameraInfo.iMaxDigitalZoom - 
       
   615             iCameraInfo.iMinZoom ) / KZoomSmallStepCount;
       
   616     
       
   617     if ( iSmallZoomStep < KZoomStepMinSize )
       
   618         iSmallZoomStep = KZoomStepMinSize;
       
   619 
       
   620     MUS_LOG2( "mus: [ENGINE]  iSmallZoomStep = %d, iBigZoomStep = %d", 
       
   621             iSmallZoomStep, iBigZoomStep )
       
   622     MUS_LOG( "mus: [ENGINE]  <- TMusEngCameraHandler::InitializeZoomStepSize()" )   
       
   623     }
       
   624 
       
   625 // -----------------------------------------------------------------------------
       
   626 //
       
   627 // -----------------------------------------------------------------------------
       
   628 //
       
   629 void TMusEngCameraHandler::ReadCameraUsageKeyL()
       
   630     {
       
   631     MUS_LOG( "mus: [ENGINE] -> TMusEngCameraHandler::ReadCameraUsageKeyL()" )
       
   632 
       
   633     // We try to read camera usage. If we do not succeed, we use default
       
   634     iCameraUsage = MusSettingsKeys::EUseCameraSwapping;
       
   635     TRAPD( error, 
       
   636             iCameraUsage = MultimediaSharingSettings::CameraUsageL() )
       
   637     __ASSERT_ALWAYS( error == KErrNone || error == KErrNotFound, 
       
   638                      User::Leave( error ) );
       
   639     
       
   640     MUS_LOG( "mus: [ENGINE] <- TMusEngCameraHandler::ReadCameraUsageKeyL()" )
       
   641     
       
   642     }
       
   643 
       
   644 // -----------------------------------------------------------------------------
       
   645 //  Calculate the zoom step based time escaped
       
   646 // -----------------------------------------------------------------------------
       
   647 TInt TMusEngCameraHandler::ZoomStepSize( TInt64& aTime )
       
   648     {
       
   649     TTime now;
       
   650     now.HomeTime();
       
   651     TInt64 timeNow = now.Int64();   
       
   652     TInt stepSize = ( ( timeNow - aTime ) <= KZoomFasterTime ) ? iBigZoomStep : iSmallZoomStep;
       
   653     
       
   654     aTime = now.Int64();
       
   655     
       
   656     MUS_LOG1( "mus: [ENGINE]  stepSize = %d", stepSize );    
       
   657 
       
   658     return stepSize;
       
   659     }
       
   660 
       
   661 // -----------------------------------------------------------------------------
       
   662 //  Disable camera before it changes it. It enables camera after change. 
       
   663 // -----------------------------------------------------------------------------
       
   664 void TMusEngCameraHandler::ChangeActiveCameraL( TCurrentCamera aNewCamera )
       
   665     {
       
   666     MUS_LOG( "mus: [ENGINE] ->  ChangeActiveCamera()" )
       
   667     
       
   668     CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession );
       
   669     CMceDisplaySink* display = MusEngMceUtils::GetDisplayL( *iSession );
       
   670     MUS_LOG( "mus: [ENGINE]  Camera enabled ?" )
       
   671     if ( camera->IsEnabled() )
       
   672         {
       
   673         MUS_LOG( "mus: [ENGINE]  Is view finder enabled? " )
       
   674             if ( display->IsEnabled() )
       
   675                 {
       
   676                 MUS_LOG( "mus: [ENGINE]  Disable view finder" )
       
   677                 display->DisableL();
       
   678                 }
       
   679         MUS_LOG( "mus: [ENGINE]  Disable camera" )
       
   680         camera->DisableL();
       
   681         camera->SetCameraIndexL( aNewCamera );
       
   682         camera->EnableL();
       
   683         display->EnableL();
       
   684         }
       
   685     else
       
   686         {
       
   687         if ( display->IsEnabled() )
       
   688             {
       
   689             MUS_LOG( "mus: [ENGINE]  Disable view finder" )
       
   690             display->DisableL();
       
   691             }
       
   692         MUS_LOG( "mus: [ENGINE]  set camera index" )
       
   693         camera->SetCameraIndexL( aNewCamera );
       
   694         MUS_LOG( "mus: [ENGINE]  Enable camera" ) 
       
   695         display->EnableL();
       
   696         }
       
   697     
       
   698     MUS_LOG( "mus: [ENGINE]  -> fetching new iCameraInfo..." )
       
   699     camera->GetCameraInfo( iCameraInfo );
       
   700     iDefaultZoomFactor = camera->ZoomFactorL();        
       
   701     InitializeZoomStepSize();
       
   702     }
       
   703