diff --git a/src/media/media_buffer.cpp b/src/media/media_buffer.cpp
index cece1a7c4f845d9125f4b64c276c99341b47fa38..6acf2c2c61ffeecfbcca87ccc275760e8d0f099e 100644
--- a/src/media/media_buffer.cpp
+++ b/src/media/media_buffer.cpp
@@ -34,7 +34,7 @@ namespace ring {
 
 //=== HELPERS ==================================================================
 
-std::size_t
+int
 videoFrameSize(int format, int width, int height)
 {
     return av_image_get_buffer_size((AVPixelFormat)format, width, height, 1);
diff --git a/src/media/media_buffer.h b/src/media/media_buffer.h
index 5bb8616f489f3365272ae7d73239152cc1dba51e..855467f76e852c2d7d29c1ba927156fa2a733002 100644
--- a/src/media/media_buffer.h
+++ b/src/media/media_buffer.h
@@ -42,7 +42,7 @@ using AudioFrame = DRing::AudioFrame;
 using VideoFrame = DRing::VideoFrame;
 
 // Some helpers
-std::size_t videoFrameSize(int format, int width, int height);
+int videoFrameSize(int format, int width, int height);
 
 #endif // RING_VIDEO
 
diff --git a/src/media/media_encoder.cpp b/src/media/media_encoder.cpp
index 7e59f3dd2b0960cd713d3a8beb3c808f91e2d245..80f97f5b07e862fe27c26581cbb77c9c329917af 100644
--- a/src/media/media_encoder.cpp
+++ b/src/media/media_encoder.cpp
@@ -286,7 +286,9 @@ MediaEncoder::addStream(const SystemCodecInfo& systemCodecInfo, std::string para
         const int height = encoderCtx->height;
         const int format = encoderCtx->pix_fmt;
         scaledFrameBufferSize_ = videoFrameSize(format, width, height);
-        if (scaledFrameBufferSize_ <= AV_INPUT_BUFFER_MIN_SIZE)
+        if (scaledFrameBufferSize_ < 0)
+            throw MediaEncoderException(("Could not compute buffer size: " + libav_utils::getError(scaledFrameBufferSize_)).c_str());
+        else if (scaledFrameBufferSize_ <= AV_INPUT_BUFFER_MIN_SIZE)
             throw MediaEncoderException("buffer too small");
 
         scaledFrameBuffer_.reserve(scaledFrameBufferSize_);