v1.2版本改为通过xbox系列手柄进行遥控,并增加智能模式和手动模式

This commit is contained in:
myperworld committed 2025-10-10 21:58:44 +08:00
1 parent 76603d3c31
commit 1a97bc32c3
1839 files changed
+478852 -3

No files matched your search

@@ -0,0 +1,65 @@
#pragma once
#include "fl/bytestream.h"
#include "fl/file_system.h"
#include "fx/video/frame_interpolator.h"
#include "fx/video/pixel_stream.h"
#include "fl/stdint.h"
#include "fl/namespace.h"
namespace fl {
FASTLED_SMART_PTR(FileHandle);
FASTLED_SMART_PTR(ByteStream);
} // namespace fl
namespace fl {
FASTLED_SMART_PTR(VideoImpl);
FASTLED_SMART_PTR(FrameInterpolator);
FASTLED_SMART_PTR(PixelStream)
class VideoImpl {
public:
enum {
kSizeRGB8 = 3,
};
// frameHistoryCount is the number of frames to keep in the buffer after
// draw. This allows for time based effects like syncing video speed to
// audio triggers.
VideoImpl(size_t pixelsPerFrame, float fpsVideo,
size_t frameHistoryCount = 0);
~VideoImpl();
// Api
void begin(fl::FileHandlePtr h);
void beginStream(fl::ByteStreamPtr s);
void setFade(fl::u32 fadeInTime, fl::u32 fadeOutTime);
bool draw(fl::u32 now, CRGB *leds);
void end();
bool rewind();
// internal use
bool draw(fl::u32 now, Frame *frame);
bool full() const;
void setTimeScale(float timeScale);
float timeScale() const { return mTimeScale; }
size_t pixelsPerFrame() const { return mPixelsPerFrame; }
void pause(fl::u32 now);
void resume(fl::u32 now);
bool needsFrame(fl::u32 now) const;
int32_t durationMicros() const; // -1 if this is a stream.
private:
bool updateBufferIfNecessary(fl::u32 prev, fl::u32 now);
bool updateBufferFromFile(fl::u32 now, bool forward);
bool updateBufferFromStream(fl::u32 now);
fl::u32 mPixelsPerFrame = 0;
PixelStreamPtr mStream;
fl::u32 mPrevNow = 0;
FrameInterpolatorPtr mFrameInterpolator;
TimeWarpPtr mTime;
fl::u32 mFadeInTime = 1000;
fl::u32 mFadeOutTime = 1000;
float mTimeScale = 1.0f;
};
} // namespace fl