Merge commit '998c9f15d1ca8c7489775ebcca51623b915988f1'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 15 Aug 2014 00:08:59 +0000 (02:08 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 15 Aug 2014 00:25:14 +0000 (02:25 +0200)
* commit '998c9f15d1ca8c7489775ebcca51623b915988f1':
  idct: remove call to ff_idctdsp_init from ff_MPV_common_init

Conflicts:
libavcodec/dnxhdenc.c
libavcodec/h263dec.c
libavcodec/mpegvideo.c
libavcodec/mpegvideo.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/dnxhdenc.c
libavcodec/h261dec.c
libavcodec/h263dec.c
libavcodec/mpeg12dec.c
libavcodec/mpeg4videodec.c
libavcodec/mpegvideo.c
libavcodec/mpegvideo.h
libavcodec/mpegvideo_enc.c
libavcodec/rv10.c
libavcodec/rv34.c

@@@ -324,12 -309,9 +324,11 @@@ static av_cold int dnxhd_encode_init(AV
  
      ff_blockdsp_init(&ctx->bdsp, avctx);
      ff_fdctdsp_init(&ctx->m.fdsp, avctx);
-     ff_idctdsp_init(&ctx->m.idsp, avctx);
+     ff_mpv_idct_init(&ctx->m);
      ff_mpegvideoencdsp_init(&ctx->m.mpvencdsp, avctx);
      ff_pixblockdsp_init(&ctx->m.pdsp, avctx);
-     ff_dct_common_init(&ctx->m);
 +    ff_dct_encode_init(&ctx->m);
 +
      if (!ctx->m.dct_quantize)
          ctx->m.dct_quantize = ff_dct_quantize_c;
  
Simple merge
@@@ -115,15 -111,13 +115,17 @@@ av_cold int ff_h263_decode_init(AVCodec
      }
      s->codec_id    = avctx->codec->id;
  
 +    if (avctx->stream_codec_tag == AV_RL32("l263") && avctx->extradata_size == 56 && avctx->extradata[0] == 1)
 +        s->ehc_mode = 1;
 +
      /* for h263, we allocate the images after having read the header */
      if (avctx->codec->id != AV_CODEC_ID_H263 &&
-         avctx->codec->id != AV_CODEC_ID_MPEG4)
 +        avctx->codec->id != AV_CODEC_ID_H263P &&
+         avctx->codec->id != AV_CODEC_ID_MPEG4) {
+         ff_mpv_idct_init(s);
          if ((ret = ff_MPV_common_init(s)) < 0)
              return ret;
+     }
  
      ff_h263dsp_init(&s->h263dsp);
      ff_qpeldsp_init(&s->qdsp);
@@@ -2185,8 -2141,16 +2184,9 @@@ static int vcr2_init_sequence(AVCodecCo
      s->low_delay        = 1;
  
      avctx->pix_fmt = mpeg_get_pixelformat(avctx);
 -
 -#if FF_API_XVMC
 -    if ((avctx->pix_fmt == AV_PIX_FMT_XVMC_MPEG2_IDCT || avctx->hwaccel) &&
 -        avctx->idct_algo == FF_IDCT_AUTO)
 -#else
 -    if (avctx->hwaccel && avctx->idct_algo == FF_IDCT_AUTO)
 -#endif /* FF_API_XVMC */
 -        avctx->idct_algo = FF_IDCT_SIMPLE;
 +    setup_hwaccel_for_pixfmt(avctx);
  
+     ff_mpv_idct_init(s);
      if (ff_MPV_common_init(s) < 0)
          return -1;
      s1->mpeg_enc_ctx_allocated = 1;
@@@ -2133,92 -2067,8 +2133,92 @@@ int ff_mpeg4_workaround_bugs(AVCodecCon
          ctx->divx_build   = -1;
      }
  
 -    if (CONFIG_MPEG4_DECODER && ctx->xvid_build >= 0)
 -        ff_xvididct_init(&s->idsp, s->avctx);
 +    if (s->workaround_bugs & FF_BUG_AUTODETECT) {
 +        if (s->codec_tag == AV_RL32("XVIX"))
 +            s->workaround_bugs |= FF_BUG_XVID_ILACE;
 +
 +        if (s->codec_tag == AV_RL32("UMP4"))
 +            s->workaround_bugs |= FF_BUG_UMP4;
 +
 +        if (ctx->divx_version >= 500 && ctx->divx_build < 1814)
 +            s->workaround_bugs |= FF_BUG_QPEL_CHROMA;
 +
 +        if (ctx->divx_version > 502 && ctx->divx_build < 1814)
 +            s->workaround_bugs |= FF_BUG_QPEL_CHROMA2;
 +
 +        if (ctx->xvid_build <= 3U)
 +            s->padding_bug_score = 256 * 256 * 256 * 64;
 +
 +        if (ctx->xvid_build <= 1U)
 +            s->workaround_bugs |= FF_BUG_QPEL_CHROMA;
 +
 +        if (ctx->xvid_build <= 12U)
 +            s->workaround_bugs |= FF_BUG_EDGE;
 +
 +        if (ctx->xvid_build <= 32U)
 +            s->workaround_bugs |= FF_BUG_DC_CLIP;
 +
 +#define SET_QPEL_FUNC(postfix1, postfix2)                           \
 +    s->qdsp.put_        ## postfix1 = ff_put_        ## postfix2;   \
 +    s->qdsp.put_no_rnd_ ## postfix1 = ff_put_no_rnd_ ## postfix2;   \
 +    s->qdsp.avg_        ## postfix1 = ff_avg_        ## postfix2;
 +
 +        if (ctx->lavc_build < 4653U)
 +            s->workaround_bugs |= FF_BUG_STD_QPEL;
 +
 +        if (ctx->lavc_build < 4655U)
 +            s->workaround_bugs |= FF_BUG_DIRECT_BLOCKSIZE;
 +
 +        if (ctx->lavc_build < 4670U)
 +            s->workaround_bugs |= FF_BUG_EDGE;
 +
 +        if (ctx->lavc_build <= 4712U)
 +            s->workaround_bugs |= FF_BUG_DC_CLIP;
 +
 +        if (ctx->divx_version >= 0)
 +            s->workaround_bugs |= FF_BUG_DIRECT_BLOCKSIZE;
 +        if (ctx->divx_version == 501 && ctx->divx_build == 20020416)
 +            s->padding_bug_score = 256 * 256 * 256 * 64;
 +
 +        if (ctx->divx_version < 500U)
 +            s->workaround_bugs |= FF_BUG_EDGE;
 +
 +        if (ctx->divx_version >= 0)
 +            s->workaround_bugs |= FF_BUG_HPEL_CHROMA;
 +    }
 +
 +    if (s->workaround_bugs & FF_BUG_STD_QPEL) {
 +        SET_QPEL_FUNC(qpel_pixels_tab[0][5], qpel16_mc11_old_c)
 +        SET_QPEL_FUNC(qpel_pixels_tab[0][7], qpel16_mc31_old_c)
 +        SET_QPEL_FUNC(qpel_pixels_tab[0][9], qpel16_mc12_old_c)
 +        SET_QPEL_FUNC(qpel_pixels_tab[0][11], qpel16_mc32_old_c)
 +        SET_QPEL_FUNC(qpel_pixels_tab[0][13], qpel16_mc13_old_c)
 +        SET_QPEL_FUNC(qpel_pixels_tab[0][15], qpel16_mc33_old_c)
 +
 +        SET_QPEL_FUNC(qpel_pixels_tab[1][5], qpel8_mc11_old_c)
 +        SET_QPEL_FUNC(qpel_pixels_tab[1][7], qpel8_mc31_old_c)
 +        SET_QPEL_FUNC(qpel_pixels_tab[1][9], qpel8_mc12_old_c)
 +        SET_QPEL_FUNC(qpel_pixels_tab[1][11], qpel8_mc32_old_c)
 +        SET_QPEL_FUNC(qpel_pixels_tab[1][13], qpel8_mc13_old_c)
 +        SET_QPEL_FUNC(qpel_pixels_tab[1][15], qpel8_mc33_old_c)
 +    }
 +
 +    if (avctx->debug & FF_DEBUG_BUGS)
 +        av_log(s->avctx, AV_LOG_DEBUG,
 +               "bugs: %X lavc_build:%d xvid_build:%d divx_version:%d divx_build:%d %s\n",
 +               s->workaround_bugs, ctx->lavc_build, ctx->xvid_build,
 +               ctx->divx_version, ctx->divx_build, s->divx_packed ? "p" : "");
 +
 +#if HAVE_MMX
 +    if (CONFIG_MPEG4_DECODER && ctx->xvid_build >= 0 &&
 +        s->codec_id == AV_CODEC_ID_MPEG4 &&
 +        avctx->idct_algo == FF_IDCT_AUTO &&
 +        (av_get_cpu_flags() & AV_CPU_FLAG_MMX)) {
 +        avctx->idct_algo = FF_IDCT_XVID;
-         ff_dct_common_init(s);
++        ff_mpv_idct_init(s);
 +        return 1;
 +    }
 +#endif
  
      return 0;
  }
@@@ -364,25 -374,11 +364,24 @@@ static void mpeg_er_decode_mb(void *opa
      ff_MPV_decode_mb(s, s->block);
  }
  
 +static void gray16(uint8_t *dst, const uint8_t *src, ptrdiff_t linesize, int h)
 +{
 +    while(h--)
 +        memset(dst + h*linesize, 128, 16);
 +}
 +
 +static void gray8(uint8_t *dst, const uint8_t *src, ptrdiff_t linesize, int h)
 +{
 +    while(h--)
 +        memset(dst + h*linesize, 128, 8);
 +}
 +
  /* init common dct for both encoder and decoder */
av_cold int ff_dct_common_init(MpegEncContext *s)
static av_cold int dct_init(MpegEncContext *s)
  {
      ff_blockdsp_init(&s->bdsp, s->avctx);
 +    ff_h264chroma_init(&s->h264chroma, 8); //for lowres
      ff_hpeldsp_init(&s->hdsp, s->avctx->flags);
-     ff_idctdsp_init(&s->idsp, s->avctx);
      ff_me_cmp_init(&s->mecc, s->avctx);
      ff_mpegvideodsp_init(&s->mdsp);
      ff_videodsp_init(&s->vdsp, s->avctx->bits_per_raw_sample);
@@@ -956,15 -914,8 +960,16 @@@ int ff_mpeg_update_thread_context(AVCod
          s->bitstream_buffer      = NULL;
          s->bitstream_buffer_size = s->allocated_bitstream_buffer_size = 0;
  
 -        ff_mpv_idct_init(s);
 -        ff_MPV_common_init(s);
 +        if (s1->context_initialized){
 +//             s->picture_range_start  += MAX_PICTURE_COUNT;
 +//             s->picture_range_end    += MAX_PICTURE_COUNT;
++            ff_mpv_idct_init(s);
 +            if((ret = ff_MPV_common_init(s)) < 0){
 +                memset(s, 0, sizeof(MpegEncContext));
 +                s->avctx = dst;
 +                return ret;
 +            }
 +        }
      }
  
      if (s->height != s1->height || s->width != s1->width || s->context_reinit) {
@@@ -751,8 -720,7 +751,8 @@@ void ff_MPV_report_decode_progress(Mpeg
  int ff_mpeg_update_thread_context(AVCodecContext *dst, const AVCodecContext *src);
  void ff_set_qscale(MpegEncContext * s, int qscale);
  
- int ff_dct_common_init(MpegEncContext *s);
+ void ff_mpv_idct_init(MpegEncContext *s);
 +int ff_dct_encode_init(MpegEncContext *s);
  void ff_convert_matrix(MpegEncContext *s, int (*qmat)[64], uint16_t (*qmat16)[2][64],
                         const uint16_t *quant_matrix, int bias, int qmin, int qmax, int intra);
  int ff_dct_quantize_c(MpegEncContext *s, int16_t *block, int n, int qscale, int *overflow);
Simple merge
Simple merge
Simple merge