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" ); |