X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=mux.h;h=ddf97fe92a591d86ec6dbebd9614cf32fa9a0846;hb=ad9585b7a6671903cadcf6c74491646736db8e1e;hp=b60b02a88585c470b9c934d1ea8b0f69f3ebb13c;hpb=3372c3c549a92e9bd904220e324d31422dc22303;p=nageru diff --git a/mux.h b/mux.h index b60b02a..ddf97fe 100644 --- a/mux.h +++ b/mux.h @@ -6,11 +6,12 @@ extern "C" { #include #include -#include } +#include +#include #include -#include +#include #include class Mux { @@ -20,8 +21,10 @@ public: CODEC_NV12, // Uncompressed 4:2:0. }; - // Takes ownership of avctx. - Mux(AVFormatContext *avctx, int width, int height, Codec video_codec, const std::string &video_extradata, const AVCodecParameters *audio_codecpar, int time_base); + // Takes ownership of avctx. will be called every time + // a write has been made to the video stream (id 0), with the pts of + // the just-written frame. (write_callback can be nullptr.) + Mux(AVFormatContext *avctx, int width, int height, Codec video_codec, const std::string &video_extradata, const AVCodecParameters *audio_codecpar, int time_base, std::function write_callback); ~Mux(); void add_packet(const AVPacket &pkt, int64_t pts, int64_t dts); @@ -45,6 +48,8 @@ private: std::vector plugged_packets; // Protected by . AVStream *avstream_video, *avstream_audio; + + std::function write_callback; }; #endif // !defined(_MUX_H)