X-Git-Url: https://git.sesse.net/?p=c64tapwav;a=blobdiff_plain;f=audioreader.cpp;h=1f95f131e495d6020efc7ecd3a0c391a896d952d;hp=68243ca29da28f484f9c3671231914c997fbbfb6;hb=6dfd5605198ec29873ba4c3871ba05915125bc41;hpb=881b5d26f20e2e6e4f54144a8d1ea1f473f4c5b8 diff --git a/audioreader.cpp b/audioreader.cpp index 68243ca..1f95f13 100644 --- a/audioreader.cpp +++ b/audioreader.cpp @@ -2,11 +2,12 @@ extern "C" { +#define __STDC_CONSTANT_MACROS + #include #include #include #include -#include } @@ -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 *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);