[FFmpeg-cvslog] avcodec/mpegvideo: Fix edge emu buffer overlap with interlaced mpeg4
Michael Niedermayer
git at videolan.org
Thu Nov 17 14:13:48 EET 2016
ffmpeg | branch: release/3.2 | Michael Niedermayer <michael at niedermayer.cc> | Sat Nov 12 12:31:34 2016 +0100| [3f6aae377a09308fdf85cef01cca1eab336f3bae] | committer: Michael Niedermayer
avcodec/mpegvideo: Fix edge emu buffer overlap with interlaced mpeg4
Fixes Ticket5936
Regression since c5fc8ae12622a507d7b9ee30ddcd3734e6de6b1d
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
(cherry picked from commit 85407c7e63722a2d723257e8cf5f281a8c9f34a4)
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3f6aae377a09308fdf85cef01cca1eab336f3bae
---
libavcodec/mpegpicture.c | 2 +-
libavcodec/mpegvideo.c | 2 +-
libavcodec/mpegvideo_enc.c | 2 +-
libavcodec/mpegvideo_motion.c | 4 ++--
libavcodec/version.h | 2 +-
5 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/libavcodec/mpegpicture.c b/libavcodec/mpegpicture.c
index 6748fc2..302f9d2 100644
--- a/libavcodec/mpegpicture.c
+++ b/libavcodec/mpegpicture.c
@@ -76,7 +76,7 @@ int ff_mpeg_framesize_alloc(AVCodecContext *avctx, MotionEstContext *me,
// at uvlinesize. It supports only YUV420 so 24x24 is enough
// linesize * interlaced * MBsize
// we also use this buffer for encoding in encode_mb_internal() needig an additional 32 lines
- FF_ALLOCZ_ARRAY_OR_GOTO(avctx, sc->edge_emu_buffer, alloc_size, 4 * 68,
+ FF_ALLOCZ_ARRAY_OR_GOTO(avctx, sc->edge_emu_buffer, alloc_size, 4 * 70,
fail);
FF_ALLOCZ_ARRAY_OR_GOTO(avctx, me->scratchpad, alloc_size, 4 * 16 * 2,
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index eb14b8c..c4cf896 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -2116,7 +2116,7 @@ static av_always_inline void mpeg_motion_lowres(MpegEncContext *s,
ptr_y = s->sc.edge_emu_buffer;
if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) {
uint8_t *ubuf = s->sc.edge_emu_buffer + 18 * s->linesize;
- uint8_t *vbuf =ubuf + 9 * s->uvlinesize;
+ uint8_t *vbuf =ubuf + 10 * s->uvlinesize;
s->vdsp.emulated_edge_mc(ubuf, ptr_cb,
uvlinesize >> field_based, uvlinesize >> field_based,
9, 9 + field_based,
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index 1540e5c..10b4c5b 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -2276,7 +2276,7 @@ static av_always_inline void encode_mb_internal(MpegEncContext *s,
(mb_y * mb_block_height * wrap_c) + mb_x * mb_block_width;
if((mb_x * 16 + 16 > s->width || mb_y * 16 + 16 > s->height) && s->codec_id != AV_CODEC_ID_AMV){
- uint8_t *ebuf = s->sc.edge_emu_buffer + 36 * wrap_y;
+ uint8_t *ebuf = s->sc.edge_emu_buffer + 38 * wrap_y;
int cw = (s->width + s->chroma_x_shift) >> s->chroma_x_shift;
int ch = (s->height + s->chroma_y_shift) >> s->chroma_y_shift;
s->vdsp.emulated_edge_mc(ebuf, ptr_y,
diff --git a/libavcodec/mpegvideo_motion.c b/libavcodec/mpegvideo_motion.c
index c29810f..b97a6cb 100644
--- a/libavcodec/mpegvideo_motion.c
+++ b/libavcodec/mpegvideo_motion.c
@@ -326,7 +326,7 @@ void mpeg_motion_internal(MpegEncContext *s,
ptr_y = s->sc.edge_emu_buffer;
if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) {
uint8_t *ubuf = s->sc.edge_emu_buffer + 18 * s->linesize;
- uint8_t *vbuf = ubuf + 9 * s->uvlinesize;
+ uint8_t *vbuf = ubuf + 10 * s->uvlinesize;
uvsrc_y = (unsigned)uvsrc_y << field_based;
s->vdsp.emulated_edge_mc(ubuf, ptr_cb,
s->uvlinesize, s->uvlinesize,
@@ -549,7 +549,7 @@ static inline void qpel_motion(MpegEncContext *s,
ptr_y = s->sc.edge_emu_buffer;
if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) {
uint8_t *ubuf = s->sc.edge_emu_buffer + 18 * s->linesize;
- uint8_t *vbuf = ubuf + 9 * s->uvlinesize;
+ uint8_t *vbuf = ubuf + 10 * s->uvlinesize;
s->vdsp.emulated_edge_mc(ubuf, ptr_cb,
s->uvlinesize, s->uvlinesize,
9, 9 + field_based,
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 2f7891e..ec8837a 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@
#define LIBAVCODEC_VERSION_MAJOR 57
#define LIBAVCODEC_VERSION_MINOR 64
-#define LIBAVCODEC_VERSION_MICRO 100
+#define LIBAVCODEC_VERSION_MICRO 101
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
More information about the ffmpeg-cvslog
mailing list