|
Sunshine master
Self-hosted game stream host for Moonlight.
|
FFmpeg AVCodec encode session and parameter-set rewriting state. More...
Public Member Functions | |
| avcodec_encode_session_t (avcodec_ctx_t &&avcodec_ctx, std::unique_ptr< platf::avcodec_encode_device_t > encode_device, int inject) | |
| Initialize an FFmpeg encode session and its hardware encode device. | |
| avcodec_encode_session_t (avcodec_encode_session_t &&other) noexcept=default | |
| Move an FFmpeg encode session without duplicating codec/device ownership. | |
| int | convert (platf::img_t &img) override |
| Encode one frame with FFmpeg AVCodec and prepare packet replacements. | |
| void | invalidate_ref_frames (int64_t first_frame, int64_t last_frame) override |
| Mark the frame range whose references must be invalidated. | |
| avcodec_encode_session_t & | operator= (avcodec_encode_session_t &&other) |
| Assign state from another instance while preserving ownership semantics. | |
| void | request_idr_frame () override |
| Mark the frame as a request for an IDR frame. | |
| void | request_normal_frame () override |
| Mark the frame as a request for a normal inter frame. | |
Public Member Functions inherited from video::encode_session_t | |
Public Attributes | |
| avcodec_ctx_t | avcodec_ctx |
| FFmpeg codec context owned by the encode session. | |
| std::unique_ptr< platf::avcodec_encode_device_t > | device |
| Platform device used by the FFmpeg hardware encoder. | |
| int | inject |
| Number of upcoming IDR frames that should receive rewritten parameter sets. | |
| std::vector< packet_raw_t::replace_t > | replacements |
| NAL-unit byte ranges that must be replaced before packet send. | |
| cbs::nal_t | sps |
| Original and rewritten sequence parameter set for IDR injection. | |
| cbs::nal_t | vps |
| Original and rewritten HEVC video parameter set for IDR injection. | |
FFmpeg AVCodec encode session and parameter-set rewriting state.
|
inline |
Initialize an FFmpeg encode session and its hardware encode device.
| avcodec_ctx | Open FFmpeg codec context for the selected encoder. |
| encode_device | Platform encode device that supplies frames to FFmpeg. |
| inject | Whether SPS/VPS replacement data should be injected. |
|
defaultnoexcept |
Move an FFmpeg encode session without duplicating codec/device ownership.
| other | Source object whose state is copied or moved into this object. |
|
inlineoverridevirtual |
Encode one frame with FFmpeg AVCodec and prepare packet replacements.
| img | Image or frame object to read from or populate. |
Implements video::encode_session_t.
|
inlineoverridevirtual |
Mark the frame range whose references must be invalidated.
| first_frame | First frame. |
| last_frame | Last frame. |
Implements video::encode_session_t.
|
inline |
Assign state from another instance while preserving ownership semantics.
| other | Source object whose state is copied or moved into this object. |
|
inlineoverridevirtual |
Mark the frame as a request for an IDR frame.
Implements video::encode_session_t.
|
inlineoverridevirtual |
Mark the frame as a request for a normal inter frame.
Implements video::encode_session_t.