diff --git a/Source/Core/AudioStats.cpp b/Source/Core/AudioStats.cpp index 572146810..2d7208e16 100644 --- a/Source/Core/AudioStats.cpp +++ b/Source/Core/AudioStats.cpp @@ -13,6 +13,7 @@ extern "C" { #include +#include #include } #include @@ -296,8 +297,13 @@ void AudioStats::TimeStampFromFrame (const QAVFrame& frame, size_t FramePos) x[2][FramePos]=x[1][FramePos]/60; x[3][FramePos]=x[2][FramePos]/60; } +#if LIBAVUTIL_VERSION_INT <= AV_VERSION_INT(57, 30, 0) if (Frame->pkt_duration != AV_NOPTS_VALUE) durations[FramePos]=((double)Frame->pkt_duration)/Frequency; +#else + if (Frame->duration != AV_NOPTS_VALUE) + durations[FramePos]=((double)Frame->duration)/Frequency; +#endif } //--------------------------------------------------------------------------- diff --git a/Source/Core/AudioStreamStats.cpp b/Source/Core/AudioStreamStats.cpp index ebcfb6f31..dacd9a4ae 100644 --- a/Source/Core/AudioStreamStats.cpp +++ b/Source/Core/AudioStreamStats.cpp @@ -15,6 +15,7 @@ extern "C" #include #include #include +#include #include #include } @@ -62,7 +63,11 @@ AudioStreamStats::AudioStreamStats(XMLElement *streamElement) : CommonStreamStat AudioStreamStats::AudioStreamStats(QAVStream* stream) : CommonStreamStats(stream), sample_fmt_string(""), sample_rate(stream != NULL ? stream->stream()->codecpar->sample_rate : 0), +#if LIBAVUTIL_VERSION_INT <= AV_VERSION_INT(57, 23, 0) channels(stream != NULL ? stream->stream()->codecpar->channels : 0), +#else + channels(stream != NULL ? stream->stream()->codecpar->ch_layout.nb_channels : 0), +#endif channel_layout(""), bits_per_sample(stream != NULL ? av_get_bits_per_sample(stream->stream()->codecpar->codec_id) : 0) { @@ -81,9 +86,15 @@ AudioStreamStats::AudioStreamStats(QAVStream* stream) : CommonStreamStats(stream AVBPrint pbuf; av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED); +#if LIBAVUTIL_VERSION_INT <= AV_VERSION_INT(57, 23, 0) if (stream->stream()->codecpar->channel_layout) { av_bprint_clear(&pbuf); av_bprint_channel_layout(&pbuf, stream->stream()->codecpar->channels, stream->stream()->codecpar->channel_layout); +#else + if (av_channel_layout_check(&stream->stream()->codecpar->ch_layout)) { + av_bprint_clear(&pbuf); + av_channel_layout_describe_bprint(&stream->stream()->codecpar->ch_layout, &pbuf); +#endif channel_layout = pbuf.str; } else { channel_layout = "unknown"; diff --git a/Source/Core/FileInformation.cpp b/Source/Core/FileInformation.cpp index addcdbcdf..c1d28ec3a 100644 --- a/Source/Core/FileInformation.cpp +++ b/Source/Core/FileInformation.cpp @@ -29,6 +29,7 @@ extern "C" { #include #include #include +#include #ifndef WITH_SYSTEM_FFMPEG #include @@ -1580,7 +1581,11 @@ struct Output { return outPacket; } +#if LIBAVUTIL_VERSION_INT <= AV_VERSION_INT(57, 30, 0) outPacket->duration = Frame->pkt_duration; +#else + outPacket->duration = Frame->duration; +#endif return outPacket; } }; @@ -2142,7 +2147,11 @@ std::string FileInformation::channelLayout() const if (stream.codec()->codec()->long_name == nullptr) return std::string(); +#if LIBAVUTIL_VERSION_INT <= AV_VERSION_INT(57, 23, 0) switch (stream.stream()->codecpar->channel_layout) +#else + switch (stream.stream()->codecpar->ch_layout.u.mask) +#endif { case AV_CH_LAYOUT_MONO: return "mono"; case AV_CH_LAYOUT_STEREO: return "stereo"; diff --git a/Source/Core/VideoStats.cpp b/Source/Core/VideoStats.cpp index 265ccf2b3..8f730c24c 100644 --- a/Source/Core/VideoStats.cpp +++ b/Source/Core/VideoStats.cpp @@ -14,6 +14,7 @@ extern "C" { #include #include +#include } #include @@ -411,8 +412,13 @@ void VideoStats::TimeStampFromFrame (const QAVFrame& frame, size_t FramePos) x[2][FramePos]=x[1][FramePos]/60; x[3][FramePos]=x[2][FramePos]/60; } +#if LIBAVUTIL_VERSION_INT <= AV_VERSION_INT(57, 30, 0) if (Frame->pkt_duration!=AV_NOPTS_VALUE) durations[FramePos]=((double)Frame->pkt_duration)/Frequency; +#else + if (Frame->duration!=AV_NOPTS_VALUE) + durations[FramePos]=((double)Frame->duration)/Frequency; +#endif } //---------------------------------------------------------------------------