Add synthetic v210 feed source
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
#pragma once
|
||||
|
||||
#include "IVideoFeed.hpp"
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
|
||||
class SyntheticV210Feed : public IVideoFeed
|
||||
{
|
||||
public:
|
||||
SyntheticV210Feed(
|
||||
uint32_t feedIndex,
|
||||
uint32_t frameWidth,
|
||||
uint32_t frameHeight);
|
||||
|
||||
const VideoFrame& getFrame(uint32_t frameCounter) override;
|
||||
FeedRuntimeStatus status() const override;
|
||||
std::string displayName() const override;
|
||||
std::string sourceInfo() const override;
|
||||
uint64_t frameVersion() const override;
|
||||
bool hasGrainIndex() const override;
|
||||
uint64_t grainIndex() const override;
|
||||
bool hasFrameRate() const override;
|
||||
double frameRate() const override;
|
||||
float srcAspectRatio() const override;
|
||||
bool hasV210() const override;
|
||||
const uint8_t* v210Data() const override;
|
||||
bool supportsDirectV210Read() const override;
|
||||
bool readV210FrameInto(
|
||||
uint32_t frameCounter,
|
||||
void* destination,
|
||||
size_t destinationSize) override;
|
||||
uint32_t v210Width() const override;
|
||||
uint32_t v210Height() const override;
|
||||
uint32_t v210Stride() const override;
|
||||
|
||||
private:
|
||||
uint64_t syntheticIndex(uint32_t frameCounter) const;
|
||||
void generatePayloads();
|
||||
void encodeLine(
|
||||
uint32_t y,
|
||||
uint32_t patternIndex,
|
||||
uint8_t* line) const;
|
||||
|
||||
uint32_t mFeedIndex = 0;
|
||||
uint32_t mSourceWidth = 1920;
|
||||
uint32_t mSourceHeight = 1080;
|
||||
uint32_t mSourceStride = 0;
|
||||
double mFrameRate = 60.0;
|
||||
uint64_t mFrameVersion = 0;
|
||||
uint64_t mGrainIndex = 0;
|
||||
std::vector<std::vector<uint8_t>> mPayloads;
|
||||
VideoFrame mFrame;
|
||||
};
|
||||
Reference in New Issue
Block a user