|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Frame sink that streams PPM frames into ffmpeg. More...
#include <ca-ffmpeg-sink.H>
Public Member Functions | |
| Ffmpeg_Frame_Sink (std::filesystem::path output, Mapper mapper, Ffmpeg_Options opts={}) | |
| Build an ffmpeg frame sink. | |
| Ffmpeg_Frame_Sink (const Ffmpeg_Frame_Sink &)=delete | |
| Ffmpeg_Frame_Sink & | operator= (const Ffmpeg_Frame_Sink &)=delete |
| Ffmpeg_Frame_Sink (Ffmpeg_Frame_Sink &&other) noexcept | |
| Move-construct a sink, transferring the process handle. | |
| ~Ffmpeg_Frame_Sink () | |
| Close ffmpeg best-effort. | |
| const std::string & | command () const noexcept |
| Return the ffmpeg command used by this sink. | |
| bool | active () const noexcept |
| Return true when a live ffmpeg process is attached. | |
| template<typename Lattice > | |
| void | accept (const std::size_t step, const Lattice &frame) |
| Send one frame to ffmpeg, or no-op when inactive. | |
| void | flush () |
| Flush and close the ffmpeg process if one was started. | |
Private Member Functions | |
| void | start () |
Private Attributes | |
| std::filesystem::path | output_ |
| Mapper | mapper_ |
| Ffmpeg_Options | opts_ {} |
| std::string | command_ |
| FILE * | pipe_ = nullptr |
Frame sink that streams PPM frames into ffmpeg.
| Mapper | invocable state_type -> RGB8. |
Definition at line 97 of file ca-ffmpeg-sink.H.
|
inline |
Build an ffmpeg frame sink.
| [in] | output | output video path. |
| [in] | mapper | state-to-RGB mapper. |
| [in] | opts | sink options. |
Definition at line 130 of file ca-ffmpeg-sink.H.
|
delete |
|
inlinenoexcept |
Move-construct a sink, transferring the process handle.
| [in,out] | other | sink to move from. |
Definition at line 142 of file ca-ffmpeg-sink.H.
References Aleph::blossom_maximum_cardinality_matching().
|
inline |
Close ffmpeg best-effort.
Definition at line 150 of file ca-ffmpeg-sink.H.
References Aleph::blossom_maximum_cardinality_matching(), and Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::pipe_.
|
inline |
Send one frame to ffmpeg, or no-op when inactive.
| Lattice | rank-2 lattice type. |
| [in] | step | simulation step, accepted for interface symmetry. |
| [in] | frame | frame to encode. |
Definition at line 178 of file ca-ffmpeg-sink.H.
References ah_runtime_error_if, Aleph::blossom_maximum_cardinality_matching(), Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::mapper_, Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::pipe_, and Aleph::CA::write_ppm().
|
inlinenoexcept |
Return true when a live ffmpeg process is attached.
Definition at line 167 of file ca-ffmpeg-sink.H.
References Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::pipe_.
|
inlinenoexcept |
Return the ffmpeg command used by this sink.
Definition at line 159 of file ca-ffmpeg-sink.H.
References Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::command_.
|
inline |
Flush and close the ffmpeg process if one was started.
Definition at line 192 of file ca-ffmpeg-sink.H.
References ah_runtime_error_if, Aleph::and, Aleph::blossom_maximum_cardinality_matching(), Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::opts_, Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::pipe_, and Aleph::CA::Ffmpeg_Options::require_ffmpeg.
|
delete |
|
inlineprivate |
Definition at line 105 of file ca-ffmpeg-sink.H.
References ah_runtime_error_if, Aleph::and, Aleph::CA::Ffmpeg_Options::auto_start, Aleph::blossom_maximum_cardinality_matching(), Aleph::CA::Ffmpeg_Options::codec, Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::command_, Aleph::CA::ca_ffmpeg_detail::ffmpeg_available(), Aleph::CA::Ffmpeg_Options::fps, Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::opts_, Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::output_, Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::pipe_, Aleph::CA::Ffmpeg_Options::pixel_format, Aleph::CA::Ffmpeg_Options::require_ffmpeg, and Aleph::CA::ca_ffmpeg_detail::shell_quote().
|
private |
Definition at line 102 of file ca-ffmpeg-sink.H.
Referenced by Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::command(), and Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::start().
|
private |
Definition at line 100 of file ca-ffmpeg-sink.H.
Referenced by Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::accept().
|
private |
Definition at line 101 of file ca-ffmpeg-sink.H.
Referenced by Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::flush(), and Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::start().
|
private |
Definition at line 99 of file ca-ffmpeg-sink.H.
Referenced by Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::start().
|
private |
Definition at line 103 of file ca-ffmpeg-sink.H.
Referenced by Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::~Ffmpeg_Frame_Sink(), Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::accept(), Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::active(), Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::flush(), and Aleph::CA::Ffmpeg_Frame_Sink< Mapper >::start().