accessoryservices/pluggeddisplay/pluggeddisplayengine/src/edidhandler.cpp
changeset 12 e978f818f9bd
parent 0 4e1aa6a622a0
child 13 cef4ff1e6c4f
equal deleted inserted replaced
0:4e1aa6a622a0 12:e978f818f9bd
   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