#include <libavformat/avio.h>
}
+#include <mutex>
+
class KeyFrameSignalReceiver {
public:
// Needs to automatically turn the flag off again after actually receiving data.
};
// Takes ownership of avctx. <keyframe_signal_receiver> can be nullptr.
- Mux(AVFormatContext *avctx, int width, int height, Codec video_codec, const AVCodec *codec_audio, int time_base, int bit_rate, KeyFrameSignalReceiver *keyframe_signal_receiver);
+ Mux(AVFormatContext *avctx, int width, int height, Codec video_codec, const std::string &video_extradata, const AVCodecContext *audio_ctx, int time_base, KeyFrameSignalReceiver *keyframe_signal_receiver);
~Mux();
void add_packet(const AVPacket &pkt, int64_t pts, int64_t dts);
private:
- AVFormatContext *avctx;
+ std::mutex ctx_mu;
+ AVFormatContext *avctx; // Protected by <ctx_mu>.
AVStream *avstream_video, *avstream_audio;
KeyFrameSignalReceiver *keyframe_signal_receiver;
};