video#

Include dependency graph for video.h:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "14" [label="atomic" tooltip="atomic"]
    "9" [label="src/logging.h" tooltip="src/logging.h"]
    "3" [label="functional" tooltip="functional"]
    "11" [label="boost/log/sinks.hpp" tooltip="boost/log/sinks.hpp"]
    "6" [label="filesystem" tooltip="filesystem"]
    "2" [label="input.h" tooltip="input.h"]
    "24" [label="variant" tooltip="variant"]
    "8" [label="string" tooltip="string"]
    "16" [label="map" tooltip="map"]
    "1" [label="src/video.h" tooltip="src/video.h" fillcolor="#BFBFBF"]
    "12" [label="src/thread_safe.h" tooltip="src/thread_safe.h"]
    "22" [label="string_view" tooltip="string_view"]
    "15" [label="condition_variable" tooltip="condition_variable"]
    "18" [label="utility.h" tooltip="utility.h"]
    "5" [label="bitset" tooltip="bitset"]
    "26" [label="libavutil/pixfmt.h" tooltip="libavutil/pixfmt.h"]
    "21" [label="optional" tooltip="optional"]
    "25" [label="src/video_colorspace.h" tooltip="src/video_colorspace.h"]
    "17" [label="vector" tooltip="vector"]
    "13" [label="array" tooltip="array"]
    "28" [label="libavcodec/avcodec.h" tooltip="libavcodec/avcodec.h"]
    "4" [label="platform/common.h" tooltip="platform/common.h"]
    "7" [label="mutex" tooltip="mutex"]
    "23" [label="type_traits" tooltip="type_traits"]
    "27" [label="moonlight-common-c/src/Limelight.h" tooltip="moonlight-common-c/src/Limelight.h"]
    "10" [label="boost/log/common.hpp" tooltip="boost/log/common.hpp"]
    "19" [label="algorithm" tooltip="algorithm"]
    "20" [label="memory" tooltip="memory"]
    "9" -> "10" [dir=forward tooltip="include"]
    "9" -> "11" [dir=forward tooltip="include"]
    "2" -> "3" [dir=forward tooltip="include"]
    "2" -> "4" [dir=forward tooltip="include"]
    "2" -> "12" [dir=forward tooltip="include"]
    "1" -> "2" [dir=forward tooltip="include"]
    "1" -> "4" [dir=forward tooltip="include"]
    "1" -> "12" [dir=forward tooltip="include"]
    "1" -> "25" [dir=forward tooltip="include"]
    "1" -> "28" [dir=forward tooltip="include"]
    "12" -> "13" [dir=forward tooltip="include"]
    "12" -> "14" [dir=forward tooltip="include"]
    "12" -> "15" [dir=forward tooltip="include"]
    "12" -> "3" [dir=forward tooltip="include"]
    "12" -> "16" [dir=forward tooltip="include"]
    "12" -> "7" [dir=forward tooltip="include"]
    "12" -> "17" [dir=forward tooltip="include"]
    "12" -> "18" [dir=forward tooltip="include"]
    "18" -> "19" [dir=forward tooltip="include"]
    "18" -> "15" [dir=forward tooltip="include"]
    "18" -> "20" [dir=forward tooltip="include"]
    "18" -> "7" [dir=forward tooltip="include"]
    "18" -> "21" [dir=forward tooltip="include"]
    "18" -> "8" [dir=forward tooltip="include"]
    "18" -> "22" [dir=forward tooltip="include"]
    "18" -> "23" [dir=forward tooltip="include"]
    "18" -> "24" [dir=forward tooltip="include"]
    "18" -> "17" [dir=forward tooltip="include"]
    "25" -> "26" [dir=forward tooltip="include"]
    "4" -> "5" [dir=forward tooltip="include"]
    "4" -> "6" [dir=forward tooltip="include"]
    "4" -> "3" [dir=forward tooltip="include"]
    "4" -> "7" [dir=forward tooltip="include"]
    "4" -> "8" [dir=forward tooltip="include"]
    "4" -> "9" [dir=forward tooltip="include"]
    "4" -> "12" [dir=forward tooltip="include"]
    "4" -> "18" [dir=forward tooltip="include"]
    "4" -> "25" [dir=forward tooltip="include"]
    "4" -> "27" [dir=forward tooltip="include"]
}

