]> git.sesse.net Git - ffmpeg/commitdiff
Merge commit '0242351390643d176b10600c2eb854414f9559e6'
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>
Wed, 13 Apr 2016 15:28:41 +0000 (16:28 +0100)
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>
Wed, 13 Apr 2016 15:29:12 +0000 (16:29 +0100)
* commit '0242351390643d176b10600c2eb854414f9559e6':
  mpegvideo: Fix undefined negative shifts in mpeg_motion_internal

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
1  2 
libavcodec/mpegvideo_motion.c

index 51ba435231fad1e3a0fea2927b62b32c43463e6c,aaa6e6116e0ac0b54884b637fa701125ab8c1a99..5deb2c89fbc5f02842eb943c5c70fe7cb0a7e010
@@@ -548,20 -546,19 +548,20 @@@ static inline void qpel_motion(MpegEncC
                                   s->h_edge_pos, s->v_edge_pos);
          ptr_y = s->sc.edge_emu_buffer;
          if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) {
 -            uint8_t *uvbuf = s->sc.edge_emu_buffer + 18 * s->linesize;
 -            s->vdsp.emulated_edge_mc(uvbuf, ptr_cb,
 +            uint8_t *ubuf = s->sc.edge_emu_buffer + 18 * s->linesize;
 +            uint8_t *vbuf = ubuf + 9 * s->uvlinesize;
 +            s->vdsp.emulated_edge_mc(ubuf, ptr_cb,
                                       s->uvlinesize, s->uvlinesize,
                                       9, 9 + field_based,
-                                      uvsrc_x, uvsrc_y << field_based,
+                                      uvsrc_x, uvsrc_y * (1 << field_based),
                                       s->h_edge_pos >> 1, s->v_edge_pos >> 1);
 -            s->vdsp.emulated_edge_mc(uvbuf + 16, ptr_cr,
 +            s->vdsp.emulated_edge_mc(vbuf, ptr_cr,
                                       s->uvlinesize, s->uvlinesize,
                                       9, 9 + field_based,
-                                      uvsrc_x, uvsrc_y << field_based,
+                                      uvsrc_x, uvsrc_y * (1 << field_based),
                                       s->h_edge_pos >> 1, s->v_edge_pos >> 1);
 -            ptr_cb = uvbuf;
 -            ptr_cr = uvbuf + 16;
 +            ptr_cb = ubuf;
 +            ptr_cr = vbuf;
          }
      }