input testing
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include <chrono>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
namespace RenderCadenceCompositor
|
||||
{
|
||||
@@ -23,6 +24,19 @@ struct CadenceTelemetrySnapshot
|
||||
uint64_t dropped = 0;
|
||||
uint64_t shaderBuildsCommitted = 0;
|
||||
uint64_t shaderBuildFailures = 0;
|
||||
uint64_t inputFramesReceived = 0;
|
||||
uint64_t inputFramesDropped = 0;
|
||||
double inputLatestAgeMilliseconds = 0.0;
|
||||
double inputUploadMilliseconds = 0.0;
|
||||
bool inputFormatSupported = true;
|
||||
bool inputSignalPresent = false;
|
||||
double inputCaptureFps = 0.0;
|
||||
double inputConvertMilliseconds = 0.0;
|
||||
double inputSubmitMilliseconds = 0.0;
|
||||
uint64_t inputNoSignalFrames = 0;
|
||||
uint64_t inputUnsupportedFrames = 0;
|
||||
uint64_t inputSubmitMisses = 0;
|
||||
std::string inputCaptureFormat = "none";
|
||||
bool deckLinkBufferedAvailable = false;
|
||||
uint64_t deckLinkBuffered = 0;
|
||||
double deckLinkScheduleCallMilliseconds = 0.0;
|
||||
@@ -88,6 +102,34 @@ public:
|
||||
const auto renderMetrics = renderThread.GetMetrics();
|
||||
snapshot.shaderBuildsCommitted = renderMetrics.shaderBuildsCommitted;
|
||||
snapshot.shaderBuildFailures = renderMetrics.shaderBuildFailures;
|
||||
snapshot.inputFramesReceived = renderMetrics.inputFramesReceived;
|
||||
snapshot.inputFramesDropped = renderMetrics.inputFramesDropped;
|
||||
snapshot.inputLatestAgeMilliseconds = renderMetrics.inputLatestAgeMilliseconds;
|
||||
snapshot.inputUploadMilliseconds = renderMetrics.inputUploadMilliseconds;
|
||||
snapshot.inputFormatSupported = renderMetrics.inputFormatSupported;
|
||||
snapshot.inputSignalPresent = renderMetrics.inputSignalPresent;
|
||||
return snapshot;
|
||||
}
|
||||
|
||||
template <typename SystemFrameExchange, typename Output, typename OutputThread, typename RenderThread, typename InputEdge>
|
||||
CadenceTelemetrySnapshot Sample(
|
||||
const SystemFrameExchange& exchange,
|
||||
const Output& output,
|
||||
const OutputThread& outputThread,
|
||||
const RenderThread& renderThread,
|
||||
const InputEdge& inputEdge)
|
||||
{
|
||||
CadenceTelemetrySnapshot snapshot = Sample(exchange, output, outputThread, renderThread);
|
||||
const auto inputMetrics = inputEdge.Metrics();
|
||||
snapshot.inputConvertMilliseconds = inputMetrics.convertMilliseconds;
|
||||
snapshot.inputSubmitMilliseconds = inputMetrics.submitMilliseconds;
|
||||
snapshot.inputNoSignalFrames = inputMetrics.noInputSourceFrames;
|
||||
snapshot.inputUnsupportedFrames = inputMetrics.unsupportedFrames;
|
||||
snapshot.inputSubmitMisses = inputMetrics.submitMisses;
|
||||
snapshot.inputCaptureFormat = inputMetrics.captureFormat ? inputMetrics.captureFormat : "none";
|
||||
if (snapshot.sampleSeconds > 0.0)
|
||||
snapshot.inputCaptureFps = static_cast<double>(inputMetrics.capturedFrames - mLastInputCapturedFrames) / snapshot.sampleSeconds;
|
||||
mLastInputCapturedFrames = inputMetrics.capturedFrames;
|
||||
return snapshot;
|
||||
}
|
||||
|
||||
@@ -97,6 +139,7 @@ private:
|
||||
Clock::time_point mLastSampleTime = Clock::now();
|
||||
uint64_t mLastRenderedFrames = 0;
|
||||
uint64_t mLastScheduledFrames = 0;
|
||||
uint64_t mLastInputCapturedFrames = 0;
|
||||
bool mHasLastSample = false;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -26,6 +26,19 @@ inline void WriteCadenceTelemetryJson(JsonWriter& writer, const CadenceTelemetry
|
||||
writer.KeyUInt("dropped", snapshot.dropped);
|
||||
writer.KeyUInt("shaderCommitted", snapshot.shaderBuildsCommitted);
|
||||
writer.KeyUInt("shaderFailures", snapshot.shaderBuildFailures);
|
||||
writer.KeyUInt("inputFramesReceived", snapshot.inputFramesReceived);
|
||||
writer.KeyUInt("inputFramesDropped", snapshot.inputFramesDropped);
|
||||
writer.KeyDouble("inputLatestAgeMs", snapshot.inputLatestAgeMilliseconds);
|
||||
writer.KeyDouble("inputUploadMs", snapshot.inputUploadMilliseconds);
|
||||
writer.KeyBool("inputFormatSupported", snapshot.inputFormatSupported);
|
||||
writer.KeyBool("inputSignalPresent", snapshot.inputSignalPresent);
|
||||
writer.KeyDouble("inputCaptureFps", snapshot.inputCaptureFps);
|
||||
writer.KeyDouble("inputConvertMs", snapshot.inputConvertMilliseconds);
|
||||
writer.KeyDouble("inputSubmitMs", snapshot.inputSubmitMilliseconds);
|
||||
writer.KeyUInt("inputNoSignalFrames", snapshot.inputNoSignalFrames);
|
||||
writer.KeyUInt("inputUnsupportedFrames", snapshot.inputUnsupportedFrames);
|
||||
writer.KeyUInt("inputSubmitMisses", snapshot.inputSubmitMisses);
|
||||
writer.KeyString("inputCaptureFormat", snapshot.inputCaptureFormat);
|
||||
writer.KeyBool("deckLinkBufferedAvailable", snapshot.deckLinkBufferedAvailable);
|
||||
writer.Key("deckLinkBuffered");
|
||||
if (snapshot.deckLinkBufferedAvailable)
|
||||
|
||||
Reference in New Issue
Block a user