#define __STDC_CONSTANT_MACROS extern "C" { #include "libavfilter/avfilter.h" #include "libavfilter/buffersrc.h" #include "libavfilter/buffersink.h" #include "libavformat/avformat.h" #include "libavcodec/avcodec.h" #include "libavutil/imgutils.h" #include "libavutil/error.h" #include "libavutil/avutil.h" #include "libavutil/mathematics.h" #include "libavutil/samplefmt.h" #include "libavutil/frame.h" #include "libavutil/opt.h" } #include <stdint.h> #include <inttypes.h> #include <vector> #include <iostream> class fileAudioEncoder { private: AVCodec *codec; AVCodecContext *codecContext; AVCodecParameters *codecParameters; AVFrame *frame; AVPacket *packet; AVFilterGraph *filterGraph; AVFilterContext *filterSource, *filterSink; AVStream *stream; AVFormatContext *formatContext; AVIOContext *ioContext; AVCodecID codecID; int finished; void cleanUp(); int encodeFrame(AVFrame *frame); public: int init(const char *filePath, const std::vector<AVCodecID> *codecIDs, AVCodecParameters *parameters); int writeHeader(); int writeEncodedPacket(AVPacket *toWrite); int writeTrailer(); AVPacket *getEncodedPacket(AVFrame *toEncode); };