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>
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

index 3ad625352a6e075c94f699bb86a0331b16e480ac..3388f51e25400844678dc7ae838ad29f8aaf9a02 100644 (file)
@@ -324,10 +324,9 @@ static av_cold int dnxhd_encode_init(AVCodecContext *avctx)
 
     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)
index 7e63f29492e39c60a9814c6c92f6ad3cc2d1300f..9c46f2de23ae55ea235021de49f96548535242b2 100644 (file)
@@ -590,10 +590,12 @@ static int h261_decode_frame(AVCodecContext *avctx, void *data,
 retry:
     init_get_bits(&s->gb, buf, buf_size * 8);
 
-    if (!s->context_initialized)
+    if (!s->context_initialized) {
         // we need the IDCT permutaton for reading a custom matrix
+        ff_mpv_idct_init(s);
         if (ff_MPV_common_init(s) < 0)
             return -1;
+    }
 
     ret = h261_decode_picture_header(h);
 
index 31ec642e9f0e20bd4e58d86c3a3a33b5f5b77350..74e4be43a1afa5b5ea49c04c724d1b6a985ac64e 100644 (file)
@@ -121,9 +121,11 @@ av_cold int ff_h263_decode_init(AVCodecContext *avctx)
     /* 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_H263P &&
-        avctx->codec->id != AV_CODEC_ID_MPEG4)
+        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);
@@ -454,10 +456,12 @@ retry:
     if (ret < 0)
         return ret;
 
-    if (!s->context_initialized)
+    if (!s->context_initialized) {
         // we need the idct permutaton for reading a custom matrix
+        ff_mpv_idct_init(s);
         if ((ret = ff_MPV_common_init(s)) < 0)
             return ret;
+    }
 
     /* We need to set current_picture_ptr before reading the header,
      * otherwise we cannot store anyting in there */
index 85bb7b0705856247bfdb00eb9ee7a8b4a094e8ac..1f2bf50a5b1bb82e2c3a2d8f371d9945bd33ee49 100644 (file)
@@ -1118,18 +1118,16 @@ static av_cold int mpeg_decode_init(AVCodecContext *avctx)
 {
     Mpeg1Context *s    = avctx->priv_data;
     MpegEncContext *s2 = &s->mpeg_enc_ctx;
-    int i;
-
-    /* we need some permutation to store matrices,
-     * until MPV_common_init() sets the real permutation. */
-    for (i = 0; i < 64; i++)
-        s2->idsp.idct_permutation[i] = i;
 
     ff_MPV_decode_defaults(s2);
 
     s->mpeg_enc_ctx.avctx  = avctx;
     s->mpeg_enc_ctx.flags  = avctx->flags;
     s->mpeg_enc_ctx.flags2 = avctx->flags2;
+
+    /* we need some permutation to store matrices,
+     * until the decoder sets the real permutation. */
+    ff_mpv_idct_init(s2);
     ff_mpeg12_common_init(&s->mpeg_enc_ctx);
     ff_mpeg12_init_vlcs();
 
@@ -1359,6 +1357,7 @@ static int mpeg_decode_postinit(AVCodecContext *avctx)
          * if DCT permutation is changed. */
         memcpy(old_permutation, s->idsp.idct_permutation, 64 * sizeof(uint8_t));
 
+        ff_mpv_idct_init(s);
         if (ff_MPV_common_init(s) < 0)
             return -2;
 
@@ -2187,6 +2186,7 @@ static int vcr2_init_sequence(AVCodecContext *avctx)
     avctx->pix_fmt = mpeg_get_pixelformat(avctx);
     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;
index 021f2c5ac6b28cbdd38fa85ae4727137b63446f5..56661b4203c921857694e199aad49954c2dad45c 100644 (file)
@@ -2215,7 +2215,7 @@ int ff_mpeg4_workaround_bugs(AVCodecContext *avctx)
         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
index 4672359d71f0b0e7d79e3e00a0edab6bfe263ada..f6b9a0409499d0b8df36f7b3838ecf03217d2d83 100644 (file)
@@ -377,12 +377,11 @@ static void gray8(uint8_t *dst, const uint8_t *src, ptrdiff_t linesize, int h)
 }
 
 /* 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);
@@ -421,6 +420,13 @@ av_cold int ff_dct_common_init(MpegEncContext *s)
     if (ARCH_X86)
         ff_MPV_common_init_x86(s);
 
+    return 0;
+}
+
+av_cold void ff_mpv_idct_init(MpegEncContext *s)
+{
+    ff_idctdsp_init(&s->idsp, s->avctx);
+
     /* load & permutate scantables
      * note: only wmv uses different ones
      */
@@ -433,8 +439,6 @@ av_cold int ff_dct_common_init(MpegEncContext *s)
     }
     ff_init_scantable(s->idsp.idct_permutation, &s->intra_h_scantable, ff_alternate_horizontal_scan);
     ff_init_scantable(s->idsp.idct_permutation, &s->intra_v_scantable, ff_alternate_vertical_scan);
-
-    return 0;
 }
 
 static int frame_size_alloc(MpegEncContext *s, int linesize)
@@ -959,6 +963,7 @@ int ff_mpeg_update_thread_context(AVCodecContext *dst,
         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;
@@ -1302,7 +1307,7 @@ av_cold int ff_MPV_common_init(MpegEncContext *s)
         av_image_check_size(s->width, s->height, 0, s->avctx))
         return -1;
 
-    ff_dct_common_init(s);
+    dct_init(s);
 
     s->flags  = s->avctx->flags;
     s->flags2 = s->avctx->flags2;
index 2e819c03dd5f6190bde519beb26a5aa81fec6398..6a27a557238201c683bb37a8d5f5417dd24d2b05 100644 (file)
@@ -751,7 +751,7 @@ void ff_MPV_report_decode_progress(MpegEncContext *s);
 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);
index eefde7aaa74efa9d37126d5efe098ec585a19dd5..774e235dd414b2b88b8ac8fab959c9b109ec095a 100644 (file)
@@ -837,6 +837,7 @@ av_cold int ff_MPV_encode_init(AVCodecContext *avctx)
                                 s->alternate_scan);
 
     /* init */
+    ff_mpv_idct_init(s);
     if (ff_MPV_common_init(s) < 0)
         return -1;
 
index be6ca84dc3951836246a6909eefc511ca8143a14..985644d7f7b4060568fe0c7eed791efcd4bc1a0a 100644 (file)
@@ -517,6 +517,7 @@ static av_cold int rv10_decode_init(AVCodecContext *avctx)
 
     avctx->pix_fmt = AV_PIX_FMT_YUV420P;
 
+    ff_mpv_idct_init(s);
     if ((ret = ff_MPV_common_init(s)) < 0)
         return ret;
 
index d82b41e2a0660a8d9ae09b3f951070cd7cd54867..19e4ce024b92bdd98e8ed36a470650de7d993053 100644 (file)
@@ -1502,6 +1502,7 @@ av_cold int ff_rv34_decode_init(AVCodecContext *avctx)
     avctx->has_b_frames = 1;
     s->low_delay = 0;
 
+    ff_mpv_idct_init(s);
     if ((ret = ff_MPV_common_init(s)) < 0)
         return ret;
 
@@ -1538,6 +1539,7 @@ int ff_rv34_decode_init_thread_copy(AVCodecContext *avctx)
 
     if (avctx->internal->is_copy) {
         r->tmp_b_block_base = NULL;
+        ff_mpv_idct_init(&r->s);
         if ((err = ff_MPV_common_init(&r->s)) < 0)
             return err;
         if ((err = rv34_decoder_alloc(r)) < 0) {