24 #if !defined(MSWindows)
61 inOutStr << *iter << endl;
69 inOutStr <<
xHEX0N(uint16_t(*it),2);
70 if (++it != inDIDs.end())
78 inOutStream <<
DEC(inData.size()) <<
" UWords: ";
81 inOutStream <<
HEX0N(*iter,4);
82 if (++iter != inData.end())
90 inOutStream <<
DEC(inData.size()) <<
" ULWords: ";
93 inOutStream <<
HEX0N(*iter,8);
94 if (++iter != inData.end())
102 inOutStream <<
DEC(inData.size()) <<
" ULWord64s: ";
105 inOutStream <<
HEX0N(*iter,16);
106 if (++iter != inData.end())
124 mFrameRefClockCount = 0;
125 mGlobalClockCount = 0;
126 mFrameTRSError =
false;
135 inOutStream <<
"[CRCA=" <<
DEC(mCRCTallyA)
136 <<
" CRCB=" <<
DEC(mCRCTallyB)
137 <<
" unlk=" <<
xHEX0N(mUnlockTally,8)
138 <<
" frmRefClkCnt=" <<
xHEX0N(mFrameRefClockCount,16)
139 <<
" globalClkCnt=" <<
xHEX0N(mGlobalClockCount,16)
140 <<
" frmTRS=" <<
YesNo(mFrameTRSError)
141 <<
" locked=" <<
YesNo(mLocked)
142 <<
" VPIDA=" <<
YesNo(mVPIDValidA)
143 <<
" VPIDB=" <<
YesNo(mVPIDValidB)
185 inOutStream <<
"Enabled: " <<
YesNo(mEnabled);
188 <<
"Is 4:2:0: " <<
YesNo(mPixel420) << endl
209 transitionCoefficient (0),
210 transitionSoftness (0)
216 : eCommand (inCommand),
217 channelSpec (inCrosspoint),
241 static const string sCmds [] = {
"ACInit",
"ACStart",
"ACStop",
"ACPause",
"GetAC",
"ACFrmStmp",
242 "ACFlush",
"ACPreRoll",
"ACXfer",
"ACAbort",
"ACStartAt",
243 "ACXfer1",
"ACXfer2",
"ACFrmStmp2",
"ACTask",
"ACSetActFrm"};
244 if (
size_t(
eCommand) <
sizeof(sCmds))
254 if (
bVal2) oss <<
" +RP188";
255 if (
bVal3) oss <<
" +FBFChg";
256 if (
bVal4) oss <<
" +FBOChg";
257 if (
bVal5) oss <<
" +ColCorr";
258 if (
bVal6) oss <<
" +VidProc";
259 if (
bVal7) oss <<
" +Anc";
260 if (
bVal8) oss <<
" +LTC";
282 if (
bVal1) oss <<
" +resume";
283 if (
bVal1 &&
bVal2) oss <<
" +clearDropCount";
287 if (
bVal1) oss <<
" +clearDropCount";
309 fType (inStructureType),
312 fSizeInBytes (inStructSizeInBytes),
313 fPointerSize (sizeof(int*)),
322 return inObj.
Print (inOutStream);
330 inOutStream << NTV2_4CC_AS_STRING (fHeaderTag);
332 inOutStream <<
"BAD-" <<
HEX0N(fHeaderTag,8);
334 inOutStream << NTV2_4CC_AS_STRING (fType);
336 inOutStream <<
"|BAD-" <<
HEX0N(fType,8);
337 inOutStream <<
" v" << fHeaderVersion <<
" vers=" << fVersion <<
" sz=" << fSizeInBytes;
338 return inOutStream <<
"]";
343 const char * pU32 (
reinterpret_cast<const char *
>(&in4CC));
344 ostringstream result;
347 for (
size_t charPos(0); charPos < 4; charPos++)
349 #if AJATargetBigEndian
350 const char ch(pU32[charPos]);
351 #else // little-endian:
352 const char ch(pU32[3-charPos]);
354 if (ch < ' ' || ch > 126)
355 {result <<
'.'; badTally++;}
361 result <<
" (" <<
xHEX0N(in4CC,8) <<
")";
370 inOutStream << NTV2_4CC_AS_STRING(inObj.
fTrailerTag);
383 return inObj.
Print (inOutStream);
401 if (inDumpMaxBytes > 256)
402 inDumpMaxBytes = 256;
406 for (
UWord ndx(0); ndx < inDumpMaxBytes; ndx++)
407 oss <<
HEX0N(uint16_t(pBytes[ndx]),2);
412 string NTV2Buffer::AsCode (
const size_t inBytesPerWord,
const std::string & inVarName,
const bool inUseSTL,
const bool inByteSwap)
const
415 if (inBytesPerWord != 1 && inBytesPerWord != 2 && inBytesPerWord != 4 && inBytesPerWord != 8)
return string();
417 if (inBytesPerWord > 1)
423 const string cType (inBytesPerWord == 1 ?
"uint8_t" : (inBytesPerWord == 2 ?
"uint16_t" : (inBytesPerWord == 4 ?
"uint32_t" :
"uint64_t")));
424 const size_t numWords (
GetByteCount() / inBytesPerWord);
425 const string vecType =
"std::vector<" + cType +
">";
426 const string varName (inVarName.empty() ? (inUseSTL ?
"tmpVector" :
"tmpArray") : inVarName);
427 oss <<
"const " << (inUseSTL ? vecType : cType) <<
" " << varName << (inUseSTL ?
"" :
"[]") <<
" = {" << endl;
428 if (inByteSwap && inBytesPerWord > 1)
429 switch (inBytesPerWord)
435 for (
size_t ndx(0); ndx < numWords; )
437 switch (inBytesPerWord)
440 case 2: oss <<
xHEX0N(tmp.
U16(
int(ndx)),4);
break;
441 case 4: oss <<
xHEX0N(tmp.
U32(
int(ndx)),8);
break;
442 case 8: oss <<
xHEX0N(tmp.
U64(
int(ndx)),16);
break;
444 if (++ndx < numWords)
460 oss <<
HEX0N(uint16_t(
U8(ndx++)),2);
461 if (inLineBreakInterval && ndx <
int(
GetByteCount()) && ((
size_t(ndx) % inLineBreakInterval) == 0))
465 return !outStr.empty();
470 const streamsize maxAddrWidth (
sizeof(
ULWord64) * 2);
473 oss <<
OCT0N(inOffset,maxAddrWidth) <<
": ";
474 else if (inRadix == 10)
475 oss <<
DEC0N(inOffset,maxAddrWidth) <<
": ";
477 oss <<
xHEX0N(inOffset,maxAddrWidth) <<
": ";
482 const size_t inStartOffset,
483 const size_t inByteCount,
484 const size_t inRadix,
485 const size_t inBytesPerGroup,
486 const size_t inGroupsPerRow,
487 const size_t inAddressRadix,
488 const bool inShowAscii,
489 const size_t inAddrOffset)
const
493 if (inRadix != 8 && inRadix != 10 && inRadix != 16 && inRadix != 2)
495 if (inAddressRadix != 0 && inAddressRadix != 8 && inAddressRadix != 10 && inAddressRadix != 16)
497 if (inBytesPerGroup == 0)
502 size_t bytesRemaining (inByteCount ? inByteCount :
GetByteCount());
503 size_t bytesInThisGroup (0);
504 size_t groupsInThisRow (0);
505 const unsigned maxByteWidth (inRadix == 8 ? 4 : (inRadix == 10 ? 3 : (inRadix == 2 ? 8 : 2)));
506 const UByte * pBuffer (
reinterpret_cast <const UByte *
> (pInStartAddress));
507 const size_t asciiBufferSize (inShowAscii && inGroupsPerRow ? (inBytesPerGroup * inGroupsPerRow + 1) *
sizeof (
UByte) : 0);
510 if (!pInStartAddress)
514 ::memset (pAsciiBuffer, 0, asciiBufferSize);
516 if (inGroupsPerRow && inAddressRadix)
518 while (bytesRemaining)
521 inOStream <<
BIN08(*pBuffer);
522 else if (inRadix == 8)
523 inOStream <<
oOCT(uint16_t(*pBuffer));
524 else if (inRadix == 10)
525 inOStream <<
DEC0N(uint16_t(*pBuffer),maxByteWidth);
526 else if (inRadix == 16)
527 inOStream <<
HEX0N(uint16_t(*pBuffer),2);
530 pAsciiBuffer[groupsInThisRow * inBytesPerGroup + bytesInThisGroup] = isprint(*pBuffer) ? *pBuffer :
'.';
535 if (bytesInThisGroup >= inBytesPerGroup)
538 if (inGroupsPerRow && groupsInThisRow >= inGroupsPerRow)
542 inOStream <<
" " << pAsciiBuffer;
543 ::memset (pAsciiBuffer, 0, asciiBufferSize);
546 if (inAddressRadix && bytesRemaining)
547 inOStream << print_address_offset (inAddressRadix, reinterpret_cast <ULWord64> (pBuffer) -
reinterpret_cast <ULWord64> (pInStartAddress) +
ULWord64 (inAddrOffset));
552 bytesInThisGroup = 0;
556 if (bytesInThisGroup && bytesInThisGroup < inBytesPerGroup && pAsciiBuffer)
559 inOStream <<
string ((inBytesPerGroup - bytesInThisGroup) * maxByteWidth + 1,
' ');
564 if (groupsInThisRow < inGroupsPerRow && pAsciiBuffer)
565 inOStream <<
string (((inGroupsPerRow - groupsInThisRow) * inBytesPerGroup * maxByteWidth + (inGroupsPerRow - groupsInThisRow)),
' ');
567 inOStream << pAsciiBuffer;
570 else if (bytesInThisGroup && bytesInThisGroup < inBytesPerGroup)
574 delete [] pAsciiBuffer;
581 const size_t inStartOffset,
582 const size_t inByteCount,
583 const size_t inRadix,
584 const size_t inBytesPerGroup,
585 const size_t inGroupsPerRow,
586 const size_t inAddressRadix,
587 const bool inShowAscii,
588 const size_t inAddrOffset)
const
591 Dump (oss, inStartOffset, inByteCount, inRadix, inBytesPerGroup, inGroupsPerRow, inAddressRadix, inShowAscii, inAddrOffset);
592 inOutputString = oss.str();
593 return inOutputString;
614 size_t maxSize (
size_t(
GetByteCount()) /
sizeof(uint64_t));
615 if (maxSize < inU64Offset)
617 maxSize -= inU64Offset;
619 const uint64_t * pU64 (
reinterpret_cast <const uint64_t *
> (
GetHostAddress(
ULWord(inU64Offset *
sizeof(uint64_t)))));
623 if (inMaxSize && inMaxSize < maxSize)
628 outUint64s.reserve(maxSize);
629 for (
size_t ndx(0); ndx < maxSize; ndx++)
631 const uint64_t u64 (*pU64++);
638 outUint64s.reserve(0);
651 size_t maxNumU32s (
size_t(
GetByteCount()) /
sizeof(uint32_t));
652 if (maxNumU32s < inU32Offset)
654 maxNumU32s -= inU32Offset;
656 const uint32_t * pU32 (
reinterpret_cast<const uint32_t*
>(
GetHostAddress(
ULWord(inU32Offset *
sizeof(uint32_t)))));
660 if (inMaxSize && inMaxSize < maxNumU32s)
661 maxNumU32s = inMaxSize;
665 outUint32s.reserve(maxNumU32s);
666 for (
size_t ndx(0); ndx < maxNumU32s; ndx++)
668 const uint32_t u32 (*pU32++);
675 outUint32s.reserve(0);
688 size_t maxSize (
size_t(
GetByteCount()) /
sizeof(uint16_t));
689 if (maxSize < inU16Offset)
691 maxSize -= inU16Offset;
693 const uint16_t * pU16 (
reinterpret_cast <const uint16_t *
> (
GetHostAddress(
ULWord(inU16Offset *
sizeof(uint16_t)))));
697 if (inMaxSize && inMaxSize < maxSize)
702 outUint16s.reserve(maxSize);
703 for (
size_t ndx(0); ndx < maxSize; ndx++)
705 const uint16_t u16 (*pU16++);
712 outUint16s.reserve(0);
726 if (maxSize < inU8Offset)
728 maxSize -= inU8Offset;
734 if (inMaxSize && inMaxSize < maxSize)
739 outUint8s.reserve(maxSize);
740 for (
size_t ndx(0); ndx < maxSize; ndx++)
741 outUint8s.push_back(*pU8++);
746 outUint8s.reserve(0);
754 const uint8_t * pU8 (
reinterpret_cast<const uint8_t*
> (
GetHostPointer()));
760 outU8s.reserve(outU8s.size() + maxSize);
761 outU8s.insert(outU8s.end(),pU8, pU8 + maxSize);
778 if (maxSize < inU8Offset)
780 maxSize -= inU8Offset;
786 if (inMaxSize && inMaxSize < maxSize)
791 outString.reserve(maxSize);
792 for (
size_t ndx(0); ndx < maxSize; ndx++)
794 const char c = *pU8++;
804 outString.reserve(0);
819 uint64_t * pU64 (
reinterpret_cast<uint64_t*
>(
GetHostAddress(
ULWord(inU64Offset *
sizeof(uint64_t)))));
822 if (maxU64s > inU64Offset)
823 maxU64s -= inU64Offset;
824 if (maxU64s > inU64s.size())
825 maxU64s = inU64s.size();
826 if (inU64s.size() > maxU64s)
829 for (
unsigned ndx(0); ndx < maxU64s; ndx++)
847 uint32_t * pU32 (
reinterpret_cast<uint32_t*
>(
GetHostAddress(
ULWord(inU32Offset *
sizeof(uint32_t)))));
850 if (maxU32s > inU32Offset)
851 maxU32s -= inU32Offset;
852 if (maxU32s > inU32s.size())
853 maxU32s = inU32s.size();
854 if (inU32s.size() > maxU32s)
857 for (
unsigned ndx(0); ndx < maxU32s; ndx++)
875 uint16_t * pU16 (
reinterpret_cast<uint16_t*
>(
GetHostAddress(
ULWord(inU16Offset *
sizeof(uint16_t)))));
878 if (maxU16s > inU16Offset)
879 maxU16s -= inU16Offset;
880 if (maxU16s > inU16s.size())
881 maxU16s = inU16s.size();
882 if (inU16s.size() > maxU16s)
885 for (
unsigned ndx(0); ndx < maxU16s; ndx++)
906 if (maxU8s > inU8Offset)
907 maxU8s -= inU8Offset;
908 if (maxU8s > inU8s.size())
909 maxU8s = inU8s.size();
910 if (inU8s.size() > maxU8s)
913 ::memcpy(pU8, &inU8s[0], maxU8s);
915 for (
unsigned ndx(0); ndx < maxU8s; ndx++)
917 *pU8++ = inU8s.at(ndx);
931 return inOutStream <<
"{invalid}";
937 inOutList.push_back (inRP188);
944 inOutStream << inObj.size () <<
":[";
947 inOutStream << *iter;
948 if (++iter != inObj.end ())
951 return inOutStream <<
"]";
957 inOutStream << inObj.size () <<
":[";
961 if (++iter != inObj.end ())
964 return inOutStream <<
"]";
973 if (++iter != inObj.end ())
983 inOutSet.insert (*iter);
990 return inOutStream << inObj.
acHeader
1011 <<
" acFrame=" << inObj.
acFrame
1012 <<
" acRP188=" << inObj.
acRP188
1023 inOutStream <<
"n/a";
1030 #if defined (_DEBUG)
1034 while (str.find (
' ') != string::npos)
1035 str.erase (str.find (
' '), 1);
1080 inOutStream <<
"RegValues:" << inObj.size () <<
"[";
1081 while (iter != inObj.end ())
1084 const ULWord registerValue (iter->second);
1086 if (++iter != inObj.end ())
1089 return inOutStream <<
"]";
1116 if (inOutSet.find(*iter) == inOutSet.end())
1117 inOutSet.insert(*iter);
1125 NTV2VideoFormatSet::const_iterator iter (inFormats.begin ());
1127 inOStream << inFormats.size ()
1128 << (inFormats.size () == 1 ?
" video format: " :
" video format(s): ");
1130 while (iter != inFormats.end ())
1133 inOStream << (++iter == inFormats.end () ?
"" :
", ");
1145 inOStream << inFormats.size()
1146 << (inFormats.size() == 1 ?
" pixel format: " :
" pixel formats: ");
1148 while (iter != inFormats.end())
1151 inOStream << (++iter == inFormats.end() ?
"" :
", ");
1161 inOutSet.insert(*iter);
1171 inOStream << inStandards.size ()
1172 << (inStandards.size () == 1 ?
" standard: " :
" standards: ");
1174 while (iter != inStandards.end ())
1177 inOStream << (++iter == inStandards.end () ?
"" :
", ");
1187 inOutSet.insert(*iter);
1196 inOStream << inGeometries.size ()
1197 << (inGeometries.size () == 1 ?
" geometry: " :
" geometries: ");
1198 while (iter != inGeometries.end ())
1201 inOStream << (++iter == inGeometries.end () ?
"" :
", ");
1210 inOutSet.insert(*iter);
1219 inOStream << inSet.size()
1220 << (inSet.size() == 1 ?
" input: " :
" inputs: ");
1221 while (iter != inSet.end())
1224 inOStream << (++iter == inSet.end() ?
"" :
", ");
1233 inOutSet.insert (*iter);
1241 inOStream << inSet.size()
1242 << (inSet.size() == 1 ?
" output: " :
" outputs: ");
1243 while (iter != inSet.end())
1246 inOStream << (++iter == inSet.end() ?
"" :
", ");
1255 inOutSet.insert(*iter);
1268 if (outFormats.find(*fit) == outFormats.end())
1269 outFormats.insert(*fit);
1279 if (usedFormats.find(pf) == usedFormats.end())
1280 outFormats.insert(pf);
1286 outStandards.clear();
1293 if (outStandards.find(*sit) == outStandards.end())
1294 outStandards.insert(*sit);
1304 if (usedStandards.find(st) == usedStandards.end())
1305 outStandards.insert(st);
1324 outFormats.insert(vf);
1326 catch (
const std::bad_alloc &)
1334 NTV2_ASSERT ((isOkay && !outFormats.empty()) || (!isOkay && outFormats.empty()));
1349 outFormats.insert(pixelFormat);
1351 catch (
const std::bad_alloc &)
1358 NTV2_ASSERT ((isOkay && !outFormats.empty() ) || (!isOkay && outFormats.empty() ));
1367 outStandards.clear();
1374 outStandards.insert(
std);
1383 outGeometries.clear();
1397 outInputSources.clear();
1406 outInputSources.insert(src);
1416 outOutputDests.clear();
1419 for (
size_t ndx(0); ndx < 10; ndx++)
1426 outOutputDests.insert(dst);
1435 << (inSet.size() == 1 ?
" rate: " :
" rates: ");
1436 while (it != inSet.end())
1439 oss << (++it == inSet.end() ?
"" :
", ");
1447 if (inOutSet.find(*it) == inOutSet.end())
1448 inOutSet.insert(*it);
1461 outRates.insert(fr);
1469 return inRun.
Print(inOutStrm);
1476 static const char * sStateStrings [] = {
"Disabled",
"Initializing",
"Starting",
"Paused",
"Stopping",
"Running",
"StartingAtTime",
AJA_NULL};
1478 return string (sStateStrings [inState]);
1520 return it != sFGWdths.end() ? it->second : 0;
1546 return it != sFGHghts.end() ? it->second : 0;
1550 static const string sSegXferUnits[] = {
"",
" U8",
" U16",
"",
" U32",
"",
"",
"",
" U64",
""};
1555 return inStrm <<
"(invalid)";
1562 inStrm <<
DEC(getSegmentCount()) <<
" x " <<
DEC(getSegmentLength())
1564 if (getSourceOffset())
1565 inStrm <<
" srcOff=" <<
xHEX0N(getSourceOffset(),8);
1566 if (getSegmentCount() > 1)
1567 inStrm <<
" srcSpan=" <<
xHEX0N(getSourcePitch(),8) << (isSourceBottomUp()?
" VF":
"");
1568 if (getDestOffset())
1569 inStrm <<
" dstOff=" <<
xHEX0N(getDestOffset(),8);
1570 if (getSegmentCount() > 1)
1571 inStrm <<
" dstSpan=" <<
xHEX0N(getDestPitch(),8) << (isDestBottomUp()?
" VF":
"");
1572 inStrm <<
" totElm=" <<
DEC(getTotalElements()) <<
" totByt=" <<
xHEX0N(getTotalBytes(),8);
1579 static string var(
"segInfo");
1581 string units(
"\t// bytes");
1585 oss <<
"NTV2SegmentedXferInfo " << var <<
";" << endl;
1586 if (getElementLength() > 1)
1589 oss << var <<
".setElementLength(" << getElementLength() <<
");" << endl;
1591 oss << var <<
".setSegmentCount(" <<
DEC(getSegmentCount()) <<
");" << endl;
1592 oss << var <<
".setSegmentLength(" <<
DEC(getSegmentLength()) <<
");" << units << endl;
1593 if (getSourceOffset())
1594 oss << var <<
".setSourceOffset(" <<
DEC(getSourceOffset()) <<
");" << units << endl;
1595 oss << var <<
".setSourcePitch(" <<
DEC(getSourcePitch()) <<
");" << units << endl;
1596 if (isSourceBottomUp())
1597 oss << var <<
".setSourceDirection(false);" << endl;
1598 if (getDestOffset())
1599 oss << var <<
".setDestOffset(" <<
DEC(getDestOffset()) <<
");" << units << endl;
1601 oss << var <<
".setDestPitch(" <<
DEC(getDestPitch()) <<
");" << units << endl;
1602 if (isDestBottomUp())
1603 oss << var <<
".setDestDirection(false);" << endl;
1611 if (getSegmentCount() == 1)
1613 if (inElementOffset >= getSourceOffset())
1614 if (inElementOffset < getSourceOffset()+getSegmentLength())
1618 ULWord offset(getSourceOffset());
1619 for (
ULWord seg(0); seg < getSegmentCount(); seg++)
1621 if (inElementOffset < offset)
1623 if (inElementOffset < offset+getSegmentLength())
1625 offset += getSourcePitch();
1632 if (getElementLength() != inRHS.getElementLength())
1635 if (getSegmentCount() != inRHS.getSegmentCount())
1637 if (getSegmentLength() != inRHS.getSegmentLength())
1639 if (getSourceOffset() != inRHS.getSourceOffset())
1641 if (getSourcePitch() != inRHS.getSourcePitch())
1643 if (getDestOffset() != inRHS.getDestOffset())
1645 if (getDestPitch() != inRHS.getDestPitch())
1654 mElementsPerSegment = 0;
1655 mInitialSrcOffset = 0;
1656 mInitialDstOffset = 0;
1657 mSrcElementsPerRow = 0;
1658 mDstElementsPerRow = 0;
1665 std::swap(mSrcElementsPerRow, mDstElementsPerRow);
1666 std::swap(mInitialSrcOffset, mInitialDstOffset);
1667 const bool srcNormal(this->isSourceTopDown()), dstNormal(this->isDestTopDown());
1675 fByteCount (
ULWord(pInUserPointer ? inByteCount : 0)),
1677 #
if defined (AJAMac)
1678 fKernelSpacePtr (0),
1690 : fUserSpacePtr (0),
1693 #
if defined (AJAMac)
1694 fKernelSpacePtr (0),
1708 : fUserSpacePtr (0),
1711 #
if defined (AJAMac)
1712 fKernelSpacePtr (0),
1732 fByteCount =
ULWord(inNewByteCount);
1761 const size_t loopCount(
GetByteCount() /
sizeof(uint64_t));
1764 for (
size_t ndx(0); ndx < loopCount; ndx++)
1773 const size_t loopCount(
GetByteCount() /
sizeof(uint32_t));
1776 for (
size_t ndx(0); ndx < loopCount; ndx++)
1785 const size_t loopCount(
GetByteCount() /
sizeof(uint16_t));
1788 for (
size_t ndx(0); ndx < loopCount; ndx++)
1798 fByteCount =
ULWord(pInUserPointer ? inByteCount : 0);
1800 return (pInUserPointer && inByteCount) || (!pInUserPointer && !inByteCount);
1806 return Set(pInUserPointer, inByteCount) &&
Fill(inValue);
1828 {pBuffer =
new UByte[inByteCount];}
1829 catch (
const std::bad_alloc &)
1831 if (pBuffer &&
Set(pBuffer, inByteCount))
1876 pBytes += inByteOffset;
1912 const ULWord inSrcByteOffset,
const ULWord inDstByteOffset,
const ULWord inByteCount)
1916 if (inSrcByteOffset + inByteCount > inBuffer.
GetByteCount())
1921 const UByte * pSrc (inBuffer);
1922 pSrc += inSrcByteOffset;
1924 UByte * pDst (*
this);
1925 pDst += inDstByteOffset;
1927 ::memcpy (pDst, pSrc, inByteCount);
1934 if (!inXferInfo.isValid() || inSrcBuffer.
IsNULL() ||
IsNULL())
1938 LWord srcOffset (
LWord(inXferInfo.getSourceOffset() * inXferInfo.getElementLength()));
1939 LWord dstOffset (
LWord(inXferInfo.getDestOffset() * inXferInfo.getElementLength()));
1940 LWord srcPitch (
LWord(inXferInfo.getSourcePitch() * inXferInfo.getElementLength()));
1941 LWord dstPitch (
LWord(inXferInfo.getDestPitch() * inXferInfo.getElementLength()));
1942 const LWord bytesPerSeg (inXferInfo.getSegmentLength() * inXferInfo.getElementLength());
1943 if (inXferInfo.isSourceBottomUp())
1944 srcPitch = 0 - srcPitch;
1945 if (inXferInfo.isDestBottomUp())
1946 dstPitch = 0 - dstPitch;
1947 for (
ULWord segNdx(0); segNdx < inXferInfo.getSegmentCount(); segNdx++)
1951 if (!pSrc)
return false;
1952 if (!pDst)
return false;
1957 ::memcpy (pDst, pSrc,
size_t(bytesPerSeg));
1958 srcOffset += srcPitch;
1959 dstOffset += dstPitch;
1969 const string newline(
"\n"), tab(
"\t");
1975 for (
size_t ndx(0); ndx < str.size(); ndx++)
1985 for (
size_t srcNdx(0), dstNdx(0); srcNdx < str.size(); srcNdx += 2)
1999 if (fFlags != inBuffer.fFlags)
2005 fUserSpacePtr = inBuffer.fUserSpacePtr;
2006 inBuffer.fUserSpacePtr = tmp;
2022 const uint8_t * pSrchData (inValue);
2023 const uint8_t * pMyData (*
this);
2027 if (!::memcmp(pMyData, pSrchData, srchByteCount))
2028 outOffsets.insert(offset);
2031 }
while (offset < maxOffset);
2043 if (inByteOffset >= totalBytes)
2046 totalBytes -= inByteOffset;
2048 ULWord byteCount(inByteCount);
2049 if (byteCount > totalBytes)
2050 byteCount = totalBytes;
2055 const UByte * pByte1 (*
this);
2056 const UByte * pByte2 (inBuffer);
2057 pByte1 += inByteOffset;
2058 pByte2 += inByteOffset;
2059 #if !defined(NTV2BUFFER_NO_MEMCMP)
2060 return ::memcmp (pByte1, pByte2, byteCount) == 0;
2061 #else // NTV2BUFFER_NO_MEMCMP
2062 ULWord offset(inByteOffset);
2065 if (*pByte1 != *pByte2)
2067 cerr <<
"## ERROR: IsContentEqual: miscompare at offset " <<
xHEX0N(offset,8)
2068 <<
" (" <<
DEC(offset) <<
"): " <<
xHEX0N(
UWord(*pByte1),2) <<
" != "
2070 <<
DEC(byteCount) <<
") bytes left to compare" << endl;
2078 #endif // NTV2BUFFER_NO_MEMCMP
2083 if (byteOffset == 0xFFFFFFFF)
2090 {byteOffset = 0xFFFFFFFF;
return true;}
2093 if (byteOffset >= totalBytesToCompare)
2095 totalBytesToCompare -= byteOffset;
2097 const UByte * pByte1 (*
this);
2098 const UByte * pByte2 (inBuffer);
2099 while (totalBytesToCompare)
2101 if (pByte1[byteOffset] != pByte2[byteOffset])
2103 totalBytesToCompare--;
2106 byteOffset = 0xFFFFFFFF;
2112 outByteOffsetFirst = outByteOffsetLast =
GetByteCount ();
2125 outByteOffsetFirst = 0;
2128 if (*pByte1 != *pByte2)
2132 outByteOffsetFirst++;
2134 if (outByteOffsetFirst == 0)
2139 if (*pByte1 == *pByte2)
2143 outByteOffsetFirst++;
2146 outByteOffsetFirst--;
2156 while (--outByteOffsetLast)
2158 if (*pByte1 != *pByte2)
2166 while (outByteOffsetLast)
2168 if (*pByte1 == *pByte2)
2172 outByteOffsetLast--;
2175 outByteOffsetLast++;
2176 if (outByteOffsetLast <= outByteOffsetFirst)
2177 cerr <<
"## WARNING: GetRingChangedByteRange: last " << outByteOffsetLast <<
" <= first " << outByteOffsetFirst <<
" in wrap condition" << endl;
2178 const ULWord tmp (outByteOffsetLast);
2179 outByteOffsetLast = outByteOffsetFirst;
2180 outByteOffsetFirst = tmp;
2181 if (outByteOffsetLast >= outByteOffsetFirst)
2182 cerr <<
"## WARNING: GetRingChangedByteRange: last " << outByteOffsetLast <<
" >= first " << outByteOffsetFirst <<
" in wrap condition" << endl;
2198 const bool result (inNewSize && (!(inNewSize & (inNewSize - 1))));
2206 #if defined(MSWindows) || defined(AJABareMetal)
2207 return AJA_PAGE_SIZE;
2209 return size_t(::getpagesize());
2217 acRequestedFrame (0),
2218 acAudioClockTimeStamp (0),
2219 acAudioExpectedAddress (0),
2220 acAudioInStartAddress (0),
2221 acAudioInStopAddress (0),
2222 acAudioOutStopAddress (0),
2223 acAudioOutStartAddress (0),
2224 acTotalBytesTransferred (0),
2229 acCurrentFrameTime (0),
2230 acAudioClockCurrentTime (0),
2231 acCurrentAudioExpectedAddress (0),
2232 acCurrentAudioStartAddress (0),
2233 acCurrentFieldCount (0),
2234 acCurrentLineCount (0),
2236 acCurrentUserCookie (0),
2245 : acHeader (inObj.acHeader),
2246 acFrameTime (inObj.acFrameTime),
2247 acRequestedFrame (inObj.acRequestedFrame),
2248 acAudioClockTimeStamp (inObj.acAudioClockTimeStamp),
2249 acAudioExpectedAddress (inObj.acAudioExpectedAddress),
2250 acAudioInStartAddress (inObj.acAudioInStartAddress),
2251 acAudioInStopAddress (inObj.acAudioInStopAddress),
2252 acAudioOutStopAddress (inObj.acAudioOutStopAddress),
2253 acAudioOutStartAddress (inObj.acAudioOutStartAddress),
2254 acTotalBytesTransferred (inObj.acTotalBytesTransferred),
2255 acStartSample (inObj.acStartSample),
2256 acCurrentTime (inObj.acCurrentTime),
2257 acCurrentFrame (inObj.acCurrentFrame),
2258 acCurrentFrameTime (inObj.acCurrentFrameTime),
2259 acAudioClockCurrentTime (inObj.acAudioClockCurrentTime),
2260 acCurrentAudioExpectedAddress (inObj.acCurrentAudioExpectedAddress),
2261 acCurrentAudioStartAddress (inObj.acCurrentAudioStartAddress),
2262 acCurrentFieldCount (inObj.acCurrentFieldCount),
2263 acCurrentLineCount (inObj.acCurrentLineCount),
2264 acCurrentReps (inObj.acCurrentReps),
2265 acCurrentUserCookie (inObj.acCurrentUserCookie),
2266 acFrame (inObj.acFrame),
2267 acRP188 (inObj.acRP188),
2268 acTrailer (inObj.acTrailer)
2291 for (
ULWord ndx (0); ndx < numRP188s; ndx++)
2292 outValues << pArray [ndx];
2311 outTimeCode = pArray [inTCIndex];
2319 outTimeCodes.clear();
2335 outTimeCodes[tcIndex] = tc;
2337 outTimeCodes[tcIndex] = tc;
2347 (
void)inSDIInputIndex0;
2355 if (!pArray || !numRP188s)
2360 if (
ULWord(inTCNdx) >= numRP188s)
2363 pArray[inTCNdx] = inTimecode;
2511 if (mInStatistics.
IsNULL())
2526 if (numElements != 8)
2528 if (inSDIInputIndex0 >= numElements)
2530 outStatus = pArray[inSDIInputIndex0];
2542 if (numElements != 8)
2544 if (inSDIInputIndex0 >= numElements)
2546 return pArray[inSDIInputIndex0];
2552 inOutStream << mHeader <<
", " << mInStatistics <<
", " << mTrailer;
return inOutStream;
2559 acTransferFrame (0),
2561 acFramesProcessed (0),
2562 acFramesDropped (0),
2564 acAudioTransferSize (0),
2565 acAudioStartSample (0),
2566 acAncTransferSize (0),
2567 acAncField2TransferSize (0)
2576 acCrosspoint (inCrosspoint),
2581 acRDTSCStartTime (0),
2582 acAudioClockStartTime (0),
2583 acRDTSCCurrentTime (0),
2584 acAudioClockCurrentTime (0),
2585 acFramesProcessed (0),
2586 acFramesDropped (0),
2693 if (inIndexNum == 0)
2710 case 13: oss << (
WithRP188() ?
"Yes" :
"No");
break;
2711 case 14: oss << (
WithLTC() ?
"Yes" :
"No");
break;
2715 case 18: oss << (
WithVidProc() ?
"Yes" :
"No");
break;
2718 case 21: oss << (
IsFieldMode() ?
"Yes" :
"No");
break;
2721 else if (inIndexNum < 22)
2731 << (inObj.
IsInput() ?
"Input " : (inObj.
IsOutput() ?
"Output" :
"*BAD* "))
2740 << setw(10) << (inObj.
WithRP188() ?
"+RP188" :
"-RP188")
2741 << setw(10) << (inObj.
WithLTC() ?
"+LTC" :
"-LTC")
2742 << setw(10) << (inObj.
WithFBFChange() ?
"+FBFchg" :
"-FBFchg")
2743 << setw(10) << (inObj.
WithFBOChange() ?
"+FBOchg" :
"-FBOchg")
2745 << setw(10) << (inObj.
WithVidProc() ?
"+VidProc" :
"-VidProc")
2746 << setw(10) << (inObj.
WithCustomAnc() ?
"+AncData" :
"-AncData")
2748 << setw(10) << (inObj.
IsFieldMode() ?
"+FldMode" :
"-FldMode");
2761 Set (inNumSegments, inNumActiveBytesPerRow, inHostBytesPerRow, inDeviceBytesPerRow);
2787 ccSaturationValue (0)
2824 acTransferStatus (),
2826 acInVideoDMAOffset (0),
2827 acInSegmentedDMAInfo (),
2828 acColorCorrection (),
2833 acPeerToPeerFlags (0),
2834 acFrameRepeatCount (1),
2835 acDesiredFrame (-1),
2847 ULWord * pInANCF2Buffer,
const ULWord inANCF2ByteCount)
2849 acVideoBuffer (pInVideoBuffer, inVideoByteCount),
2850 acAudioBuffer (pInAudioBuffer, inAudioByteCount),
2851 acANCBuffer (pInANCBuffer, inANCByteCount),
2852 acANCField2Buffer (pInANCF2Buffer, inANCF2ByteCount),
2854 acTransferStatus (),
2856 acInVideoDMAOffset (0),
2857 acInSegmentedDMAInfo (),
2858 acColorCorrection (),
2863 acPeerToPeerFlags (0),
2864 acFrameRepeatCount (1),
2865 acDesiredFrame (-1),
2881 ULWord * pInAudioBuffer,
const ULWord inAudioByteCount,
2883 ULWord * pInANCF2Buffer,
const ULWord inANCF2ByteCount)
2888 &&
SetAncBuffers (pInANCBuffer, inANCByteCount, pInANCF2Buffer, inANCF2ByteCount);
2929 for (
UWord ndx (0); ndx <
UWord(maxNumValues); ndx++)
2951 pArray[inTCIndex] = inTimeCode;
2965 for (
ULWord tcIndex(0); tcIndex < maxNumValues; tcIndex++)
2969 pArray[tcIndex] = inTimeCode;
2992 const ULWord inHostBytesPerRow,
const ULWord inDeviceBytesPerRow)
3180 mInNumRegisters (
ULWord (inRegisterNumbers.size ())),
3181 mOutNumRegisters (0)
3190 mInNumRegisters (
ULWord (inRegReads.size ())),
3191 mOutNumRegisters (0)
3201 mInNumRegisters =
ULWord(inRegisterNumbers.size());
3202 mOutNumRegisters = 0;
3203 bool result ( mInRegisters.
Allocate(mInNumRegisters *
sizeof(
ULWord))
3210 ULWord * pRegArray(mInRegisters);
3216 pRegArray[ndx++] = *iter;
3223 if (!mInNumRegisters)
3230 const ULWord * pRegNums(mInRegisters);
3231 for (
ULWord ndx(0); ndx < mInNumRegisters; ndx++)
3232 if (outRegNums.find(pRegNums[ndx]) == outRegNums.end())
3233 outRegNums.insert(pRegNums[ndx]);
3241 outGoodRegNums.clear();
3242 if (!mOutGoodRegisters)
3244 if (!mOutNumRegisters)
3246 if (mOutNumRegisters > mInNumRegisters)
3249 const ULWord * pRegArray (mOutGoodRegisters);
3250 for (
ULWord ndx(0); ndx < mOutNumRegisters; ndx++)
3251 outGoodRegNums.insert(pRegArray[ndx]);
3258 outBadRegNums.clear();
3264 if (reqRegNums == goodRegNums)
3268 std::set_difference (reqRegNums.begin(), reqRegNums.end(),
3269 goodRegNums.begin(), goodRegNums.end(),
3270 std::inserter(outBadRegNums, outBadRegNums.begin()));
3276 if (!mOutGoodRegisters)
3278 if (!mOutNumRegisters)
3280 if (mOutNumRegisters > mInNumRegisters)
3286 const ULWord * pRegArray (mOutGoodRegisters);
3287 ULWord * pValArray (mOutValues);
3288 for (
ULWord ndx(0); ndx < mOutNumRegisters; ndx++)
3289 if (pRegArray[ndx] == inRegNum)
3291 pValArray[ndx] = inValue;
3302 if (!mOutGoodRegisters)
3304 if (!mOutNumRegisters)
3306 if (mOutNumRegisters > mInNumRegisters)
3313 const ULWord * pRegArray (mOutGoodRegisters);
3314 const ULWord * pValArray (mOutValues);
3315 for (
ULWord ndx(0); ndx < mOutNumRegisters; ndx++)
3317 outValues [pRegArray[ndx]] = pValArray[ndx];
3318 #if 0 // Fake KONAIP25G from C4412G (see also CNTV2XXXXDriverInterface::ReadRegister):
3322 outValues [pRegArray[ndx]] = 0x0A03FAD9;
3335 if (outValues.empty())
3340 #if 0 // Fake KONAIP25G from C4412G (see also CNTV2XXXXDriverInterface::ReadRegister):
3346 outValues.push_back(regInfo);
3352 uint32_t missingTally(0);
3356 if (mapIter != regValMap.end())
3357 it->registerValue = mapIter->second;
3361 #if 0 // Fake KONAIP25G from C4412G (see also CNTV2XXXXDriverInterface::ReadRegister):
3365 it->registerValue = 0x0A03FAD9;
3368 return !missingTally;
3375 inOutStream << mHeader <<
", numRegs=" << mInNumRegisters <<
", inRegs=" << mInRegisters <<
", outNumGoodRegs=" << mOutNumRegisters
3376 <<
", outGoodRegs=" << mOutGoodRegisters <<
", outValues=" << mOutValues <<
", " << mTrailer;
3383 mInNumRegisters (
ULWord(inRegWrites.size())),
3407 pBadRegIndexes[ndx] = 0;
3409 pRegInfoArray[ndx++] = *it;
3420 outFailedRegWrites.clear();
3426 outRegWrites.clear();
3435 outRegWrites.push_back(pRegInfos[ndx]);
3448 if (pBadRegIndexes && maxNumBadRegIndexes && pRegInfoArray && maxNumRegInfos &&
mOutNumFailures)
3451 for (
UWord num(0); num < maxNumBadRegIndexes; num++)
3453 const UWord badRegIndex (pBadRegIndexes[num]);
3454 if (badRegIndex < maxNumRegInfos)
3456 const NTV2RegInfo & badRegInfo (pRegInfoArray[badRegIndex]);
3457 oss <<
"Failure " << num <<
": " << badRegInfo << endl;
3467 typedef std::pair <ULWord, ULWord> ULWordPair;
3468 typedef std::pair <ULWordPair, ULWordPair> ULWordPairs;
3491 const bool badName (regName.find(
' ') != string::npos);
3494 oss <<
"theDevice.WriteRegister (";
3531 for (NTV2ULWordVector::const_iterator it(inObj.begin()); it != inObj.end(); ++it)
3532 inOutStream <<
" " <<
HEX0N(*it,8);
3539 inOutStream << (inCompact ?
"Ch[" :
"[");
3543 inOutStream <<
DEC(*it+1);
3546 if (++it != inObj.end())
3547 inOutStream << (inCompact ?
"|" :
",");
3549 return inOutStream <<
"]";
3553 { ostringstream oss;
3560 inOutStream << (inCompact ?
"Ch{" :
"{");
3564 inOutStream <<
DEC(*it+1);
3567 if (++it != inObj.end())
3568 inOutStream << (inCompact ?
"|" :
",");
3570 return inOutStream <<
"}";
3574 { ostringstream oss;
3601 result.push_back(ch);
3609 result.push_back(*it);
3615 inOutStream << (inCompact ?
"AudSys{" :
"{");
3619 inOutStream <<
DEC(*it+1);
3622 if (++it != inObj.end())
3623 inOutStream << (inCompact ?
"|" :
",");
3625 return inOutStream <<
"}";
3629 { ostringstream oss;
3639 result.insert(audSys);
3647 if (result.find(it->registerNumber) == result.end())
3648 result.insert(it->registerNumber);
3655 if (iter->registerNumber == inRegNum)
3657 return inRegInfos.end();
3663 return inObj.
Print(inOutStream);
3669 inOutStream << inObj.size () <<
" regs:" << endl;
3671 inOutStream << *iter << endl;
3678 mIsWriting (inDoWrite),
3684 *pRegInfo = inBankSelect;
3687 *pRegInfo = inOutRegInfo;
3700 if (
ULWord(inIndex0) < maxNum)
3701 result = pRegInfos[inIndex0];
3713 if (
mInBankInfos) oss << *pBankRegInfo;
else oss <<
"-";
3714 oss <<
" regInfos=";
3715 if (
mInRegInfos) oss << *pRegInfo;
else oss <<
"-";
3723 mIsWriting (inDoWrite),
3724 mVirtualData (inVirtualData, inVirtualDataSize)
3742 #define AsU8Ref(_x_) reinterpret_cast<uint8_t&>(_x_)
3743 #define AsU16Ref(_x_) reinterpret_cast<uint16_t&>(_x_)
3744 #define AsU32Ref(_x_) reinterpret_cast<uint32_t&>(_x_)
3745 #define AsU64Ref(_x_) reinterpret_cast<uint64_t&>(_x_)
3751 PUSHU32(fHeaderVersion, outBlob);
3753 PUSHU32(fSizeInBytes, outBlob);
3754 PUSHU32(fPointerSize, outBlob);
3756 PUSHU32(fResultStatus, outBlob);
3762 POPU32(fHeaderTag, inBlob, inOutIndex);
3763 POPU32(fType, inBlob, inOutIndex);
3764 POPU32(fHeaderVersion, inBlob, inOutIndex);
3765 POPU32(fVersion, inBlob, inOutIndex);
3767 POPU32(v32, inBlob, inOutIndex);
3768 POPU32(fPointerSize, inBlob, inOutIndex);
3769 POPU32(fOperation, inBlob, inOutIndex);
3770 POPU32(fResultStatus, inBlob, inOutIndex);
3776 PUSHU32(fTrailerVersion, outBlob);
3777 PUSHU32(fTrailerTag, outBlob);
3783 POPU32(fTrailerVersion, inBlob, inOutIndex);
3784 POPU32(fTrailerTag, inBlob, inOutIndex);
3793 if (!IsNULL() && fillBuffer)
3800 ULWord byteCount(0), flags(0);
3801 POPU32(byteCount, inBlob, inOutIndex);
3802 POPU32(flags, inBlob, inOutIndex);
3807 if ((inOutIndex + byteCount) > inBlob.size())
3809 ::memcpy(GetHostPointer(), inBlob.data() + inOutIndex, byteCount);
3810 inOutIndex += byteCount;
3818 ULWord byteCount(0), flags(0);
3819 POPU32(byteCount, inBlob, inOutIndex);
3820 POPU32(flags, inBlob, inOutIndex);
3821 if ((inOutIndex + byteCount) > inBlob.size())
3824 ::memcpy(GetHostPointer(), inBlob.data() + inOutIndex, byteCount);
3825 inOutIndex += byteCount;
3831 const size_t totBytes (mHeader.GetSizeInBytes()
3832 + mInRegisters.GetByteCount() + mOutGoodRegisters.GetByteCount() + mOutValues.GetByteCount());
3833 if (outBlob.capacity() < totBytes)
3834 outBlob.reserve(totBytes);
3837 mInRegisters.ByteSwap32();
3839 bool ok = mHeader.RPCEncode(outBlob);
3840 PUSHU32(mInNumRegisters, outBlob);
3841 ok &= mInRegisters.RPCEncode(outBlob,
true);
3842 PUSHU32(mOutNumRegisters, outBlob);
3843 ok &= mOutGoodRegisters.RPCEncode(outBlob,
false)
3844 && mOutValues.RPCEncode(outBlob,
false)
3845 && mTrailer.RPCEncode(outBlob);
3848 mInRegisters.ByteSwap32();
3855 bool ok = mHeader.RPCDecode(inBlob, inOutIndex);
3856 if (!ok)
return false;
3857 POPU32(mInNumRegisters, inBlob, inOutIndex);
3858 ok &= mInRegisters.RPCDecode(inBlob, inOutIndex,
true);
3859 POPU32(mOutNumRegisters, inBlob, inOutIndex);
3860 ok &= mOutGoodRegisters.RPCDecode(inBlob, inOutIndex,
false);
3861 ok &= mOutValues.RPCDecode(inBlob, inOutIndex,
false);
3862 ok &= mTrailer.RPCDecode(inBlob, inOutIndex);
3865 mInRegisters.ByteSwap32();
3872 const size_t totBytes (mHeader.GetSizeInBytes()
3873 + mInRegisters.GetByteCount() + mOutGoodRegisters.GetByteCount() + mOutValues.GetByteCount());
3874 if (outBlob.capacity() < totBytes)
3875 outBlob.reserve(totBytes);
3878 mOutGoodRegisters.ByteSwap32();
3879 mOutValues.ByteSwap32();
3881 bool ok = mHeader.RPCEncode(outBlob);
3882 PUSHU32(mInNumRegisters, outBlob);
3883 ok &= mInRegisters.RPCEncode(outBlob,
false);
3884 PUSHU32(mOutNumRegisters, outBlob);
3885 ok &= mOutGoodRegisters.RPCEncode(outBlob,
true)
3886 && mOutValues.RPCEncode(outBlob,
true)
3887 && mTrailer.RPCEncode(outBlob);
3890 mOutGoodRegisters.ByteSwap32();
3891 mOutValues.ByteSwap32();
3898 bool ok = mHeader.RPCDecode(inBlob, inOutIndex);
3899 if (!ok)
return false;
3900 POPU32(mInNumRegisters, inBlob, inOutIndex);
3901 ok &= mInRegisters.RPCDecode(inBlob, inOutIndex,
false);
3902 POPU32(mOutNumRegisters, inBlob, inOutIndex);
3903 ok &= mOutGoodRegisters.RPCDecode(inBlob, inOutIndex,
true);
3904 ok &= mOutValues.RPCDecode(inBlob, inOutIndex,
true);
3905 ok &= mTrailer.RPCDecode(inBlob, inOutIndex);
3908 mOutGoodRegisters.ByteSwap32();
3909 mOutValues.ByteSwap32();
3916 const size_t totBytes (mHeader.GetSizeInBytes()
3917 + mInRegInfos.GetByteCount() + mOutBadRegIndexes.GetByteCount());
3918 if (outBlob.capacity() < totBytes)
3919 outBlob.reserve(totBytes);
3922 mInRegInfos.ByteSwap32();
3923 mOutBadRegIndexes.ByteSwap32();
3925 bool ok = mHeader.RPCEncode(outBlob);
3926 PUSHU32(mInNumRegisters, outBlob);
3927 ok &= mInRegInfos.RPCEncode(outBlob);
3928 PUSHU32(mOutNumFailures, outBlob);
3929 ok &= mOutBadRegIndexes.RPCEncode(outBlob)
3930 && mTrailer.RPCEncode(outBlob);
3933 mInRegInfos.ByteSwap32();
3934 mOutBadRegIndexes.ByteSwap16();
3941 bool ok = mHeader.RPCDecode(inBlob, inOutIndex);
3942 POPU32(mInNumRegisters, inBlob, inOutIndex);
3943 ok &= mInRegInfos.RPCDecode(inBlob, inOutIndex);
3944 POPU32(mOutNumFailures, inBlob, inOutIndex);
3945 ok &= mOutBadRegIndexes.RPCDecode(inBlob, inOutIndex);
3946 ok &= mTrailer.RPCDecode(inBlob, inOutIndex);
3949 mInRegInfos.ByteSwap32();
3950 mOutBadRegIndexes.ByteSwap16();
3957 const size_t totBytes (mHeader.GetSizeInBytes()
3958 + mInBankInfos.GetByteCount() + mInRegInfos.GetByteCount());
3959 if (outBlob.capacity() < totBytes)
3960 outBlob.reserve(totBytes);
3963 mInBankInfos.ByteSwap32();
3964 mInRegInfos.ByteSwap32();
3966 bool ok = mHeader.RPCEncode(outBlob);
3968 ok &= mInBankInfos.RPCEncode(outBlob);
3969 ok &= mInRegInfos.RPCEncode(outBlob)
3970 && mTrailer.RPCEncode(outBlob);
3973 mInBankInfos.ByteSwap32();
3974 mInRegInfos.ByteSwap32();
3981 bool ok = mHeader.RPCDecode(inBlob, inOutIndex);
3982 POPU32(mIsWriting, inBlob, inOutIndex);
3983 ok &= mInBankInfos.RPCDecode(inBlob, inOutIndex);
3984 ok &= mInRegInfos.RPCDecode(inBlob, inOutIndex);
3985 ok &= mTrailer.RPCDecode(inBlob, inOutIndex);
3988 mInBankInfos.ByteSwap32();
3989 mInRegInfos.ByteSwap32();
3996 const size_t totBytes (acHeader.GetSizeInBytes());
3997 if (outBlob.capacity() < totBytes)
3998 outBlob.reserve(totBytes);
3999 bool ok = acHeader.RPCEncode(outBlob);
4005 PUSHU64(acRDTSCStartTime, outBlob);
4006 PUSHU64(acAudioClockStartTime, outBlob);
4007 PUSHU64(acRDTSCCurrentTime, outBlob);
4008 PUSHU64(acAudioClockCurrentTime, outBlob);
4009 PUSHU32(acFramesProcessed, outBlob);
4010 PUSHU32(acFramesDropped, outBlob);
4011 PUSHU32(acBufferLevel, outBlob);
4012 PUSHU32(acOptionFlags, outBlob);
4014 ok &= acTrailer.RPCEncode(outBlob);
4019 { uint16_t v16(0); uint32_t v32(0);
4020 bool ok = acHeader.RPCDecode(inBlob, inOutIndex);
4021 POPU16(v16, inBlob, inOutIndex);
4023 POPU16(v16, inBlob, inOutIndex);
4025 POPU32(v32, inBlob, inOutIndex);
4026 acStartFrame =
LWord(v32);
4027 POPU32(v32, inBlob, inOutIndex);
4028 acEndFrame =
LWord(v32);
4029 POPU32(v32, inBlob, inOutIndex);
4030 acActiveFrame =
LWord(v32);
4031 POPU64(acRDTSCStartTime, inBlob, inOutIndex);
4032 POPU64(acAudioClockStartTime, inBlob, inOutIndex);
4033 POPU64(acRDTSCCurrentTime, inBlob, inOutIndex);
4034 POPU64(acAudioClockCurrentTime, inBlob, inOutIndex);
4035 POPU32(acFramesProcessed, inBlob, inOutIndex);
4036 POPU32(acFramesDropped, inBlob, inOutIndex);
4037 POPU32(acBufferLevel, inBlob, inOutIndex);
4038 POPU32(acOptionFlags, inBlob, inOutIndex);
4039 POPU16(v16, inBlob, inOutIndex);
4041 ok &= acTrailer.RPCDecode(inBlob, inOutIndex);
4047 const size_t totBytes (acHeader.GetSizeInBytes());
4048 if (outBlob.capacity() < totBytes)
4049 outBlob.reserve(totBytes);
4050 bool ok = acHeader.RPCEncode(outBlob);
4052 PUSHU32(acRequestedFrame, outBlob);
4053 PUSHU64(acAudioClockTimeStamp, outBlob);
4054 PUSHU32(acAudioExpectedAddress, outBlob);
4055 PUSHU32(acAudioInStartAddress, outBlob);
4056 PUSHU32(acAudioInStopAddress, outBlob);
4057 PUSHU32(acAudioOutStopAddress, outBlob);
4058 PUSHU32(acAudioOutStartAddress, outBlob);
4059 PUSHU32(acTotalBytesTransferred, outBlob);
4060 PUSHU32(acStartSample, outBlob);
4062 ok &= acTimeCodes.RPCEncode(outBlob);
4064 PUSHU32(acCurrentFrame, outBlob);
4066 PUSHU64(acAudioClockCurrentTime, outBlob);
4067 PUSHU32(acCurrentAudioExpectedAddress, outBlob);
4068 PUSHU32(acCurrentAudioStartAddress, outBlob);
4069 PUSHU32(acCurrentFieldCount, outBlob);
4070 PUSHU32(acCurrentLineCount, outBlob);
4071 PUSHU32(acCurrentReps, outBlob);
4072 PUSHU64(acCurrentUserCookie, outBlob);
4074 PUSHU32(acRP188.fDBB, outBlob);
4075 PUSHU32(acRP188.fLo, outBlob);
4076 PUSHU32(acRP188.fHi, outBlob);
4077 ok &= acTrailer.RPCEncode(outBlob);
4083 bool ok = acHeader.RPCDecode(inBlob, inOutIndex);
4084 POPU64(v64, inBlob, inOutIndex);
4086 POPU32(acRequestedFrame, inBlob, inOutIndex);
4087 POPU64(acAudioClockTimeStamp, inBlob, inOutIndex);
4088 POPU32(acAudioExpectedAddress, inBlob, inOutIndex);
4089 POPU32(acAudioInStartAddress, inBlob, inOutIndex);
4090 POPU32(acAudioInStopAddress, inBlob, inOutIndex);
4091 POPU32(acAudioOutStopAddress, inBlob, inOutIndex);
4092 POPU32(acAudioOutStartAddress, inBlob, inOutIndex);
4093 POPU32(acTotalBytesTransferred, inBlob, inOutIndex);
4094 POPU32(acStartSample, inBlob, inOutIndex);
4096 ok &= acTimeCodes.RPCDecode(inBlob, inOutIndex);
4097 POPU64(v64, inBlob, inOutIndex);
4099 POPU32(acCurrentFrame, inBlob, inOutIndex);
4100 POPU64(v64, inBlob, inOutIndex);
4101 acCurrentFrameTime =
LWord64(v64);
4102 POPU64(acAudioClockCurrentTime, inBlob, inOutIndex);
4103 POPU32(acCurrentAudioExpectedAddress, inBlob, inOutIndex);
4104 POPU32(acCurrentAudioStartAddress, inBlob, inOutIndex);
4105 POPU32(acCurrentFieldCount, inBlob, inOutIndex);
4106 POPU32(acCurrentLineCount, inBlob, inOutIndex);
4107 POPU32(acCurrentReps, inBlob, inOutIndex);
4108 POPU64(acCurrentUserCookie, inBlob, inOutIndex);
4109 POPU32(acFrame, inBlob, inOutIndex);
4110 POPU32(acRP188.fDBB, inBlob, inOutIndex);
4111 POPU32(acRP188.fLo, inBlob, inOutIndex);
4112 POPU32(acRP188.fHi, inBlob, inOutIndex);
4113 ok &= acTrailer.RPCDecode(inBlob, inOutIndex);
4119 const size_t totBytes (acHeader.GetSizeInBytes());
4120 if (outBlob.capacity() < totBytes)
4121 outBlob.reserve(totBytes);
4122 bool ok = acHeader.RPCEncode(outBlob);
4125 PUSHU32(acBufferLevel, outBlob);
4126 PUSHU32(acFramesProcessed, outBlob);
4127 PUSHU32(acFramesDropped, outBlob);
4128 ok &= acFrameStamp.RPCEncode(outBlob);
4129 PUSHU32(acAudioTransferSize, outBlob);
4130 PUSHU32(acAudioStartSample, outBlob);
4131 PUSHU32(acAncTransferSize, outBlob);
4132 PUSHU32(acAncField2TransferSize, outBlob);
4133 ok &= acTrailer.RPCEncode(outBlob);
4138 { uint16_t v16(0); uint32_t v32(0);
4139 bool ok = acHeader.RPCDecode(inBlob, inOutIndex);
4140 POPU16(v16, inBlob, inOutIndex);
4142 POPU32(v32, inBlob, inOutIndex);
4143 acTransferFrame =
LWord(v32);
4144 POPU32(acBufferLevel, inBlob, inOutIndex);
4145 POPU32(acFramesProcessed, inBlob, inOutIndex);
4146 POPU32(acFramesDropped, inBlob, inOutIndex);
4147 ok &= acFrameStamp.RPCDecode(inBlob, inOutIndex);
4148 POPU32(acAudioTransferSize, inBlob, inOutIndex);
4149 POPU32(acAudioStartSample, inBlob, inOutIndex);
4150 POPU32(acAncTransferSize, inBlob, inOutIndex);
4151 POPU32(acAncField2TransferSize, inBlob, inOutIndex);
4152 ok &= acTrailer.RPCDecode(inBlob, inOutIndex);
4158 PUSHU32(acNumSegments, outBlob);
4159 PUSHU32(acNumActiveBytesPerRow, outBlob);
4160 PUSHU32(acSegmentHostPitch, outBlob);
4161 PUSHU32(acSegmentDevicePitch, outBlob);
4167 POPU32(acNumSegments, inBlob, inOutIndex);
4168 POPU32(acNumActiveBytesPerRow, inBlob, inOutIndex);
4169 POPU32(acSegmentHostPitch, inBlob, inOutIndex);
4170 POPU32(acSegmentDevicePitch, inBlob, inOutIndex);
4177 PUSHU32(ccSaturationValue, outBlob);
4178 return ccLookupTables.RPCEncode(outBlob);
4183 POPU16(u16, inBlob, inOutIndex);
4185 POPU32(ccSaturationValue, inBlob, inOutIndex);
4186 return ccLookupTables.RPCDecode(inBlob, inOutIndex);
4192 PUSHU16(foregroundVideoCrosspoint, outBlob);
4193 PUSHU16(backgroundVideoCrosspoint, outBlob);
4194 PUSHU16(foregroundKeyCrosspoint, outBlob);
4195 PUSHU16(backgroundKeyCrosspoint, outBlob);
4202 { uint16_t v16(0); uint32_t v32(0);
4203 POPU16(v16, inBlob, inOutIndex);
4205 POPU16(v16, inBlob, inOutIndex);
4207 POPU16(v16, inBlob, inOutIndex);
4209 POPU16(v16, inBlob, inOutIndex);
4211 POPU16(v16, inBlob, inOutIndex);
4213 POPU32(v32, inBlob, inOutIndex);
4214 transitionCoefficient =
Fixed_(v32);
4215 POPU32(v32, inBlob, inOutIndex);
4216 transitionSoftness =
Fixed_(v32);
4230 POPU32(fDBB, inBlob, inOutIndex);
4231 POPU32(fLo, inBlob, inOutIndex);
4232 POPU32(fHi, inBlob, inOutIndex);
4239 const size_t totBytes (acHeader.GetSizeInBytes() + acVideoBuffer.GetByteCount() + acAudioBuffer.GetByteCount()
4240 + acANCBuffer.GetByteCount() + acANCField2Buffer.GetByteCount() + acOutputTimeCodes.GetByteCount()
4241 + acHDMIAuxData.GetByteCount() + 64);
4242 if (outBlob.capacity() < totBytes)
4243 outBlob.reserve(totBytes);
4244 bool ok = acHeader.RPCEncode(outBlob);
4245 ok &= acVideoBuffer.RPCEncode(outBlob);
4246 ok &= acAudioBuffer.RPCEncode(outBlob);
4247 ok &= acANCBuffer.RPCEncode(outBlob);
4248 ok &= acANCField2Buffer.RPCEncode(outBlob);
4249 ok &= acOutputTimeCodes.RPCEncode(outBlob);
4250 ok &= acTransferStatus.RPCEncode(outBlob);
4251 PUSHU64(acInUserCookie, outBlob);
4252 PUSHU32(acInVideoDMAOffset, outBlob);
4253 ok &= acInSegmentedDMAInfo.RPCEncode(outBlob);
4254 ok &= acColorCorrection.RPCEncode(outBlob);
4255 PUSHU16(acFrameBufferFormat, outBlob);
4256 PUSHU16(acFrameBufferOrientation, outBlob);
4257 ok &= acVidProcInfo.RPCEncode(outBlob);
4258 PUSHU16(acVideoQuarterSizeExpand, outBlob);
4259 ok &= acHDMIAuxData.RPCEncode(outBlob);
4260 PUSHU32(acPeerToPeerFlags, outBlob);
4261 PUSHU32(acFrameRepeatCount, outBlob);
4263 ok &= acRP188.RPCEncode(outBlob);
4264 PUSHU16(acCrosspoint, outBlob);
4265 ok &= acTrailer.RPCEncode(outBlob);
4271 { uint16_t v16(0); uint32_t v32(0);
4273 bool ok = acHeader.RPCDecode(inBlob, inOutIndex);
4274 ok &= acVideoBuffer.RPCDecode(inBlob, inOutIndex);
4275 ok &= acAudioBuffer.RPCDecode(inBlob, inOutIndex);
4276 ok &= acANCBuffer.RPCDecode(inBlob, inOutIndex);
4277 ok &= acANCField2Buffer.RPCDecode(inBlob, inOutIndex);
4278 ok &= acOutputTimeCodes.RPCDecode(inBlob, inOutIndex);
4279 ok &= acTransferStatus.RPCDecode(inBlob, inOutIndex);
4280 POPU64(acInUserCookie, inBlob, inOutIndex);
4281 POPU32(acInVideoDMAOffset, inBlob, inOutIndex);
4282 ok &= acInSegmentedDMAInfo.RPCDecode(inBlob, inOutIndex);
4283 ok &= acColorCorrection.RPCDecode(inBlob, inOutIndex);
4284 POPU16(v16, inBlob, inOutIndex);
4286 POPU16(v16, inBlob, inOutIndex);
4288 ok &= acVidProcInfo.RPCDecode(inBlob, inOutIndex);
4289 POPU16(v16, inBlob, inOutIndex);
4291 ok &= acHDMIAuxData.RPCDecode(inBlob, inOutIndex);
4292 POPU32(acPeerToPeerFlags, inBlob, inOutIndex);
4293 POPU32(acFrameRepeatCount, inBlob, inOutIndex);
4294 POPU32(v32, inBlob, inOutIndex);
4295 acDesiredFrame =
LWord(v32);
4296 ok &= acRP188.RPCDecode(inBlob, inOutIndex);
4297 POPU16(v16, inBlob, inOutIndex);
4299 ok &= acTrailer.RPCDecode(inBlob, inOutIndex);
4309 PUSHU32(videoBufferSize, outBlob);
4310 if (videoBuffer && videoBufferSize)
4311 { buff.
Set(videoBuffer, videoBufferSize);
4314 PUSHU32(videoDmaOffset, outBlob);
4316 PUSHU32(audioBufferSize, outBlob);
4317 if (audioBuffer && audioBufferSize)
4318 { buff.
Set(audioBuffer, audioBufferSize);
4321 PUSHU32(audioStartSample, outBlob);
4322 PUSHU32(audioNumChannels, outBlob);
4323 PUSHU32(frameRepeatCount, outBlob);
4324 rp188.RPCEncode(outBlob);
4327 PUSHU32(transferFlags, outBlob);
4328 PUSHU8(bDisableExtraAudioInfo, outBlob);
4332 vidProcInfo.RPCEncode(outBlob);
4333 PUSHU32(customAncInfo.Group1, outBlob);
4334 PUSHU32(customAncInfo.Group2, outBlob);
4335 PUSHU32(customAncInfo.Group3, outBlob);
4336 PUSHU32(customAncInfo.Group4, outBlob);
4337 PUSHU32(videoNumSegments, outBlob);
4338 PUSHU32(videoSegmentHostPitch, outBlob);
4339 PUSHU32(videoSegmentCardPitch, outBlob);
4346 POPU16(v16, inBlob, inOutIndex);
4350 POPU32(videoBufferSize, inBlob, inOutIndex);
4351 if (videoBufferSize && !videoBuffer)
4356 if ((inOutIndex + videoBufferSize) >= inBlob.size())
4358 UByte* pBuffer =
reinterpret_cast<UByte*
>(videoBuffer);
4359 for (
ULWord cnt(0); cnt < videoBufferSize; cnt++)
4360 pBuffer[cnt] = inBlob.at(inOutIndex++);
4362 POPU32(videoDmaOffset, inBlob, inOutIndex);
4365 POPU32(audioBufferSize, inBlob, inOutIndex);
4366 if (audioBufferSize && !audioBuffer)
4371 if ((inOutIndex + audioBufferSize) >= inBlob.size())
4373 UByte* pBuffer =
reinterpret_cast<UByte*
>(audioBuffer);
4374 for (
ULWord cnt(0); cnt < audioBufferSize; cnt++)
4375 pBuffer[cnt] = inBlob.at(inOutIndex++);
4377 POPU32(audioStartSample, inBlob, inOutIndex);
4378 POPU32(audioNumChannels, inBlob, inOutIndex);
4379 POPU32(frameRepeatCount, inBlob, inOutIndex);
4380 rp188.RPCDecode(inBlob, inOutIndex);
4381 POPU32(v32, inBlob, inOutIndex);
4382 desiredFrame =
LWord(v32);
4383 POPU32(hUser, inBlob, inOutIndex);
4384 POPU32(transferFlags, inBlob, inOutIndex);
4385 POPU8(
AsU8Ref(bDisableExtraAudioInfo), inBlob, inOutIndex);
4386 POPU16(v16, inBlob, inOutIndex);
4388 POPU16(v16, inBlob, inOutIndex);
4391 vidProcInfo.RPCDecode(inBlob, inOutIndex);
4392 POPU32(customAncInfo.Group1, inBlob, inOutIndex);
4393 POPU32(customAncInfo.Group2, inBlob, inOutIndex);
4394 POPU32(customAncInfo.Group3, inBlob, inOutIndex);
4395 POPU32(customAncInfo.Group4, inBlob, inOutIndex);
4396 POPU32(videoNumSegments, inBlob, inOutIndex);
4397 POPU32(videoSegmentHostPitch, inBlob, inOutIndex);
4398 POPU32(videoSegmentCardPitch, inBlob, inOutIndex);
4399 POPU16(v16, inBlob, inOutIndex);
4406 const size_t totBytes (mHeader.GetSizeInBytes());
4407 if (outBlob.capacity() < totBytes)
4408 outBlob.reserve(totBytes);
4409 bool ok = mHeader.RPCEncode(outBlob);
4410 ok &= mBuffer.RPCEncode(outBlob);
4413 for (
size_t ndx(0); ndx < 16; ndx++)
4414 PUSHU32(mRegisters[ndx], outBlob);
4415 for (
size_t ndx(0); ndx < 32; ndx++)
4416 PUSHU32(mReserved[ndx], outBlob);
4417 ok &= mTrailer.RPCEncode(outBlob);
4423 bool ok = mHeader.RPCDecode(inBlob, inOutIndex);
4424 ok &= mBuffer.RPCDecode(inBlob, inOutIndex);
4425 POPU32(mFlags, inBlob, inOutIndex);
4426 POPU32(mStatus, inBlob, inOutIndex);
4427 for (
size_t ndx(0); ndx < 16; ndx++)
4428 POPU32(mRegisters[ndx], inBlob, inOutIndex);
4429 for (
size_t ndx(0); ndx < 16; ndx++)
4430 POPU32(mReserved[ndx], inBlob, inOutIndex);
4431 ok &= mTrailer.RPCDecode(inBlob, inOutIndex);
4442 PUSHU64(rdtscStartTime, outBlob);
4443 PUSHU64(audioClockStartTime, outBlob);
4444 PUSHU64(rdtscCurrentTime, outBlob);
4445 PUSHU64(audioClockCurrentTime, outBlob);
4446 PUSHU32(framesProcessed, outBlob);
4447 PUSHU32(framesDropped, outBlob);
4448 PUSHU32(bufferLevel, outBlob);
4449 PUSHU8(bWithAudio, outBlob);
4450 PUSHU8(bWithRP188, outBlob);
4451 PUSHU8(bFbfChange, outBlob);
4452 PUSHU8(bFboChange, outBlob);
4453 PUSHU8(bWithColorCorrection, outBlob);
4454 PUSHU8(bWithVidProc, outBlob);
4455 PUSHU8(bWithCustomAncData, outBlob);
4460 { uint16_t v16(0); uint32_t v32(0);
4461 POPU16(v16, inBlob, inOutIndex);
4463 POPU16(v16, inBlob, inOutIndex);
4465 POPU32(v32, inBlob, inOutIndex);
4466 startFrame =
LWord(v32);
4467 POPU32(v32, inBlob, inOutIndex);
4468 endFrame =
LWord(v32);
4469 POPU32(v32, inBlob, inOutIndex);
4470 activeFrame =
LWord(v32);
4471 POPU64(rdtscStartTime, inBlob, inOutIndex);
4472 POPU64(audioClockStartTime, inBlob, inOutIndex);
4473 POPU64(rdtscCurrentTime, inBlob, inOutIndex);
4474 POPU64(audioClockCurrentTime, inBlob, inOutIndex);
4475 POPU32(framesProcessed, inBlob, inOutIndex);
4476 POPU32(framesDropped, inBlob, inOutIndex);
4477 POPU32(bufferLevel, inBlob, inOutIndex);
4482 POPU8(
AsU8Ref(bWithColorCorrection), inBlob, inOutIndex);
4484 POPU8(
AsU8Ref(bWithCustomAncData), inBlob, inOutIndex);
4498 POPU32(DBB, inBlob, inOutIndex);
4499 POPU32(Low, inBlob, inOutIndex);
4500 POPU32(High, inBlob, inOutIndex);
4507 PUSHU32(taskVersion, outBlob);
4512 if (taskArray && numTasks)
4513 for (
ULWord num(0); num < numTasks; num++)
4517 const ULWord * pULWords =
reinterpret_cast<const ULWord*
>(&task.
u);
4523 for (
ULWord word(0); word < numWords; word++)
4524 PUSHU32(pULWords[word], outBlob);
4531 POPU32(taskVersion, inBlob, inOutIndex);
4532 POPU32(taskSize, inBlob, inOutIndex);
4533 POPU32(numTasks, inBlob, inOutIndex);
4534 POPU32(maxTasks, inBlob, inOutIndex);
4535 POPU64(u64, inBlob, inOutIndex);
4537 if (taskArray && numTasks)
4538 for (
ULWord num(0); num < numTasks; num++)
4541 POPU32(u32, inBlob, inOutIndex);
4549 for (
ULWord word(0); word < numWords; word++)
4550 POPU32(pULWords[word], inBlob, inOutIndex);
4560 PUSHU64(audioClockTimeStamp, outBlob);
4561 PUSHU32(audioExpectedAddress, outBlob);
4562 PUSHU32(audioInStartAddress, outBlob);
4563 PUSHU32(audioInStopAddress, outBlob);
4564 PUSHU32(audioOutStopAddress, outBlob);
4565 PUSHU32(audioOutStartAddress, outBlob);
4567 PUSHU32(startSample, outBlob);
4569 PUSHU32(currentFrame, outBlob);
4570 currentRP188.RPCEncode(outBlob);
4572 PUSHU64(audioClockCurrentTime, outBlob);
4573 PUSHU32(currentAudioExpectedAddress, outBlob);
4574 PUSHU32(currentAudioStartAddress, outBlob);
4575 PUSHU32(currentFieldCount, outBlob);
4576 PUSHU32(currentLineCount, outBlob);
4577 PUSHU32(currentReps, outBlob);
4578 PUSHU32(currenthUser, outBlob);
4583 { uint16_t v16(0); uint64_t v64(0);
4584 POPU16(v16, inBlob, inOutIndex);
4586 POPU64(v64, inBlob, inOutIndex);
4588 POPU32(frame, inBlob, inOutIndex);
4589 POPU64(audioClockTimeStamp, inBlob, inOutIndex);
4590 POPU32(audioExpectedAddress, inBlob, inOutIndex);
4591 POPU32(audioInStartAddress, inBlob, inOutIndex);
4592 POPU32(audioInStopAddress, inBlob, inOutIndex);
4593 POPU32(audioOutStopAddress, inBlob, inOutIndex);
4594 POPU32(audioOutStartAddress, inBlob, inOutIndex);
4595 POPU32(bytesRead, inBlob, inOutIndex);
4596 POPU32(startSample, inBlob, inOutIndex);
4597 POPU64(v64, inBlob, inOutIndex);
4599 POPU32(currentFrame, inBlob, inOutIndex);
4600 currentRP188.RPCDecode(inBlob, inOutIndex);
4601 POPU64(v64, inBlob, inOutIndex);
4602 currentFrameTime =
LWord64(v64);
4603 POPU64(audioClockCurrentTime, inBlob, inOutIndex);
4604 POPU32(currentAudioExpectedAddress, inBlob, inOutIndex);
4605 POPU32(currentAudioStartAddress, inBlob, inOutIndex);
4606 POPU32(currentFieldCount, inBlob, inOutIndex);
4607 POPU32(currentLineCount, inBlob, inOutIndex);
4608 POPU32(currentReps, inBlob, inOutIndex);
4609 POPU32(currenthUser, inBlob, inOutIndex);
4648 #if defined(AJA_LINUX)
4649 #pragma GCC diagnostic push
4650 #pragma GCC diagnostic ignored "-Wstrict-aliasing"
4652 uint16_t v16(0); uint32_t v32(0);
4653 POPU16(v16, inBlob, inOutIndex);
4655 POPU16(v16, inBlob, inOutIndex);
4657 POPU32(v32, inBlob, inOutIndex); lVal1 =
LWord(v32);
4658 POPU32(v32, inBlob, inOutIndex); lVal2 =
LWord(v32);
4659 POPU32(v32, inBlob, inOutIndex); lVal3 =
LWord(v32);
4660 POPU32(v32, inBlob, inOutIndex); lVal4 =
LWord(v32);
4661 POPU32(v32, inBlob, inOutIndex); lVal5 =
LWord(v32);
4662 POPU32(v32, inBlob, inOutIndex); lVal6 =
LWord(v32);
4675 #if defined(AJA_LINUX)
4676 #pragma GCC diagnostic pop