#pragma once #include "OpenGLRenderPipeline.h" #include #include class HealthTelemetry; class RenderEngine; class OpenGLVideoIOBridge { public: OpenGLVideoIOBridge( VideoIODevice& videoIO, RenderEngine& renderEngine, HealthTelemetry& healthTelemetry); void VideoFrameArrived(const VideoIOFrame& inputFrame); void PlayoutFrameCompleted(const VideoIOCompletion& completion); private: void RecordFramePacing(VideoIOCompletionResult completionResult); VideoIODevice& mVideoIO; RenderEngine& mRenderEngine; HealthTelemetry& mHealthTelemetry; std::chrono::steady_clock::time_point mLastPlayoutCompletionTime; double mCompletionIntervalMilliseconds = 0.0; double mSmoothedCompletionIntervalMilliseconds = 0.0; double mMaxCompletionIntervalMilliseconds = 0.0; uint64_t mLateFrameCount = 0; uint64_t mDroppedFrameCount = 0; uint64_t mFlushedFrameCount = 0; };