]> git.sesse.net Git - nageru/blobdiff - shared/mux.h
Unify mux.cpp between Nageru and Futatabi.
[nageru] / shared / mux.h
similarity index 88%
rename from futatabi/mux.h
rename to shared/mux.h
index dca6be55fc8f030a49aa3208ae6fb2ab605819d7..62cd37cf80791f061182ebf50498756948f24a78 100644 (file)
@@ -37,6 +37,15 @@ struct MuxMetrics {
        }
 };
 
+inline AVColorSpace get_color_space(bool ycbcr_rec709_coefficients)
+{
+       if (ycbcr_rec709_coefficients) {
+               return AVCOL_SPC_BT709;
+       } else {
+               return AVCOL_SPC_SMPTE170M;
+       }
+}
+
 class Mux {
 public:
        enum Codec {
@@ -44,6 +53,10 @@ public:
                CODEC_NV12,  // Uncompressed 4:2:0.
                CODEC_MJPEG
        };
+       enum WithAudio {
+               WITH_AUDIO,
+               WITHOUT_AUDIO
+       };
        enum WriteStrategy {
                // add_packet() will write the packet immediately, unless plugged.
                WRITE_FOREGROUND,
@@ -61,7 +74,7 @@ public:
        // the just-written frame. (write_callback can be nullptr.)
        // Does not take ownership of <metrics>; elements in there, if any,
        // will be added to.
-       Mux(AVFormatContext *avctx, int width, int height, Codec video_codec, const std::string &video_extradata, const AVCodecParameters *audio_codecpar, int time_base, std::function<void(int64_t)> write_callback, WriteStrategy write_strategy, const std::vector<MuxMetrics *> &metrics);
+       Mux(AVFormatContext *avctx, int width, int height, Codec video_codec, const std::string &video_extradata, const AVCodecParameters *audio_codecpar, AVColorSpace color_space, WithAudio with_audio, int time_base, std::function<void(int64_t)> write_callback, WriteStrategy write_strategy, const std::vector<MuxMetrics *> &metrics);
        ~Mux();
        void add_packet(const AVPacket &pkt, int64_t pts, int64_t dts, AVRational timebase = { 1, TIMEBASE }, int stream_index_override = -1);