accessoryservices/pluggeddisplay/edidparser/inc/traceediddata.h
changeset 0 4e1aa6a622a0
equal deleted inserted replaced
-1:000000000000 0:4e1aa6a622a0
       
     1 /*
       
     2  * Copyright (c) 2009 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 #ifndef TRACEEDIDDATA_H
       
    19 #define TRACEEDIDDATA_H
       
    20 
       
    21 // SYSTEM INCLUDE FILES
       
    22 #include <e32std.h>
       
    23 
       
    24 // USER INCLUDE FILES
       
    25 #include "ediddatatypes.h"
       
    26 #include "cea861ediddatatypes.h"
       
    27 #include "videotimings.h"
       
    28 
       
    29 // FORWARD DECLARATIONS
       
    30 static void LogEdidBaseDataL( CEdidParserBase& aSelf );
       
    31 static void LogEdidBaseData( CEdidParserBase& aSelf );
       
    32 static void LogCea861ExtensionL( CEdidParserBase& aSelf );
       
    33 
       
    34 // DATA TYPES
       
    35 
       
    36 // Audio format code literals
       
    37 _LIT( KAudioFormatNA,       "N/A" );
       
    38 _LIT( KAudioFormatPCM,      "PCM" );
       
    39 _LIT( KAudioFormatAC3,      "AC-3" );
       
    40 _LIT( KAudioFormatMPEG1,    "MPEG-1" );
       
    41 _LIT( KAudioFormatMP3,      "MP3" );
       
    42 _LIT( KAudioFormatMPEG2,    "MPEG-2" );
       
    43 _LIT( KAudioFormatAACLC,    "AAC LC" );
       
    44 _LIT( KAudioFormatDTS,      "DTS" );
       
    45 _LIT( KAudioFormatATRAC,    "ATRAC" );
       
    46 _LIT( KAudioFormatDSD,      "DSD" );
       
    47 _LIT( KAudioFormatEAC3,     "E-AC-3" );
       
    48 _LIT( KAudioFormatDTSHD,    "DTS-HD" );
       
    49 _LIT( KAudioFormatMLP,      "MLP" );
       
    50 _LIT( KAudioFormatDST,      "DST" );
       
    51 _LIT( KAudioFormatWMAPRO,   "WMA Pro" );
       
    52 
       
    53 // Macro which disables tracing in release builds
       
    54 #ifdef _DEBUG
       
    55 
       
    56     #define TRACE_EDID_DATA( aSelf )\
       
    57         {\
       
    58         LogEdidBaseData( aSelf );\
       
    59         }
       
    60 
       
    61     #define TRACE_TIMINGS( aTiming )\
       
    62         {\
       
    63         LogTiming( aTiming );\
       
    64         }
       
    65 
       
    66 #else
       
    67 
       
    68     #define TRACE_EDID_DATA( aSelf )
       
    69     #define TRACE_TIMINGS( aTiming )
       
    70 
       
    71 #endif
       
    72 
       
    73 
       
    74 
       
    75 // LOCAL FUNCTIONS
       
    76 
       
    77 static TPtrC AudioCodeAsDesC( TInt aCode )
       
    78     {
       
    79     TPtrC code( KNullDesC );
       
    80     switch( aCode )
       
    81         {
       
    82         case KAudioFormatCodeNA:
       
    83             {
       
    84             code.Set( KAudioFormatNA );
       
    85             break;
       
    86             }
       
    87         case KAudioFormatCodePCM:
       
    88             {
       
    89             code.Set( KAudioFormatPCM );
       
    90             break;
       
    91             }
       
    92         case KAudioFormatCodeAC3:
       
    93             {
       
    94             code.Set( KAudioFormatAC3 );
       
    95             break;
       
    96             }
       
    97         case KAudioFormatCodeMPEG1:
       
    98             {
       
    99             code.Set( KAudioFormatMPEG1 );
       
   100             break;
       
   101             }
       
   102         case KAudioFormatCodeMP3:
       
   103             {
       
   104             code.Set( KAudioFormatMP3 );
       
   105             break;
       
   106             }
       
   107         case KAudioFormatCodeMPEG2:
       
   108             {
       
   109             code.Set( KAudioFormatMPEG2 );
       
   110             break;
       
   111             }
       
   112         case KAudioFormatCodeAACLC:
       
   113             {
       
   114             code.Set( KAudioFormatAACLC );
       
   115             break;
       
   116             }
       
   117         case KAudioFormatCodeDTS:
       
   118             {
       
   119             code.Set( KAudioFormatDTS );
       
   120             break;
       
   121             }
       
   122         case KAudioFormatCodeATRAC:
       
   123             {
       
   124             code.Set( KAudioFormatATRAC );
       
   125             break;
       
   126             }
       
   127         case KAudioFormatCodeDSD:
       
   128             {
       
   129             code.Set( KAudioFormatDSD );
       
   130             break;
       
   131             }
       
   132         case KAudioFormatCodeEAC3:
       
   133             {
       
   134             code.Set( KAudioFormatEAC3 );
       
   135             break;
       
   136             }
       
   137         case KAudioFormatCodeDTSHD:
       
   138             {
       
   139             code.Set( KAudioFormatDTSHD );
       
   140             break;
       
   141             }
       
   142         case KAudioFormatCodeMLP:
       
   143             {
       
   144             code.Set( KAudioFormatMLP );
       
   145             break;
       
   146             }
       
   147         case KAudioFormatCodeDST:
       
   148             {
       
   149             code.Set( KAudioFormatDST );
       
   150             break;
       
   151             }
       
   152         case KAudioFormatCodeWMAPRO:
       
   153             {
       
   154             code.Set( KAudioFormatWMAPRO );
       
   155             break;
       
   156             }
       
   157         default:
       
   158             {
       
   159             code.Set( KAudioFormatNA );
       
   160             break;
       
   161             }
       
   162         }
       
   163     return code;
       
   164     }
       
   165 
       
   166 // Trace edid base content - cannot leave
       
   167 static void LogEdidBaseData( CEdidParserBase& aSelf )
       
   168     {
       
   169     TRAP_IGNORE( LogEdidBaseDataL( aSelf ) );
       
   170     }
       
   171 
       
   172 // Trace edid base content
       
   173 static void LogEdidBaseDataL( CEdidParserBase& aSelf )
       
   174     {
       
   175     // Edid base
       
   176     INFO( "--------------------------------------------------------------------" );
       
   177     INFO( "EDID BASE DATA:" );
       
   178     INFO( "--------------------------------------------------------------------" );
       
   179     
       
   180     // Manufacturer code
       
   181     TBuf<KEdidParserManufacturerCodeLength> manufacturerCode( KNullDesC );
       
   182     aSelf.GetManufacturerCode( manufacturerCode );
       
   183     INFO_1( "## Manufacturer code: %S", &manufacturerCode );
       
   184     
       
   185     // Product ID
       
   186     TBuf<KEdidParserManufacturerCodeLength + 1> productId( KNullDesC );
       
   187     aSelf.GetProductId( productId );
       
   188     INFO_1( "## Product ID: %S", &productId );
       
   189     
       
   190     // Manufacturer year and week
       
   191     INFO_2( "## Manufacturer Year: %d, Week: %d",
       
   192         aSelf.GetManufactureWeek(), aSelf.GetManufactureWeek() );
       
   193 
       
   194     // Version and revision
       
   195     INFO_2( "## Version: %d.%d", aSelf.GetVersion(), aSelf.GetRevision() );
       
   196     
       
   197     // Video input definition
       
   198     INFO_1( "## Video input definition: %d", aSelf.GetVideoInputDefinition() );
       
   199     
       
   200     // Screen size
       
   201     INFO_2( "## Screen size: %d x %d",
       
   202         aSelf.GetHorizontalScreenSize(), aSelf.GetVerticalScreenSize() );
       
   203     
       
   204     // Is aspect ratio used
       
   205     INFO_1( "## Aspect ratio used: %d", aSelf.IsAspectRatioUsed() );
       
   206     
       
   207     // Display transfer charasteristic
       
   208     INFO_1( "## Display transfer characteristics: %d",
       
   209         aSelf.DisplayTransferCharacteristics() );
       
   210     
       
   211     // Established timings 1
       
   212     INFO( "## Established timings 1:" );
       
   213     TUint8 timings = aSelf.GetEstablishedTimings1();
       
   214     if( timings & E800x600_60Hz )
       
   215         {
       
   216         INFO( "###### 800x600 60Hz" );
       
   217         }
       
   218     if( timings & E800x600_56Hz )
       
   219         {
       
   220         INFO( "###### 800x600 56Hz" );
       
   221         }    
       
   222     if( timings & E640x480_75Hz )
       
   223         {
       
   224         INFO( "###### 640x480 75Hz" );
       
   225         }
       
   226     if( timings & E640x480_72Hz )
       
   227         {
       
   228         INFO( "###### 640x480 72Hz" );
       
   229         }
       
   230     if( timings & E640x480_67Hz )
       
   231         {
       
   232         INFO( "###### 640x480 67Hz" );
       
   233         }
       
   234     if( timings & E640x480_60Hz )
       
   235         {
       
   236         INFO( "###### 640x480 60Hz" );
       
   237         }
       
   238     if( timings & E720x400_88Hz )
       
   239         {
       
   240         INFO( "###### 720x400 88Hz" );
       
   241         }
       
   242     if( timings & E720x400_70Hz )
       
   243         {
       
   244         INFO( "###### 720x400 70Hz" );
       
   245         }
       
   246     
       
   247     // Established timings 2
       
   248     INFO( "## Established timings 2:" );
       
   249     timings = aSelf.GetEstablishedTimings2();
       
   250     if( timings & E1280x1024_75Hz )
       
   251         {
       
   252         INFO( "###### 1280x1024 75Hz" );
       
   253         }
       
   254     if( timings & E1024x768_75Hz )
       
   255         {
       
   256         INFO( "###### 1024x768 75Hz" );
       
   257         }
       
   258     if( timings & E1024x768_70Hz )
       
   259         {
       
   260         INFO( "###### 1024x768 70Hz" );
       
   261         }
       
   262     if( timings & E1024x768_60Hz )
       
   263         {
       
   264         INFO( "###### 1024x768 60Hz" );
       
   265         }
       
   266     if( timings & E1024x768_87Hz )
       
   267         {
       
   268         INFO( "###### 1024x768 87Hz" );
       
   269         }
       
   270     if( timings & E832x624_75Hz )
       
   271         {
       
   272         INFO( "###### 832x624 75Hz" );
       
   273         }
       
   274     if( timings & E800x600_75Hz )
       
   275         {
       
   276         INFO( "###### 800x600 75Hz" );
       
   277         }
       
   278     if( timings & E800x600_72Hz )
       
   279         {
       
   280         INFO( "###### 800x600 72Hz" );
       
   281         }
       
   282     
       
   283     // Color coordinates
       
   284     INFO( "## Color coordinates: " );
       
   285     INFO_1( "###### Red X:   %d", aSelf.GetColorCoordinatesRedX() );
       
   286     INFO_1( "###### Red Y:   %d", aSelf.GetColorCoordinatesRedY() );
       
   287     INFO_1( "###### Green X: %d", aSelf.GetColorCoordinatesGreenX() );
       
   288     INFO_1( "###### Green Y: %d", aSelf.GetColorCoordinatesGreenY() );
       
   289     INFO_1( "###### Blue X:  %d", aSelf.GetColorCoordinatesBlueX() );
       
   290     INFO_1( "###### Blue Y:  %d", aSelf.GetColorCoordinatesBlueY() );
       
   291     INFO_1( "###### White X: %d", aSelf.GetColorCoordinatesWhiteX() );
       
   292     INFO_1( "###### White Y: %d", aSelf.GetColorCoordinatesWhiteY() );
       
   293     
       
   294     // Extensions
       
   295     TInt numOfExtensions = aSelf.GetNumberOfExtensions();
       
   296     INFO_1( "## Number of extensions found: %d", numOfExtensions );
       
   297     INFO( "--------------------------------------------------------------------" );
       
   298     TEdidExtensionTagCode extensionCode = EUnknownExt;
       
   299     for( TInt i = 0; i < numOfExtensions; i++ )
       
   300         {
       
   301         extensionCode = aSelf.GetExtensionType( i + 1 );
       
   302         switch( extensionCode )
       
   303             {
       
   304             case ECea861Ext:
       
   305                 {
       
   306                 LogCea861ExtensionL( aSelf );
       
   307                 break;
       
   308                 }
       
   309             case EVTBExt:
       
   310                 {
       
   311                 INFO( "VTB EXTENSION DATA: Not supported" );
       
   312                 INFO( "--------------------------------------------------------------------" );
       
   313                 break;
       
   314                 }
       
   315             case EEDID20:
       
   316                 {
       
   317                 INFO( "EDID 2.0 EXTENSION DATA: Not supported" );
       
   318                 INFO( "--------------------------------------------------------------------" );
       
   319                 break;
       
   320                 }
       
   321             case EDIExt:
       
   322                 {
       
   323                 INFO( "DI EXTENSION DATA: Not supported" );
       
   324                 INFO( "--------------------------------------------------------------------" );
       
   325                 break;
       
   326                 }
       
   327             case ELSExt:
       
   328                 {
       
   329                 INFO( "LS EXTENSION DATA: Not supported" );
       
   330                 INFO( "--------------------------------------------------------------------" );
       
   331                 break;
       
   332                 }
       
   333             case EDPVLExt:
       
   334                 {
       
   335                 INFO( "DPVL EXTENSION DATA: Not supported" );
       
   336                 INFO( "--------------------------------------------------------------------" );
       
   337                 break;
       
   338                 }
       
   339             default:
       
   340                 {
       
   341                 INFO_1( "UNKNOWN EXTENSION DATA [0x%x]: Not supported", extensionCode );
       
   342                 INFO( "--------------------------------------------------------------------" );
       
   343                 break;
       
   344                 }
       
   345             }
       
   346         }
       
   347     }
       
   348 
       
   349 // Trace CEA 861 extension
       
   350 static void LogCea861ExtensionL( CEdidParserBase& aSelf )
       
   351     {
       
   352     CCea861EdidParser* extParser = aSelf.CreateCea861ExtensionParserL( 1 );
       
   353     CleanupStack::PushL( extParser );
       
   354     if( extParser->IsExtensionBlockParsed() )
       
   355         {    
       
   356         // CEA 861 extension
       
   357         INFO( "CEA-861 EXTENSION DATA: Supported" );
       
   358         INFO( "--------------------------------------------------------------------" );
       
   359         
       
   360         // Underscan
       
   361         INFO_1( "## Underscan supported: %d", extParser->Underscan() );
       
   362         
       
   363         // Basic audio
       
   364         INFO_1( "## Basic audio supported: %d", extParser->BasicAudio() );
       
   365         
       
   366         // YCbCr444
       
   367         INFO_1( "## YCbCr444 supported: %d", extParser->YCbCr444() );
       
   368         
       
   369         // YCbCr422
       
   370         INFO_1( "## YCbCr422 supported: %d", extParser->YCbCr422() );
       
   371         
       
   372         // Number of native formats supported
       
   373         INFO_1( "## Number of native formats supported: %d", extParser->TotalNumberOfNativeFormats() );
       
   374         
       
   375         // Video data block
       
   376         TBool videoDataBlockSupported = extParser->IsVideoDataBlockSupported();
       
   377         INFO_1( "## Video data block supported: %d", videoDataBlockSupported );
       
   378         if( videoDataBlockSupported )
       
   379             {
       
   380             TInt count = 0;
       
   381             CCea861ExtEdidInformation* parsedInfo = extParser->GetParsedInformation();
       
   382             TCEA861VideoDataBlock* cur = parsedInfo->iShortVideoDescriptors;
       
   383             while( cur )
       
   384                 {
       
   385                 count++; 
       
   386                 INFO_2( "###### VIC: %d, Native: %d", cur->iVIC, cur->iNative );
       
   387                 cur = cur->iNext;
       
   388                 }         
       
   389             INFO_1( "###### Number of DTV formats supported: %d", count );
       
   390             }
       
   391         
       
   392         // Audio data block
       
   393         TBool audioDataBlockSupported = extParser->IsAudioDataBlockSupported();
       
   394         INFO_1( "## Audio data block supported: %d", audioDataBlockSupported );
       
   395         if( audioDataBlockSupported )
       
   396             {
       
   397             CCea861ExtEdidInformation* parsedInfo = extParser->GetParsedInformation();
       
   398             TCEA861AudioDataBlock* cur = parsedInfo->iShortAudioDescriptors;
       
   399             while( cur )
       
   400                 {
       
   401                 TPtrC audioFormatCode( AudioCodeAsDesC( cur->iAudioFormatCode ) );
       
   402                 INFO_2( "###### Audio format code:     0x%x [%S]", cur->iAudioFormatCode, &audioFormatCode );                
       
   403                 INFO_1( "###### Supports 192kHz:       %d", cur->iSupport192kHz );
       
   404                 INFO_1( "###### Supports 176kHz:       %d", cur->iSupport176kHz );
       
   405                 INFO_1( "###### Supports 96kHz:        %d", cur->iSupport96kHz );
       
   406                 INFO_1( "###### Supports 88kHz:        %d", cur->iSupport88kHz );
       
   407                 INFO_1( "###### Supports 48kHz:        %d", cur->iSupport48kHz );
       
   408                 INFO_1( "###### Supports 44kHz:        %d", cur->iSupport44kHz );
       
   409                 INFO_1( "###### Supports 32kHz:        %d", cur->iSupport32kHz );
       
   410                 INFO_1( "###### Maximum channels:      %d", cur->iMaxChannels );
       
   411                 
       
   412                 TBool bitDataSupported = cur->BitDataSupported();
       
   413                 INFO_1( "###### Bit data supported: %d", bitDataSupported );
       
   414                 if( bitDataSupported )
       
   415                     {
       
   416                     INFO_1( "###### Supports 24-bit rate:  %d", cur->iSupport24Bit );
       
   417                     INFO_1( "###### Supports 20-bit rate:  %d", cur->iSupport20Bit );
       
   418                     INFO_1( "###### Supports 16-bit rate:  %d", cur->iSupport16Bit );
       
   419                     }
       
   420                 TBool maxBitRateValueSupported = cur->MaximumBitRateValueSupported();
       
   421                 INFO_1( "###### Maximum bit data supported: %d", maxBitRateValueSupported );
       
   422                 if( maxBitRateValueSupported )
       
   423                     {
       
   424                     INFO_1( "###### Maximum bit rate:      %d", cur->iMaxBitrate );
       
   425                     }
       
   426                 TBool audioFormatCodeExtSupported = cur->AudioFormatCodeExtensionSupported();
       
   427                 INFO_1( "###### Audio format code extension supported: %d", audioFormatCodeExtSupported );
       
   428                 if( audioFormatCodeExtSupported )
       
   429                     {
       
   430                     INFO_1( "###### Audio format code ext: 0x%x", cur->iAudioFormatCodeExtension );
       
   431                     }
       
   432                 cur = cur->iNext;
       
   433                 }                
       
   434             }
       
   435         
       
   436         // Vendor specific data block
       
   437         TBool vendorDataBlockSupported = extParser->IsVendorSpecificDataBlockSupported();
       
   438         INFO_1( "## Vendor specific data block supported: %d", vendorDataBlockSupported );
       
   439         if( vendorDataBlockSupported )
       
   440             {
       
   441             TUint8 latency = extParser->GetVideoLatency();
       
   442             INFO_1( "###### Video latency (p): %d ms", latency );
       
   443             latency = extParser->GetAudioLatency();
       
   444             INFO_1( "###### Audio latency (p): %d ms", latency );
       
   445             latency = extParser->GetInterlacedVideoLatency();
       
   446             INFO_1( "###### Video latency (i): %d ms", latency );
       
   447             latency = extParser->GetInterlacedAudioLatency();
       
   448             INFO_1( "###### Audio latency (i): %d ms", latency );
       
   449             }
       
   450         
       
   451         // Speaker allocation data block
       
   452         TBool speakerAllocationDataBlockSupported = extParser->IsSpeakerAllocationDataBlockSupported();
       
   453         INFO_1( "## Speaker allocation data block supported: %d", speakerAllocationDataBlockSupported );
       
   454         if( speakerAllocationDataBlockSupported )
       
   455             {
       
   456             CCea861ExtEdidInformation* parsedInfo = extParser->GetParsedInformation();
       
   457             INFO_1( "###### FLW_FRW: %d", parsedInfo->iSpeakerAllocationData.FLW_FRW() );
       
   458             INFO_1( "###### RLC_RRC: %d", parsedInfo->iSpeakerAllocationData.RLC_RRC() );
       
   459             INFO_1( "###### FLC_FRC: %d", parsedInfo->iSpeakerAllocationData.FLC_FRC() );
       
   460             INFO_1( "###### RC:      %d", parsedInfo->iSpeakerAllocationData.RC() );
       
   461             INFO_1( "###### RL_RR:   %d", parsedInfo->iSpeakerAllocationData.RL_RR() );
       
   462             INFO_1( "###### FC:      %d", parsedInfo->iSpeakerAllocationData.FC() );
       
   463             INFO_1( "###### LFE:     %d", parsedInfo->iSpeakerAllocationData.LFE() );
       
   464             INFO_1( "###### FL_FR:   %d", parsedInfo->iSpeakerAllocationData.FL_FR() );
       
   465             INFO_1( "###### TC:      %d", parsedInfo->iSpeakerAllocationData.TC() );
       
   466             INFO_1( "###### FLH_FRH: %d", parsedInfo->iSpeakerAllocationData.FLH_FRH() );
       
   467             }
       
   468         INFO( "--------------------------------------------------------------------" );
       
   469         }        
       
   470     CleanupStack::PopAndDestroy( extParser );
       
   471     }
       
   472 
       
   473 // Log timing item
       
   474 static void LogTiming( const THdmiDviTimings& aTiming )
       
   475     {
       
   476     INFO( "--------------------------------------------------------------------" );
       
   477     if( aTiming.iCeaMode )
       
   478         {
       
   479         INFO_1( "Mode: CEA, Id: %d", aTiming.iCeaMode );
       
   480         }
       
   481     else if( aTiming.iDmtMode )
       
   482         {
       
   483         INFO_1( "Mode: DMT, Id: %d", aTiming.iDmtMode );
       
   484         }
       
   485     else
       
   486         {
       
   487         INFO( "Mode: Unknown, Id: Not set" );
       
   488         }
       
   489     INFO_1( "Interlaced: %d", aTiming.iInterlaced );
       
   490     INFO_1( "Width: %d", aTiming.iHorizontalActivePixels );
       
   491     INFO_1( "Height: %d", aTiming.iVerticalActiveLines );
       
   492     INFO_1( "DOT clock: %d [kHz]", aTiming.iPixelClockKHz );
       
   493     INFO_1( "Pixel repeat: %d", aTiming.iPixelRepeat );
       
   494     if( aTiming.iImageAspectRatio == TTvSettings::E4d3 )
       
   495         {
       
   496         INFO( "Aspect ratio: 4:3" );
       
   497         }
       
   498     else if( aTiming.iImageAspectRatio == TTvSettings::E16d9 )
       
   499         {
       
   500         INFO( "Aspect ratio: 16:9" );
       
   501         }
       
   502     else
       
   503         {
       
   504         INFO( "Aspect ratio: Undefined" );
       
   505         }
       
   506     INFO_1( "Pixel Aspect Ratio Numerator: %d", aTiming.iPixelAspectRatioNumerator );
       
   507     INFO_1( "Pixel Aspect Ratio Denominator: %d", aTiming.iPixelAspectRatioDenominator );
       
   508     INFO_1( "Horizontal front porch: %d", aTiming.iHorizontalSyncOffsetPixels );
       
   509     INFO_1( "Horizontal sync: %d", aTiming.iHorizontalSyncOffsetPixels );
       
   510     INFO_1( "Horizontal blanking: %d", aTiming.iHorizontalBlankingPixels );
       
   511     INFO_1( "Horizontal active lines: %d", aTiming.iHorizontalActivePixels );
       
   512     INFO_1( "Vertical 1st front porch: %d", aTiming.iVerticalSyncOffsetLinesField1 );
       
   513     INFO_1( "Vertical 1st sync: %d", aTiming.iVerticalSyncPulseWidthLinesField1 );
       
   514     INFO_1( "Vertical 1st blanking: %d", aTiming.iVerticalBlankingLines );
       
   515     INFO_1( "Vertical 1st active lines: %d", aTiming.iVerticalActiveLines );
       
   516     INFO_1( "Vertical 2nd front porch: %d", aTiming.iVerticalSyncOffsetLinesField2 );
       
   517     INFO_1( "Vertical 2nd sync: %d", aTiming.iVerticalSyncPulseWidthLinesField2 );
       
   518     INFO_1( "Vertical 2nd blanking: %d", aTiming.iVerticalBlankingLines );
       
   519     INFO_1( "Vertical 2nd active lines: %d", aTiming.iVerticalActiveLines );
       
   520     if( !aTiming.iHorizontalSyncPolarity )
       
   521         {
       
   522         INFO( "Horizontal sync polarity: Negative" );
       
   523         }
       
   524     else
       
   525         {
       
   526         INFO( "Horizontal sync polarity: Positive" );
       
   527         }
       
   528     if( !aTiming.iVerticalSyncPolarity  )
       
   529         {
       
   530         INFO( "Vertical sync polarity: Negative" );
       
   531         }
       
   532     else
       
   533         {
       
   534         INFO( "Vertical sync polarity: Positive" );
       
   535         }
       
   536     }
       
   537 
       
   538 #endif // TRACEEDIDDATA_H