#include "defs.h"
#include "shared/metrics.h"
#include "print_latency.h"
+#include "video_codec_interface.h"
#include "x264_dynamic.h"
class Mux;
class X264SpeedControl;
-class X264Encoder {
+class X264Encoder : public VideoCodecInterface {
public:
X264Encoder(const AVOutputFormat *oformat, bool use_separate_disk_params); // Does not take ownership.
// Called after the last frame. Will block; once this returns,
// the last data is flushed.
- ~X264Encoder();
+ ~X264Encoder() override;
// Must be called before first frame. Does not take ownership.
- void add_mux(Mux *mux) { muxes.push_back(mux); }
+ void add_mux(Mux *mux) override { muxes.push_back(mux); }
// <data> is taken to be raw NV12 data of WIDTHxHEIGHT resolution.
// Does not block.
- void add_frame(int64_t pts, int64_t duration, movit::YCbCrLumaCoefficients ycbcr_coefficients, const uint8_t *data, const ReceivedTimestamps &received_ts);
+ void add_frame(int64_t pts, int64_t duration, movit::YCbCrLumaCoefficients ycbcr_coefficients, const uint8_t *data, const ReceivedTimestamps &received_ts) override;
- std::string get_global_headers() const {
+ std::string get_global_headers() const override {
while (!x264_init_done) {
sched_yield();
}