aboutsummaryrefslogtreecommitdiff
path: root/lib/ffmpeg/patches/0018-dxva-mpeg2-Allocate-slices-array-dynamically-fixes-v.patch
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ffmpeg/patches/0018-dxva-mpeg2-Allocate-slices-array-dynamically-fixes-v.patch')
-rw-r--r--lib/ffmpeg/patches/0018-dxva-mpeg2-Allocate-slices-array-dynamically-fixes-v.patch75
1 files changed, 0 insertions, 75 deletions
diff --git a/lib/ffmpeg/patches/0018-dxva-mpeg2-Allocate-slices-array-dynamically-fixes-v.patch b/lib/ffmpeg/patches/0018-dxva-mpeg2-Allocate-slices-array-dynamically-fixes-v.patch
deleted file mode 100644
index 87e31c5b70..0000000000
--- a/lib/ffmpeg/patches/0018-dxva-mpeg2-Allocate-slices-array-dynamically-fixes-v.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 40f4c15370f7027dc5422edcb10e8a3b7e58e83d Mon Sep 17 00:00:00 2001
-From: CrystalP <CrystalP@xbmc.org>
-Date: Wed, 5 Oct 2011 12:38:30 -0400
-Subject: [PATCH 18/24] dxva-mpeg2 Allocate slices array dynamically - fixes
- videos with > 175 slices. They used to result in
- images with a black bottom.
-
-sample on team ftp samples/PR471/too_many_slices.ts
-
-Inspired by the vaapi code to reallocate the slices array for each new slice.
-Could be more efficient if the array could be preserved for all frames and
-freed only at the end of the video, but there doesn't seem to be anywhere
-appropriate to free the memory at the end.
-
-Alternative is to allocate the proper size straight away for a new frame,
-instead of realloc'ing for each slice.
----
- libavcodec/dxva2_mpeg2.c | 14 +++++++++++---
- 1 file changed, 11 insertions(+), 3 deletions(-)
-
-diff --git a/libavcodec/dxva2_mpeg2.c b/libavcodec/dxva2_mpeg2.c
-index 951305d..8ba83b6 100644
---- a/libavcodec/dxva2_mpeg2.c
-+++ b/libavcodec/dxva2_mpeg2.c
-@@ -22,12 +22,12 @@
-
- #include "dxva2_internal.h"
-
--#define MAX_SLICES (SLICE_MAX_START_CODE - SLICE_MIN_START_CODE + 1)
- struct dxva2_picture_context {
- DXVA_PictureParameters pp;
- DXVA_QmatrixData qm;
- unsigned slice_count;
-- DXVA_SliceInfo slice[MAX_SLICES];
-+ DXVA_SliceInfo *slice;
-+ unsigned int slice_alloc;
-
- const uint8_t *bitstream;
- unsigned bitstream_size;
-@@ -220,6 +220,8 @@ static int start_frame(AVCodecContext *avctx,
- fill_quantization_matrices(avctx, ctx, s, &ctx_pic->qm);
-
- ctx_pic->slice_count = 0;
-+ ctx_pic->slice = NULL;
-+ ctx_pic->slice_alloc = 0;
- ctx_pic->bitstream_size = 0;
- ctx_pic->bitstream = NULL;
- return 0;
-@@ -232,9 +234,14 @@ static int decode_slice(AVCodecContext *avctx,
- struct dxva2_picture_context *ctx_pic =
- s->current_picture_ptr->f.hwaccel_picture_private;
- unsigned position;
-+ DXVA_SliceInfo* slice;
-
-- if (ctx_pic->slice_count >= MAX_SLICES)
-+ slice = av_fast_realloc(ctx_pic->slice,
-+ &ctx_pic->slice_alloc,
-+ (ctx_pic->slice_count + 1) * sizeof(DXVA_SliceInfo));
-+ if (!slice)
- return -1;
-+ ctx_pic->slice = slice;
-
- if (!ctx_pic->bitstream)
- ctx_pic->bitstream = buffer;
-@@ -258,6 +265,7 @@ static int end_frame(AVCodecContext *avctx)
- &ctx_pic->pp, sizeof(ctx_pic->pp),
- &ctx_pic->qm, sizeof(ctx_pic->qm),
- commit_bitstream_and_slice_buffer);
-+ av_freep(ctx_pic->slice);
- }
-
- AVHWAccel ff_mpeg2_dxva2_hwaccel = {
---
-1.7.9.4
-