289 CAccPolHdmiAudioFormat::NewL(); |
289 CAccPolHdmiAudioFormat::NewL(); |
290 CleanupStack::PushL( hdmiAudioFormat ); |
290 CleanupStack::PushL( hdmiAudioFormat ); |
291 |
291 |
292 // Set audio format |
292 // Set audio format |
293 TUid audioFormat; |
293 TUid audioFormat; |
294 audioFormat.iUid = audioDataBlock->iAudioFormatCode; |
294 // Map the audio format code defined in |
|
295 // cea861ediddatatypes.h to accpolhdmiaudioformat.h |
|
296 switch ( audioDataBlock->iAudioFormatCode ) |
|
297 { |
|
298 case KAudioFormatCodePCM: |
|
299 { |
|
300 audioFormat = HdmiAudioFormat::KUidFormatPCM16; |
|
301 break; |
|
302 } |
|
303 case KAudioFormatCodeAC3: |
|
304 { |
|
305 audioFormat = HdmiAudioFormat::KUidFormatAC3; |
|
306 break; |
|
307 } |
|
308 case KAudioFormatCodeMPEG1: |
|
309 { |
|
310 audioFormat = HdmiAudioFormat::KUidFormatMPEG1; |
|
311 break; |
|
312 } |
|
313 case KAudioFormatCodeMP3: |
|
314 { |
|
315 audioFormat = HdmiAudioFormat::KUidFormatMP3; |
|
316 break; |
|
317 } |
|
318 case KAudioFormatCodeMPEG2: |
|
319 { |
|
320 audioFormat = HdmiAudioFormat::KUidFormatMPEG2; |
|
321 break; |
|
322 } |
|
323 case KAudioFormatCodeAACLC: |
|
324 { |
|
325 audioFormat = HdmiAudioFormat::KUidFormatAACLC; |
|
326 break; |
|
327 } |
|
328 case KAudioFormatCodeDTS: |
|
329 { |
|
330 audioFormat = HdmiAudioFormat::KUidFormatDTS; |
|
331 break; |
|
332 } |
|
333 case KAudioFormatCodeATRAC: |
|
334 { |
|
335 audioFormat = HdmiAudioFormat::KUidFormatATRAC; |
|
336 break; |
|
337 } |
|
338 case KAudioFormatCodeDSD: |
|
339 { |
|
340 audioFormat = HdmiAudioFormat::KUidFormatDSD; |
|
341 break; |
|
342 } |
|
343 case KAudioFormatCodeEAC3: |
|
344 { |
|
345 audioFormat = HdmiAudioFormat::KUidFormatEAC3; |
|
346 break; |
|
347 } |
|
348 case KAudioFormatCodeDTSHD: |
|
349 { |
|
350 audioFormat = HdmiAudioFormat::KUidFormatDTSHD; |
|
351 break; |
|
352 } |
|
353 case KAudioFormatCodeMLP: |
|
354 { |
|
355 audioFormat = HdmiAudioFormat::KUidFormatMLP; |
|
356 break; |
|
357 } |
|
358 case KAudioFormatCodeDST: |
|
359 { |
|
360 audioFormat = HdmiAudioFormat::KUidFormatDST; |
|
361 break; |
|
362 } |
|
363 case KAudioFormatCodeWMAPRO: |
|
364 { |
|
365 audioFormat = HdmiAudioFormat::KUidFormatWMAPRO; |
|
366 break; |
|
367 } |
|
368 default: |
|
369 { |
|
370 audioFormat.iUid = KAudioFormatCodeNA; |
|
371 break; |
|
372 } |
|
373 } |
295 hdmiAudioFormat->SetAudioFormat( audioFormat ); // const TUid aAudioFormat, |
374 hdmiAudioFormat->SetAudioFormat( audioFormat ); // const TUid aAudioFormat, |
296 |
375 |
297 // Set bit resolution |
376 // Set bit resolution |
298 TUint32 bitResolution( CAccPolHdmiAudioFormat::EUnknownBitsPerSample ); |
377 TUint32 bitResolution( CAccPolHdmiAudioFormat::EUnknownBitsPerSample ); |
299 if( audioDataBlock->iSupport24Bit ) |
378 if( audioDataBlock->iSupport24Bit ) |
1332 continue; |
1411 continue; |
1333 } |
1412 } |
1334 |
1413 |
1335 availableIndex++; |
1414 availableIndex++; |
1336 } |
1415 } |
1337 |
1416 |
1338 if( ( (KDefaultCEAModePhysImgAspRatioNr == iEdidParserPtr->GetAspectRatioLandscape()) |
1417 // If the Vendor Specific Data Block supported and it has IEEE registration number then it is HDMI |
1339 && (KDefaultCEAModePhysImgAspRatioDr == iEdidParserPtr->GetAspectRatioPortrait()) ) |
1418 if ( iExtensionParserPtr && iExtensionParserPtr->IsVendorSpecificDataBlockSupported() && iExtensionParserPtr->HasIEEERegistration() ) |
1340 && !defaultCEAmode ) |
|
1341 |
|
1342 { |
1419 { |
1343 THdmiDviTimings timings; |
1420 INFO( "<<<<<<<<<<<<<<It is HDMI connector>>>>>>>>>>>>>>" ); |
1344 |
1421 // Add default CEA mode 1 to the list if it is not there already |
1345 // Get a timing item for default CEA Mode (1) |
1422 if( ( (KDefaultCEAModePhysImgAspRatioNr == iEdidParserPtr->GetAspectRatioLandscape()) |
1346 const TTimingItem* item = TimingByIndex( KDefaultCEAModeIndex, ETimingModeCEA ); |
1423 && (KDefaultCEAModePhysImgAspRatioDr == iEdidParserPtr->GetAspectRatioPortrait()) ) |
1347 if( item ) |
1424 && !defaultCEAmode ) |
1348 { |
1425 |
1349 Mem::FillZ( ( TAny* )&timings, sizeof( timings ) ); |
1426 { |
1350 FillHdmiDviTimings( *item, timings ); |
1427 THdmiDviTimings timings; |
1351 retVal = aHdmiConfigs.Append( timings ); |
1428 |
1352 ERROR( retVal, "Failed to append CEA timing in available config array" ); |
1429 // Get a timing item for default CEA Mode (1) |
1353 } |
1430 const TTimingItem* item = TimingByIndex( KDefaultCEAModeIndex, ETimingModeCEA ); |
1354 } |
1431 if( item ) |
|
1432 { |
|
1433 Mem::FillZ( ( TAny* )&timings, sizeof( timings ) ); |
|
1434 FillHdmiDviTimings( *item, timings ); |
|
1435 retVal = aHdmiConfigs.Append( timings ); |
|
1436 ERROR( retVal, "Failed to append CEA timing in available config array" ); |
|
1437 } |
|
1438 } |
|
1439 } |
|
1440 else // It is DVI connector |
|
1441 { |
|
1442 TInt modecount = aHdmiConfigs.Count(); |
|
1443 |
|
1444 INFO( "<<<<<<<<<<<<<<It is DVI connector>>>>>>>>>>>>>>" ); |
|
1445 while( modecount-- ) |
|
1446 { |
|
1447 // Change it to DVI mode as it is existing in both Supported and available configurations |
|
1448 aHdmiConfigs[ modecount ].iConnector = TTvSettings::EDVI; |
|
1449 |
|
1450 // Version should be zeroed for non-HDMI |
|
1451 aHdmiConfigs[ modecount ].iTvHdmiVersion = 0; |
|
1452 aHdmiConfigs[ modecount ].iTvHdmiRevision = 0; |
|
1453 } |
|
1454 } |
1355 |
1455 |
1356 INFO( "Filtered list -- END" ); |
1456 INFO( "Filtered list -- END" ); |
1357 supportedModes.Close(); |
1457 supportedModes.Close(); |
1358 } |
1458 } |
1359 |
1459 |