X-Git-Url: https://git.sesse.net/?p=c64tapwav;a=blobdiff_plain;f=audioreader.cpp;h=1f95f131e495d6020efc7ecd3a0c391a896d952d;hp=e133afce9a24c704ec47e56d8cd2072bbe0f0ff4;hb=e283d8b328e737d7119263010f63b7452fa05e6a;hpb=63deff31a441647619080ca046d1aa1c8edcea9e diff --git a/audioreader.cpp b/audioreader.cpp index e133afc..1f95f13 100644 --- a/audioreader.cpp +++ b/audioreader.cpp @@ -2,9 +2,12 @@ extern "C" { +#define __STDC_CONSTANT_MACROS + #include #include #include +#include } @@ -22,7 +25,8 @@ struct AVFormatCloserAndDeleter { struct AVCodecContextDeleter { void operator() (AVCodecContext *ctx) { - avcodec_free_context(&ctx); + avcodec_close(ctx); + av_freep(&ctx); } }; @@ -38,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) { @@ -151,8 +157,13 @@ bool read_audio_file(const char *filename, std::vector *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 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 av_packet_deleter(&packet);