]> git.sesse.net Git - nageru/blobdiff - audio_encoder.h
Remove some use of the AVStream::codec parameter (not all). Fixes some deprecation...
[nageru] / audio_encoder.h
index d627a9c281a6abd10bd42cc5e51f098a46b79412..8a08af5a1df25b91d967be86a6884dd3b1a3f680 100644 (file)
@@ -3,6 +3,7 @@
 #ifndef _AUDIO_ENCODER_H
 #define _AUDIO_ENCODER_H 1
 
+#include <memory>
 #include <string>
 #include <vector>
 
@@ -14,9 +15,17 @@ extern "C" {
 
 #include "mux.h"
 
+static inline void avcodec_parameters_free_unique(AVCodecParameters *codec_par)
+{
+       avcodec_parameters_free(&codec_par);
+}
+
+typedef std::unique_ptr<AVCodecParameters, decltype(avcodec_parameters_free_unique)*>
+AVCodecParametersWithDeleter;
+
 class AudioEncoder {
 public:
-       AudioEncoder(const std::string &codec_name, int bit_rate);
+       AudioEncoder(const std::string &codec_name, int bit_rate, const AVOutputFormat *oformat);
        ~AudioEncoder();
 
        void add_mux(Mux *mux) {  // Does not take ownership.
@@ -25,7 +34,7 @@ public:
        void encode_audio(const std::vector<float> &audio, int64_t audio_pts);
        void encode_last_audio();
 
-       const AVCodecContext *get_ctx() { return ctx; }
+       AVCodecParametersWithDeleter get_codec_parameters();
 
 private:
        void encode_audio_one_frame(const float *audio, size_t num_samples, int64_t audio_pts);