diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp
index 1f1a8366d942cace95ac62da9174b05cd68be264..f47bd17592ca7dbaa11ca9f1fdbb03f7797d12d4 100644
--- a/src/media/media_decoder.cpp
+++ b/src/media/media_decoder.cpp
@@ -338,6 +338,10 @@ MediaDecoder::decode(const AudioFrame& decodedFrame)
     if (frameFinished) {
         av_packet_unref(&inpacket);
 
+        // channel layout is needed if frame will be resampled
+        if (!frame->channel_layout)
+            frame->channel_layout = av_get_default_channel_layout(frame->channels);
+
         auto packetTimestamp = frame->pts;
         // NOTE don't use clock to rescale audio pts, it may create artifacts
         frame->pts = av_rescale_q_rnd(frame->pts, avStream_->time_base, decoderCtx_->time_base,