1533 void CCea861EdidParser::ReadCea861ShortAudioDataBlockL( const TExtDataBlock& aData, |
1534 void CCea861EdidParser::ReadCea861ShortAudioDataBlockL( const TExtDataBlock& aData, |
1534 TInt& aIndex, |
1535 TInt& aIndex, |
1535 const TInt8 aLen ) |
1536 const TInt8 aLen ) |
1536 { |
1537 { |
1537 FUNC_LOG; |
1538 FUNC_LOG; |
|
1539 TBool first = EFalse; |
1538 |
1540 |
1539 iAudioDataBlockSupported = ETrue; |
1541 iAudioDataBlockSupported = ETrue; |
1540 |
1542 |
1541 if( !iParsedInfo->iShortAudioDescriptors ) // linked list |
1543 if( !iParsedInfo->iShortAudioDescriptors ) // linked list |
1542 { |
1544 { |
1543 iParsedInfo->iShortAudioDescriptors |
1545 iParsedInfo->iShortAudioDescriptors |
1544 = new ( ELeave ) TCEA861AudioDataBlock(); |
1546 = new ( ELeave ) TCEA861AudioDataBlock(); |
|
1547 first = ETrue; |
|
1548 iParsedInfo->iShortAudioDescriptors->iNext = 0; |
1545 } |
1549 } |
1546 TCEA861AudioDataBlock* cur = iParsedInfo->iShortAudioDescriptors; |
1550 TCEA861AudioDataBlock* cur = iParsedInfo->iShortAudioDescriptors; |
1547 |
1551 |
1548 while( cur->iNext != 0 ) |
1552 while( cur->iNext != 0 ) |
1549 { |
1553 { |
1550 cur = cur->iNext; // jump to the end |
1554 cur = cur->iNext; // jump to the end |
1551 } |
1555 } |
1552 |
1556 |
1553 TBool first = ETrue; |
1557 TInt i = 0; |
1554 for( int i = 0; i < aLen; i++ ) |
1558 while (i < aLen) |
1555 { |
1559 { |
1556 // read aLen-amount of short video descriptors |
1560 // read aLen-amount of short video descriptors |
1557 |
1561 |
1558 // first link is a special case |
1562 // first link is a special case |
1559 if( ( iParsedInfo->iShortAudioDescriptors == cur ) && first ) |
1563 if( ( iParsedInfo->iShortAudioDescriptors == cur ) && first ) |
1592 TInt& aIndex, |
1596 TInt& aIndex, |
1593 const TInt8 aLen ) |
1597 const TInt8 aLen ) |
1594 { |
1598 { |
1595 FUNC_LOG; |
1599 FUNC_LOG; |
1596 |
1600 |
1597 TBool first = ETrue; |
1601 TBool first = EFalse; |
1598 iVideoDataBlockSupported = ETrue; |
1602 iVideoDataBlockSupported = ETrue; |
1599 if( !iParsedInfo->iShortVideoDescriptors ) // linked list |
1603 if( !iParsedInfo->iShortVideoDescriptors ) // linked list |
1600 { |
1604 { |
1601 iParsedInfo->iShortVideoDescriptors |
1605 iParsedInfo->iShortVideoDescriptors |
1602 = new ( ELeave ) TCEA861VideoDataBlock(); |
1606 = new ( ELeave ) TCEA861VideoDataBlock(); |
1603 iParsedInfo->iShortVideoDescriptors->iNext = 0; // make sure there are no stray pointers |
1607 iParsedInfo->iShortVideoDescriptors->iNext = 0; // make sure there are no stray pointers |
|
1608 first = ETrue; |
1604 } |
1609 } |
1605 |
1610 |
1606 TCEA861VideoDataBlock* cur = iParsedInfo->iShortVideoDescriptors; |
1611 TCEA861VideoDataBlock* cur = iParsedInfo->iShortVideoDescriptors; |
1607 while( cur->iNext != 0 ) |
1612 while( cur->iNext != 0 ) |
1608 { |
1613 { |
1609 cur = cur->iNext; // jump to the end |
1614 cur = cur->iNext; // jump to the end |
1610 first = EFalse; // there is already some links, so set first to false |
|
1611 } |
1615 } |
1612 |
1616 |
1613 for( int i = 0; i < aLen; i++ ) |
1617 for( int i = 0; i < aLen; i++ ) |
1614 { |
1618 { |
1615 |
1619 |
1671 << 8; |
1675 << 8; |
1672 iParsedInfo->iVendorSpecificData->iIEEE24bitRegistrationIdentifier += data1; |
1676 iParsedInfo->iVendorSpecificData->iIEEE24bitRegistrationIdentifier += data1; |
1673 |
1677 |
1674 aLen -= 3; // this is needed: Vendor specific payload length = L4-3bytes |
1678 aLen -= 3; // this is needed: Vendor specific payload length = L4-3bytes |
1675 |
1679 |
1676 TBool first = ETrue; |
1680 TBool first = EFalse; |
1677 if( iParsedInfo->iVendorSpecificData->iVendorSpecificPayloadStart == 0 ) |
1681 if( iParsedInfo->iVendorSpecificData->iVendorSpecificPayloadStart == 0 ) |
1678 { |
1682 { |
1679 iParsedInfo->iVendorSpecificData->iVendorSpecificPayloadStart |
1683 iParsedInfo->iVendorSpecificData->iVendorSpecificPayloadStart |
1680 = new ( ELeave ) TCEA861VendorSpecificDataBlockPayload(); |
1684 = new ( ELeave ) TCEA861VendorSpecificDataBlockPayload(); |
|
1685 iParsedInfo->iVendorSpecificData->iVendorSpecificPayloadStart->iNext = 0; |
|
1686 first = ETrue; |
1681 } |
1687 } |
1682 TCEA861VendorSpecificDataBlockPayload* cur = |
1688 TCEA861VendorSpecificDataBlockPayload* cur = |
1683 iParsedInfo->iVendorSpecificData->iVendorSpecificPayloadStart; |
1689 iParsedInfo->iVendorSpecificData->iVendorSpecificPayloadStart; |
1684 // traverse to the end of the list |
1690 // traverse to the end of the list |
1685 while( cur->iNext != 0 ) |
1691 while( cur->iNext != 0 ) |
1754 void CCea861EdidParser::ReadVideoCapabilityDataBlockL( const TExtDataBlock& aData, |
1760 void CCea861EdidParser::ReadVideoCapabilityDataBlockL( const TExtDataBlock& aData, |
1755 TInt& aIndex, |
1761 TInt& aIndex, |
1756 const TInt8 aLen ) |
1762 const TInt8 aLen ) |
1757 { |
1763 { |
1758 FUNC_LOG; |
1764 FUNC_LOG; |
|
1765 TBool first = EFalse; |
1759 |
1766 |
1760 aIndex++; // jump to the extended tag code (aLen is the length from extended tag to the end) |
1767 aIndex++; // jump to the extended tag code (aLen is the length from extended tag to the end) |
1761 |
1768 |
1762 if( iParsedInfo->iVideoCapabilityDataBlock == 0 ) |
1769 if( iParsedInfo->iVideoCapabilityDataBlock == 0 ) |
1763 { |
1770 { |
1764 iParsedInfo->iVideoCapabilityDataBlock |
1771 iParsedInfo->iVideoCapabilityDataBlock |
1765 = new ( ELeave ) TCEA861VideoCapabilityDataBlock(); |
1772 = new ( ELeave ) TCEA861VideoCapabilityDataBlock(); |
|
1773 first = ETrue; |
1766 } |
1774 } |
1767 TCEA861VideoCapabilityDataBlock* cur = |
1775 TCEA861VideoCapabilityDataBlock* cur = |
1768 iParsedInfo->iVideoCapabilityDataBlock; |
1776 iParsedInfo->iVideoCapabilityDataBlock; |
1769 TBool first = ETrue; |
|
1770 while( cur->iNext != 0 ) |
1777 while( cur->iNext != 0 ) |
1771 { |
1778 { |
1772 first = EFalse; |
|
1773 cur = cur->iNext; |
1779 cur = cur->iNext; |
1774 } |
1780 } |
1775 |
1781 |
1776 // Payload currently only contains a single byte in addition to the extended tag code. The Source should ignore such additional bytes when present. |
1782 // Payload currently only contains a single byte in addition to the extended tag code. The Source should ignore such additional bytes when present. |
1777 for( int i = 0; i < aLen; i++ ) |
1783 for( int i = 0; i < aLen; i++ ) |