X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=h264encode.h;h=48dd3291df457b1c2b8dbb7f3cdf6c380b848cc6;hb=b4f16ea9f8969a3ba14be8cd9c88cfe00d19533b;hp=ec49fb71dde19f801b5a4f95f106c1cdc8089a04;hpb=02083dca89292d6ba95642cf8957f1cee8826313;p=nageru diff --git a/h264encode.h b/h264encode.h index ec49fb7..48dd329 100644 --- a/h264encode.h +++ b/h264encode.h @@ -45,13 +45,14 @@ extern "C" { #include "ref_counted_frame.h" #include "ref_counted_gl_sync.h" +class HTTPD; class QSurface; #define SURFACE_NUM 16 /* 16 surfaces for source YUV */ class H264Encoder { public: - H264Encoder(QSurface *surface, int width, int height, const char *output_filename); + H264Encoder(QSurface *surface, int width, int height, const char *output_filename, HTTPD *httpd); ~H264Encoder(); //void add_frame(FrameAllocator::Frame frame, GLsync fence); @@ -73,9 +74,9 @@ public: private: struct storage_task { unsigned long long display_order; - unsigned long long encode_order; int frame_type; std::vector audio; + int64_t pts, dts; }; void copy_thread_func(); @@ -102,15 +103,16 @@ private: struct PendingFrame { RefCountedGLsync fence; std::vector input_frames; + int64_t pts; }; std::map pending_video_frames; // under frame_queue_mutex std::map> pending_audio_frames; // under frame_queue_mutex - std::map timestamps; // under frame_queue_mutex QSurface *surface; AVFormatContext *avctx; AVStream *avstream_video; AVStream *avstream_audio; + HTTPD *httpd; }; #endif