--- ffmpeg.c.orig 2018-05-09 21:56:02.949627655 +0200 +++ ffmpeg.c 2018-05-09 21:58:59.749022102 +0200 @@ -39,7 +39,11 @@ #include #include #include +#if LIBAVUTIL_VERSION_MAJOR >= 53 +#include +#else #include +#endif #ifndef AVUTIL_MATHEMATICS_H #include #endif @@ -115,7 +119,11 @@ static void ffmpeg_input_free(struct ffmpeg_input *input) { +#if LIBAVCODEC_VERSION_MAJOR >= 56 + av_packet_unref(&input->pkt); +#else av_free_packet(&input->pkt); +#endif free(input); } @@ -235,20 +243,33 @@ codec = avcodec_find_decoder(cc->codec_id); if (!codec) { +#if LIBAVCODEC_VERSION_MAJOR >= 54 + d_print("codec not found: %d, %s\n", cc->codec_id, avcodec_get_name(cc->codec_id)); +#else d_print("codec not found: %d, %s\n", cc->codec_id, cc->codec_name); +#endif err = -IP_ERROR_UNSUPPORTED_FILE_TYPE; break; } +#if LIBAVCODEC_VERSION_MAJOR >= 58 + if (codec->capabilities & AV_CODEC_CAP_TRUNCATED) + cc->flags |= AV_CODEC_FLAG_TRUNCATED; +#else if (codec->capabilities & CODEC_CAP_TRUNCATED) cc->flags |= CODEC_FLAG_TRUNCATED; +#endif #if (LIBAVCODEC_VERSION_INT < ((53<<16)+(8<<8)+0)) if (avcodec_open(cc, codec) < 0) { #else if (avcodec_open2(cc, codec, NULL) < 0) { #endif +#if LIBAVCODEC_VERSION_MAJOR >= 54 + d_print("could not open codec: %d, %s\n", cc->codec_id, avcodec_get_name(cc->codec_id)); +#else d_print("could not open codec: %d, %s\n", cc->codec_id, cc->codec_name); +#endif err = -IP_ERROR_UNSUPPORTED_FILE_TYPE; break; } @@ -347,7 +368,11 @@ struct ffmpeg_output *output, SwrContext *swr) { #if (LIBAVCODEC_VERSION_INT >= ((53<<16) + (25<<8) + 0)) +#if LIBAVCODEC_VERSION_MAJOR >= 56 + AVFrame *frame = av_frame_alloc(); +#else AVFrame *frame = avcodec_alloc_frame(); +#endif int got_frame; #endif while (1) { @@ -359,10 +384,16 @@ int len; if (input->curr_pkt_size <= 0) { +#if LIBAVCODEC_VERSION_MAJOR >= 56 + av_packet_unref(&input->pkt); +#else av_free_packet(&input->pkt); +#endif if (av_read_frame(ic, &input->pkt) < 0) { /* Force EOF once we can read no longer. */ -#if (LIBAVCODEC_VERSION_INT >= ((53<<16) + (25<<8) + 0)) +#if LIBAVCODEC_VERSION_MAJOR >= 56 + av_frame_free(&frame); +#elif (LIBAVCODEC_VERSION_INT >= ((53<<16) + (25<<8) + 0)) avcodec_free_frame(&frame); #endif return 0; @@ -399,7 +430,11 @@ av_new_packet(&avpkt, input->curr_pkt_size); memcpy(avpkt.data, input->curr_pkt_buf, input->curr_pkt_size); len = avcodec_decode_audio4(cc, frame, &got_frame, &avpkt); +#if LIBAVCODEC_VERSION_MAJOR >= 56 + av_packet_unref(&avpkt); +#else av_free_packet(&avpkt); +#endif } #endif if (len < 0) { @@ -426,7 +461,11 @@ res = 0; output->buffer_pos = output->buffer; output->buffer_used_len = res * cc->channels * sizeof(int16_t); +#if LIBAVCODEC_VERSION_MAJOR >= 56 + av_frame_free(&frame); +#else avcodec_free_frame(&frame); +#endif return output->buffer_used_len; } #endif @@ -566,7 +605,11 @@ long bitrate = -1; #if (LIBAVFORMAT_VERSION_INT > ((51<<16)+(43<<8)+0)) /* ape codec returns silly numbers */ +#if LIBAVCODEC_VERSION_MAJOR >= 55 + if (priv->codec->id == AV_CODEC_ID_APE) +#else if (priv->codec->id == CODEC_ID_APE) +#endif return -1; #endif if (priv->input->curr_duration > 0) {