openMSX
Public Member Functions | List of all members
openmsx::FBPostProcessor< Pixel > Class Template Referencefinal

Rasterizer using SDL. More...

#include <FBPostProcessor.hh>

Inheritance diagram for openmsx::FBPostProcessor< Pixel >:
Inheritance graph
[legend]
Collaboration diagram for openmsx::FBPostProcessor< Pixel >:
Collaboration graph
[legend]

Public Member Functions

 FBPostProcessor (MSXMotherBoard &motherBoard, Display &display, OutputSurface &screen, const std::string &videoSource, unsigned maxWidth, unsigned height, bool canDoInterlace)
 
 ~FBPostProcessor () override
 
 FBPostProcessor (const FBPostProcessor &)=delete
 
FBPostProcessoroperator= (const FBPostProcessor &)=delete
 
void paint (OutputSurface &output) override
 Paint this layer. More...
 
std::unique_ptr< RawFramerotateFrames (std::unique_ptr< RawFrame > finishedFrame, EmuTime::param time) override
 Sets up the "abcdFrame" variables for a new frame. More...
 
- Public Member Functions inherited from openmsx::PostProcessor
 ~PostProcessor () override
 
virtual std::unique_ptr< RawFramerotateFrames (std::unique_ptr< RawFrame > finishedFrame, EmuTime::param time)
 Sets up the "abcdFrame" variables for a new frame. More...
 
void setSuperimposeVideoFrame (const RawFrame *videoSource)
 Set the Video frame on which to superimpose the 'normal' output of this PostProcessor. More...
 
void setSuperimposeVdpFrame (const FrameSource *vdpSource)
 Set the VDP frame on which to superimpose the 'normal' output of this PostProcessor. More...
 
void setRecorder (AviRecorder *recorder_)
 Start/stop recording. More...
 
bool isRecording () const
 Is recording active. More...
 
unsigned getBpp () const
 Get the number of bits per pixel for the pixels in these frames. More...
 
FrameSourcegetPaintFrame () const
 Get the frame that would be displayed. More...
 
void takeRawScreenShot (unsigned height, const std::string &filename) override
 Create a raw (=non-post-processed) screenshot. More...
 
CliCommgetCliComm ()
 
- Public Member Functions inherited from openmsx::VideoLayer
 VideoLayer (const VideoLayer &)=delete
 
VideoLayeroperator= (const VideoLayer &)=delete
 
int getVideoSource () const
 Returns the ID for this VideoLayer. More...
 
int getVideoSourceSetting () const
 
virtual void takeRawScreenShot (unsigned height, const std::string &filename)=0
 Create a raw (=non-post-processed) screenshot. More...
 
void setVideo9000Active (int video9000Source_, Video9000Active active)
 
bool needRender () const
 
bool needRecord () const
 
- Public Member Functions inherited from openmsx::Layer
virtual ~Layer ()=default
 
virtual void paint (OutputSurface &output)=0
 Paint this layer. More...
 
ZIndex getZ () const
 Query the Z-index of this layer. More...
 
bool isActive () const
 
Coverage getCoverage () const
 Query the coverage of this layer. More...
 
void setDisplay (LayerListener &display_)
 Store pointer to Display. More...
 

Additional Inherited Members

- Public Types inherited from openmsx::VideoLayer
enum  Video9000Active { INACTIVE , ACTIVE_FRONT , ACTIVE_BACK }
 
- Public Types inherited from openmsx::Layer
enum  ZIndex {
  Z_DUMMY = -1 , Z_BACKGROUND = 0 , Z_MSX_PASSIVE = 30 , Z_MSX_ACTIVE = 40 ,
  Z_OSDGUI = 50 , Z_CONSOLE = 100
}
 Determines stacking order of layers: layers with higher Z-indices are closer to the viewer. More...
 
enum  Coverage { COVER_FULL , COVER_PARTIAL , COVER_NONE }
 Describes how much of the screen is currently covered by a particular layer. More...
 
- Protected Member Functions inherited from openmsx::PostProcessor
 PostProcessor (MSXMotherBoard &motherBoard, Display &display, OutputSurface &screen, const std::string &videoSource, unsigned maxWidth, unsigned height, bool canDoInterlace)
 
- Protected Member Functions inherited from openmsx::VideoLayer
 VideoLayer (MSXMotherBoard &motherBoard, const std::string &videoSource)
 
 ~VideoLayer () override
 
void update (const Setting &setting) noexcept override
 