This graph shows which files directly or indirectly include video.h:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "13" [label="src/platform/windows/display.h" tooltip="src/platform/windows/display.h"]
    "17" [label="src/stream.h" tooltip="src/stream.h"]
    "2" [label="src/main.cpp" tooltip="src/main.cpp"]
    "16" [label="src/platform/windows/display_vram.cpp" tooltip="src/platform/windows/display_vram.cpp"]
    "11" [label="src/platform/macos/display.mm" tooltip="src/platform/macos/display.mm"]
    "7" [label="src/platform/linux/kmsgrab.cpp" tooltip="src/platform/linux/kmsgrab.cpp"]
    "8" [label="src/platform/linux/vaapi.cpp" tooltip="src/platform/linux/vaapi.cpp"]
    "1" [label="src/video.h" tooltip="src/video.h" fillcolor="#BFBFBF"]
    "19" [label="src/upnp.cpp" tooltip="src/upnp.cpp"]
    "9" [label="src/platform/linux/wlgrab.cpp" tooltip="src/platform/linux/wlgrab.cpp"]
    "12" [label="src/platform/macos/nv12_zero_device.cpp" tooltip="src/platform/macos/nv12_zero_device.cpp"]
    "15" [label="src/platform/windows/display_ram.cpp" tooltip="src/platform/windows/display_ram.cpp"]
    "14" [label="src/platform/windows/display_base.cpp" tooltip="src/platform/windows/display_base.cpp"]
    "4" [label="src/video.cpp" tooltip="src/video.cpp"]
    "3" [label="src/nvenc/nvenc_base.h" tooltip="src/nvenc/nvenc_base.h"]
    "5" [label="src/platform/linux/cuda.cpp" tooltip="src/platform/linux/cuda.cpp"]
    "18" [label="src/stream.cpp" tooltip="src/stream.cpp"]
    "6" [label="src/platform/linux/graphics.cpp" tooltip="src/platform/linux/graphics.cpp"]
    "10" [label="src/platform/linux/x11grab.cpp" tooltip="src/platform/linux/x11grab.cpp"]
    "13" -> "14" [dir=back tooltip="include"]
    "13" -> "15" [dir=back tooltip="include"]
    "13" -> "16" [dir=back tooltip="include"]
    "17" -> "18" [dir=back tooltip="include"]
    "17" -> "19" [dir=back tooltip="include"]
    "1" -> "2" [dir=back tooltip="include"]
    "1" -> "3" [dir=back tooltip="include"]
    "1" -> "5" [dir=back tooltip="include"]
    "1" -> "6" [dir=back tooltip="include"]
    "1" -> "7" [dir=back tooltip="include"]
    "1" -> "8" [dir=back tooltip="include"]
    "1" -> "9" [dir=back tooltip="include"]
    "1" -> "10" [dir=back tooltip="include"]
    "1" -> "11" [dir=back tooltip="include"]
    "1" -> "12" [dir=back tooltip="include"]
    "1" -> "13" [dir=back tooltip="include"]
    "1" -> "14" [dir=back tooltip="include"]
    "1" -> "16" [dir=back tooltip="include"]
    "1" -> "17" [dir=back tooltip="include"]
    "1" -> "4" [dir=back tooltip="include"]
    "3" -> "4" [dir=back tooltip="include"]
}

todo

namespace video#

Typedefs

using hdr_info_t = std::unique_ptr<hdr_info_raw_t>#
using packet_t = std::unique_ptr<packet_raw_t>#
struct config_t#

Public Members

int bitrate#
int dynamicRange#
int encoderCscMode#
int framerate#
int height#
int numRefFrames#
int slicesPerFrame#
int videoFormat#
int width#
struct hdr_info_raw_t#

Public Functions

inline explicit hdr_info_raw_t(bool enabled)#
inline explicit hdr_info_raw_t(bool enabled, const SS_HDR_METADATA &metadata)#

Public Members

bool enabled#
SS_HDR_METADATA metadata#
struct packet_raw_avcodec : public video::packet_raw_t#

Inheritence diagram for video::packet_raw_avcodec:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="video::packet_raw_avcodec" tooltip="video::packet_raw_avcodec" fillcolor="#BFBFBF"]
    "2" [label="video::packet_raw_t" tooltip="video::packet_raw_t"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
}

Collaboration diagram for video::packet_raw_avcodec:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="video::packet_raw_avcodec" tooltip="video::packet_raw_avcodec" fillcolor="#BFBFBF"]
    "2" [label="video::packet_raw_t" tooltip="video::packet_raw_t"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
}

Public Functions

inline virtual uint8_t *data() override#
inline virtual size_t data_size() override#
inline virtual int64_t frame_index() override#
inline virtual bool is_idr() override#
inline packet_raw_avcodec()#
inline ~packet_raw_avcodec()#

Public Members

AVPacket *av_packet#
struct packet_raw_generic : public video::packet_raw_t#

Inheritence diagram for video::packet_raw_generic:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="video::packet_raw_generic" tooltip="video::packet_raw_generic" fillcolor="#BFBFBF"]
    "2" [label="video::packet_raw_t" tooltip="video::packet_raw_t"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
}

Collaboration diagram for video::packet_raw_generic:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="video::packet_raw_generic" tooltip="video::packet_raw_generic" fillcolor="#BFBFBF"]
    "2" [label="video::packet_raw_t" tooltip="video::packet_raw_t"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
}

Public Functions

inline virtual uint8_t *data() override#
inline virtual size_t data_size() override#
inline virtual int64_t frame_index() override#
inline virtual bool is_idr() override#
inline packet_raw_generic(std::vector<uint8_t> &&frame_data, int64_t frame_index, bool idr)#

Public Members

std::vector<uint8_t> frame_data#
bool idr#
int64_t index#
struct packet_raw_t#

Inheritence diagram for video::packet_raw_t:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "3" [label="video::packet_raw_generic" tooltip="video::packet_raw_generic"]
    "2" [label="video::packet_raw_avcodec" tooltip="video::packet_raw_avcodec"]
    "1" [label="video::packet_raw_t" tooltip="video::packet_raw_t" fillcolor="#BFBFBF"]
    "3" -> "1" [dir=forward tooltip="public-inheritance"]
    "2" -> "1" [dir=forward tooltip="public-inheritance"]
}

Subclassed by video::packet_raw_avcodec, video::packet_raw_generic

Public Functions

virtual uint8_t *data() = 0#
virtual size_t data_size() = 0#
virtual int64_t frame_index() = 0#
virtual bool is_idr() = 0#
virtual ~packet_raw_t() = default#

Public Members

bool after_ref_frame_invalidation = false#
void *channel_data = nullptr#
std::optional<std::chrono::steady_clock::time_point> frame_timestamp#
std::vector<replace_t> *replacements = nullptr#
struct replace_t#

Public Functions

replace_t &operator=(replace_t&&) noexcept = default#
replace_t(replace_t&&) noexcept = default#
inline replace_t(std::string_view old, std::string_view _new) noexcept#

Public Members

std::string_view _new#
std::string_view old#