Merge commit 'c39059bea3adebcd888571d1181db215eee54495'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 21 Jul 2014 00:14:25 +0000 (02:14 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 21 Jul 2014 00:16:13 +0000 (02:16 +0200)
* commit 'c39059bea3adebcd888571d1181db215eee54495':
  h264: Fix direct temporal mvs for bottom-field-first poc order

Conflicts:
libavcodec/h264_direct.c

See: ebd1c505d22ad96e044880755ed9f4cf7cab4f78
Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/h264_direct.c

diff --combined libavcodec/h264_direct.c
@@@ -2,20 -2,20 +2,20 @@@
   * H.26L/H.264/AVC/JVT/14496-10/... direct mb/block decoding
   * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -49,9 -49,8 +49,8 @@@ static int get_scale_factor(H264Contex
  
  void ff_h264_direct_dist_scale_factor(H264Context *const h)
  {
-     const int poc  = h->picture_structure == PICT_FRAME ?
-         h->cur_pic_ptr->poc :
-         h->cur_pic_ptr->field_poc[h->picture_structure == PICT_BOTTOM_FIELD];
+     const int poc  = FIELD_PICTURE(h) ? h->cur_pic_ptr->field_poc[h->picture_structure == PICT_BOTTOM_FIELD]
+                                       : h->cur_pic_ptr->poc;
      const int poc1 = h->ref_list[1][0].poc;
      int i, field;
  
@@@ -230,7 -229,6 +229,7 @@@ static void pred_spatial_direct_motion(
                  else
                      mv[list] = AV_RN32A(C);
              }
 +            av_assert2(ref[list] < (h->ref_count[list] << !!FRAME_MBAFF(h)));
          } else {
              int mask = ~(MB_TYPE_L0 << (2 * list));
              mv[list]  = 0;
@@@ -316,8 -314,8 +315,8 @@@ single_col
  
      await_reference_mb_row(h, &h->ref_list[1][0], mb_y);
  
 -    l1mv0  = &h->ref_list[1][0].motion_val[0][h->mb2b_xy[mb_xy]];
 -    l1mv1  = &h->ref_list[1][0].motion_val[1][h->mb2b_xy[mb_xy]];
 +    l1mv0  = (void*)&h->ref_list[1][0].motion_val[0][h->mb2b_xy[mb_xy]];
 +    l1mv1  = (void*)&h->ref_list[1][0].motion_val[1][h->mb2b_xy[mb_xy]];
      l1ref0 = &h->ref_list[1][0].ref_index[0][4 * mb_xy];
      l1ref1 = &h->ref_list[1][0].ref_index[1][4 * mb_xy];
      if (!b8_stride) {
@@@ -539,8 -537,8 +538,8 @@@ single_col
  
      await_reference_mb_row(h, &h->ref_list[1][0], mb_y);
  
 -    l1mv0  = &h->ref_list[1][0].motion_val[0][h->mb2b_xy[mb_xy]];
 -    l1mv1  = &h->ref_list[1][0].motion_val[1][h->mb2b_xy[mb_xy]];
 +    l1mv0  = (void*)&h->ref_list[1][0].motion_val[0][h->mb2b_xy[mb_xy]];
 +    l1mv1  = (void*)&h->ref_list[1][0].motion_val[1][h->mb2b_xy[mb_xy]];
      l1ref0 = &h->ref_list[1][0].ref_index[0][4 * mb_xy];
      l1ref1 = &h->ref_list[1][0].ref_index[1][4 * mb_xy];
      if (!b8_stride) {