- Protected Member Functions inherited from openmsx::Layer
 Layer (Coverage coverage_=COVER_NONE, ZIndex z_=Z_DUMMY)
 Construct a layer. More...
 
void setCoverage (Coverage coverage_)
 Changes the current coverage of this layer. More...
 
void setZ (ZIndex z)
 Changes the current Z-index of this layer. More...
 
- Protected Member Functions inherited from openmsx::Observer< Setting >
 Observer ()=default
 
 ~Observer ()=default
 
 Observer (const Observer &)=delete
 
Observeroperator= (const Observer &)=delete
 
virtual void update (const Setting &subject) noexcept=0
 
virtual void subjectDeleted (const Setting &)
 
- Static Protected Member Functions inherited from openmsx::PostProcessor
static unsigned getLineWidth (FrameSource *frame, unsigned y, unsigned step)
 Returns the maximum width for lines [y..y+step). More...
 
- Protected Attributes inherited from openmsx::PostProcessor
RenderSettingsrenderSettings
 Render settings. More...
 
OutputSurfacescreen
 The surface which is visible to the user. More...
 
std::array< std::unique_ptr< RawFrame >, 4 > lastFrames
 The last 4 fully rendered (unscaled) MSX frames. More...
 
std::unique_ptr< DeinterlacedFramedeinterlacedFrame
 Combined the last two frames in a deinterlaced frame. More...
 
std::unique_ptr< DoubledFrameinterlacedFrame
 Each line of the last frame twice, to get double vertical resolution. More...
 
std::unique_ptr< Deflickerdeflicker
 Combine the last 4 frames into one 'flicker-free' frame. More...
 
std::unique_ptr< SuperImposedFramesuperImposedFrame
 Result of superimposing 2 frames. More...
 
FrameSourcepaintFrame = nullptr
 Represents a frame as it should be displayed. More...
 
AviRecorderrecorder = nullptr
 Video recorder, nullptr when not recording. More...
 
const RawFramesuperImposeVideoFrame = nullptr
 Video frame on which to superimpose the (VDP) output. More...
 
const FrameSourcesuperImposeVdpFrame = nullptr
 
int interleaveCount = 0
 
int lastFramesCount = 0
 
unsigned maxWidth
 
unsigned height
 

Detailed Description

template<std::unsigned_integral Pixel>
class openmsx::FBPostProcessor< Pixel >

Rasterizer using SDL.

Definition at line 21 of file FBPostProcessor.hh.

Constructor & Destructor Documentation

◆ FBPostProcessor() [1/2]

template<std::unsigned_integral Pixel>
openmsx::FBPostProcessor< Pixel >::FBPostProcessor ( MSXMotherBoard motherBoard,
Display display,
OutputSurface screen,
const std::string &  videoSource,
unsigned  maxWidth,
unsigned  height,
bool  canDoInterlace 
)

◆ ~FBPostProcessor()

template<std::unsigned_integral Pixel>
openmsx::FBPostProcessor< Pixel >::~FBPostProcessor
override

Definition at line 251 of file FBPostProcessor.cc.

◆ FBPostProcessor() [2/2]

template<std::unsigned_integral Pixel>
openmsx::FBPostProcessor< Pixel >::FBPostProcessor ( const FBPostProcessor< Pixel > &  )
delete

Member Function Documentation

◆ operator=()

template<std::unsigned_integral Pixel>
FBPostProcessor & openmsx::FBPostProcessor< Pixel >::operator= ( const FBPostProcessor< Pixel > &  )
delete

◆ paint()

template<std::unsigned_integral Pixel>
void openmsx::FBPostProcessor< Pixel >::paint ( OutputSurface output)
overridevirtual

◆ rotateFrames()

template<std::unsigned_integral Pixel>
std::unique_ptr< RawFrame > openmsx::FBPostProcessor< Pixel >::rotateFrames ( std::unique_ptr< RawFrame finishedFrame,
EmuTime::param  time 
)
overridevirtual

Sets up the "abcdFrame" variables for a new frame.

TODO: The point of passing the finished frame in and the new workFrame out is to be able to split off the scaler application as a separate class.

Parameters
finishedFrameFrame that has just become available.
timeThe moment in time the frame becomes available. Used to calculate the framerate for recording (depends on PAL/NTSC, frameskip).
Returns
RawFrame object that can be used for building the next frame.

Reimplemented from openmsx::PostProcessor.

Definition at line 335 of file FBPostProcessor.cc.

References global_urng(), openmsx::PostProcessor::rotateFrames(), and xrange().


The documentation for this class was generated from the following files: