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_);