imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoderv2.cpp
branchRCL_3
changeset 5 82749d516180
parent 0 2014ca87e772
child 7 2eb74cf6572e
equal deleted inserted replaced
1:235a7fc86938 5:82749d516180
   153     
   153     
   154     delete iDecoder;
   154     delete iDecoder;
   155     iDecoder = NULL;
   155     iDecoder = NULL;
   156     
   156     
   157     CImageDecoder::TOptions options = ( CImageDecoder::TOptions )( 
   157     CImageDecoder::TOptions options = ( CImageDecoder::TOptions )( 
   158             CImageDecoder::EOptionNoDither | CImageDecoder::EPreferFastDecode );
   158             CImageDecoder::EOptionNoDither | CImageDecoder::EPreferFastDecode | CImageDecoder::EOptionAlwaysThread );
   159 
   159 
   160     TRAPD( decErr, iDecoder = CExtJpegDecoder::DataNewL( 
   160     TRAPD( decErr, iDecoder = CExtJpegDecoder::DataNewL( 
   161             CExtJpegDecoder::EHwImplementation, iFs, *iBuffer, options ));
   161             CExtJpegDecoder::EHwImplementation, iFs, *iBuffer, options ));
   162                     
   162                     
   163     if ( decErr != KErrNone )
   163     if ( decErr != KErrNone )
   164         {
   164         {
       
   165         TN_DEBUG2( "CThumbnailImageDecoderv2::CreateDecoderL() - HW CExtJpegDecoder failed = %d", decErr );
   165         TRAP( decErr, iDecoder = CExtJpegDecoder::DataNewL(
   166         TRAP( decErr, iDecoder = CExtJpegDecoder::DataNewL(
   166                 CExtJpegDecoder::ESwImplementation, iFs, *iBuffer, options ));
   167                 CExtJpegDecoder::ESwImplementation, iFs, *iBuffer, options ));
   167         
   168         
   168         if ( decErr != KErrNone )
   169         if ( decErr != KErrNone )
   169             {
   170             {
       
   171             TN_DEBUG2( "CThumbnailImageDecoderv2::CreateDecoderL() - SW CExtJpegDecoder failed %d", decErr);
       
   172             LeaveIfCorruptL( decErr );
       
   173             
   170             TRAP( decErr, iDecoder = CImageDecoder::DataNewL( iFs, *iBuffer, KJpegMime(), options ) );
   174             TRAP( decErr, iDecoder = CImageDecoder::DataNewL( iFs, *iBuffer, KJpegMime(), options ) );
   171             
   175             
   172             if ( decErr != KErrNone )
   176             if ( decErr != KErrNone )
   173                 {                        
   177                 {                  
       
   178                 TN_DEBUG2( "CThumbnailImageDecoderv2::CreateDecoderL() - CImageDecoder failed %d", decErr);
       
   179                 LeaveIfCorruptL( decErr );
       
   180             
   174                 // don't force any mime type
   181                 // don't force any mime type
   175                 TRAPD( decErr, iDecoder = CImageDecoder::DataNewL( iFs, *iBuffer, options ) );
   182                 TRAPD( decErr, iDecoder = CImageDecoder::DataNewL( iFs, *iBuffer, options ) );
   176                 if ( decErr != KErrNone )
   183                 if ( decErr != KErrNone )
   177                     {                    
   184                     {                    
   178                     TN_DEBUG1( "CThumbnailImageDecoderv2::CreateDecoderL() - error" );
   185                     TN_DEBUG2( "CThumbnailImageDecoderv2::CImageDecoder() - CImageDecoder no mime error %d", decErr  );
   179                     
       
   180                     User::Leave( decErr );
   186                     User::Leave( decErr );
   181                     }
   187                     }
   182                 }
   188                 }
   183             
   189             
   184             TN_DEBUG1( "CThumbnailImageDecoderv2::CreateDecoderL() - CImageDecoder created" );
   190             TN_DEBUG1( "CThumbnailImageDecoderv2::CreateDecoderL() - CImageDecoder created" );
   194         }
   200         }
   195      
   201      
   196     TN_DEBUG1( "CThumbnailImageDecoderv2::CreateDecoderL() end" );
   202     TN_DEBUG1( "CThumbnailImageDecoderv2::CreateDecoderL() end" );
   197     }
   203     }
   198 
   204 
       
   205 // -----------------------------------------------------------------------------
       
   206 // CThumbnailImageDecoderv2::LeaveIfCorruptL()
       
   207 // Leave if image is corrupted
       
   208 // -----------------------------------------------------------------------------
       
   209 //
       
   210 void CThumbnailImageDecoderv2::LeaveIfCorruptL(const TInt aError )
       
   211     {
       
   212     //no sense to try other codecs if image is corrupted
       
   213     if( aError == KErrCorrupt || aError == KErrUnderflow)
       
   214         {
       
   215         User::Leave( aError );
       
   216         }
       
   217     }
       
   218 
   199 //End of file
   219 //End of file