Merge commit 'b063582e0c4f775a8ba377488bd085595e0e7fae'
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 21 Mar 2015 14:25:31 +0000 (15:25 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 21 Mar 2015 14:27:29 +0000 (15:27 +0100)
* commit 'b063582e0c4f775a8ba377488bd085595e0e7fae':
  h264: move intra_pcm_ptr into the per-slice context

Conflicts:
libavcodec/h264.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/h264.h
libavcodec/h264_cabac.c
libavcodec/h264_cavlc.c
libavcodec/h264_mb_template.c
libavcodec/h264_slice.c

@@@ -511,8 -469,7 +512,7 @@@ typedef struct H264Context 
      GetBitContext *intra_gb_ptr;
      GetBitContext *inter_gb_ptr;
  
-     const uint8_t *intra_pcm_ptr;
 -    DECLARE_ALIGNED(16, int16_t, mb)[16 * 48 * 2]; ///< as a dct coeffecient is int32_t in high depth, we need to reserve twice the space.
 +    DECLARE_ALIGNED(16, int16_t, mb)[16 * 48 * 2]; ///< as a dct coefficient is int32_t in high depth, we need to reserve twice the space.
      DECLARE_ALIGNED(16, int16_t, mb_luma_dc)[3][16 * 2];
      int16_t mb_padding[256 * 2];        ///< as mb is addressed by scantable[i] and scantable is uint8_t we can either check that i is not too large or ensure that there is some unused stuff after mb
  
Simple merge
Simple merge
@@@ -100,11 -100,11 +100,11 @@@ static av_noinline void FUNC(hl_decode_
      }
  
      if (!SIMPLE && IS_INTRA_PCM(mb_type)) {
 +        const int bit_depth = h->sps.bit_depth_luma;
          if (PIXEL_SHIFT) {
 -            const int bit_depth = h->sps.bit_depth_luma;
              int j;
              GetBitContext gb;
-             init_get_bits(&gb, h->intra_pcm_ptr,
+             init_get_bits(&gb, sl->intra_pcm_ptr,
                            ff_h264_mb_sizes[h->sps.chroma_format_idc] * bit_depth);
  
              for (i = 0; i < 16; i++) {
              }
          } else {
              for (i = 0; i < 16; i++)
-                 memcpy(dest_y + i * linesize, h->intra_pcm_ptr + i * 16, 16);
+                 memcpy(dest_y + i * linesize, sl->intra_pcm_ptr + i * 16, 16);
              if (SIMPLE || !CONFIG_GRAY || !(h->flags & CODEC_FLAG_GRAY)) {
                  if (!h->sps.chroma_format_idc) {
 -                    for (i = 0; i < block_h; i++) {
 -                        memset(dest_cb + i * uvlinesize, 128, 8);
 -                        memset(dest_cr + i * uvlinesize, 128, 8);
 +                    for (i = 0; i < 8; i++) {
 +                        memset(dest_cb + i * uvlinesize, 1 << (bit_depth - 1), 8);
 +                        memset(dest_cr + i * uvlinesize, 1 << (bit_depth - 1), 8);
                      }
                  } else {
-                     const uint8_t *src_cb = h->intra_pcm_ptr + 256;
-                     const uint8_t *src_cr = h->intra_pcm_ptr + 256 + block_h * 8;
+                     const uint8_t *src_cb = sl->intra_pcm_ptr + 256;
+                     const uint8_t *src_cr = sl->intra_pcm_ptr + 256 + block_h * 8;
                      for (i = 0; i < block_h; i++) {
                          memcpy(dest_cb + i * uvlinesize, src_cb + i * 8, 8);
                          memcpy(dest_cr + i * uvlinesize, src_cr + i * 8, 8);
@@@ -531,17 -494,9 +531,17 @@@ int ff_h264_update_thread_context(AVCod
          for (i = 0; i < MAX_PPS_COUNT; i++)
              av_freep(h->pps_buffers + i);
  
 -        memcpy(h, h1, sizeof(*h1));
 +        av_freep(&h->rbsp_buffer[0]);
 +        av_freep(&h->rbsp_buffer[1]);
 +        ff_h264_unref_picture(h, &h->last_pic_for_ec);
-         memcpy(h, h1, offsetof(H264Context, intra_pcm_ptr));
++        memcpy(h, h1, offsetof(H264Context, mb));
 +        memcpy(&h->cabac, &h1->cabac,
 +               sizeof(H264Context) - offsetof(H264Context, cabac));
 +        av_assert0((void*)&h->cabac == &h->mb_padding + 1);
 +
          memset(h->sps_buffers, 0, sizeof(h->sps_buffers));
          memset(h->pps_buffers, 0, sizeof(h->pps_buffers));
 +
          memset(&h->er, 0, sizeof(h->er));
          memset(&h->mb, 0, sizeof(h->mb));
          memset(&h->mb_luma_dc, 0, sizeof(h->mb_luma_dc));