mirror of https://git.ffmpeg.org/ffmpeg.git
Merge commit '998c9f15d1ca8c7489775ebcca51623b915988f1'
* 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>
This commit is contained in:
commit
2fd87a3d78
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue