Audits an NTV2 device's SDRAM utilization, and can report contiguous regions of SDRAM, whether unused/free, those being read/written by AutoCirculate, those being read/written by non-AutoCirculating FrameStores, those that are in conflict (AutoCirculate, FrameStore and/or Audio collisions), plus invalid/out-of-bounds regions being accessed.
More...
|
| SDRAMAuditor () |
| My default constructor. I am not ready for use until my SDRAMAuditor::Assess method has been called. More...
|
|
| SDRAMAuditor (CNTV2Card &inDevice) |
| Constructs me and automatically assesses the given device. More...
|
|
bool | AssessDevice (CNTV2Card &inDevice, const bool inIgnoreStoppedAudioBuffers=(0)) |
| Assesses the given device. More...
|
|
bool | GetRegions (ULWordSequence &outFree, ULWordSequence &outUsed, ULWordSequence &outBad) const |
| Answers with the lists of free, in-use and conflicting 8MB memory blocks. Each ULWord represents a region – an 8MB block offset in the most-significant 16 bits, and the number of 8MB blocks in the least-significant 16 bits. More...
|
|
bool | GetFreeRegions (ULWordSequence &outBlks) const |
| Answers with the list of free memory regions. More...
|
|
bool | GetBadRegions (ULWordSequence &outBlks) const |
| Answers with the list of colliding and illegal memory regions. More...
|
|
bool | GetUsedRegions (ULWordSequence &outBlks) const |
| Answers with the list of used memory regions. More...
|
|
bool | GetTagsForFrameIndex (const UWord inIndex, NTV2StringSet &outTags) const |
| Answers with the list of tags for the given frame number. More...
|
|
size_t | GetTagCount (const UWord inIndex) const |
|
bool | TranslateRegions (ULWordSequence &outRgns, const ULWordSequence &inRgns, const bool inIsQuad, const bool inIsQuadQuad) const |
| Translates an 8MB-chunked list of regions into another list of regions with frame indexes and sizes expressed in frame units determined by the device's intrinsic frame size (measured when AssessDevice was called) and also based on if the given quad or quad-quad mode is active. More...
|
|
std::ostream & | RawDump (std::ostream &oss) const |
| Dumps a human-readable list of regions into the given stream. More...
|
|
std::ostream & | DumpBlocks (std::ostream &oss) const |
| Dumps all 8MB blocks/frames and their tags, if any, into the given stream. More...
|
|
Audits an NTV2 device's SDRAM utilization, and can report contiguous regions of SDRAM, whether unused/free, those being read/written by AutoCirculate, those being read/written by non-AutoCirculating FrameStores, those that are in conflict (AutoCirculate, FrameStore and/or Audio collisions), plus invalid/out-of-bounds regions being accessed.
This implementation currently employs a least-common-denominator 8MB frame size. This was chosen because the SDRAM complement across all currently-supported devices is evenly divisible by (at most) 8MB. Any 8MB block can be translated into larger denominations as needed (e.g. 16MB, 32MB, 64MB, etc.). A memory region is described by an offset and length, both unsigned 16-bit values encoded into a 32-bit ULWord. Region lists are specified or provided by the ULWordSequence data type (a std::vector of ULWord values). Memory regions can be tagged with one or more std::string tags in an NTV2StringList (a std::vector of std::string values). A region with no tags (an empty list) is considered unallocated/free/unused. A tag string describes a region that is considered in-use (or potentially in-use).
- Audio System: "Aud1 Write" indicates Audio System 1 is actively capturing; "Aud2 Read" indicates Audio System 2 is actively playing; "Aud3" indicates the memory region that would be used by Audio System 3 if it were actively capturing or playing.
- FrameStore: "Ch2 Read" indicates FrameStore 2 is enabled in playback mode; "Ch3 Write" indicates FrameStore 3 is enabled and configured for capture/ingest.
- AutoCirculate: "AC1 Write" indicates AutoCirculate channel 1 is initialized for capture.
- A region with only one tag is considered "in-use", or, in the case of an "Aud" tag without "Read" or "Write" is potentially in use.
- A region having more than one tag may be "in-conflict" and considered "bad" or potentially "problematic".
Definition at line 6591 of file ntv2card.h.