aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-12-01 13:23:24 +0100
committerMichael Niedermayer <michaelni@gmx.at>2015-06-10 02:13:07 +0200
commit0c50e41d63f0e3a5580a6ded4cb7ff8d28538dc5 (patch)
tree481e65ce0b182099f53794f2e6b24039a9a6d7b9
parenteeff4bdbb86800f791d2033fdc4cb1eb0478dd44 (diff)
downloadffmpeg-0c50e41d63f0e3a5580a6ded4cb7ff8d28538dc5.tar.gz
avcodec/motion_est: use 2x8x8 for interlaced qpel
Fixes out of array read Fixes Ticket4121 Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit b50e003e1cb6a215df44ffa3354603bf600b4aa3) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/motion_est.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libavcodec/motion_est.c b/libavcodec/motion_est.c
index f4d217bf30..02aeb2ef90 100644
--- a/libavcodec/motion_est.c
+++ b/libavcodec/motion_est.c
@@ -189,7 +189,13 @@ static av_always_inline int cmp_inline(MpegEncContext *s, const int x, const int
int uvdxy; /* no, it might not be used uninitialized */
if(dxy){
if(qpel){
- c->qpel_put[size][dxy](c->temp, ref[0] + x + y*stride, stride); //FIXME prototype (add h)
+ if (h << size == 16) {
+ c->qpel_put[size][dxy](c->temp, ref[0] + x + y*stride, stride); //FIXME prototype (add h)
+ } else if (size == 0 && h == 8) {
+ c->qpel_put[1][dxy](c->temp , ref[0] + x + y*stride , stride);
+ c->qpel_put[1][dxy](c->temp + 8, ref[0] + x + y*stride + 8, stride);
+ } else
+ av_assert2(0);
if(chroma){
int cx= hx/2;
int cy= hy/2;