Go to the documentation of this file. 1 #ifndef POSTPROCESSOR_HH
2 #define POSTPROCESSOR_HH
14 class DeinterlacedFrame;
17 class EventDistributor;
21 class SuperImposedFrame;
44 [[nodiscard]]
virtual std::unique_ptr<RawFrame>
rotateFrames(
45 std::unique_ptr<RawFrame> finishedFrame, EmuTime::param time);
81 [[nodiscard]]
unsigned getBpp()
const;
147 void executeUntil(EmuTime::param time)
override;
156 const bool canDoInterlace;
164 #endif // POSTPROCESSOR_HH
void takeRawScreenShot(unsigned height, const std::string &filename) override
Create a raw (=non-postprocessed) screenshot.
FrameSource * paintFrame
Represents a frame as it should be displayed.
Class containing all settings for renderers.
void setSuperimposeVideoFrame(const RawFrame *videoSource)
Set the Video frame on which to superimpose the 'normal' output of this PostProcessor.
Every class that wants to get scheduled at some point must inherit from this class.
std::unique_ptr< DeinterlacedFrame > deinterlacedFrame
Combined the last two frames in a deinterlaced frame.
const RawFrame * superImposeVideoFrame
Video frame on which to superimpose the (VDP) output.
std::unique_ptr< Deflicker > deflicker
Combine the last 4 frames into one 'flicker-free' frame.
~PostProcessor() override
unsigned getBpp() const
Get the number of bits per pixel for the pixels in these frames.
const FrameSource * superImposeVdpFrame
std::unique_ptr< SuperImposedFrame > superImposedFrame
Result of superimposing 2 frames.
void setSuperimposeVdpFrame(const FrameSource *vdpSource)
Set the VDP frame on which to superimpose the 'normal' output of this PostProcessor.
constexpr const char *const filename
FrameSource * getPaintFrame() const
Get the frame that would be displayed.
Abstract base class for post processors.
A video frame as output by the VDP scanline conversion unit, before any postprocessing filters are ap...
std::unique_ptr< RawFrame > lastFrames[4]
The last 4 fully rendered (unscaled) MSX frames.
virtual std::unique_ptr< RawFrame > rotateFrames(std::unique_ptr< RawFrame > finishedFrame, EmuTime::param time)
Sets up the "abcdFrame" variables for a new frame.
std::unique_ptr< DoubledFrame > interlacedFrame
Each line of the last frame twice, to get double vertical resolution.
Represents the output window/screen of openMSX.
bool isRecording() const
Is recording active.
Interface for getting lines from a video frame.
A frame buffer where pixels can be written to.
static unsigned getLineWidth(FrameSource *frame, unsigned y, unsigned step)
Returns the maximum width for lines [y..y+step).
PostProcessor(MSXMotherBoard &motherBoard, Display &display, OutputSurface &screen, const std::string &videoSource, unsigned maxWidth, unsigned height, bool canDoInterlace)
void setRecorder(AviRecorder *recorder_)
Start/stop recording.
RenderSettings & renderSettings
Render settings.
This file implemented 3 utility functions:
OutputSurface & screen
The surface which is visible to the user.
AviRecorder * recorder
Video recorder, nullptr when not recording.