And return the proper AVERROR value.

Signed-off-by: James Almer <jamr...@gmail.com>
---
 libavcodec/libx264.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index 4a82e1ba25..b39b89b565 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -529,6 +529,12 @@ static int parse_opts(AVCodecContext *avctx, const char 
*opt, const char *param)
             av_log(avctx, AV_LOG_ERROR,
                    "bad option '%s': '%s'\n", opt, param);
             ret = AVERROR(EINVAL);
+#if X264_BUILD >= 161
+        } else if (ret == X264_PARAM_ALLOC_FAILED) {
+            av_log(avctx, AV_LOG_ERROR,
+                   "out of memory parsing option '%s': '%s'\n", opt, param);
+            ret = AVERROR(ENOMEM);
+#endif
         } else {
             av_log(avctx, AV_LOG_ERROR,
                    "bad value for '%s': '%s'\n", opt, param);
@@ -914,10 +920,13 @@ FF_ENABLE_DEPRECATION_WARNINGS
     {
         AVDictionaryEntry *en = NULL;
         while (en = av_dict_get(x4->x264_params, "", en, 
AV_DICT_IGNORE_SUFFIX)) {
-           if (x264_param_parse(&x4->params, en->key, en->value) < 0)
+           if ((ret = x264_param_parse(&x4->params, en->key, en->value)) < 0) {
                av_log(avctx, AV_LOG_WARNING,
                       "Error parsing option '%s = %s'.\n",
                        en->key, en->value);
+               if (ret == X264_PARAM_ALLOC_FAILED)
+                   return AVERROR(ENOMEM);
+           }
         }
     }
 
-- 
2.27.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to