]> git.sesse.net Git - c64tapwav/blobdiff - audioreader.cpp
Make the compressor filter frequency configurable, and up the default to a more aggre...
[c64tapwav] / audioreader.cpp
index 68243ca29da28f484f9c3671231914c997fbbfb6..1f95f131e495d6020efc7ecd3a0c391a896d952d 100644 (file)
@@ -2,11 +2,12 @@
 
 extern "C" {
 
+#define __STDC_CONSTANT_MACROS
+
 #include <libavcodec/avcodec.h>
 #include <libavformat/avformat.h>
 #include <libswresample/swresample.h>
 #include <libavutil/avutil.h>
-#include <libavutil/frame.h>
 
 }
 
@@ -24,7 +25,8 @@ struct AVFormatCloserAndDeleter {
 
 struct AVCodecContextDeleter {
        void operator() (AVCodecContext *ctx) {
-               avcodec_free_context(&ctx);
+               avcodec_close(ctx);
+               av_freep(&ctx);
        }
 };
 
@@ -40,11 +42,13 @@ struct AVPacketDeleter {
        }
 };
 
+#if (LIBAVCODEC_VERSION_MAJOR >= 55)
 struct AVFrameDeleter {
        void operator() (AVFrame *frame) {
                av_frame_free(&frame);
        }
 };
+#endif
 
 struct AVSampleDeleter {
        void operator() (uint8_t *data) {
@@ -153,8 +157,13 @@ bool read_audio_file(const char *filename, std::vector<float> *samples, int *sam
        }
 
        AVPacket packet;
-       AVFrame* audio_frame = av_frame_alloc();
+#if (LIBAVCODEC_VERSION_MAJOR >= 55)
+       AVFrame *audio_frame = av_frame_alloc();
        std::unique_ptr<AVFrame, AVFrameDeleter> audio_frame_deleter(audio_frame);
+#else
+       AVFrame frame_holder {};
+       AVFrame *audio_frame = &frame_holder;
+#endif
        while (av_read_frame(format_ctx, &packet) >= 0) {
                std::unique_ptr<AVPacket, AVPacketDeleter> av_packet_deleter(&packet);