1 // A class to orchestrate the concept of video encoding. Will keep track of
2 // the muxes to stream and disk, the QuickSyncEncoder, and also the X264Encoder
3 // (for the stream) if there is one.
5 #ifndef _VIDEO_ENCODER_H
6 #define _VIDEO_ENCODER_H
13 #include "ref_counted_frame.h"
14 #include "ref_counted_gl_sync.h"
18 class QuickSyncEncoder;
22 VideoEncoder(QSurface *surface, const std::string &va_display, int width, int height, HTTPD *httpd);
25 void add_audio(int64_t pts, std::vector<float> audio);
26 bool begin_frame(GLuint *y_tex, GLuint *cbcr_tex);
27 RefCountedGLsync end_frame(int64_t pts, int64_t duration, const std::vector<RefCountedFrame> &input_frames);
29 // Does a cut of the disk stream immediately ("frame" is used for the filename only).
30 void do_cut(int frame);
33 std::unique_ptr<QuickSyncEncoder> quicksync_encoder;
35 std::string va_display;