AJA NTV2 SDK  17.0.1.1246
NTV2 SDK 17.0.1.1246
ntv2supportlogger.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
7 #include "ntv2supportlogger.h"
8 #include "ntv2devicescanner.h"
9 #include "ntv2devicefeatures.h"
10 #include "ntv2konaflashprogram.h"
11 #include "ntv2registerexpert.h"
12 #include "ntv2registersmb.h"
13 #include "ntv2rp188.h"
14 #include "ajabase/common/common.h"
15 #include "ajabase/persistence/persistence.h"
16 #include "ajabase/system/info.h"
17 #include <algorithm>
18 #include <sstream>
19 #include <vector>
20 #include <iterator>
21 
22 #if defined(MSWindows)
23  #define PATH_DELIMITER "\\"
24 #else
25  #define PATH_DELIMITER "/"
26 #endif
27 
28 using namespace std;
29 
30 
31 typedef map <NTV2Channel, AUTOCIRCULATE_STATUS> ChannelToACStatus;
32 typedef ChannelToACStatus::const_iterator ChannelToACStatusConstIter;
33 typedef pair <NTV2Channel, AUTOCIRCULATE_STATUS> ChannelToACStatusPair;
34 typedef map <uint16_t, NTV2TimeCodeList> FrameToTCList;
35 typedef FrameToTCList::const_iterator FrameToTCListConstIter;
36 typedef pair <uint16_t, NTV2TimeCodeList> FrameToTCListPair;
37 typedef map <NTV2Channel, FrameToTCList> ChannelToPerFrameTCList;
38 typedef ChannelToPerFrameTCList::const_iterator ChannelToPerFrameTCListConstIter;
39 typedef pair <NTV2Channel, FrameToTCList> ChannelToPerFrameTCListPair;
40 #define AsMacDriverInterface(_x_) reinterpret_cast<CNTV2MacDriverInterface*>(&(_x_))
41 #define AsDriverInterface(_x_) reinterpret_cast<CNTV2DriverInterface*>(&(_x_))
42 
43 static string makeHeader(ostringstream & oss, const string & inName)
44 {
45  oss << setfill('=') << setw(96) << " " << inName << ":" << setfill(' ') << endl << endl;
46  return oss.str();
47 }
48 
49 static string timecodeToString (const NTV2_RP188 & inRP188)
50 {
51  ostringstream oss;
52  if (inRP188.IsValid())
53  {
54  const CRP188 foo(inRP188);
55  oss << foo;
56  }
57  else
58  oss << "---";
59  return oss.str();
60 }
61 
62 static string appSignatureToString (const ULWord inAppSignature)
63 {
64  ostringstream oss;
65  const string sigStr(NTV2_4CC_AS_STRING(inAppSignature));
66  if (isprint(sigStr.at(0)) && isprint(sigStr.at(1)) && isprint(sigStr.at(2)) && isprint(sigStr.at(3)))
67  oss << "'" << sigStr << "'";
68  else if (inAppSignature)
69  oss << "0x" << hex << setw (8) << setfill ('0') << inAppSignature << dec << " (" << inAppSignature << ")";
70  else
71  oss << "'----' (0)";
72  return oss.str();
73 }
74 
75 static string pidToString (const uint32_t inPID)
76 {
77  ostringstream oss;
78  #if defined (MSWindows)
79  oss << inPID;
80  //TCHAR filename [MAX_PATH];
81  //HANDLE processHandle (OpenProcess (PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, inPID));
82  //if (processHandle)
83  //{
84  // if (GetModuleFileNameEx (processHandle, NULL, filename, MAX_PATH))
85  // oss << " (" << filename << ")";
86  // CloseHandle (processHandle);
87  //}
88  #elif defined (AJALinux)
89  oss << inPID;
90  #elif defined (AJAMac)
91  oss << inPID;
92  // char pathbuf [PROC_PIDPATHINFO_MAXSIZE];
93  // const int rc (::proc_pidpath (pid_t (inPID), pathbuf, sizeof (pathbuf)));
94  // if (rc == 0 && ::strlen (pathbuf))
95  // oss << " (" << string (pathbuf) << ")";
96  #else
97  oss << inPID;
98  #endif
99  return oss.str();
100 }
101 
102 // NTV2_AUDIO_BUFFER_SIZE_8MB 8MB buffer: 16-ch: 130,560 samples 8-ch: 261,120 samples 6-ch: 348,160 samples
103 // NTV2_AUDIO_BUFFER_SIZE_4MB 4MB buffer: 0x00400000(4,194,304 bytes) - 0x00004000(16,384 bytes) = 0x003FC000(4,177,920 bytes) 16-ch: 65,280 samples 8-ch: 130,560 samples 6-ch: 174,080 samples
104 // NTV2_AUDIO_BUFFER_SIZE_2MB 2MB buffer: 16-ch: 32,640 samples 8-ch: 65,280 samples 6-ch: 87,040 samples
105 // NTV2_AUDIO_BUFFER_SIZE_1MB 1MB buffer: 16-ch: 16,320 samples 8-ch: 32,640 samples 6-ch: 43,520 samples
106 // Returns the maximum number of samples for a given NTV2AudioBufferSize and maximum audio channel count...
107 static uint32_t maxSampleCountForNTV2AudioBufferSize (const NTV2AudioBufferSize inBufferSize, const uint16_t inChannelCount)
108 { // NTV2_AUDIO_BUFFER_SIZE_1MB NTV2_AUDIO_BUFFER_SIZE_4MB NTV2_AUDIO_BUFFER_SIZE_2MB NTV2_AUDIO_BUFFER_SIZE_8MB NTV2_AUDIO_BUFFER_INVALID
109  static uint32_t gMaxSampleCount16 [] = { 16320, 65280, 32640, 130560, 0 };
110  static uint32_t gMaxSampleCount8 [] = { 32640, 130560, 65280, 261120, 0 };
111  static uint32_t gMaxSampleCount6 [] = { 87040, 174080, 87040, 348160, 0 };
112  if (NTV2_IS_VALID_AUDIO_BUFFER_SIZE (inBufferSize))
113  switch (inChannelCount)
114  {
115  case 16: return gMaxSampleCount16 [inBufferSize];
116  case 8: return gMaxSampleCount8 [inBufferSize];
117  case 6: return gMaxSampleCount6 [inBufferSize];
118  default: break;
119  }
120  return 0;
121 }
122 
123 static NTV2VideoFormat getVideoFormat (CNTV2Card & device, const NTV2Channel inChannel)
124 {
126  device.GetVideoFormat(result, inChannel);
127  return result;
128 }
129 
130 static NTV2PixelFormat getPixelFormat (CNTV2Card & device, const NTV2Channel inChannel)
131 {
133  device.GetFrameBufferFormat(inChannel, result);
134  return result;
135 }
136 
137 static NTV2Mode getMode (CNTV2Card & device, const NTV2Channel inChannel)
138 {
139  NTV2Mode result(NTV2_MODE_INVALID);
140  device.GetMode(inChannel, result);
141  return result;
142 }
143 
144 static bool isEnabled (CNTV2Card & device, const NTV2Channel inChannel)
145 {
146  bool result(false);
147  device.IsChannelEnabled(inChannel, result);
148  return result;
149 }
150 
151 static ULWord getActiveFrame (CNTV2Card & device, const NTV2Channel inChannel)
152 {
153  ULWord frameNum(0);
154  if (NTV2_IS_INPUT_MODE(::getMode(device, inChannel)))
155  device.GetInputFrame(inChannel, frameNum);
156  else
157  device.GetOutputFrame(inChannel, frameNum);
158  return frameNum;
159 }
160 
161 static string getActiveFrameStr (CNTV2Card & device, const NTV2Channel inChannel)
162 {
163  if (!isEnabled(device, inChannel))
164  return "---";
165  ostringstream oss;
166  oss << DEC(::getActiveFrame(device, inChannel));
167  return oss.str();
168 }
169 
171 {
172  ULWord result(0);
173  if (NTV2_IS_OUTPUT_MODE (mode))
174  device.ReadAudioLastOut (result, audioSystem); // read head
175  else
176  device.ReadAudioLastIn (result, audioSystem); // write head
177  return result;
178 }
179 
180 static ULWord getNumAudioChannels (CNTV2Card & device, NTV2AudioSystem audioSystem)
181 {
182  ULWord numChannels = 1;
183  device.GetNumberAudioChannels(numChannels, audioSystem);
184  return numChannels;
185 }
186 
187 static ULWord bytesToSamples (CNTV2Card & device, NTV2AudioSystem audioSystem, const ULWord inBytes)
188 {
189  return inBytes / sizeof (uint32_t) / getNumAudioChannels(device, audioSystem);
190 }
191 
193 {
194  ULWord bytes = readCurrentAudioPosition(device, audioSystem, mode);
195  return bytesToSamples(device, audioSystem, bytes);
196 }
197 
198 static ULWord getMaxNumSamples (CNTV2Card & device, NTV2AudioSystem audioSystem)
199 {
200  NTV2AudioBufferSize bufferSize;
201  device.GetAudioBufferSize(bufferSize, audioSystem);
202 
203  return maxSampleCountForNTV2AudioBufferSize (bufferSize, uint16_t(getNumAudioChannels(device, audioSystem)));
204 }
205 
207 {
208  for (UWord chan (0); chan < ::NTV2DeviceGetNumVideoChannels (device.GetDeviceID()); chan++)
209  if (device.AutoCirculateGetStatus (NTV2Channel(chan), outStatus))
210  if (!outStatus.IsStopped())
211  if (outStatus.GetAudioSystem() == audioSystem)
212  {
214  device.GetMode(NTV2Channel(chan), mode);
215  if ((outStatus.IsInput() && NTV2_IS_INPUT_MODE (mode))
216  || (outStatus.IsOutput() && NTV2_IS_OUTPUT_MODE (mode)))
217  return NTV2Channel(chan);
218  }
219  return NTV2_CHANNEL_INVALID;
220 }
221 
222 static bool detectInputChannelPairs (CNTV2Card & device, const NTV2AudioSource inAudioSource,
223  const NTV2EmbeddedAudioInput inEmbeddedSource,
224  NTV2AudioChannelPairs & outChannelPairsPresent)
225 {
226  outChannelPairsPresent.clear();
227  switch (inAudioSource)
228  {
229  default: return false;
230 
231  case NTV2_AUDIO_EMBEDDED: return NTV2_IS_VALID_EMBEDDED_AUDIO_INPUT (inEmbeddedSource)
232  // Input detection is based on the audio de-embedder (as opposed to the SDI spigot)...
233  ? device.GetDetectedAudioChannelPairs (NTV2AudioSystem(inEmbeddedSource), outChannelPairsPresent)
234  : false;
235 
236  case NTV2_AUDIO_AES: return device.GetDetectedAESChannelPairs (outChannelPairsPresent);
237 
240  {outChannelPairsPresent.insert(NTV2_AudioChannel1_2); return true;} // Assume chls 1&2 if an analog signal present
241  break;
242 
244  {
246  if (!device.GetHDMIInputAudioChannels (hdmiChls))
247  return false;
250  chPair = NTV2AudioChannelPair(chPair + 1))
251  outChannelPairsPresent.insert (chPair);
252  return true;
253  }
254  break;
255  }
256  return false;
257 }
258 
259 static bool getBitfileDate (CNTV2Card & device, string & outDateString, NTV2XilinxFPGA whichFPGA)
260 {
261  BITFILE_INFO_STRUCT bitFileInfo;
262  memset(&bitFileInfo, 0, sizeof(BITFILE_INFO_STRUCT));
263  bitFileInfo.whichFPGA = whichFPGA;
264  bool bBitFileInfoAvailable = false; // BitFileInfo is implemented only on 5.2 and later drivers.
265  bBitFileInfoAvailable = device.DriverGetBitFileInformation(bitFileInfo);
266  if( bBitFileInfoAvailable )
267  {
268  outDateString = bitFileInfo.designNameStr;
269  if (outDateString.find(".ncd") != string::npos)
270  {
271  outDateString = outDateString.substr(0, outDateString.find(".ncd"));
272  outDateString += ".bit ";
273  outDateString += bitFileInfo.dateStr;
274  outDateString += " ";
275  outDateString += bitFileInfo.timeStr;
276  }
277  else if (outDateString.find(";") != string::npos)
278  {
279  outDateString = outDateString.substr(0, outDateString.find(";"));
280  outDateString += ".bit ";
281  outDateString += bitFileInfo.dateStr;
282  outDateString += " ";
283  outDateString += bitFileInfo.timeStr;
284  }
285  else if (outDateString.find(".bit") != string::npos && outDateString != ".bit")
286  {
287  outDateString = bitFileInfo.designNameStr;
288  outDateString += " ";
289  outDateString += bitFileInfo.dateStr;
290  outDateString += " ";
291  outDateString += bitFileInfo.timeStr;
292  }
293  else
294  {
295  outDateString = "bad bitfile date string";
296  return false;
297  }
298  }
299  else
300  return false;
301  return true;
302 }
303 
304 AJAExport ostream & operator << (ostream & outStream, const CNTV2SupportLogger & inData)
305 {
306  outStream << inData.ToString();
307  return outStream;
308 }
309 
311  : mDevice (card),
312  mDispose (false),
313  mSections (sections)
314 {
315 }
316 
318  : mDevice (*(new CNTV2Card(cardIndex))),
319  mDispose (true),
320  mSections (sections)
321 {
322 }
323 
325 {
326  if (mDispose)
327  delete &mDevice;
328 }
329 
331 {
332  // Bump this whenever the formatting of the support log changes drastically
333  return 2;
334 }
335 
336 void CNTV2SupportLogger::PrependToSection (uint32_t section, const string & sectionData)
337 {
338  if (mPrependMap.find(section) != mPrependMap.end())
339  {
340  mPrependMap.at(section).insert(0, "\n");
341  mPrependMap.at(section).insert(0, sectionData);
342  }
343  else
344  {
345  mPrependMap[section] = sectionData;
346  mPrependMap.at(section).append("\n");
347  }
348 }
349 
350 void CNTV2SupportLogger::AppendToSection (uint32_t section, const string & sectionData)
351 {
352  if (mAppendMap.find(section) != mAppendMap.end())
353  {
354  mAppendMap.at(section).append("\n");
355  mAppendMap.at(section).append(sectionData);
356  }
357  else
358  {
359  mAppendMap[section] = "\n";
360  mAppendMap.at(section).append(sectionData);
361  }
362 }
363 
364 void CNTV2SupportLogger::AddHeader (const string & sectionName, const string & sectionData)
365 {
366  ostringstream oss;
367  makeHeader(oss, sectionName);
368  oss << sectionData << "\n";
369  mHeaderStr.append(oss.str());
370 }
371 
372 void CNTV2SupportLogger::AddFooter (const string & sectionName, const string & sectionData)
373 {
374  ostringstream oss;
375  makeHeader(oss, sectionName);
376  oss << sectionData << "\n";
377  mFooterStr.append(oss.str());
378 }
379 
380 // Use this macro to handle generating text for each section
381 // - the header
382 // - the prepend if any
383 // - the method that fills the section
384 // - the append if any
385 #define LoggerSectionToFunctionMacro(_SectionEnum_, _SectionString_, _SectionMethod_) \
386  if (mSections & _SectionEnum_) \
387  { \
388  makeHeader(oss, _SectionString_); \
389  if (mPrependMap.find(_SectionEnum_) != mPrependMap.end()) \
390  oss << mPrependMap.at(_SectionEnum_); \
391  \
392  _SectionMethod_(oss); \
393  \
394  if (mAppendMap.find(_SectionEnum_) != mAppendMap.end()) \
395  oss << mAppendMap.at(_SectionEnum_); \
396  }
397 
398 string CNTV2SupportLogger::ToString (void) const
399 {
400  ostringstream oss;
401  vector<char> dateBufferLocal(128, 0);
402  vector<char> dateBufferUTC(128, 0);
403 
404  // get the wall time and format it
405  time_t now = time(AJA_NULL);
406  struct tm *localTimeinfo;
407  localTimeinfo = localtime(reinterpret_cast<const time_t*>(&now));
408  strcpy(&dateBufferLocal[0], "");
409  if (localTimeinfo)
410  ::strftime(&dateBufferLocal[0], dateBufferLocal.size(), "%B %d, %Y %I:%M:%S %p %Z (local)", localTimeinfo);
411 
412  struct tm *utcTimeinfo;
413  utcTimeinfo = gmtime(reinterpret_cast<const time_t*>(&now));
414  strcpy(&dateBufferUTC[0], "");
415  if (utcTimeinfo)
416  ::strftime(&dateBufferUTC[0], dateBufferUTC.size(), "%Y-%m-%dT%H:%M:%SZ UTC", utcTimeinfo);
417 
418  oss << "Begin NTV2 Support Log" << "\n" <<
419  "Version: " << CNTV2SupportLogger::Version() << "\n"
420  "Generated: " << &dateBufferLocal[0] <<
421  " " << &dateBufferUTC[0] << "\n\n" << flush;
422 
423  if (!mHeaderStr.empty())
424  oss << mHeaderStr;
425 
426  // Go ahead and show info even if the device is not open
428 
429  if (mDevice.IsOpen())
430  {
431  LoggerSectionToFunctionMacro(NTV2_SupportLoggerSectionAutoCirculate, "AutoCirculate", FetchAutoCirculateLog)
435  }
436 
437  if (!mFooterStr.empty())
438  oss << mFooterStr;
439  oss << endl << "End NTV2 Support Log";
440  return oss.str();
441 }
442 
443 void CNTV2SupportLogger::ToString (string & outString) const
444 {
445  outString = ToString();
446 }
447 
448 static inline string HEX0NStr (const uint32_t inNum, const uint16_t inWidth) {ostringstream oss; oss << HEX0N(inNum,inWidth); return oss.str();}
449 static inline string xHEX0NStr(const uint32_t inNum, const uint16_t inWidth) {ostringstream oss; oss << xHEX0N(inNum,inWidth); return oss.str();}
450 template <class T> string DECStr (const T & inT) {ostringstream oss; oss << DEC(inT); return oss.str();}
451 
452 void CNTV2SupportLogger::FetchInfoLog (ostringstream & oss) const
453 {
454  string str;
455  AJALabelValuePairs infoTable;
456  AJASystemInfo::append(infoTable, "SDK/DRIVER INFO", "");
457  AJASystemInfo::append(infoTable, "NTV2 SDK Version", ::NTV2GetVersionString(true));
458  AJASystemInfo::append(infoTable, "supportlog Built", string(__DATE__ " at " __TIME__));
459  if (mDevice.IsOpen())
460  {
461  AJASystemInfo::append(infoTable, "Driver Version", mDevice.GetDriverVersionString());
462  #if defined(AJAMac)
463  ULWord drvrType(0), dextType(0x44455854); // 'DEXT'
464  mDevice.ReadRegister(kVRegDriverType, drvrType);
465  if (!drvrType)
466  str = "Kernel Extension ('KEXT')";
467  else if (drvrType == dextType)
468  str = "DriverKit ('DEXT')";
469  else
470  { ostringstream oss;
471  oss << "(Unknown/Invalid " << xHEX0N(drvrType,8) << ")";
472  str = oss.str();
473  }
474  AJASystemInfo::append(infoTable, "Driver Type", str);
475  #endif // defined(AJAMac)
476  }
477  AJASystemInfo::append(infoTable, "Watcher Nub Protocol Version", "Built-in RPC support");
478 
479  if (mDevice.IsOpen())
480  {
481  AJASystemInfo::append(infoTable, "DEVICE INFO", "");
482  AJASystemInfo::append(infoTable, "Device", mDevice.GetDisplayName());
483  str = xHEX0NStr(mDevice.GetDeviceID(),8) + " (" + string(::NTV2DeviceIDString(mDevice.GetDeviceID())) + ")";
484  AJASystemInfo::append(infoTable, "Device ID", str);
485  AJASystemInfo::append(infoTable, "Serial Number", (mDevice.GetSerialNumberString(str) ? str : "Not programmed"));
486  AJASystemInfo::append(infoTable, "Video Bitfile", (getBitfileDate(mDevice, str, eFPGAVideoProc) ? str : "Not available"));
487  AJASystemInfo::append(infoTable, "PCI FPGA Version", mDevice.GetPCIFPGAVersionString());
488  ULWord numBytes(0);
489  string dateStr, timeStr, connType;
490  if (mDevice.GetInstalledBitfileInfo(numBytes, dateStr, timeStr))
491  {
492  AJASystemInfo::append(infoTable, "Installed Bitfile ByteCount", DECStr(numBytes));
493  AJASystemInfo::append(infoTable, "Installed Bitfile Build Date", dateStr + " " + timeStr);
494  }
495 
496  if (mDevice.IsIPDevice())
497  {
498  PACKAGE_INFO_STRUCT pkgInfo;
499  if (mDevice.GetPackageInformation(pkgInfo))
500  {
501  AJASystemInfo::append(infoTable, "Package", DECStr(pkgInfo.packageNumber));
502  AJASystemInfo::append(infoTable, "Build", DECStr(pkgInfo.buildNumber));
503  AJASystemInfo::append(infoTable, "Build Date", pkgInfo.date);
504  AJASystemInfo::append(infoTable, "Build Time", pkgInfo.time);
505  }
506 
507  CNTV2KonaFlashProgram ntv2Card(mDevice.GetIndexNumber());
508  MacAddr mac1, mac2;
509  if (ntv2Card.ReadMACAddresses(mac1, mac2))
510  {
511  AJASystemInfo::append(infoTable, "MAC1", mac1.AsString());
512  AJASystemInfo::append(infoTable, "MAC2", mac2.AsString());
513  }
514 
515  ULWord cfg(0);
516  mDevice.ReadRegister((kRegSarekFwCfg + SAREK_REGS), cfg);
517  if (cfg & SAREK_2022_2)
518  {
519  ULWord dnaLo(0), dnaHi(0);
520  if (ntv2Card.ReadRegister(kRegSarekDNALow + SAREK_REGS, dnaLo))
521  if (ntv2Card.ReadRegister(kRegSarekDNAHi + SAREK_REGS, dnaHi))
522  AJASystemInfo::append(infoTable, "Device DNA", string(HEX0NStr(dnaHi,8)+HEX0NStr(dnaLo,8)));
523  }
524 
525  string licenseInfo;
526  ntv2Card.ReadLicenseInfo(licenseInfo);
527  AJASystemInfo::append(infoTable, "License", licenseInfo);
528 
529  if (cfg & SAREK_2022_2)
530  {
531  ULWord licenseStatus(0);
532  ntv2Card.ReadRegister(kRegSarekLicenseStatus + SAREK_REGS, licenseStatus);
533  AJASystemInfo::append(infoTable, "License Present", licenseStatus & SAREK_LICENSE_PRESENT ? "Yes" : "No");
534  AJASystemInfo::append(infoTable, "License Status", licenseStatus & SAREK_LICENSE_VALID ? "License is valid" : "License NOT valid");
535  AJASystemInfo::append(infoTable, "License Enable Mask", xHEX0NStr(licenseStatus & 0xff,2));
536  }
537  } // if IsIPDevice
538  if (mDevice.IsRemote())
539  {
540  if (!mDevice.GetHostName().empty())
541  AJASystemInfo::append(infoTable, "Host Name", mDevice.GetHostName());
542  if (!mDevice.GetDescription().empty())
543  AJASystemInfo::append(infoTable, "Device Description", mDevice.GetDescription());
544  } // if remote/fake device
545  #if defined(AJAMac)
546  connType = AsMacDriverInterface(mDevice)->GetConnectionType();
547  if (!connType.empty())
548  AJASystemInfo::append(infoTable, "Driver Connection", connType);
549  #endif // AJAMac
550  } // if IsOpen
551 
552  AJASystemInfo hostInfo;
553 
554  // append the system info from AJASystemInfo
555  AJASystemInfo::append(infoTable, "HOST INFO");
556  hostInfo.GetLabelValuePairs(infoTable, false);
557 
558  // append the health status of the persistence database files
559  std::vector<std::pair<std::string, bool> > persistenceChecks;
560  persistenceChecks.push_back(std::pair<std::string, bool>("User Persistence Health", false));
561  persistenceChecks.push_back(std::pair<std::string, bool>("System Persistence Health", true));
562  std::vector<std::pair<std::string, bool> >::const_iterator it(persistenceChecks.begin());
563  int errCode = 0;
564  std::string errMessage;
565  for (; it != persistenceChecks.end(); ++it)
566  {
567  std::string label(it->first);
568  bool shared(it->second);
569  AJAPersistence p("com.aja.devicesettings", "Unknown", "00000000", shared);
570  if (p.StorageHealthCheck(errCode, errMessage))
571  {
572  AJASystemInfo::append(infoTable, label, "exists and is good");
573  }
574  else
575  {
576  if (shared && errCode == -1)
577  AJASystemInfo::append(infoTable, label, "doesn't exist (this one is optional)");
578  else
579  AJASystemInfo::append(infoTable, label, std::string("err(") + aja::to_string(errCode) + ") '" + errMessage + "'");
580  }
581  }
582 
583  oss << AJASystemInfo::ToString(infoTable) << endl;
584 } // FetchInfoLog
585 
586 
587 void CNTV2SupportLogger::FetchRegisterLog (ostringstream & oss) const
588 {
589  NTV2RegisterReads regs;
590  const NTV2DeviceID deviceID (mDevice.GetDeviceID());
593  static const string sDashes (96, '-');
594 
595  // Dang, GetRegistersForDevice doesn't/can't read kRegCanDoRegister, so add the CanConnectROM regs here...
598  deviceRegs.insert(regNum);
599 
600  oss << endl << deviceRegs.size() << " Device Registers " << sDashes << endl << endl;
601  regs = ::FromRegNumSet (deviceRegs);
602  if (!mDevice.ReadRegisters (regs))
603  oss << "## NOTE: Driver failed to return one or more registers (those will be zero)" << endl;
604  for (NTV2RegisterReadsConstIter it (regs.begin()); it != regs.end(); ++it)
605  {
606  const NTV2RegInfo & regInfo (*it);
607  const uint32_t regNum (regInfo.registerNumber);
608  //const uint32_t offset (regInfo.registerNumber * 4);
609  const uint32_t value (regInfo.registerValue);
610  oss << endl
611  << "Register Name: " << CNTV2RegisterExpert::GetDisplayName(regNum) << endl
612  << "Register Number: " << regNum << endl
613  << "Register Value: " << value << " : " << xHEX0N(value,8) << endl
614  // << "Register Classes: " << CNTV2RegisterExpert::GetRegisterClasses(regNum) << endl
615  << CNTV2RegisterExpert::GetDisplayValue (regNum, value, deviceID) << endl;
616  }
617 
618  regs = ::FromRegNumSet (virtualRegs);
619  oss << endl << virtualRegs.size() << " Virtual Registers " << sDashes << endl << endl;
620  if (!mDevice.ReadRegisters (regs))
621  oss << "## NOTE: Driver failed to return one or more virtual registers (those will be zero)" << endl;
622  for (NTV2RegisterReadsConstIter it (regs.begin()); it != regs.end(); ++it)
623  {
624  const NTV2RegInfo & regInfo (*it);
625  const uint32_t regNum (regInfo.registerNumber);
626  //const uint32_t offset (regInfo.registerNumber * 4);
627  const uint32_t value (regInfo.registerValue);
628  oss << endl
629  << "VReg Name: " << CNTV2RegisterExpert::GetDisplayName(regNum) << endl
630  << "VReg Number: " << setw(10) << regNum << endl
631  << "VReg Value: " << value << " : " << xHEX0N(value,8) << endl
632  << CNTV2RegisterExpert::GetDisplayValue (regNum, value, deviceID) << endl;
633  }
634 } // FetchRegisterLog
635 
636 
637 void CNTV2SupportLogger::FetchAutoCirculateLog (ostringstream & oss) const
638 {
639  ULWord appSignature (0);
640  int32_t appPID (0);
641  ChannelToACStatus perChannelStatus; // Per-channel AUTOCIRCULATE_STATUS
642  ChannelToPerFrameTCList perChannelTCs; // Per-channel collection of per-frame TCs
644  const NTV2DeviceID deviceID (mDevice.GetDeviceID());
645  const ULWord numChannels (::NTV2DeviceGetNumVideoChannels(deviceID));
646  static const string dashes (25, '-');
647 
648  // This code block takes a snapshot of the current AutoCirculate state of the device...
649  mDevice.GetEveryFrameServices(taskMode);
650  mDevice.GetStreamingApplication(appSignature, appPID);
651 
652  // Grab A/C status for each channel...
653  for (NTV2Channel chan(NTV2_CHANNEL1); chan < NTV2Channel(numChannels); chan = NTV2Channel(chan+1))
654  {
655  FrameToTCList perFrameTCs;
656  AUTOCIRCULATE_STATUS acStatus;
657  mDevice.AutoCirculateGetStatus (chan, acStatus);
659  mDevice.WaitForInputVerticalInterrupt(chan);
660  else
661  mDevice.WaitForOutputVerticalInterrupt(chan);
662  mDevice.AutoCirculateGetStatus (chan, acStatus);
663  perChannelStatus.insert(ChannelToACStatusPair(chan, acStatus));
664  if (!acStatus.IsStopped())
665  {
666  for (uint16_t frameNum (acStatus.GetStartFrame()); frameNum <= acStatus.GetEndFrame(); frameNum++)
667  {
668  FRAME_STAMP frameStamp;
669  NTV2TimeCodeList timecodes;
670  mDevice.AutoCirculateGetFrameStamp (chan, frameNum, frameStamp);
671  frameStamp.GetInputTimeCodes(timecodes);
672  perFrameTCs.insert(FrameToTCListPair(frameNum, timecodes));
673  } // for each A/C frame
674  perChannelTCs.insert(ChannelToPerFrameTCListPair(chan, perFrameTCs));
675  } // if not stopped
676  } // for each channel
677 
678  bool multiFormatMode(false);
679  if (::NTV2DeviceCanDoMultiFormat(deviceID) && mDevice.GetMultiFormatMode(multiFormatMode))
680  {
681  if (!multiFormatMode)
682  oss << "UniFormat: " << ::NTV2VideoFormatToString(::getVideoFormat(mDevice, NTV2_CHANNEL1)) << endl;
683  else
684  oss << "MultiFormat Mode" << endl;
685  }
686  else
687  oss << "Board Format: " << ::NTV2VideoFormatToString(::getVideoFormat(mDevice, NTV2_CHANNEL1)) << endl;
688 
689  oss << "Task mode: " << ::NTV2TaskModeToString(taskMode) << ", PID=" << pidToString(uint32_t(appPID)) << ", signature=" << appSignatureToString(appSignature) << endl
690  << endl
691  << "Chan/FrameStore State Start End Act FrmProc FrmDrop BufLvl Audio RP188 LTC FBFch FBOch Color VidPr Anc HDMIx Field VidFmt PixFmt" << endl
692  << "-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------" << endl;
693  for (ChannelToACStatusConstIter iter (perChannelStatus.begin()); iter != perChannelStatus.end(); ++iter)
694  {
695  const NTV2Channel chan(iter->first);
696  const AUTOCIRCULATE_STATUS & status(iter->second);
697  // The following should mirror what ntv2watcher/pages/page_autocirculate::fetchSupportLogInfo does...
698  oss << ::NTV2ChannelToString(chan, true) << ": "
699  << (::isEnabled(mDevice,chan) ? NTV2_IS_INPUT_MODE(::getMode(mDevice,chan)) ? "Input " : "Output" : "Off ")
700  << setw(12) << status[0] // State
701  << setw( 7) << status[1] // Start
702  << setw( 6) << status[2] // End
703  << setw( 6) << (status.IsStopped() ? ::getActiveFrameStr(mDevice,chan) : status[4]) // Act
704  << setw(10) << status[9] // FrmProc
705  << setw(10) << status[10] // FrmDrop
706  << setw( 7) << status[11] // BufLvl
707  << setw( 9) << status[12] // Audio
708  << setw( 8) << status[13] // RP188
709  << setw( 8) << status[14] // LTC
710  << setw( 8) << status[15] // FBFchg
711  << setw( 8) << status[16] // FBOchg
712  << setw( 8) << status[17] // ColCor
713  << setw( 8) << status[18] // VidProc
714  << setw( 8) << status[19] // Anc
715  << setw( 8) << status[20] // HDMIAux
716  << setw( 8) << status[21]; // Fld
717  if (!status.IsStopped() || isEnabled(mDevice,chan))
718  oss << setw(12) << ::NTV2VideoFormatToString(::getVideoFormat(mDevice, chan))
719  << setw(13) << ::NTV2FrameBufferFormatToString(::getPixelFormat(mDevice, chan), true)
720  << endl;
721  else
722  oss << setw(12) << "---"
723  << setw(13) << "---"
724  << endl;
725  if (!status.IsStopped() && status.WithAudio())
726  { // Not stopped and AutoCirculating audio -- check if audio buffer capacity will be exceeded...
727  ULWord audChlsPerSample(0);
730  mDevice.GetNumberAudioChannels (audChlsPerSample, status.GetAudioSystem());
731  if (mDevice.GetFrameRate (fr, status.GetChannel()) && NTV2_IS_SUPPORTED_NTV2FrameRate(fr))
732  if (mDevice.GetAudioRate (ar, status.GetAudioSystem()) && NTV2_IS_VALID_AUDIO_RATE(ar))
733  {
734  const double framesPerSecond (double(::GetScaleFromFrameRate(fr)) / 100.00);
735  const double samplesPerSecond (double(::GetAudioSamplesPerSecond(ar)));
736  const double bytesPerChannel (4.0);
737  const double channelsPerSample (double(audChlsPerSample+0));
738  const double bytesPerFrame (samplesPerSecond * bytesPerChannel * channelsPerSample / framesPerSecond);
739  const ULWord maxVideoFrames (4UL * 1024UL * 1024UL / ULWord(bytesPerFrame));
740  if (status.GetFrameCount() > maxVideoFrames)
741  oss << "## WARNING: " << DEC(status.GetFrameCount()) << " frames (" << DEC(status.GetStartFrame())
742  << " thru " << DEC(status.GetEndFrame()) << ") exceeds " << DEC(maxVideoFrames)
743  << "-frame max audio buffer capacity" << endl;
744  }
745  }
746  } // for each channel
747 
748  SDRAMAuditor ramMapper;
749  oss << endl << "Device SDRAM Map (8MB frms):" << endl;
750  ramMapper.AssessDevice(mDevice, /* ignore unused audio buffers */ true);
751  ramMapper.DumpBlocks(oss);
752  oss << endl;
753 
754  // Dump the A/C timecodes...
755  for (ChannelToACStatusConstIter iter (perChannelStatus.begin()); iter != perChannelStatus.end(); ++iter)
756  {
757  const NTV2Channel chan(iter->first);
758  const AUTOCIRCULATE_STATUS & status(iter->second);
759  if (status.IsStopped())
760  continue; // Not initialized/started/paused/running -- skip this channel
761 
762  ChannelToPerFrameTCListConstIter it(perChannelTCs.find(chan));
763  if (it == perChannelTCs.end())
764  continue; // Channel not in perChannelTCs
765 
766  const FrameToTCList perFrameTCs(it->second);
767  oss << endl << dashes << " " << (NTV2_IS_INPUT_CROSSPOINT(status.acCrosspoint) ? "Input " : "Output ") << DEC(chan+1) << " Per-Frame Valid Timecodes:" << endl;
768  for (FrameToTCListConstIter i(perFrameTCs.begin()); i != perFrameTCs.end(); ++i)
769  {
770  const uint16_t frameNum(i->first);
771  const NTV2TimeCodeList & timecodes(i->second);
772  oss << "Frame " << frameNum << ":" << endl;
773  for (uint16_t tcNdx(0); tcNdx < timecodes.size(); tcNdx++)
774  {
775  const NTV2_RP188 tcVal(timecodes[tcNdx]);
776  if (!tcVal.IsValid())
777  continue; // skip invalid timecodes
778  const string tcStr (timecodeToString(tcVal));
779  oss << "\t" << setw(10) << ::NTV2TCIndexToString(NTV2TimecodeIndex(tcNdx), true) << setw(0) << ":\t"
780  << setw(12) << tcStr << setw(0) << "\t" << tcVal << endl;
781  } // for each timecode
782  } // for each frame
783  } // for each channel
784 } // FetchAutoCirculateLog
785 
786 
787 void CNTV2SupportLogger::FetchAudioLog (ostringstream & oss) const
788 {
789  const NTV2DeviceID devID (mDevice.GetDeviceID());
790  const UWord maxNumChannels (::NTV2DeviceGetMaxAudioChannels(devID));
791  const UWord numAudSys (::NTV2DeviceGetNumAudioSystems(devID));
792  oss << " Device:\t" << mDevice.GetDisplayName() << endl;
793 
794  // loop over all the audio systems
795  for (NTV2AudioSystem audSys(NTV2_AUDIOSYSTEM_1); audSys < NTV2AudioSystem(numAudSys); audSys = NTV2AudioSystem(audSys+1))
796  {
797  AUTOCIRCULATE_STATUS acStatus;
798  NTV2Channel acChan (findActiveACChannel(mDevice, audSys, acStatus));
799  if (acChan != NTV2_CHANNEL_INVALID)
800  {
801  NTV2AudioSource audioSource (NTV2_AUDIO_EMBEDDED);
803  mDevice.GetAudioSystemInputSource(audSys, audioSource, embeddedSource);
805  mDevice.GetMode(acChan, mode);
806  NTV2AudioRate audioRate (NTV2_AUDIO_48K);
807  mDevice.GetAudioRate(audioRate, audSys);
808  NTV2AudioBufferSize audioBufferSize;
809  mDevice.GetAudioBufferSize(audioBufferSize, audSys);
811  mDevice.GetAudioLoopBack(loopbackMode, audSys);
812 
813  NTV2AudioChannelPairs channelPairsPresent;
814  if (NTV2_IS_INPUT_MODE(mode))
815  {
816  detectInputChannelPairs(mDevice, audioSource, embeddedSource, channelPairsPresent);
817  }
818  else if (NTV2_IS_OUTPUT_MODE(mode))
819  {
820  bool isEmbedderEnabled = false;
821  mDevice.GetAudioOutputEmbedderState(NTV2Channel(audSys), isEmbedderEnabled);
822  UWord inChannelCount = isEmbedderEnabled ? maxNumChannels : 0;
823 
824  // Generates a NTV2AudioChannelPairs set for the given number of audio channels...
825  for (UWord audioChannel (0); audioChannel < inChannelCount; audioChannel++)
826  {
827  if (audioChannel & 1)
828  continue;
829  channelPairsPresent.insert(NTV2AudioChannelPair(audioChannel/2));
830  }
831  }
832 
833  if (::NTV2DeviceCanDoPCMDetection(devID))
834  mDevice.GetInputAudioChannelPairsWithPCM(acChan, channelPairsPresent);
835 
836  NTV2AudioChannelPairs nonPCMChannelPairs;
837  mDevice.GetInputAudioChannelPairsWithoutPCM(acChan, nonPCMChannelPairs);
838  bool isNonPCM (true);
839  //end temp
840 
841  const ULWord currentPosSampleNdx (getCurrentPositionSamples(mDevice, audSys, mode));
842  const ULWord maxSamples (getMaxNumSamples(mDevice, audSys));
843  oss << endl
844  << " Audio system:\t" << ::NTV2AudioSystemToString (audSys, true) << endl
845  << " Sample Rate:\t" << ::NTV2AudioRateToString (audioRate, true) << endl
846  << " Buffer Size:\t" << ::NTV2AudioBufferSizeToString (audioBufferSize, true) << endl
847  << " Audio Channels:\t" << getNumAudioChannels(mDevice, audSys);
848  if (getNumAudioChannels(mDevice, audSys) == maxNumChannels)
849  oss << " (max)" << endl;
850  else
851  oss << " (" << maxNumChannels << " (max))" << endl;
852  oss << " Total Samples:\t[" << DEC0N(maxSamples,6) << "]" << endl
853  << " Direction:\t" << ::NTV2ModeToString (mode, true) << endl
854  << " AutoCirculate:\t" << ::NTV2ChannelToString (acChan, true) << endl
855  << " Loopback Mode:\t" << ::NTV2AudioLoopBackToString (loopbackMode, true) << endl;
856  if (NTV2_IS_INPUT_MODE(mode))
857  {
858  oss << "Write Head Position:\t[" << DEC0N(currentPosSampleNdx,6) << "]" << endl
859  << " Audio source:\t" << ::NTV2AudioSourceToString(audioSource, true);
860  if (NTV2_AUDIO_SOURCE_IS_EMBEDDED(audioSource))
861  oss << " (" << ::NTV2EmbeddedAudioInputToString(embeddedSource, true) << ")";
862  oss << endl
863  << " Channels Present:\t" << channelPairsPresent << endl
864  << " Non-PCM Channels:\t" << nonPCMChannelPairs << endl;
865  }
866  else if (NTV2_IS_OUTPUT_MODE(mode))
867  {
868  oss << " Read Head Position:\t[" << DEC0N(currentPosSampleNdx,6) << "]" << endl;
869  if (::NTV2DeviceCanDoPCMControl(mDevice.GetDeviceID()))
870  oss << " Non-PCM Channels:\t" << nonPCMChannelPairs << endl;
871  else
872  oss << " Non-PCM Channels:\t" << (isNonPCM ? "All Channel Pairs" : "Normal") << endl;
873  }
874  }
875  }
876 } // FetchAudioLog
877 
878 void CNTV2SupportLogger::FetchRoutingLog (ostringstream & oss) const
879 {
880  // Dump routing info...
881  CNTV2SignalRouter router;
882  mDevice.GetRouting (router);
883  oss << "(NTV2InputCrosspointID <== NTV2OutputCrosspointID)" << endl;
884  router.Print (oss, false);
897 }
898 
900 {
902  string registerStr;
903 };
905 {
1004 };
1005 
1006 bool CNTV2SupportLogger::LoadFromLog (const string & inLogFilePath, const bool bForceLoad)
1007 {
1008  ifstream fileInput;
1009  fileInput.open(inLogFilePath.c_str());
1010  string lineContents;
1011  int i = 0, numLines = 0;
1012  int size = sizeof(registerToLoadStrings)/sizeof(registerToLoadString);
1013  string searchString;
1014  bool isCompatible = false;
1015 
1016  while(getline(fileInput, lineContents))
1017  numLines++;
1018  if(size > numLines)
1019  return false;
1020  fileInput.clear();
1021  fileInput.seekg(0, ios::beg);
1022  while(getline(fileInput, lineContents) && i < size && !bForceLoad)
1023  {
1024  searchString = "Device: ";
1025  searchString.append(NTV2DeviceIDToString(mDevice.GetDeviceID()));
1026  if (lineContents.find(searchString, 0) != string::npos)
1027  {
1028  cout << NTV2DeviceIDToString(mDevice.GetDeviceID()) << " is compatible with the log." << endl;
1029  isCompatible = true;
1030  break;
1031  }
1032  else
1033  {
1034  continue;
1035  }
1036  }
1037 
1038  if(!isCompatible)
1039  return false;
1040 
1041  while(i < size)
1042  {
1043  getline(fileInput, lineContents);
1044  if(fileInput.eof())
1045  {
1046  //Did not find the register reset stream to begin
1047  fileInput.clear();
1048  fileInput.seekg(0, ios::beg);
1049  i++;
1050  continue;
1051  }
1052  searchString = "Register Name: ";
1053  searchString.append(registerToLoadStrings[i].registerStr);
1054  if (lineContents.find(searchString, 0) != string::npos)
1055  {
1056  getline(fileInput, lineContents);
1057  getline(fileInput, lineContents);
1058  searchString = "Register Value: ";
1059  size_t start = lineContents.find(searchString);
1060  if(start != string::npos)
1061  {
1062  size_t end = lineContents.find(" : ");
1063  stringstream registerValueString(lineContents.substr(start + searchString.length(), end));
1064  uint32_t registerValue = 0;
1065  registerValueString >> registerValue;
1066  cout << "Writing register: " << registerToLoadStrings[i].registerStr << " " << registerValue << endl;
1067  mDevice.WriteRegister(registerToLoadStrings[i].registerNum, registerValue);
1068  }
1069  else
1070  {
1071  cout << "The format of the log file is not compatible with this option." << endl;
1072  return false;
1073  }
1074  }
1075  else
1076  {
1077  continue;
1078  }
1079  i++;
1080  }
1081 
1082  return true;
1083 }
1084 
1085 string CNTV2SupportLogger::InventLogFilePathAndName (CNTV2Card & inDevice, const string inPrefix, const string inExtension)
1086 {
1087  string homePath;
1088  AJASystemInfo info;
1089  time_t rawtime;
1090  ostringstream oss;
1091  const string deviceName (CNTV2DeviceScanner::GetDeviceRefName(inDevice));
1092 
1093  info.GetValue(AJA_SystemInfoTag_Path_UserHome, homePath);
1094  if (!homePath.empty())
1095  oss << homePath << PATH_DELIMITER;
1096  oss << inPrefix << "_" << deviceName << "_" << ::time(&rawtime) << "." << inExtension;
1097  return oss.str();
1098 }
1099 
1100 bool CNTV2SupportLogger::DumpDeviceSDRAM (CNTV2Card & inDevice, const string & inFilePath, ostream & msgStrm)
1101 {
1102  if (!inDevice.IsOpen())
1103  return false;
1104  if (inFilePath.empty())
1105  return false;
1107  const ULWord maxBytes(::NTV2DeviceGetActiveMemorySize(inDevice.GetDeviceID()));
1108  inDevice.GetFrameBufferSize(NTV2_CHANNEL1, frmsz);
1109  const ULWord byteCount(::NTV2FramesizeToByteCount(frmsz)), megs(byteCount/1024/1024), numFrames(maxBytes / byteCount);
1110  NTV2Buffer buffer(byteCount);
1111  NTV2ULWordVector goodFrames, badDMAs, badWrites;
1112  ofstream ofs(inFilePath.c_str(), ofstream::out | ofstream::binary);
1113  if (!ofs)
1114  {msgStrm << "## ERROR: Unable to open '" << inFilePath << "' for writing" << endl; return false;}
1115 
1116  for (ULWord frameNdx(0); frameNdx < numFrames; frameNdx++)
1117  {
1118  if (!inDevice.DMAReadFrame(frameNdx, buffer, byteCount, NTV2_CHANNEL1))
1119  {badDMAs.push_back(frameNdx); continue;}
1120  if (!ofs.write(buffer, streamsize(buffer.GetByteCount())).good())
1121  {badWrites.push_back(frameNdx); continue;}
1122  goodFrames.push_back(frameNdx);
1123  } // for each frame
1124  if (!badDMAs.empty())
1125  {
1126  msgStrm << "## ERROR: DMARead failed for " << DEC(badDMAs.size()) << " " << DEC(megs) << "MB frame(s): ";
1127  ::NTV2PrintULWordVector(badDMAs, msgStrm); msgStrm << endl;
1128  }
1129  if (!badWrites.empty())
1130  {
1131  msgStrm << "## ERROR: Write failures for " << DEC(badWrites.size()) << " " << DEC(megs) << "MB frame(s): ";
1132  ::NTV2PrintULWordVector(badWrites, msgStrm); msgStrm << endl;
1133  }
1134  msgStrm << "## NOTE: " << DEC(goodFrames.size()) << " x " << DEC(megs) << "MB frames from device '"
1135  << CNTV2DeviceScanner::GetDeviceRefName(inDevice) << "' written to '" << inFilePath << "'" << endl;
1136  return true;
1137 }
PACKAGE_INFO_STRUCT::buildNumber
std::string buildNumber
Definition: ntv2driverinterface.h:54
kRegGlobalControlCh3
@ kRegGlobalControlCh3
Definition: ntv2publicinterface.h:499
kRegGlobalControlCh5
@ kRegGlobalControlCh5
Definition: ntv2publicinterface.h:501
kRegXptSelectGroup32
@ kRegXptSelectGroup32
Definition: ntv2publicinterface.h:655
kRegCh7Control
@ kRegCh7Control
Definition: ntv2publicinterface.h:516
kRegCh8Control
@ kRegCh8Control
Definition: ntv2publicinterface.h:521
GetScaleFromFrameRate
ULWord GetScaleFromFrameRate(const NTV2FrameRate inFrameRate)
Definition: ntv2utils.cpp:3354
NTV2PrintULWordVector
std::ostream & NTV2PrintULWordVector(const NTV2ULWordVector &inObj, std::ostream &inOutStream=std::cout)
Streams a human-readable dump of the given NTV2ULWordVector into the specified output stream.
kRegXptSelectGroup25
@ kRegXptSelectGroup25
Definition: ntv2publicinterface.h:531
CNTV2SupportLogger::DumpDeviceSDRAM
static bool DumpDeviceSDRAM(CNTV2Card &inDevice, const std::string &inFilePath, std::ostream &msgStream)
Definition: ntv2supportlogger.cpp:1100
kRegXptSelectGroup13
@ kRegXptSelectGroup13
Definition: ntv2publicinterface.h:357
kRegFlatMatteValue
@ kRegFlatMatteValue
Definition: ntv2publicinterface.h:86
kRegSarekLicenseStatus
#define kRegSarekLicenseStatus
Definition: ntv2registersmb.h:111
NTV2_SupportLoggerSectionRouting
@ NTV2_SupportLoggerSectionRouting
Definition: ntv2supportlogger.h:21
kRegXptSelectGroup22
@ kRegXptSelectGroup22
Definition: ntv2publicinterface.h:527
kRegClass_Virtual
#define kRegClass_Virtual
Definition: ntv2registerexpert.h:69
readCurrentAudioPosition
static ULWord readCurrentAudioPosition(CNTV2Card &device, NTV2AudioSystem audioSystem, NTV2Mode mode)
Definition: ntv2supportlogger.cpp:170
xHEX0NStr
static string xHEX0NStr(const uint32_t inNum, const uint16_t inWidth)
Definition: ntv2supportlogger.cpp:449
BITFILE_INFO_STRUCT::whichFPGA
NTV2XilinxFPGA whichFPGA
Definition: ntv2publicinterface.h:4785
kRegXptSelectGroup33
@ kRegXptSelectGroup33
Definition: ntv2publicinterface.h:656
CNTV2Card::GetInputAudioChannelPairsWithPCM
virtual bool GetInputAudioChannelPairsWithPCM(const NTV2Channel inSDIInputConnector, NTV2AudioChannelPairs &outChannelPairs)
For the given SDI input (specified as a channel number), returns the set of audio channel pairs that ...
Definition: ntv2audio.cpp:1612
kRegXptSelectGroup6
@ kRegXptSelectGroup6
Definition: ntv2publicinterface.h:228
info.h
Declares the AJASystemInfo class.
kRegAud5Delay
@ kRegAud5Delay
Definition: ntv2publicinterface.h:639
NTV2_AUDIO_LOOPBACK_OFF
@ NTV2_AUDIO_LOOPBACK_OFF
Embeds silence (zeroes) into the data stream.
Definition: ntv2enums.h:1971
kRegOutputTimingControlch6
@ kRegOutputTimingControlch6
Definition: ntv2publicinterface.h:625
CNTV2DriverInterface::ReadRegisters
virtual bool ReadRegisters(NTV2RegisterReads &inOutValues)
Reads the register(s) specified by the given NTV2RegInfo sequence.
Definition: ntv2driverinterface.cpp:404
CNTV2RegisterExpert::GetRegistersForDevice
static NTV2RegNumSet GetRegistersForDevice(const NTV2DeviceID inDeviceID, const int inOtherRegsToInclude=0)
Definition: ntv2registerexpert.cpp:4554
kRegAud4Delay
@ kRegAud4Delay
Definition: ntv2publicinterface.h:403
kRegSarekFwCfg
#define kRegSarekFwCfg
Definition: ntv2registersmb.h:105
kRegAud7Delay
@ kRegAud7Delay
Definition: ntv2publicinterface.h:641
kRegMixer1Coefficient
@ kRegMixer1Coefficient
Definition: ntv2publicinterface.h:84
kRegXptSelectGroup14
@ kRegXptSelectGroup14
Definition: ntv2publicinterface.h:358
ntv2supportlogger.h
Declares the CNTV2SupportLogger class.
NTV2_AUDIO_SOURCE_IS_EMBEDDED
#define NTV2_AUDIO_SOURCE_IS_EMBEDDED(_x_)
Definition: ntv2enums.h:1957
AUTOCIRCULATE_STATUS::acCrosspoint
NTV2Crosspoint acCrosspoint
The crosspoint (channel number with direction)
Definition: ntv2publicinterface.h:7107
appSignatureToString
static string appSignatureToString(const ULWord inAppSignature)
Definition: ntv2supportlogger.cpp:62
FrameToTCListConstIter
FrameToTCList::const_iterator FrameToTCListConstIter
Definition: ntv2supportlogger.cpp:35
makeHeader
static string makeHeader(ostringstream &oss, const string &inName)
Definition: ntv2supportlogger.cpp:43
kRegInvalidValidXptROMRegister
@ kRegInvalidValidXptROMRegister
Definition: ntv2publicinterface.h:819
CNTV2Card::GetAudioSystemInputSource
virtual bool GetAudioSystemInputSource(const NTV2AudioSystem inAudioSystem, NTV2AudioSource &outAudioSource, NTV2EmbeddedAudioInput &outEmbeddedSource)
Answers with the device's current NTV2AudioSource (and also possibly its NTV2EmbeddedAudioInput) for ...
Definition: ntv2audio.cpp:523
ntv2devicefeatures.h
Declares device capability functions.
CNTV2MacDriverInterface::ReadRegister
virtual bool ReadRegister(const ULWord inRegNum, ULWord &outValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Reads all or part of the 32-bit contents of a specific register (real or virtual) on the AJA device....
Definition: ntv2macdriverinterface.cpp:709
kDeviceHasXptConnectROM
@ kDeviceHasXptConnectROM
True if device has a crosspoint connection ROM (New in SDK 17.0)
Definition: ntv2devicefeatures.h:144
kRegAud2Delay
@ kRegAud2Delay
Definition: ntv2publicinterface.h:163
kRegOutputTimingControlch7
@ kRegOutputTimingControlch7
Definition: ntv2publicinterface.h:626
timecodeToString
static string timecodeToString(const NTV2_RP188 &inRP188)
Definition: ntv2supportlogger.cpp:49
NTV2Channel
NTV2Channel
These enum values are mostly used to identify a specific Frame Store. They're also commonly used to i...
Definition: ntv2enums.h:1305
NTV2Buffer
A generic user-space buffer object that has an address and a length. Used most often to share an arbi...
Definition: ntv2publicinterface.h:5967
PATH_DELIMITER
#define PATH_DELIMITER
Definition: ntv2supportlogger.cpp:25
NTV2Buffer::GetByteCount
ULWord GetByteCount(void) const
Definition: ntv2publicinterface.h:6040
SAREK_LICENSE_PRESENT
#define SAREK_LICENSE_PRESENT
Definition: ntv2registersmb.h:224
NTV2AudioBufferSizeToString
std::string NTV2AudioBufferSizeToString(const NTV2AudioBufferSize inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:5801
NTV2TimecodeIndex
enum NTV2TCIndex NTV2TimecodeIndex
CNTV2Card::GetAudioBufferSize
virtual bool GetAudioBufferSize(NTV2AudioBufferSize &outSize, const NTV2AudioSystem inAudioSystem=NTV2_AUDIOSYSTEM_1)
Retrieves the size of the input or output audio buffer being used for a given Audio System on the AJA...
Definition: ntv2audio.cpp:271
kRegMixer4Coefficient
@ kRegMixer4Coefficient
Definition: ntv2publicinterface.h:634
HEX0NStr
static string HEX0NStr(const uint32_t inNum, const uint16_t inWidth)
Definition: ntv2supportlogger.cpp:448
kRegXptSelectGroup5
@ kRegXptSelectGroup5
Definition: ntv2publicinterface.h:227
NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_1
@ NTV2_EMBEDDED_AUDIO_INPUT_VIDEO_1
Definition: ntv2enums.h:1910
kRegAud8Control
@ kRegAud8Control
Definition: ntv2publicinterface.h:587
CNTV2Card::WaitForInputVerticalInterrupt
virtual bool WaitForInputVerticalInterrupt(const NTV2Channel inChannel=NTV2_CHANNEL1, UWord inRepeatCount=1)
Efficiently sleeps the calling thread/process until the next one or more field (interlaced video) or ...
Definition: ntv2subscriptions.cpp:149
NTV2_AUDIO_48K
@ NTV2_AUDIO_48K
Definition: ntv2enums.h:1875
CNTV2SupportLogger
Generates a standard support log (register log) for any NTV2 device attached to the host....
Definition: ntv2supportlogger.h:30
NTV2DeviceGetActiveMemorySize
ULWord NTV2DeviceGetActiveMemorySize(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:8262
CNTV2DriverInterface::GetPackageInformation
virtual bool GetPackageInformation(PACKAGE_INFO_STRUCT &outPkgInfo)
Answers with the IP device's package information.
Definition: ntv2driverinterface.cpp:681
ChannelToACStatusPair
pair< NTV2Channel, AUTOCIRCULATE_STATUS > ChannelToACStatusPair
Definition: ntv2supportlogger.cpp:33
kRegOutputTimingControlch3
@ kRegOutputTimingControlch3
Definition: ntv2publicinterface.h:622
kVRegDriverType
@ kVRegDriverType
Definition: ntv2virtualregisters.h:38
CNTV2SupportLogger::PrependToSection
virtual void PrependToSection(uint32_t section, const std::string &sectionData)
Prepends arbitrary string data to my support log, ahead of a given section.
Definition: ntv2supportlogger.cpp:336
CNTV2Card::GetAnalogInputVideoFormat
virtual NTV2VideoFormat GetAnalogInputVideoFormat(void)
Returns the video format of the signal that is present on the device's analog video input.
Definition: ntv2register.cpp:3508
NTV2_FRAMERATE_INVALID
@ NTV2_FRAMERATE_INVALID
Definition: ntv2enums.h:425
BITFILE_INFO_STRUCT::designNameStr
char designNameStr[(100)]
Definition: ntv2publicinterface.h:4780
NTV2HDMIAudioChannels
NTV2HDMIAudioChannels
Indicates or specifies the HDMI audio channel count.
Definition: ntv2enums.h:3581
kRegXptSelectGroup30
@ kRegXptSelectGroup30
Definition: ntv2publicinterface.h:528
NTV2_AUDIOSYSTEM_1
@ NTV2_AUDIOSYSTEM_1
This identifies the first Audio System.
Definition: ntv2enums.h:3811
Enum2Str
#define Enum2Str(e)
Definition: ntv2utils.h:25
NTV2DeviceCanDoMultiFormat
bool NTV2DeviceCanDoMultiFormat(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:4065
kRegXptSelectGroup8
@ kRegXptSelectGroup8
Definition: ntv2publicinterface.h:255
CNTV2Card::GetFrameBufferSize
virtual bool GetFrameBufferSize(const NTV2Channel inChannel, NTV2Framesize &outValue)
Answers with the frame size currently being used on the device.
Definition: ntv2register.cpp:2050
BITFILE_INFO_STRUCT::timeStr
char timeStr[(16)]
Definition: ntv2publicinterface.h:4779
kRegXptSelectGroup34
@ kRegXptSelectGroup34
Definition: ntv2publicinterface.h:657
kRegGlobalControlCh4
@ kRegGlobalControlCh4
Definition: ntv2publicinterface.h:500
NTV2_IS_VALID_AUDIO_BUFFER_SIZE
#define NTV2_IS_VALID_AUDIO_BUFFER_SIZE(_x_)
Definition: ntv2enums.h:1870
NTV2DeviceID
NTV2DeviceID
Identifies a specific AJA NTV2 device model number. The NTV2DeviceID is actually the PROM part number...
Definition: ntv2enums.h:20
DEC0N
#define DEC0N(__x__, __n__)
Definition: ntv2publicinterface.h:5581
CNTV2Card::GetInputFrame
virtual bool GetInputFrame(const NTV2Channel inChannel, ULWord &outValue)
Answers with the current input frame index number for the given FrameStore. This identifies which par...
Definition: ntv2register.cpp:2234
kRegAud3SourceSelect
@ kRegAud3SourceSelect
Definition: ntv2publicinterface.h:374
getNumAudioChannels
static ULWord getNumAudioChannels(CNTV2Card &device, NTV2AudioSystem audioSystem)
Definition: ntv2supportlogger.cpp:180
kRegGlobalControlCh7
@ kRegGlobalControlCh7
Definition: ntv2publicinterface.h:503
NTV2_FBF_INVALID
@ NTV2_FBF_INVALID
Definition: ntv2enums.h:245
NTV2FrameBufferFormat
NTV2FrameBufferFormat
Identifies a particular video frame buffer format. See Device Frame Buffer Formats for details.
Definition: ntv2enums.h:207
CNTV2SupportLogger::AddHeader
virtual void AddHeader(const std::string &sectionName, const std::string &sectionData)
Adds header text to my log.
Definition: ntv2supportlogger.cpp:364
CNTV2Card::GetInstalledBitfileInfo
virtual bool GetInstalledBitfileInfo(ULWord &outNumBytes, std::string &outDateStr, std::string &outTimeStr)
Returns the size and time/date stamp of the device's currently-installed firmware.
Definition: ntv2card.cpp:267
SAREK_LICENSE_VALID
#define SAREK_LICENSE_VALID
Definition: ntv2registersmb.h:225
PACKAGE_INFO_STRUCT::packageNumber
std::string packageNumber
Definition: ntv2driverinterface.h:55
getCurrentPositionSamples
static ULWord getCurrentPositionSamples(CNTV2Card &device, NTV2AudioSystem audioSystem, NTV2Mode mode)
Definition: ntv2supportlogger.cpp:192
kRegVidProc3Control
@ kRegVidProc3Control
Definition: ntv2publicinterface.h:629
CNTV2Card::GetMultiFormatMode
virtual bool GetMultiFormatMode(bool &outIsEnabled)
Answers if the device is operating in multiple-format per channel (independent channel) mode or not....
Definition: ntv2register.cpp:4289
NTV2_INVALID_HDMI_AUDIO_CHANNELS
@ NTV2_INVALID_HDMI_AUDIO_CHANNELS
Definition: ntv2enums.h:3586
MacAddr::AsString
std::string AsString(void) const
Definition: ntv2konaflashprogram.cpp:32
kRegAud1Delay
@ kRegAud1Delay
Definition: ntv2publicinterface.h:93
kRegXptSelectGroup3
@ kRegXptSelectGroup3
Definition: ntv2publicinterface.h:225
NTV2_CHANNEL1
@ NTV2_CHANNEL1
Specifies channel or Frame Store 1 (or the first item).
Definition: ntv2enums.h:1307
kRegXptSelectGroup27
@ kRegXptSelectGroup27
Definition: ntv2publicinterface.h:533
CNTV2Card::GetFrameBufferFormat
virtual bool GetFrameBufferFormat(NTV2Channel inChannel, NTV2FrameBufferFormat &outValue)
Returns the current frame buffer format for the given FrameStore on the AJA device.
Definition: ntv2register.cpp:1891
SDRAMAuditor
Audits an NTV2 device's SDRAM utilization, and can report contiguous regions of SDRAM,...
Definition: ntv2card.h:6515
NTV2_IS_VALID_AUDIO_RATE
#define NTV2_IS_VALID_AUDIO_RATE(_x_)
Definition: ntv2enums.h:1882
kRegXptSelectGroup28
@ kRegXptSelectGroup28
Definition: ntv2publicinterface.h:534
NTV2_HDMIAudio8Channels
@ NTV2_HDMIAudio8Channels
8 audio channels
Definition: ntv2enums.h:3584
ChannelToACStatus
map< NTV2Channel, AUTOCIRCULATE_STATUS > ChannelToACStatus
Definition: ntv2supportlogger.cpp:31
NTV2FrameRate
NTV2FrameRate
Identifies a particular video frame rate.
Definition: ntv2enums.h:396
NTV2FramesizeToByteCount
ULWord NTV2FramesizeToByteCount(const NTV2Framesize inFrameSize)
Converts the given NTV2Framesize value into an exact byte count.
Definition: ntv2utils.cpp:5319
FRAME_STAMP
This is returned by the CNTV2Card::AutoCirculateGetFrameStamp function, and is also embedded in the A...
Definition: ntv2publicinterface.h:7674
NTV2_CHANNEL_INVALID
@ NTV2_CHANNEL_INVALID
Definition: ntv2enums.h:1316
ntv2registersmb.h
Defines the KonaIP/IoIP registers.
pidToString
static string pidToString(const uint32_t inPID)
Definition: ntv2supportlogger.cpp:75
kRegXptSelectGroup31
@ kRegXptSelectGroup31
Definition: ntv2publicinterface.h:570
kRegAud5Control
@ kRegAud5Control
Definition: ntv2publicinterface.h:572
NTV2RegNumSet
NTV2RegisterNumberSet NTV2RegNumSet
A set of distinct NTV2RegisterNumbers.
Definition: ntv2publicinterface.h:7327
CNTV2SupportLogger::~CNTV2SupportLogger
virtual ~CNTV2SupportLogger()
My default destructor.
Definition: ntv2supportlogger.cpp:324
kRegCh3Control
@ kRegCh3Control
Definition: ntv2publicinterface.h:351
getVideoFormat
static NTV2VideoFormat getVideoFormat(CNTV2Card &device, const NTV2Channel inChannel)
Definition: ntv2supportlogger.cpp:123
ChannelToPerFrameTCListPair
pair< NTV2Channel, FrameToTCList > ChannelToPerFrameTCListPair
Definition: ntv2supportlogger.cpp:39
CNTV2Card::GetDetectedAudioChannelPairs
virtual bool GetDetectedAudioChannelPairs(const NTV2AudioSystem inAudioSystem, NTV2AudioChannelPairs &outDetectedChannelPairs)
Answers which audio channel pairs are present in the given Audio System's input stream.
Definition: ntv2audio.cpp:1457
kRegAud8Delay
@ kRegAud8Delay
Definition: ntv2publicinterface.h:642
CNTV2DriverInterface::IsSupported
virtual bool IsSupported(const NTV2BoolParamID inParamID)
Definition: ntv2driverinterface.h:425
CNTV2SupportLogger::Version
static int Version(void)
Definition: ntv2supportlogger.cpp:330
kRegOutputTimingControlch5
@ kRegOutputTimingControlch5
Definition: ntv2publicinterface.h:624
AUTOCIRCULATE_STATUS::IsInput
bool IsInput(void) const
Definition: ntv2publicinterface.h:7291
kRegCh2Control
@ kRegCh2Control
Definition: ntv2publicinterface.h:78
isEnabled
static bool isEnabled(CNTV2Card &device, const NTV2Channel inChannel)
Definition: ntv2supportlogger.cpp:144
NTV2_AudioChannel9_10
@ NTV2_AudioChannel9_10
This selects audio channels 9 and 10 (Group 3 channels 1 and 2)
Definition: ntv2enums.h:3057
CNTV2Card::GetDisplayName
virtual std::string GetDisplayName(void)
Answers with this device's display name.
Definition: ntv2card.cpp:84
kRegGlobalControlCh8
@ kRegGlobalControlCh8
Definition: ntv2publicinterface.h:504
SDRAMAuditor::DumpBlocks
std::ostream & DumpBlocks(std::ostream &oss) const
Dumps all 8MB blocks/frames and their tags, if any, into the given stream.
Definition: ntv2card.cpp:596
BITFILE_INFO_STRUCT::dateStr
char dateStr[(16)]
Definition: ntv2publicinterface.h:4778
NTV2XilinxFPGA
NTV2XilinxFPGA
Definition: ntv2enums.h:3760
kRegAud6SourceSelect
@ kRegAud6SourceSelect
Definition: ntv2publicinterface.h:578
NTV2TCIndexToString
std::string NTV2TCIndexToString(const NTV2TCIndex inValue, const bool inCompactDisplay=false)
Definition: ntv2utils.cpp:6413
CNTV2Card::GetOutputFrame
virtual bool GetOutputFrame(const NTV2Channel inChannel, ULWord &outValue)
Answers with the current output frame number for the given FrameStore (expressed as an NTV2Channel).
Definition: ntv2register.cpp:2216
CNTV2Card::AutoCirculateGetFrameStamp
virtual bool AutoCirculateGetFrameStamp(const NTV2Channel inChannel, const ULWord inFrameNumber, FRAME_STAMP &outFrameInfo)
Returns precise timing information for the given frame and channel that's currently AutoCirculating.
Definition: ntv2autocirculate.cpp:667
ChannelToPerFrameTCListConstIter
ChannelToPerFrameTCList::const_iterator ChannelToPerFrameTCListConstIter
Definition: ntv2supportlogger.cpp:38
CNTV2Card::GetNumberAudioChannels
virtual bool GetNumberAudioChannels(ULWord &outNumChannels, const NTV2AudioSystem inAudioSystem=NTV2_AUDIOSYSTEM_1)
Returns the current number of audio channels being captured or played by a given Audio System on the ...
Definition: ntv2audio.cpp:183
kRegVidProc4Control
@ kRegVidProc4Control
Definition: ntv2publicinterface.h:633
CNTV2Card::GetPCIFPGAVersionString
virtual std::string GetPCIFPGAVersionString(void)
Definition: ntv2card.cpp:114
CNTV2Card::GetVideoFormat
virtual bool GetVideoFormat(NTV2VideoFormat &outValue, NTV2Channel inChannel=NTV2_CHANNEL1)
Definition: ntv2register.cpp:332
NTV2_SupportLoggerSectionRegisters
@ NTV2_SupportLoggerSectionRegisters
Definition: ntv2supportlogger.h:22
AJASystemInfo::GetValue
virtual AJAStatus GetValue(const AJASystemInfoTag inTag, std::string &outValue) const
Answers with the host system info value string for the given AJASystemInfoTag.
Definition: info.cpp:151
ULWord
uint32_t ULWord
Definition: ajatypes.h:246
kRegXptSelectGroup2
@ kRegXptSelectGroup2
Definition: ntv2publicinterface.h:224
AJASystemInfo::append
static AJALabelValuePairs & append(AJALabelValuePairs &inOutTable, const std::string &inLabel, const std::string &inValue=std::string())
A convenience function that appends the given label and value strings to the provided AJALabelValuePa...
Definition: info.h:168
LoggerSectionToFunctionMacro
#define LoggerSectionToFunctionMacro(_SectionEnum_, _SectionString_, _SectionMethod_)
Definition: ntv2supportlogger.cpp:385
kRegXptSelectGroup10
@ kRegXptSelectGroup10
Definition: ntv2publicinterface.h:345
AUTOCIRCULATE_STATUS
This is returned from the CNTV2Card::AutoCirculateGetStatus function.
Definition: ntv2publicinterface.h:7105
kRegGlobalControlCh6
@ kRegGlobalControlCh6
Definition: ntv2publicinterface.h:502
ntv2devicescanner.h
Declares the CNTV2DeviceScanner class.
registerToLoadString
Definition: ntv2supportlogger.cpp:899
kRegXptSelectGroup12
@ kRegXptSelectGroup12
Definition: ntv2publicinterface.h:287
CNTV2RegisterExpert::GetDisplayName
static std::string GetDisplayName(const uint32_t inRegNum)
Definition: ntv2registerexpert.cpp:4495
NTV2AudioChannelPairs
std::set< NTV2AudioChannelPair > NTV2AudioChannelPairs
A set of distinct NTV2AudioChannelPair values.
Definition: ntv2card.h:29
NTV2_IS_INPUT_CROSSPOINT
#define NTV2_IS_INPUT_CROSSPOINT(__x__)
Definition: ntv2enums.h:1669
CNTV2MacDriverInterface::GetStreamingApplication
virtual bool GetStreamingApplication(ULWord &outAppType, int32_t &outProcessID)
Answers with the four-CC type and process ID of the application that currently "owns" the AJA device ...
Definition: ntv2macdriverinterface.cpp:944
findActiveACChannel
static NTV2Channel findActiveACChannel(CNTV2Card &device, NTV2AudioSystem audioSystem, AUTOCIRCULATE_STATUS &outStatus)
Definition: ntv2supportlogger.cpp:206
FRAME_STAMP::GetInputTimeCodes
bool GetInputTimeCodes(NTV2TimeCodeList &outValues) const
Returns all RP188 timecodes associated with the frame in NTV2TCIndex order.
Definition: ntv2publicinterface.cpp:1993
NTV2Mode
NTV2Mode
Used to identify the mode of a Frame Store, or the direction of an AutoCirculate stream: either Captu...
Definition: ntv2enums.h:1198
CNTV2Card::GetInputAudioChannelPairsWithoutPCM
virtual bool GetInputAudioChannelPairsWithoutPCM(const NTV2Channel inSDIInputConnector, NTV2AudioChannelPairs &outChannelPairs)
For the given SDI input (specified as a channel number), returns the set of audio channel pairs that ...
Definition: ntv2audio.cpp:1640
kRegAud3Control
@ kRegAud3Control
Definition: ntv2publicinterface.h:372
NTV2DeviceIDToString
std::string NTV2DeviceIDToString(const NTV2DeviceID inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:4673
bytesToSamples
static ULWord bytesToSamples(CNTV2Card &device, NTV2AudioSystem audioSystem, const ULWord inBytes)
Definition: ntv2supportlogger.cpp:187
AJASystemInfo::ToString
virtual void ToString(std::string &outAllLabelsAndValues) const
Answers with a multi-line string that contains the complete host system info table.
PACKAGE_INFO_STRUCT::time
std::string time
Definition: ntv2driverinterface.h:57
registerToLoadString::registerNum
NTV2RegisterNumber registerNum
Definition: ntv2supportlogger.cpp:901
NTV2RegisterReadsConstIter
NTV2RegWritesConstIter NTV2RegisterReadsConstIter
Definition: ntv2publicinterface.h:3984
kRegGlobalControl2
@ kRegGlobalControl2
Definition: ntv2publicinterface.h:361
NTV2_IS_VALID_EMBEDDED_AUDIO_INPUT
#define NTV2_IS_VALID_EMBEDDED_AUDIO_INPUT(_x_)
Definition: ntv2enums.h:1922
registerToLoadString::registerStr
string registerStr
Definition: ntv2supportlogger.cpp:902
NTV2_AudioChannel3_4
@ NTV2_AudioChannel3_4
This selects audio channels 3 and 4 (Group 1 channels 3 and 4)
Definition: ntv2enums.h:3054
CNTV2Card::ReadAudioLastIn
virtual bool ReadAudioLastIn(ULWord &outValue, const NTV2AudioSystem inAudioSystem=NTV2_AUDIOSYSTEM_1)
For the given Audio System, answers with the byte offset to the last byte of the latest chunk of 4-by...
Definition: ntv2audio.cpp:468
CNTV2Card::GetSerialNumberString
virtual bool GetSerialNumberString(std::string &outSerialNumberString)
Answers with a string that contains my human-readable serial number.
Definition: ntv2card.cpp:219
AJASystemInfo::GetLabelValuePairs
virtual AJAStatus GetLabelValuePairs(AJALabelValuePairs &outTable, bool clearTable=false) const
Generates a "table" of label/value pairs that contains the complete host system info table.
Definition: info.cpp:173
CNTV2Card::ReadAudioLastOut
virtual bool ReadAudioLastOut(ULWord &outValue, const NTV2AudioSystem inAudioSystem=NTV2_AUDIOSYSTEM_1)
For the given Audio System, answers with the byte offset of the tail end of the last chunk of audio s...
Definition: ntv2audio.cpp:475
SAREK_REGS
#define SAREK_REGS
Definition: ntv2registersmb.h:54
NTV2AudioChannelPair
NTV2AudioChannelPair
Identifies a pair of audio channels.
Definition: ntv2enums.h:3051
CNTV2Card::GetAudioOutputEmbedderState
virtual bool GetAudioOutputEmbedderState(const NTV2Channel inSDIOutputConnector, bool &outIsEnabled)
Answers with the current state of the audio output embedder for the given SDI output connector (speci...
Definition: ntv2audio.cpp:1671
kRegXptSelectGroup26
@ kRegXptSelectGroup26
Definition: ntv2publicinterface.h:532
kRegGlobalControl3
@ kRegGlobalControl3
Definition: ntv2publicinterface.h:187
UWord
uint16_t UWord
Definition: ajatypes.h:244
NTV2RegisterReads
NTV2RegWrites NTV2RegisterReads
Definition: ntv2publicinterface.h:3983
CNTV2Card::AutoCirculateGetStatus
virtual bool AutoCirculateGetStatus(const NTV2Channel inChannel, AUTOCIRCULATE_STATUS &outStatus)
Returns the current AutoCirculate status for the given channel.
Definition: ntv2autocirculate.cpp:646
kRegOutputTimingControlch8
@ kRegOutputTimingControlch8
Definition: ntv2publicinterface.h:627
kRegXptSelectGroup35
@ kRegXptSelectGroup35
Definition: ntv2publicinterface.h:658
NTV2Framesize
NTV2Framesize
Kona2/Xena2 specific enums.
Definition: ntv2enums.h:2057
NTV2TaskModeToString
std::string NTV2TaskModeToString(const NTV2EveryFrameTaskMode inValue, const bool inCompactDisplay=false)
Definition: ntv2utils.cpp:6372
CNTV2Card::GetAnalogCompositeInputVideoFormat
virtual NTV2VideoFormat GetAnalogCompositeInputVideoFormat(void)
Returns the video format of the signal that is present on the device's composite video input.
Definition: ntv2register.cpp:3524
kRegXptSelectGroup21
@ kRegXptSelectGroup21
Definition: ntv2publicinterface.h:526
CNTV2Card::GetHDMIInputAudioChannels
virtual bool GetHDMIInputAudioChannels(NTV2HDMIAudioChannels &outValue, const NTV2Channel inChannel=NTV2_CHANNEL1)
Answers with the current number of audio channels being received on the given HDMI input.
Definition: ntv2hdmi.cpp:272
NTV2VideoFormatToString
std::string NTV2VideoFormatToString(const NTV2VideoFormat inValue, const bool inUseFrameRate=false)
Definition: ntv2utils.cpp:6750
kRegXptSelectGroup7
@ kRegXptSelectGroup7
Definition: ntv2publicinterface.h:254
CNTV2Card::DMAReadFrame
virtual bool DMAReadFrame(const ULWord inFrameNumber, ULWord *pOutFrameBuffer, const ULWord inByteCount)
Transfers a single frame from the AJA device to the host.
Definition: ntv2dma.cpp:41
CNTV2Card
I interrogate and control an AJA video/audio capture/playout device.
Definition: ntv2card.h:262
operator<<
ostream & operator<<(ostream &outStream, const CNTV2SupportLogger &inData)
Definition: ntv2supportlogger.cpp:304
AUTOCIRCULATE_STATUS::IsStopped
bool IsStopped(void) const
Definition: ntv2publicinterface.h:7221
PACKAGE_INFO_STRUCT
Definition: ntv2driverinterface.h:52
DECStr
string DECStr(const T &inT)
Definition: ntv2supportlogger.cpp:450
PACKAGE_INFO_STRUCT::date
std::string date
Definition: ntv2driverinterface.h:56
NTV2ULWordVector
std::vector< ULWord > NTV2ULWordVector
An ordered sequence of ULWords.
Definition: ntv2publicinterface.h:3794
kRegAud4Control
@ kRegAud4Control
Definition: ntv2publicinterface.h:373
NTV2AudioLoopBack
NTV2AudioLoopBack
This enum value determines/states if an audio output embedder will embed silence (zeroes) or de-embed...
Definition: ntv2enums.h:1969
kRegAud8SourceSelect
@ kRegAud8SourceSelect
Definition: ntv2publicinterface.h:588
NTV2GetVersionString
std::string NTV2GetVersionString(const bool inDetailed=false)
Definition: ntv2utils.cpp:7680
kRegOutputTimingControlch4
@ kRegOutputTimingControlch4
Definition: ntv2publicinterface.h:623
AsMacDriverInterface
#define AsMacDriverInterface(_x_)
Definition: ntv2supportlogger.cpp:40
kRegAud7Control
@ kRegAud7Control
Definition: ntv2publicinterface.h:582
CRP188
Definition: ntv2rp188.h:55
CNTV2SignalRouter
This class is a collection of widget input-to-output connections that can be applied all-at-once to a...
Definition: ntv2signalrouter.h:94
AUTOCIRCULATE_STATUS::GetEndFrame
uint16_t GetEndFrame(void) const
Definition: ntv2publicinterface.h:7196
NTV2_SupportLoggerSectionAutoCirculate
@ NTV2_SupportLoggerSectionAutoCirculate
Definition: ntv2supportlogger.h:19
CNTV2DeviceScanner::GetDeviceRefName
static std::string GetDeviceRefName(CNTV2Card &inDevice)
Definition: ntv2devicescanner.cpp:455
kRegAud5SourceSelect
@ kRegAud5SourceSelect
Definition: ntv2publicinterface.h:573
kRegFlatMatte3Value
@ kRegFlatMatte3Value
Definition: ntv2publicinterface.h:631
NTV2AudioSourceToString
std::string NTV2AudioSourceToString(const NTV2AudioSource inValue, const bool inCompactDisplay=false)
Definition: ntv2utils.cpp:6735
kRegAud1SourceSelect
@ kRegAud1SourceSelect
Definition: ntv2publicinterface.h:99
CNTV2Card::GetMode
virtual bool GetMode(const NTV2Channel inChannel, NTV2Mode &outValue)
Answers with the current NTV2Mode of the given FrameStore on the AJA device.
Definition: ntv2register.cpp:1631
AJA_NULL
#define AJA_NULL
Definition: ajatypes.h:190
kRegXptSelectGroup16
@ kRegXptSelectGroup16
Definition: ntv2publicinterface.h:400
kRegAud4SourceSelect
@ kRegAud4SourceSelect
Definition: ntv2publicinterface.h:375
NTV2_DISABLE_TASKS
@ NTV2_DISABLE_TASKS
0: Disabled: Device is completely configured by controlling application(s) – no driver involvement.
Definition: ntv2publicinterface.h:4259
registerToLoadStrings
const registerToLoadString registerToLoadStrings[]
Definition: ntv2supportlogger.cpp:904
maxSampleCountForNTV2AudioBufferSize
static uint32_t maxSampleCountForNTV2AudioBufferSize(const NTV2AudioBufferSize inBufferSize, const uint16_t inChannelCount)
Definition: ntv2supportlogger.cpp:107
CNTV2Card::GetDriverVersionString
virtual std::string GetDriverVersionString(void)
Answers with this device's driver's version as a human-readable string.
Definition: ntv2card.cpp:123
NTV2DeviceGetNumAudioSystems
UWord NTV2DeviceGetNumAudioSystems(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:9864
kRegXptSelectGroup1
@ kRegXptSelectGroup1
Definition: ntv2publicinterface.h:223
kRegXptSelectGroup19
@ kRegXptSelectGroup19
Definition: ntv2publicinterface.h:471
CNTV2DriverInterface::GetDescription
virtual std::string GetDescription(void) const
Definition: ntv2driverinterface.h:574
getMaxNumSamples
static ULWord getMaxNumSamples(CNTV2Card &device, NTV2AudioSystem audioSystem)
Definition: ntv2supportlogger.cpp:198
NTV2_FORMAT_UNKNOWN
@ NTV2_FORMAT_UNKNOWN
Definition: ntv2enums.h:498
CNTV2Card::GetRouting
virtual bool GetRouting(CNTV2SignalRouter &outRouting)
Answers with the current signal routing between any and all widgets on the AJA device.
Definition: ntv2regroute.cpp:305
kRegOutputTimingControlch2
@ kRegOutputTimingControlch2
Definition: ntv2publicinterface.h:621
kRegXptSelectGroup17
@ kRegXptSelectGroup17
Definition: ntv2publicinterface.h:398
NTV2DeviceCanDoPCMDetection
bool NTV2DeviceCanDoPCMDetection(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:4335
NTV2_AUDIO_AES
@ NTV2_AUDIO_AES
Obtain audio samples from the device AES inputs, if available.
Definition: ntv2enums.h:1949
CNTV2Card::GetHDMIInputVideoFormat
virtual NTV2VideoFormat GetHDMIInputVideoFormat(NTV2Channel inHDMIInput=NTV2_CHANNEL1)
Definition: ntv2register.cpp:3467
NTV2_AUDIO_HDMI
@ NTV2_AUDIO_HDMI
Obtain audio samples from the device HDMI input, if available.
Definition: ntv2enums.h:1951
kRegAud1Control
@ kRegAud1Control
Definition: ntv2publicinterface.h:98
NTV2AudioRate
NTV2AudioRate
Definition: ntv2enums.h:1873
CNTV2RegisterExpert::GetRegistersForClass
static NTV2RegNumSet GetRegistersForClass(const std::string &inClassName)
Definition: ntv2registerexpert.cpp:4540
detectInputChannelPairs
static bool detectInputChannelPairs(CNTV2Card &device, const NTV2AudioSource inAudioSource, const NTV2EmbeddedAudioInput inEmbeddedSource, NTV2AudioChannelPairs &outChannelPairsPresent)
Definition: ntv2supportlogger.cpp:222
NTV2RegisterNumber
NTV2RegisterNumber
Definition: ntv2publicinterface.h:71
DEC
#define DEC(__x__)
Definition: ntv2publicinterface.h:5579
CNTV2SupportLogger::InventLogFilePathAndName
static std::string InventLogFilePathAndName(CNTV2Card &inDevice, std::string inPrefix="aja_supportlog", std::string inExtension="log")
Definition: ntv2supportlogger.cpp:1085
NTV2DeviceIDString
const char * NTV2DeviceIDString(const NTV2DeviceID id)
Definition: ntv2debug.cpp:15
false
#define false
Definition: ntv2devicefeatures.h:25
CNTV2Card::GetAudioLoopBack
virtual bool GetAudioLoopBack(NTV2AudioLoopBack &outMode, const NTV2AudioSystem inAudioSystem=NTV2_AUDIOSYSTEM_1)
Answers if NTV2AudioLoopBack mode is currently on or off for the given NTV2AudioSystem.
Definition: ntv2audio.cpp:324
common.h
Private include file for all ajabase sources.
CNTV2Card::GetDetectedAESChannelPairs
virtual bool GetDetectedAESChannelPairs(NTV2AudioChannelPairs &outDetectedChannelPairs)
Answers which AES/EBU audio channel pairs are present on the device.
Definition: ntv2audio.cpp:1475
HEX0N
#define HEX0N(__x__, __n__)
Definition: debug.cpp:1174
kRegCh6Control
@ kRegCh6Control
Definition: ntv2publicinterface.h:511
ntv2konaflashprogram.h
Declares the CNTV2KonaFlashProgram class.
NTV2_RP188::IsValid
bool IsValid(void) const
Answers true if I'm valid, or false if I'm not valid.
Definition: ntv2publicinterface.h:6747
NTV2FrameBufferFormatToString
std::string NTV2FrameBufferFormatToString(const NTV2FrameBufferFormat inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:6940
CNTV2SignalRouter::Print
virtual std::ostream & Print(std::ostream &inOutStream, const bool inForRetailDisplay=false) const
Prints me in a human-readable format to the given output stream.
Definition: ntv2signalrouter.cpp:200
kRegXptSelectGroup9
@ kRegXptSelectGroup9
Definition: ntv2publicinterface.h:344
kRegSarekDNALow
#define kRegSarekDNALow
Definition: ntv2registersmb.h:109
kRegCh4Control
@ kRegCh4Control
Definition: ntv2publicinterface.h:354
CNTV2Card::WaitForOutputVerticalInterrupt
virtual bool WaitForOutputVerticalInterrupt(const NTV2Channel inChannel=NTV2_CHANNEL1, UWord inRepeatCount=1)
Efficiently sleeps the calling thread/process until the next one or more field (interlaced video) or ...
Definition: ntv2subscriptions.cpp:134
NTV2_RP188
This struct replaces the old RP188_STRUCT.
Definition: ntv2publicinterface.h:6705
kRegSplitControl
@ kRegSplitControl
Definition: ntv2publicinterface.h:85
kRegFirstValidXptROMRegister
@ kRegFirstValidXptROMRegister
Definition: ntv2publicinterface.h:816
kRegXptSelectGroup24
@ kRegXptSelectGroup24
Definition: ntv2publicinterface.h:530
NTV2_AUDIO_EMBEDDED
@ NTV2_AUDIO_EMBEDDED
Obtain audio samples from the audio that's embedded in the video HANC.
Definition: ntv2enums.h:1948
kRegFlatMatte4Value
@ kRegFlatMatte4Value
Definition: ntv2publicinterface.h:635
FrameToTCListPair
pair< uint16_t, NTV2TimeCodeList > FrameToTCListPair
Definition: ntv2supportlogger.cpp:36
AJAExport
#define AJAExport
Definition: export.h:33
AUTOCIRCULATE_STATUS::GetStartFrame
uint16_t GetStartFrame(void) const
Definition: ntv2publicinterface.h:7191
AJA_SystemInfoTag_Path_UserHome
@ AJA_SystemInfoTag_Path_UserHome
Definition: info.h:45
NTV2VideoFormat
enum _NTV2VideoFormat NTV2VideoFormat
Identifies a particular video format.
kRegXptSelectGroup29
@ kRegXptSelectGroup29
Definition: ntv2publicinterface.h:535
kRegGlobalControlCh2
@ kRegGlobalControlCh2
Definition: ntv2publicinterface.h:498
kRegXptSelectGroup20
@ kRegXptSelectGroup20
Definition: ntv2publicinterface.h:473
FromRegNumSet
NTV2RegisterReads FromRegNumSet(const NTV2RegNumSet &inRegNumSet)
Definition: ntv2utils.cpp:7964
kRegXptSelectGroup4
@ kRegXptSelectGroup4
Definition: ntv2publicinterface.h:226
NTV2DeviceGetNumVideoChannels
ULWord NTV2DeviceGetNumVideoChannels(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:11834
getActiveFrameStr
static string getActiveFrameStr(CNTV2Card &device, const NTV2Channel inChannel)
Definition: ntv2supportlogger.cpp:161
kRegCh1ControlExtended
@ kRegCh1ControlExtended
Definition: ntv2publicinterface.h:256
ChannelToACStatusConstIter
ChannelToACStatus::const_iterator ChannelToACStatusConstIter
Definition: ntv2supportlogger.cpp:32
NTV2TimeCodeList
std::vector< NTV2_RP188 > NTV2TimeCodeList
An ordered sequence of zero or more NTV2_RP188 structures. An NTV2TCIndex enum value can be used as a...
Definition: ntv2publicinterface.h:6786
CNTV2Card::IsChannelEnabled
virtual bool IsChannelEnabled(const NTV2Channel inChannel, bool &outEnabled)
Answers whether or not the given FrameStore is enabled.
Definition: ntv2register.cpp:2138
kRegAud6Control
@ kRegAud6Control
Definition: ntv2publicinterface.h:577
ntv2rp188.h
Declares the CRP188 class. See SMPTE RP188 standard for details.
NTV2AudioLoopBackToString
std::string NTV2AudioLoopBackToString(const NTV2AudioLoopBack inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:5813
NTV2EveryFrameTaskMode
NTV2EveryFrameTaskMode
Describes the task mode state. See also: Sharing AJA Devices With Other Applications.
Definition: ntv2publicinterface.h:4257
true
#define true
Definition: ntv2devicefeatures.h:26
getActiveFrame
static ULWord getActiveFrame(CNTV2Card &device, const NTV2Channel inChannel)
Definition: ntv2supportlogger.cpp:151
kRegXptSelectGroup15
@ kRegXptSelectGroup15
Definition: ntv2publicinterface.h:399
CNTV2DriverInterface::GetDeviceID
virtual NTV2DeviceID GetDeviceID(void)
Definition: ntv2driverinterface.cpp:371
kRegCh1Control
@ kRegCh1Control
Definition: ntv2publicinterface.h:74
CNTV2Card::GetEveryFrameServices
virtual bool GetEveryFrameServices(NTV2EveryFrameTaskMode &outMode)
Retrieves the device's current "retail service" task mode.
Definition: ntv2register.cpp:184
CNTV2Card::GetAudioRate
virtual bool GetAudioRate(NTV2AudioRate &outRate, const NTV2AudioSystem inAudioSystem=NTV2_AUDIOSYSTEM_1)
Returns the current NTV2AudioRate for the given Audio System.
Definition: ntv2audio.cpp:229
CNTV2SupportLogger::CNTV2SupportLogger
CNTV2SupportLogger(CNTV2Card &card, NTV2SupportLoggerSections sections=NTV2_SupportLoggerSectionsAll)
Construct from CNTV2Card instance.
Definition: ntv2supportlogger.cpp:310
CNTV2Card::GetFrameRate
virtual bool GetFrameRate(NTV2FrameRate &outValue, NTV2Channel inChannel=NTV2_CHANNEL1)
Returns the AJA device's currently configured frame rate via its "value" parameter.
Definition: ntv2register.cpp:1024
GetAudioSamplesPerSecond
double GetAudioSamplesPerSecond(const NTV2AudioRate inAudioRate)
Returns the audio sample rate as a number of audio samples per second.
Definition: ntv2utils.cpp:3203
kRegCh2ControlExtended
@ kRegCh2ControlExtended
Definition: ntv2publicinterface.h:257
NTV2_MODE_INVALID
@ NTV2_MODE_INVALID
The invalid mode.
Definition: ntv2enums.h:1204
NTV2ChannelToString
std::string NTV2ChannelToString(const NTV2Channel inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:5759
kRegXptSelectGroup11
@ kRegXptSelectGroup11
Definition: ntv2publicinterface.h:285
NTV2AudioRateToString
std::string NTV2AudioRateToString(const NTV2AudioRate inValue, const bool inForRetailDisplay=false)
Definition: ntv2utils.cpp:5788
kRegSDITransmitControl
@ kRegSDITransmitControl
Definition: ntv2publicinterface.h:350
kRegAud2SourceSelect
@ kRegAud2SourceSelect
Definition: ntv2publicinterface.h:335
NTV2EmbeddedAudioInputToString
std::string NTV2EmbeddedAudioInputToString(const NTV2EmbeddedAudioInput inValue, const bool inCompactDisplay=false)
Definition: ntv2utils.cpp:6717
NTV2_AUDIO_ANALOG
@ NTV2_AUDIO_ANALOG
Obtain audio samples from the device analog input(s), if available.
Definition: ntv2enums.h:1950
kRegCh5Control
@ kRegCh5Control
Definition: ntv2publicinterface.h:506
CNTV2KonaFlashProgram
Definition: ntv2konaflashprogram.h:47
CNTV2SupportLogger::LoadFromLog
virtual bool LoadFromLog(const std::string &inLogFilePath, const bool bForceLoad)
Definition: ntv2supportlogger.cpp:1006
NTV2_IS_INPUT_MODE
#define NTV2_IS_INPUT_MODE(__mode__)
Definition: ntv2enums.h:1208
MacAddr
Definition: ntv2konaflashprogram.h:29
aja::to_string
std::string to_string(bool val)
Definition: common.cpp:180
NTV2EmbeddedAudioInput
NTV2EmbeddedAudioInput
This enum value determines/states which SDI video input will be used to supply audio samples to an au...
Definition: ntv2enums.h:1908
AJALabelValuePairs
std::vector< AJALabelValuePair > AJALabelValuePairs
An ordered sequence of label/value pairs.
Definition: info.h:69
xHEX0N
#define xHEX0N(__x__, __n__)
Definition: ntv2publicinterface.h:5578
kRegOutputTimingControl
@ kRegOutputTimingControl
Definition: ntv2publicinterface.h:87
CNTV2SupportLogger::AddFooter
virtual void AddFooter(const std::string &sectionName, const std::string &sectionData)
Adds footer text to my log.
Definition: ntv2supportlogger.cpp:372
NTV2AudioSystem
NTV2AudioSystem
Used to identify an Audio System on an NTV2 device. See Audio System Operation for more information.
Definition: ntv2enums.h:3809
NTV2_AUDIO_RATE_INVALID
@ NTV2_AUDIO_RATE_INVALID
Definition: ntv2enums.h:1879
NTV2_IS_SUPPORTED_NTV2FrameRate
#define NTV2_IS_SUPPORTED_NTV2FrameRate(__r__)
Definition: ntv2enums.h:429
NTV2_AudioChannel1_2
@ NTV2_AudioChannel1_2
This selects audio channels 1 and 2 (Group 1 channels 1 and 2)
Definition: ntv2enums.h:3053
NTV2_SupportLoggerSectionInfo
@ NTV2_SupportLoggerSectionInfo
Definition: ntv2supportlogger.h:18
kRegXptSelectGroup18
@ kRegXptSelectGroup18
Definition: ntv2publicinterface.h:465
kRegXptSelectGroup23
@ kRegXptSelectGroup23
Definition: ntv2publicinterface.h:529
NTV2_FRAMESIZE_INVALID
@ NTV2_FRAMESIZE_INVALID
Definition: ntv2enums.h:2076
NTV2_MODE_DISPLAY
@ NTV2_MODE_DISPLAY
Playout (output) mode, which reads from device SDRAM.
Definition: ntv2enums.h:1200
NTV2ModeToString
std::string NTV2ModeToString(const NTV2Mode inValue, const bool inCompactDisplay=false)
Definition: ntv2utils.cpp:6509
ChannelToPerFrameTCList
map< NTV2Channel, FrameToTCList > ChannelToPerFrameTCList
Definition: ntv2supportlogger.cpp:37
NTV2AudioSource
NTV2AudioSource
This enum value determines/states where an audio system will obtain its audio samples.
Definition: ntv2enums.h:1946
ntv2registerexpert.h
Declares the CNTV2RegisterExpert class.
SAREK_2022_2
#define SAREK_2022_2
Definition: ntv2registersmb.h:199
CNTV2MacDriverInterface::WriteRegister
virtual bool WriteRegister(const ULWord inRegNum, const ULWord inValue, const ULWord inMask=0xFFFFFFFF, const ULWord inShift=0)
Updates or replaces all or part of the 32-bit contents of a specific register (real or virtual) on th...
Definition: ntv2macdriverinterface.cpp:754
getMode
static NTV2Mode getMode(CNTV2Card &device, const NTV2Channel inChannel)
Definition: ntv2supportlogger.cpp:137
NTV2_SupportLoggerSectionAudio
@ NTV2_SupportLoggerSectionAudio
Definition: ntv2supportlogger.h:20
SDRAMAuditor::AssessDevice
bool AssessDevice(CNTV2Card &inDevice, const bool inIgnoreStoppedAudioBuffers=false)
Assesses the given device.
Definition: ntv2card.cpp:551
eFPGAVideoProc
@ eFPGAVideoProc
Definition: ntv2enums.h:3762
FrameToTCList
map< uint16_t, NTV2TimeCodeList > FrameToTCList
Definition: ntv2supportlogger.cpp:34
NTV2_IS_OUTPUT_MODE
#define NTV2_IS_OUTPUT_MODE(__mode__)
Definition: ntv2enums.h:1209
CNTV2DriverInterface::DriverGetBitFileInformation
virtual bool DriverGetBitFileInformation(BITFILE_INFO_STRUCT &outBitFileInfo, const NTV2BitFileType inBitFileType=NTV2_VideoProcBitFile)
Answers with the currently-installed bitfile information.
Definition: ntv2driverinterface.cpp:586
NTV2DeviceCanDoPCMControl
bool NTV2DeviceCanDoPCMControl(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:4245
kRegAud2Control
@ kRegAud2Control
Definition: ntv2publicinterface.h:334
BITFILE_INFO_STRUCT
Definition: ntv2publicinterface.h:4772
NTV2AudioBufferSize
NTV2AudioBufferSize
Represents the size of the audio buffer used by a device audio system for storing captured samples or...
Definition: ntv2enums.h:1859
kRegAud3Delay
@ kRegAud3Delay
Definition: ntv2publicinterface.h:402
kRegMixer3Coefficient
@ kRegMixer3Coefficient
Definition: ntv2publicinterface.h:630
kRegAud6Delay
@ kRegAud6Delay
Definition: ntv2publicinterface.h:640
CNTV2RegisterExpert::GetDisplayValue
static std::string GetDisplayValue(const uint32_t inRegNum, const uint32_t inRegValue, const NTV2DeviceID inDeviceID=DEVICE_ID_NOTFOUND)
Definition: ntv2registerexpert.cpp:4512
getBitfileDate
static bool getBitfileDate(CNTV2Card &device, string &outDateString, NTV2XilinxFPGA whichFPGA)
Definition: ntv2supportlogger.cpp:259
NTV2DeviceGetMaxAudioChannels
UWord NTV2DeviceGetMaxAudioChannels(const NTV2DeviceID inDeviceID)
Definition: ntv2devicefeatures.hpp:8796
NTV2RegInfo
Everything needed to call CNTV2Card::ReadRegister or CNTV2Card::WriteRegister functions.
Definition: ntv2publicinterface.h:3900
NTV2_IS_VALID_VIDEO_FORMAT
#define NTV2_IS_VALID_VIDEO_FORMAT(__f__)
Definition: ntv2enums.h:688
CNTV2SupportLogger::AppendToSection
virtual void AppendToSection(uint32_t section, const std::string &sectionData)
Appends arbitrary string data to my support log, after a given section.
Definition: ntv2supportlogger.cpp:350
NTV2SupportLoggerSections
NTV2SupportLoggerSections
Definition: ntv2supportlogger.h:16
AUTOCIRCULATE_STATUS::GetAudioSystem
NTV2AudioSystem GetAudioSystem(void) const
Definition: ntv2publicinterface.h:7206
AUTOCIRCULATE_STATUS::IsOutput
bool IsOutput(void) const
Definition: ntv2publicinterface.h:7296
kRegSarekDNAHi
#define kRegSarekDNAHi
Definition: ntv2registersmb.h:110
kRegVidProcXptControl
@ kRegVidProcXptControl
Definition: ntv2publicinterface.h:83
getPixelFormat
static NTV2PixelFormat getPixelFormat(CNTV2Card &device, const NTV2Channel inChannel)
Definition: ntv2supportlogger.cpp:130
NTV2AudioSystemToString
std::string NTV2AudioSystemToString(const NTV2AudioSystem inValue, const bool inCompactDisplay=false)
Definition: ntv2utils.cpp:5777
kRegAud7SourceSelect
@ kRegAud7SourceSelect
Definition: ntv2publicinterface.h:583
kRegGlobalControl
@ kRegGlobalControl
Definition: ntv2publicinterface.h:73
CNTV2SupportLogger::ToString
virtual std::string ToString(void) const
Definition: ntv2supportlogger.cpp:398
AJASystemInfo
Definition: info.h:78