#ifndef _AUDIO_ENCODER_H
#define _AUDIO_ENCODER_H 1
+#include <memory>
#include <string>
#include <vector>
#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, const AVOutputFormat *oformat);
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);