X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fplayer.h;h=22de0b396cd98be13d0f3dba1049882f616e24a4;hb=44b133d1372fb410fe0c8badcd4028965d95fbb8;hp=b57bada647f2cb48439265cf8e534a6179c4d8f3;hpb=a64b7a670a29674aa4a6cb2abe2f5a29f6cc14bc;p=nageru diff --git a/futatabi/player.h b/futatabi/player.h index b57bada..22de0b3 100644 --- a/futatabi/player.h +++ b/futatabi/player.h @@ -6,6 +6,7 @@ #include "queue_spot_holder.h" extern "C" { +#include #include } @@ -19,9 +20,16 @@ class VideoStream; class QSurface; class QSurfaceFormat; +double compute_time_left(const std::vector &clips, const std::map &progress); + class Player : public QueueInterface { public: - Player(JPEGFrameView *destination, bool also_output_to_stream); + enum StreamOutput { + NO_STREAM_OUTPUT, + HTTPD_STREAM_OUTPUT, // Output to global_httpd. + FILE_STREAM_OUTPUT // Output to file_avctx. + }; + Player(JPEGFrameView *destination, StreamOutput stream_output, AVFormatContext *file_avctx = nullptr); ~Player(); void play_clip(const Clip &clip, size_t clip_idx, unsigned stream_idx); @@ -48,7 +56,7 @@ public: void release_queue_spot() override; private: - void thread_func(bool also_output_to_stream); + void thread_func(StreamOutput stream_output, AVFormatContext *file_avctx); void open_output_stream(); static int write_packet2_thunk(void *opaque, uint8_t *buf, int buf_size, AVIODataMarkerType type, int64_t time); int write_packet2(uint8_t *buf, int buf_size, AVIODataMarkerType type, int64_t time);