Cogs.Core
VideoCaptureComponent.cpp
1#include "VideoCaptureComponent.h"
2
3#include "Types.h"
4
5using namespace Cogs::Reflection;
6
7void Cogs::Core::VideoCaptureComponent::registerType()
8{
9 static constexpr EnumeratorDef codecEnum[] = {
10 { "H264", Codec::H264 },
11 { "HEVC", Codec::HEVC },
12 };
13 TypeDatabase::createType<Codec>().setEnumerators(codecEnum);
14
15 static constexpr EnumeratorDef h264ProfileEnum[] = {
16 { "Baseline", H264Profile::Baseline },
17 { "Main", H264Profile::Main },
18 { "High", H264Profile::High },
19 };
20 TypeDatabase::createType<H264Profile>().setEnumerators(h264ProfileEnum);
21
22 static constexpr EnumeratorDef h264PresetEnum[] = {
23 { "Default", H264Preset::Default },
24 { "HighQuality", H264Preset::HighQuality },
25 { "HighPerformance", H264Preset::HighPerformance },
26 { "LowLatencyHighDefault", H264Preset::LowLatencyHighDefault },
27 { "LowLatencyHighQuality", H264Preset::LowLatencyHighQuality },
28 { "LowLatencyHighPerformance", H264Preset::LowLatencyHighPerformance },
29 { "LosslessDefault", H264Preset::LosslessDefault },
30 { "LosslessHighPerformance", H264Preset::LosslessHighPerformance },
31 };
32 TypeDatabase::createType<H264Preset>().setEnumerators(h264PresetEnum);
33
34 static constexpr EnumeratorDef bFrameReferenceEnum[] = {
35 { "Disabled", BFrameReference::Disabled },
36 { "Each", BFrameReference::Each },
37 { "Middle", BFrameReference::Middle },
38 };
39 TypeDatabase::createType<BFrameReference>().setEnumerators(bFrameReferenceEnum);
40
41 Field fields[] = {
42 Field(Name("codec"), &VideoCaptureComponent::codec),
43 Field(Name("profile"), &VideoCaptureComponent::profile),
44 Field(Name("preset"), &VideoCaptureComponent::preset),
45 Field(Name("bFrameReference"), &VideoCaptureComponent::bFrameReference),
46 Field(Name("width"), &VideoCaptureComponent::width),
47 Field(Name("height"), &VideoCaptureComponent::height),
48 Field(Name("maxWidth"), &VideoCaptureComponent::maxWidth),
49 Field(Name("maxHeight"), &VideoCaptureComponent::maxHeight),
50 Field(Name("bitrate"), &VideoCaptureComponent::bitrate),
51 Field(Name("maxBitrate"), &VideoCaptureComponent::maxBitrate),
52 Field(Name("bFrameCount"), &VideoCaptureComponent::bFrameCount),
53 //Field(Name("keyframeInterval"), &VideoCaptureComponent::keyframeInterval),
54 Field(Name("lookahead"), &VideoCaptureComponent::lookahead),
55 Field(Name("updateTimestamp"), &VideoCaptureComponent::updateTimestamp),
56 Field(Name("reconfig"), &VideoCaptureComponent::reconfig),
57 Field(Name("restart"), &VideoCaptureComponent::restart),
58
60 Field(Name("duration"), &VideoCaptureComponent::duration),
61 Field(Name("foreceIntra"), &VideoCaptureComponent::forceIntra),
62 Field(Name("foreceIDR"), &VideoCaptureComponent::forceIDR),
63 Field(Name("outputSPSPPS"), &VideoCaptureComponent::outputSPSPPS),
64 Field(Name("endOfStream"), &VideoCaptureComponent::endOfStream),
65
68 //Field(Name("callback"), &VideoCaptureComponent::callback),
69 };
70
71 TypeDatabase::createType<VideoCaptureComponent>()
72 .setBase<Component>()
73 .setFields(fields);
74}
Field definition describing a single data member of a data structure.
Definition: Field.h:68
Contains reflection support.
Definition: Component.h:11
std::string recordPath
Path to directory where captured video is stored.
bool recordToDisk
Write video frames to disk.
Represents an unique name.
Definition: Name.h:70