1 #ifndef LASERDISCPLAYER_HH
2 #define LASERDISCPLAYER_HH
35 [[nodiscard]] int16_t
readSample(EmuTime::param time);
38 void setMuting(
bool left,
bool right, EmuTime::param time);
39 [[nodiscard]]
bool extAck(EmuTime::param )
const {
return ack; }
40 void extControl(
bool bit, EmuTime::param time);
43 template<
typename Archive>
44 void serialize(Archive& ar,
unsigned version);
83 void setImageName(std::string newImage, EmuTime::param time);
84 [[nodiscard]]
const Filename& getImageName()
const {
return oggImage; }
89 void play(EmuTime::param time);
90 void pause(EmuTime::param time);
91 void stop(EmuTime::param time);
92 void eject(EmuTime::param time);
93 void seekFrame(
size_t frame, EmuTime::param time);
94 void stepFrame(
bool forwards);
95 void seekChapter(
int chapter, EmuTime::param time);
101 void scheduleDisplayStart(EmuTime::param time);
102 [[nodiscard]]
bool isVideoOutputAvailable(EmuTime::param time);
103 void remoteButtonNEC(
unsigned code, EmuTime::param time);
105 void setAck(EmuTime::param time,
int wait);
106 [[nodiscard]]
size_t getCurrentSample(EmuTime::param time);
107 void createRenderer();
110 void generateChannels(
float** buffers,
unsigned num)
override;
111 bool updateBuffer(
unsigned length,
float* buffer,
112 EmuTime::param time)
override;
113 [[nodiscard]]
float getAmplificationFactorImpl()
const override;
119 void executeUntil(EmuTime::param time)
override {
121 player.execSyncAck(time);
127 void executeUntil(EmuTime::param time)
override {
129 player.execSyncFrame(time,
true);
135 void executeUntil(EmuTime::param time)
override {
137 player.execSyncFrame(time,
false);
141 void execSyncAck(EmuTime::param time);
142 void execSyncFrame(EmuTime::param time,
bool odd);
143 [[nodiscard]] EmuTime::param getCurrentTime()
const {
return syncAck.getCurrentTime(); }
146 int signalEvent(
const std::shared_ptr<const Event>& event) noexcept
override;
149 void preVideoSystemChange() noexcept override;
150 void postVideoSystemChange() noexcept override;
152 MSXMotherBoard& motherBoard;
155 struct Command final : RecordedCommand {
156 Command(CommandController& commandController,
157 StateChangeDistributor& stateChangeDistributor,
160 EmuTime::param time)
override;
161 [[nodiscard]] std::string help(
const std::vector<std::string>& tokens)
const override;
162 void tabCompletion(std::vector<std::string>& tokens)
const override;
165 std::unique_ptr<OggReader> video;
167 std::unique_ptr<LDRenderer> renderer;
169 void nextFrame(EmuTime::param time);
177 size_t playingFromSample;
178 size_t lastPlayedSample;
179 bool muteLeft, muteRight;
184 EmuTime remoteLastEdge;
185 unsigned remoteBitNr;
190 bool remoteExecuteDelayed;
192 int remoteVblanksBack;
201 bool stillOnWaitFrame;
228 BooleanSetting autoRunSetting;
229 LoadingIndicator loadingIndicator;
This class represents a filename.
void setMuting(bool left, bool right, EmuTime::param time)
int16_t readSample(EmuTime::param time)
void extControl(bool bit, EmuTime::param time)
MSXMotherBoard & getMotherBoard()
LaserdiscPlayer(const HardwareConfig &hwConf, PioneerLDControl &ldControl)
const RawFrame * getRawFrame() const
bool extAck(EmuTime::param) const
void serialize(Archive &ar, unsigned version)
A video frame as output by the VDP scanline conversion unit, before any postprocessing filters are ap...
T length(const vecN< N, T > &x)
This file implemented 3 utility functions:
SERIALIZE_CLASS_VERSION(CassettePlayer, 2)
#define OUTER(type, member)