42 lines
963 B
C++
42 lines
963 B
C++
#pragma once
|
|
|
|
#include "VideoIOTypes.h"
|
|
|
|
#include <functional>
|
|
|
|
class OpenGLRenderer;
|
|
class RuntimeHost;
|
|
|
|
struct RenderPipelineFrameContext
|
|
{
|
|
VideoIOState videoState;
|
|
VideoIOCompletion completion;
|
|
};
|
|
|
|
class OpenGLRenderPipeline
|
|
{
|
|
public:
|
|
using RenderEffectCallback = std::function<void()>;
|
|
using OutputReadyCallback = std::function<void()>;
|
|
using PaintCallback = std::function<void()>;
|
|
|
|
OpenGLRenderPipeline(
|
|
OpenGLRenderer& renderer,
|
|
RuntimeHost& runtimeHost,
|
|
RenderEffectCallback renderEffect,
|
|
OutputReadyCallback outputReady,
|
|
PaintCallback paint);
|
|
|
|
bool RenderFrame(const RenderPipelineFrameContext& context, VideoIOOutputFrame& outputFrame);
|
|
|
|
private:
|
|
void PackOutputForV210(const VideoIOState& state);
|
|
void ReadOutputFrame(const VideoIOState& state, VideoIOOutputFrame& outputFrame);
|
|
|
|
OpenGLRenderer& mRenderer;
|
|
RuntimeHost& mRuntimeHost;
|
|
RenderEffectCallback mRenderEffect;
|
|
OutputReadyCallback mOutputReady;
|
|
PaintCallback mPaint;
|
|
};
|