diff --git a/src/media/audio/audio_frame_resizer.cpp b/src/media/audio/audio_frame_resizer.cpp
index 18136ed45d1085f87f9429ae0e151b27674d9ca3..461edefadde9abc26326b1403a60453ade66af56 100644
--- a/src/media/audio/audio_frame_resizer.cpp
+++ b/src/media/audio/audio_frame_resizer.cpp
@@ -90,9 +90,10 @@ AudioFrameResizer::enqueue(std::shared_ptr<AudioFrame>&& frame)
 {
     int ret = 0;
     auto f = frame->pointer();
-    if (f->format != (int)format_.sampleFormat || f->channels != (int)format_.nb_channels || f->sample_rate != (int)format_.sample_rate) {
+    AudioFormat format(f->sample_rate, f->channels, (AVSampleFormat)f->format);
+    if (format != format_) {
         RING_ERR() << "Expected " << format_ << ", but got " << AudioFormat(f->sample_rate, f->channels, (AVSampleFormat)f->format);
-        throw std::runtime_error("Could not write samples to audio queue: input frame is not the right format");
+        setFormat(format, frameSize_);
     }
 
     auto nb_samples = samples();