multimediacommscontroller/mmccfilesourcesink/src/mccfilesource.cpp
changeset 0 1bce908db942
equal deleted inserted replaced
-1:000000000000 0:1bce908db942
       
     1 /*
       
     2 * Copyright (c) 2006 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 
       
    20         
       
    21 // INCLUDE FILES
       
    22 #include "mccfilesource.h"
       
    23 #include "mccfilesourceimpl.h"
       
    24 #include "mmcccodecinformation.h"
       
    25 #include "mmccinterfacedef.h"
       
    26 #include "mccfilesourcelogs.h"
       
    27 #include "mccinternaldef.h"
       
    28 
       
    29 
       
    30 // ============================ MEMBER FUNCTIONS ===============================
       
    31 
       
    32 // -----------------------------------------------------------------------------
       
    33 // CMccFileSource::NewSourceL
       
    34 // -----------------------------------------------------------------------------
       
    35 //
       
    36 MDataSource* CMccFileSource::NewSourceL( TUid /*aImplementationUid*/, 
       
    37                                          const TDesC8& /*aInitData*/ )
       
    38     {
       
    39     CMccFileSource* self = new ( ELeave ) CMccFileSource();
       
    40     return static_cast<MDataSource*>( self );
       
    41     }
       
    42 
       
    43 // -----------------------------------------------------------------------------
       
    44 // CMccFileSource::ConstructSourceL
       
    45 // -----------------------------------------------------------------------------
       
    46 //
       
    47 void CMccFileSource::ConstructSourceL( const TDesC8& aInitData )
       
    48     {    	
       
    49 	iSourceImpl = CMccFileSourceImpl::NewL( 
       
    50         MCC_ENDPOINT_ID( static_cast<MDataSource*>( this ) ) );
       
    51   
       
    52     TPckgBuf<TFileName> initData;
       
    53     initData.Copy( aInitData );
       
    54     
       
    55     OpenFileL( initData() );
       
    56     }
       
    57 	    
       
    58 // -----------------------------------------------------------------------------
       
    59 // Constructor.
       
    60 // -----------------------------------------------------------------------------
       
    61 //
       
    62 CMccFileSource::CMccFileSource (): 
       
    63     CMccDataSource( KMccFileSourceUid )
       
    64     {
       
    65     }
       
    66         
       
    67 // -----------------------------------------------------------------------------
       
    68 // Destructor.
       
    69 // -----------------------------------------------------------------------------
       
    70 //
       
    71 CMccFileSource::~CMccFileSource ()
       
    72     {
       
    73 	delete iSourceImpl;    
       
    74     }
       
    75 
       
    76 // -----------------------------------------------------------------------------
       
    77 // CMccFileSource::GetParameterL
       
    78 // -----------------------------------------------------------------------------
       
    79 //    
       
    80 void CMccFileSource::GetParameterL( TUint32 aParam, TDes8& aVal )
       
    81     {
       
    82     if ( aParam == KMccFileFastForward )
       
    83         {
       
    84         // aVal is TPckgBuf<TInt>
       
    85         User::Leave( KErrNotSupported );
       
    86         }
       
    87     else
       
    88         {
       
    89         TMccFileSourceSetting& settings = 
       
    90             reinterpret_cast<TMccFileSourceSettingBuf&>( aVal )();
       
    91         
       
    92         switch ( aParam )
       
    93             {
       
    94             case KMccFileInfo:
       
    95                 {
       
    96                 // Read all available values 
       
    97                 GetFileInfoL( settings );
       
    98                 break;
       
    99                 }
       
   100             case KMccFileName:
       
   101                 {
       
   102                 settings.iFileName = FileNameL();
       
   103                 break;
       
   104                 }
       
   105             case KMccFileDuration:
       
   106                 {
       
   107                 settings.iDuration = DurationL();
       
   108                 break;
       
   109                 }
       
   110             case KMccFilePosition:
       
   111                 {
       
   112                 settings.iPosition = PositionL();
       
   113                 break;
       
   114                 }
       
   115             case KMccFileVideoFrameRate:
       
   116                 {
       
   117                 settings.iVideoFrameRate = VideoFrameRateL();
       
   118                 break;
       
   119                 }
       
   120             case KMccFileVideoBitRate:
       
   121                 {
       
   122                 settings.iVideoBitRate = VideoBitRateL();
       
   123                 break;
       
   124                 } 
       
   125             case KMccFileVideoFrameSize:
       
   126                 {
       
   127                 settings.iVideoFrameSize = VideoFrameSizeL();
       
   128                 break;
       
   129                 }
       
   130             case KMccFileAudioBitRate:
       
   131                 {
       
   132                 settings.iAudioBitRate = AudioBitRateL();
       
   133                 break;
       
   134                 }
       
   135             case KMccFileAudioFourCC:
       
   136                 {
       
   137                 settings.iAudioFourCC = AudioFourCCL();
       
   138                 break;
       
   139                 }
       
   140             case KMccFileVideoFourCC:
       
   141                 {
       
   142                 settings.iVideoFourCC = VideoFourCCL();
       
   143                 break;
       
   144                 }
       
   145             case KMccConfigKey:
       
   146                 {
       
   147                 __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   148                 iSourceImpl->GetConfigKeyL( aVal );
       
   149                 break;
       
   150                 }
       
   151             default:
       
   152                 {
       
   153                 User::Leave( KErrArgument );
       
   154                 break;
       
   155                 }
       
   156             }
       
   157         }
       
   158     }
       
   159 
       
   160 // -----------------------------------------------------------------------------
       
   161 // CMccFileSource::SetParameterL
       
   162 // -----------------------------------------------------------------------------
       
   163 //
       
   164 void CMccFileSource::SetParameterL( TUint32 aParam, const TDesC8& aVal )
       
   165     {
       
   166     if ( aParam == KMccFileFastForward )
       
   167         {
       
   168         // aVal is TPckgBuf<TInt>
       
   169         User::Leave( KErrNotSupported );
       
   170         }
       
   171     else if ( aParam == KMccPrerollTime )
       
   172         {
       
   173         __ASSERT_ALWAYS(iSourceImpl, User::Leave(KErrNotReady));
       
   174         const TPckgBuf<TInt> *packageBuffer = 
       
   175             reinterpret_cast<const TPckgBuf<TInt>* >(&aVal);
       
   176         __ASSERT_DEBUG( packageBuffer != NULL, 
       
   177             User::Panic(_L("CMccFileSource::SetParameterL: casting packageBuffer failed"), 
       
   178             KErrArgument) );
       
   179         __ASSERT_ALWAYS( packageBuffer != NULL, User::Leave(KErrArgument) );
       
   180         TInt preroll = (*packageBuffer)();
       
   181         iSourceImpl->SetDelayAfterStop(preroll);
       
   182         }
       
   183     else
       
   184         {
       
   185         const TMccFileSourceSetting& settings = 
       
   186             reinterpret_cast<const TMccFileSourceSettingBuf&>( aVal )();
       
   187             
       
   188         switch ( aParam )
       
   189             {
       
   190             case KMccFileName:
       
   191                 {
       
   192                 OpenFileL( settings.iFileName, ETrue );
       
   193                 break;
       
   194                 }
       
   195             case KMccFilePosition:
       
   196                 {
       
   197                 SetPositionL( settings.iPosition );
       
   198                 break;
       
   199                 }
       
   200             case KMccFileVideoFrameRate:
       
   201             case KMccFileVideoBitRate:
       
   202             case KMccFileVideoFrameSize:
       
   203             case KMccFileAudioBitRate:
       
   204             case KMccFileDuration:
       
   205             case KMccFileInfo:
       
   206             case KMccFileAudioFourCC:
       
   207             case KMccFileVideoFourCC:
       
   208             default:
       
   209                 {
       
   210                 User::Leave( KErrArgument );
       
   211                 break;
       
   212                 }
       
   213             }
       
   214         }
       
   215     }
       
   216 
       
   217 // -----------------------------------------------------------------------------
       
   218 // CMccFileSource::OpenFileL(TFileName aFileName)
       
   219 //
       
   220 // Opens a 3gp file for streaming and reads media descriptions into
       
   221 // member variables
       
   222 // -----------------------------------------------------------------------------
       
   223 //
       
   224 void CMccFileSource::OpenFileL( TFileName aFileName, TBool aFileChangeMode )
       
   225     {
       
   226     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   227 
       
   228 	iSourceImpl->OpenFileL( aFileName, aFileChangeMode );
       
   229     }
       
   230 
       
   231 // -----------------------------------------------------------------------------
       
   232 // CMccFileSource::CloseFileL()
       
   233 //
       
   234 // Closes the 3gp file
       
   235 // -----------------------------------------------------------------------------
       
   236 //
       
   237 void CMccFileSource::CloseFileL()
       
   238     {
       
   239     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   240 
       
   241 	iSourceImpl->CloseFileL();
       
   242     }
       
   243 
       
   244 // -----------------------------------------------------------------------------
       
   245 // CMccFileSource::FileNameL()
       
   246 //
       
   247 // Gets filename
       
   248 // -----------------------------------------------------------------------------
       
   249 //   
       
   250 TFileName& CMccFileSource::FileNameL()
       
   251     {
       
   252     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   253 
       
   254 	return iSourceImpl->FileNameL();
       
   255     }
       
   256 
       
   257 // -----------------------------------------------------------------------------
       
   258 // CMccFileSource::SetPositionL(TTimeIntervalMicroSeconds aPosition)
       
   259 // 
       
   260 // Sets a new streaming position
       
   261 // -----------------------------------------------------------------------------
       
   262 //
       
   263 void CMccFileSource::SetPositionL( TTimeIntervalMicroSeconds aPosition )
       
   264     {
       
   265     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   266 
       
   267     iSourceImpl->SetPositionL( aPosition );
       
   268 	}
       
   269     
       
   270 // -----------------------------------------------------------------------------
       
   271 // CMccFileSource::VideoFrameRateL()
       
   272 // 
       
   273 // Returns current video frame rate
       
   274 // -----------------------------------------------------------------------------
       
   275 //
       
   276 TReal CMccFileSource::VideoFrameRateL()
       
   277     {
       
   278     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   279 
       
   280     return iSourceImpl->VideoFrameRateL();
       
   281     }
       
   282 
       
   283 // -----------------------------------------------------------------------------
       
   284 // CMccFileSource::AudioBitRateL()
       
   285 // 
       
   286 // Returns current audio bit rate
       
   287 // -----------------------------------------------------------------------------
       
   288 //
       
   289 TUint32 CMccFileSource::AudioBitRateL()
       
   290     {
       
   291     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   292 
       
   293     return iSourceImpl->AudioBitRateL();
       
   294     }
       
   295 
       
   296 // -----------------------------------------------------------------------------
       
   297 // CMccFileSource::DurationL()
       
   298 // 
       
   299 // Returns duration of current media clip
       
   300 // -----------------------------------------------------------------------------
       
   301 //
       
   302 TTimeIntervalMicroSeconds CMccFileSource::DurationL()
       
   303     {
       
   304     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   305 
       
   306     return iSourceImpl->DurationL();
       
   307     }
       
   308 
       
   309 // -----------------------------------------------------------------------------
       
   310 // CMccFileSource::VideoFrameSizeL()
       
   311 // 
       
   312 // Returns current video frame size
       
   313 // -----------------------------------------------------------------------------
       
   314 //
       
   315 TSize CMccFileSource::VideoFrameSizeL()
       
   316     {
       
   317     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   318 
       
   319     return iSourceImpl->VideoFrameSizeL();
       
   320     }
       
   321     
       
   322 // -----------------------------------------------------------------------------
       
   323 // CMccFileSource::VideoBitRateL()
       
   324 // 
       
   325 // Returns current video bitrate
       
   326 // -----------------------------------------------------------------------------
       
   327 //
       
   328 TUint32 CMccFileSource::VideoBitRateL()
       
   329     {
       
   330     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   331 
       
   332     return iSourceImpl->VideoBitRateL();
       
   333     }
       
   334 
       
   335 // -----------------------------------------------------------------------------
       
   336 // CMccFileSource::PositionL()
       
   337 // 
       
   338 // Returns current streaming position
       
   339 // -----------------------------------------------------------------------------
       
   340 //
       
   341 TTimeIntervalMicroSeconds CMccFileSource::PositionL()
       
   342     {
       
   343     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   344 
       
   345     return iSourceImpl->PositionL();	
       
   346     }
       
   347 
       
   348 // -----------------------------------------------------------------------------
       
   349 // CMccFileSource::AudioFourCCL()
       
   350 // 
       
   351 // Returns audio fourcc (zero if audio not present)
       
   352 // -----------------------------------------------------------------------------
       
   353 //
       
   354 TFourCC CMccFileSource::AudioFourCCL()
       
   355     {
       
   356     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   357 
       
   358     return iSourceImpl->AudioFourCCL();
       
   359     }
       
   360 
       
   361 // -----------------------------------------------------------------------------
       
   362 // CMccFileSource::VideoFourCCL()
       
   363 // 
       
   364 // Returns video fourcc (zero if video not present)
       
   365 // -----------------------------------------------------------------------------
       
   366 //
       
   367 TFourCC CMccFileSource::VideoFourCCL()
       
   368     {
       
   369     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   370 
       
   371     return iSourceImpl->VideoFourCCL();
       
   372     } 
       
   373     
       
   374 // -----------------------------------------------------------------------------
       
   375 // CMccFileSource::PlayL()
       
   376 // 
       
   377 // Starts streaming from 3gp file
       
   378 // -----------------------------------------------------------------------------
       
   379 //
       
   380 void CMccFileSource::SourcePlayL()
       
   381     {
       
   382     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   383 
       
   384     iSourceImpl->SourcePlayL();
       
   385     }
       
   386 
       
   387 // -----------------------------------------------------------------------------
       
   388 // CMccFileSource::PauseL()
       
   389 // 
       
   390 // Pauses streaming by cancelling timers
       
   391 // -----------------------------------------------------------------------------
       
   392 //
       
   393 void CMccFileSource::SourcePauseL()
       
   394     {
       
   395     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   396 
       
   397     iSourceImpl->SourcePauseL();
       
   398 	}
       
   399 
       
   400 // -----------------------------------------------------------------------------
       
   401 // CMccFileSource::StopL()
       
   402 // 
       
   403 // Stops streaming
       
   404 // -----------------------------------------------------------------------------
       
   405 //
       
   406 void CMccFileSource::SourceStopL()
       
   407     {
       
   408     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   409 
       
   410     iSourceImpl->SourceStopL();
       
   411     }
       
   412 
       
   413 // -----------------------------------------------------------------------------
       
   414 // CMccFileSource::SourceDataTypeCode()
       
   415 // -----------------------------------------------------------------------------
       
   416 //
       
   417 TFourCC CMccFileSource::SourceDataTypeCode( TMediaId aMediaId )
       
   418 	{
       
   419 	if ( iSourceImpl )
       
   420 		{
       
   421     	return iSourceImpl->SourceDataTypeCode( aMediaId );	
       
   422 		}
       
   423 	else
       
   424 		{
       
   425 		__FILESOURCE_CONTROLL( "CMccFileSource::SourceDataTypeCode,\
       
   426 iSourceImpl= NULL" )
       
   427 		return TFourCC();
       
   428 		}
       
   429 	}
       
   430 	
       
   431 // -----------------------------------------------------------------------------
       
   432 // CMccFileSource::SetSourceDataTypeCode()
       
   433 // -----------------------------------------------------------------------------
       
   434 //
       
   435 TInt CMccFileSource::SetSourceDataTypeCode( TFourCC aCodec, 
       
   436                             TMediaId aMediaId )
       
   437 	{
       
   438 	if ( iSourceImpl )
       
   439 		{
       
   440         return iSourceImpl->SetSourceDataTypeCode( aCodec, aMediaId );	
       
   441 		}
       
   442 	else
       
   443 		{
       
   444 		__FILESOURCE_CONTROLL( "CMccFileSource::SetSourceDataTypeCode,\
       
   445 iSourceImpl= NULL" )
       
   446 
       
   447 		return KErrNotFound;	
       
   448 		}
       
   449 	}	
       
   450 
       
   451 // -----------------------------------------------------------------------------
       
   452 // CMccFileSource::BufferEmptiedL()
       
   453 // -----------------------------------------------------------------------------
       
   454 //
       
   455 void CMccFileSource::BufferEmptiedL( CMMFBuffer* /*aBuffer*/ )
       
   456 	{
       
   457     __FILESOURCE_CONTROLL( "CMccFileSource::BufferEmptiedL" )
       
   458     
       
   459    	__ASSERT_ALWAYS( EFalse, User::Leave( KErrNotSupported ) );
       
   460 	}
       
   461 	
       
   462 // -----------------------------------------------------------------------------
       
   463 // CMccFileSource::CanCreateSourceBuffer()
       
   464 // -----------------------------------------------------------------------------
       
   465 //
       
   466 TBool CMccFileSource::CanCreateSourceBuffer()
       
   467 	{
       
   468 	__FILESOURCE_CONTROLL( "CMccFileSource::CanCreateSourceBuffer" )
       
   469 
       
   470     return EFalse;
       
   471 	}	
       
   472 
       
   473 // -----------------------------------------------------------------------------
       
   474 // CMccFileSource::CreateSourceBufferL()
       
   475 // -----------------------------------------------------------------------------
       
   476 //
       
   477 CMMFBuffer* CMccFileSource::CreateSourceBufferL( 
       
   478 	TMediaId /*aMediaId*/, 
       
   479     TBool& /*aReference*/ )
       
   480 	{
       
   481 	__FILESOURCE_CONTROLL( "CMccFileSource::CreateSourceBufferL" )
       
   482 
       
   483     CMMFBuffer* buffer = NULL;
       
   484    
       
   485    	__ASSERT_ALWAYS( EFalse, User::Leave( KErrNotSupported ) );
       
   486 	
       
   487 	return buffer;	
       
   488 	}
       
   489 	
       
   490 // -----------------------------------------------------------------------------
       
   491 // CMccFileSource::SourceThreadLogon()
       
   492 // -----------------------------------------------------------------------------
       
   493 //
       
   494 TInt CMccFileSource::SourceThreadLogon( MAsyncEventHandler& aEventHandler )
       
   495 	{
       
   496     __FILESOURCE_CONTROLL( "CMccFileSource::SourceThreadLogon" )
       
   497     
       
   498     if ( iSourceImpl )
       
   499 	    {
       
   500 	    return iSourceImpl->SourceThreadLogon( aEventHandler );
       
   501 	    }
       
   502 	else
       
   503 		{
       
   504 		__FILESOURCE_CONTROLL( "CMccFileSource::SourceThreadLogon, \
       
   505 iSourceImpl=NULL" )
       
   506 
       
   507 		return KErrNotFound;	
       
   508 		}
       
   509 	}
       
   510 	
       
   511 // -----------------------------------------------------------------------------
       
   512 // CMccFileSource::SourceThreadLogoff()
       
   513 // -----------------------------------------------------------------------------
       
   514 //
       
   515 void CMccFileSource::SourceThreadLogoff()
       
   516 	{
       
   517     __FILESOURCE_CONTROLL( "CMccFileSource::SourceThreadLogoff" )
       
   518     if ( iSourceImpl )
       
   519 	    {
       
   520 	    iSourceImpl->SourceThreadLogoff();
       
   521 	    TRAP_IGNORE( iSourceImpl->SourceStopL() );	
       
   522 	    }
       
   523 	else
       
   524 		{
       
   525 		__FILESOURCE_CONTROLL( "CMccFileSource::SourceThreadLogoff, \
       
   526 iSourceImpl=NULL" )
       
   527 		}
       
   528 	}
       
   529 	
       
   530 // -----------------------------------------------------------------------------
       
   531 // CMccFileSource::SourcePrimeL()
       
   532 // -----------------------------------------------------------------------------
       
   533 //
       
   534 void CMccFileSource::SourcePrimeL()
       
   535 	{
       
   536     __FILESOURCE_CONTROLL( "CMccFileSource::SourcePrimeL" )
       
   537     __ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   538 
       
   539     iSourceImpl->SourcePrimeL();	
       
   540 	}
       
   541 
       
   542 // -----------------------------------------------------------------------------
       
   543 // CMccFileSource::FillBufferL()
       
   544 // -----------------------------------------------------------------------------
       
   545 //
       
   546 void CMccFileSource::FillBufferL( 
       
   547 	CMMFBuffer* aBuffer,
       
   548     MDataSink* aConsumer,
       
   549     TMediaId aMediaId )
       
   550 	{
       
   551 	__ASSERT_ALWAYS( iSourceImpl, User::Leave( KErrArgument ) );
       
   552 
       
   553     iSourceImpl->FillBufferL( aBuffer, aConsumer, aMediaId );
       
   554 	}	
       
   555                   
       
   556 // -----------------------------------------------------------------------------
       
   557 // CMccFileSource::NegotiateSourceL()
       
   558 // -----------------------------------------------------------------------------
       
   559 //
       
   560 void CMccFileSource::NegotiateSourceL( MDataSink& /*aDataSink*/ )
       
   561 	{
       
   562     __FILESOURCE_CONTROLL( "CMccFileSource::NegotiateSourceL" )
       
   563 	}
       
   564 
       
   565 // -----------------------------------------------------------------------------
       
   566 // CMccFileSource::GetFileInfoL()
       
   567 // -----------------------------------------------------------------------------
       
   568 //
       
   569 void CMccFileSource::GetFileInfoL( TMccFileSourceSetting& aSettings )
       
   570 	{
       
   571     aSettings.iFileName = FileNameL();
       
   572     aSettings.iDuration = DurationL();
       
   573     aSettings.iPosition = PositionL();
       
   574     aSettings.iVideoFrameRate = VideoFrameRateL();
       
   575     aSettings.iVideoBitRate = VideoBitRateL();
       
   576     aSettings.iVideoFrameSize = VideoFrameSizeL();
       
   577     aSettings.iAudioBitRate = AudioBitRateL();
       
   578     aSettings.iAudioFourCC = AudioFourCCL();
       
   579     aSettings.iVideoFourCC = VideoFourCCL();
       
   580         
       
   581     __FILESOURCE_CONTROLL( "CMccFileSource::GetFileInfoL, file:" )
       
   582     #ifdef __MCC_FILESOURCE_CONTROLL
       
   583         TMccLog::Print( KFileSource, aSettings.iFileName );  
       
   584     #endif
       
   585     __FILESOURCE_CONTROLL_INT1( "duration:", aSettings.iDuration.Int64() )  
       
   586     __FILESOURCE_CONTROLL_INT1( "position:", aSettings.iPosition.Int64() )  
       
   587     __FILESOURCE_CONTROLL_INT1( "videoframerate:", (TInt) aSettings.iVideoFrameRate )  
       
   588     __FILESOURCE_CONTROLL_INT1( "videobitrate:", aSettings.iVideoBitRate )  
       
   589     __FILESOURCE_CONTROLL_INT2( "videoframesize width:", 
       
   590                                 aSettings.iVideoFrameSize.iWidth, 
       
   591                                 " height:",
       
   592                                 aSettings.iVideoFrameSize.iHeight )  
       
   593     __FILESOURCE_CONTROLL_INT1( "audiobitrate:", aSettings.iAudioBitRate ) 
       
   594     __FILESOURCE_CONTROLL_INT1( "audio fourcc:", aSettings.iAudioFourCC.FourCC() ) 
       
   595     __FILESOURCE_CONTROLL_INT1( "video fourcc:", aSettings.iVideoFourCC.FourCC() ) 
       
   596     __FILESOURCE_CONTROLL( "CMccFileSource::GetFileInfoL, exit" ) 
       
   597     }
       
   598 
       
   599