On 14/02/2018 23:45, Mark Thompson wrote:
On 11/02/18 18:14, Mark Thompson wrote:
From: Jun Zhao <[email protected]>

This removes the arbitrary limit on the allowed number of slices and
parameter buffers.

 From ffmpeg commit e4a6eb70f471eda36592078e8fa1bad87fc9df73.

Signed-off-by: Mark Thompson <[email protected]>
---
  libavcodec/vaapi_encode.c | 42 ++++++++++++++++++++++++++++++------------
  libavcodec/vaapi_encode.h |  6 ++----
  2 files changed, 32 insertions(+), 16 deletions(-)

diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c
index 47795ba73..8cba847f7 100644
--- a/libavcodec/vaapi_encode.c
+++ b/libavcodec/vaapi_encode.c
...
@@ -313,15 +321,14 @@ static int vaapi_encode_issue(AVCodecContext *avctx,
          }
      }
- av_assert0(pic->nb_slices <= MAX_PICTURE_SLICES);
+    pic->slices = av_mallocz_array(pic->nb_slices, sizeof(*pic->slices));
+    if (!pic->slices) {
+        err = AVERROR(ENOMEM);
+        goto fail;
+    }

This fails for non-slice codecs (VP8, VP9) because av_mallocz_array() returns NULL when 
asked for zero array elements.  (ffmpeg has a hack marked "OS X on SDK 10.6 has a 
broken posix_memalign implementation" which makes this case call malloc(1) and 
return a real pointer instead.)

Changed locally to only do the allocation if nb_slices > 0.

Ok.

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to