diff mbox

[FFmpeg-devel,1/2] avcodec/mpegvideo: Fix edge emu buffer overlap with interlaced mpeg4

Message ID 20161112113135.20799-1-michael@niedermayer.cc
State Accepted
Headers show

Commit Message

Michael Niedermayer Nov. 12, 2016, 11:31 a.m. UTC
Fixes Ticket5936

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 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(-)

Comments

Carl Eugen Hoyos Nov. 12, 2016, 12:31 p.m. UTC | #1
2016-11-12 12:31 GMT+01:00 Michael Niedermayer <michael@niedermayer.cc>:
> Fixes Ticket5936

Please also mention the relevant original commit.
Was it 60ab6e24574a984655800d1f7ce16c05f4e9b28c?

Carl Eugen
Michael Niedermayer Nov. 17, 2016, 10:26 a.m. UTC | #2
On Sat, Nov 12, 2016 at 01:31:54PM +0100, Carl Eugen Hoyos wrote:
> 2016-11-12 12:31 GMT+01:00 Michael Niedermayer <michael@niedermayer.cc>:
> > Fixes Ticket5936
> 
> Please also mention the relevant original commit.
> Was it 60ab6e24574a984655800d1f7ce16c05f4e9b28c?

no, added the commit mentioned in the Ticket

[...]
Michael Niedermayer Nov. 17, 2016, 11:20 a.m. UTC | #3
On Sat, Nov 12, 2016 at 12:31:34PM +0100, Michael Niedermayer wrote:
> Fixes Ticket5936
> 
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>  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(-)

applied

[...]
diff mbox

Patch

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 9a17a6e..59be078 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 9799cfe..e05c310 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@ 
 
 #define LIBAVCODEC_VERSION_MAJOR  57
 #define LIBAVCODEC_VERSION_MINOR  66
-#define LIBAVCODEC_VERSION_MICRO 101
+#define LIBAVCODEC_VERSION_MICRO 102
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
                                                LIBAVCODEC_VERSION_MINOR, \