X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fvideo_stream.h;h=c83a4849d07286cb3719bc906d6c96aae529651c;hb=02ea864dc5a6dde7450c497581ff18d784ab832c;hp=f156be9af662578ee96cabec201f3337a08b09bc;hpb=adf28dcc8d96304785b05034c323e4c854c76896;p=nageru diff --git a/futatabi/video_stream.h b/futatabi/video_stream.h index f156be9..c83a484 100644 --- a/futatabi/video_stream.h +++ b/futatabi/video_stream.h @@ -12,6 +12,7 @@ extern "C" { #include "frame_on_disk.h" #include "jpeg_frame_view.h" #include "queue_spot_holder.h" +#include "shared/mux.h" #include "shared/ref_counted_gl_sync.h" #include @@ -29,7 +30,6 @@ extern "C" { class ChromaSubsampler; class DISComputeFlow; class Interpolate; -class Mux; class QSurface; class QSurfaceFormat; class YCbCrConverter; @@ -135,6 +135,7 @@ private: float alpha; BorrowedInterpolatedFrameResources resources; RefCountedGLsync fence; // Set when the interpolated image is read back to the CPU. + std::chrono::steady_clock::time_point fence_created; GLuint flow_tex, output_tex, cbcr_tex; // Released in the receiving thread; not really used for anything else. flow_tex will typically even be from a previous frame. FrameOnDisk id; @@ -142,6 +143,7 @@ private: std::function)> display_decoded_func; // Same, except for INTERPOLATED and FADED_INTERPOLATED. std::string subtitle; // Blank for none. + std::string exif_data; // Blank for none. // Audio, in stereo interleaved 32-bit PCM. If empty and not of type SILENCE, one frame's worth of silence samples // is synthesized. @@ -174,6 +176,7 @@ private: FrameOnDisk last_frame1, last_frame2; std::string last_frame; + Mux::WithSubtitles with_subtitles; // true for streaming, false for export to file. }; #endif // !defined(_VIDEO_STREAM_H)