--- /dev/null
+--- a/metadata.c
++++ b/metadata.c
+@@ -778,16 +778,24 @@
+ break;
+ }
+ /* AAC @ Level 1/2 */
+- if( lav_channels(astream) <= 2 &&
+- lav_bit_rate(astream) <= 576000 )
++
++ int channels = 0;
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59, 37, 100)
++ channels = astream->codecpar->ch_layout.nb_channels;
++#elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 41, 100)
++ channels = astream->codecpar->channels;
++#else
++ // Fallback for older versions
++ channels = lav_channels(astream);
++#endif
++ if (channels <= 2 && lav_bit_rate(astream) <= 576000) {
+ audio_profile = PROFILE_AUDIO_AAC;
+- else if( lav_channels(astream) <= 6 &&
+- lav_bit_rate(astream) <= 1440000 )
++ } else if (channels <= 6 && lav_bit_rate(astream) <= 1440000) {
+ audio_profile = PROFILE_AUDIO_AAC_MULT5;
+- else
+- DPRINTF(E_DEBUG, L_METADATA, "Unhandled AAC: %lld channels, %lld bitrate\n",
+- (long long)lav_channels(astream),
+- (long long)lav_bit_rate(astream));
++ } else {
++ DPRINTF(E_DEBUG, L_METADATA, "Unhandled AAC: %d channels, %lld bitrate\n",
++ channels, (long long)lav_bit_rate(astream));
++ }
+ break;
+ default:
+ DPRINTF(E_DEBUG, L_METADATA, "Unhandled AAC type [%d]\n", aac_type);
+@@ -825,7 +833,15 @@
+ break;
+ }
+ m.frequency = lav_sample_rate(astream);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59, 37, 100)
++ m.channels = astream->codecpar->ch_layout.nb_channels;
++#elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 41, 100)
++ m.channels = astream->codecpar->channels;
++#else
++ // Fallback for older versions
+ m.channels = lav_channels(astream);
++#endif
++
+ }
+ if( vstream )
+ {