MpegEncContext *s = avctx->priv_data;
int ret;
- s->avctx = avctx;
s->out_format = FMT_H263;
- s->width = avctx->coded_width;
- s->height = avctx->coded_height;
- s->workaround_bugs = avctx->workaround_bugs;
// set defaults
- ff_MPV_decode_defaults(s);
+ ff_mpv_decode_defaults(s);
+ ff_mpv_decode_init(s, avctx);
+
s->quant_precision = 5;
s->decode_mb = ff_h263_decode_mb;
s->low_delay = 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_H263P &&
- avctx->codec->id != AV_CODEC_ID_MPEG4)
- if ((ret = ff_MPV_common_init(s)) < 0)
+ 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);
{
MpegEncContext *s = avctx->priv_data;
- ff_MPV_common_end(s);
+ ff_mpv_common_end(s);
return 0;
}
if (ret < 0) {
const int xy = s->mb_x + s->mb_y * s->mb_stride;
if (ret == SLICE_END) {
- ff_MPV_decode_mb(s, s->block);
+ ff_mpv_decode_mb(s, s->block);
if (s->loop_filter)
ff_h263_loop_filter(s);
if (++s->mb_x >= s->mb_width) {
s->mb_x = 0;
ff_mpeg_draw_horiz_band(s, s->mb_y * mb_size, mb_size);
- ff_MPV_report_decode_progress(s);
+ ff_mpv_report_decode_progress(s);
s->mb_y++;
}
return 0;
return AVERROR_INVALIDDATA;
}
- ff_MPV_decode_mb(s, s->block);
+ ff_mpv_decode_mb(s, s->block);
if (s->loop_filter)
ff_h263_loop_filter(s);
}
ff_mpeg_draw_horiz_band(s, s->mb_y * mb_size, mb_size);
- ff_MPV_report_decode_progress(s);
+ ff_mpv_report_decode_progress(s);
s->mb_x = 0;
}
if (!s->context_initialized)
// we need the idct permutaton for reading a custom matrix
- 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 */
- if (s->current_picture_ptr == NULL || s->current_picture_ptr->f->data[0]) {
- int i = ff_find_unused_picture(s, 0);
- if (i < 0)
- return i;
- s->current_picture_ptr = &s->picture[i];
- }
+ ff_mpv_idct_init(s);
/* let's go :-) */
if (CONFIG_WMV2_DECODER && s->msmpeg4_version == 5) {
return ret;
}
+ if (!s->context_initialized)
+ if ((ret = ff_mpv_common_init(s)) < 0)
+ return ret;
+
+ if (!s->current_picture_ptr || s->current_picture_ptr->f->data[0]) {
+ int i = ff_find_unused_picture(s, 0);
+ if (i < 0)
+ return i;
+ s->current_picture_ptr = &s->picture[i];
+ }
+
avctx->has_b_frames = !s->low_delay;
if (CONFIG_MPEG4_DECODER && avctx->codec_id == AV_CODEC_ID_MPEG4) {
ff_set_sar(avctx, avctx->sample_aspect_ratio);
- if ((ret = ff_MPV_common_frame_size_change(s)))
+ if ((ret = ff_mpv_common_frame_size_change(s)))
return ret;
}
s->current_picture.f->key_frame = s->pict_type == AV_PICTURE_TYPE_I;
/* skip B-frames if we don't have reference frames */
- if (s->last_picture_ptr == NULL &&
+ if (!s->last_picture_ptr &&
(s->pict_type == AV_PICTURE_TYPE_B || s->droppable))
return get_consumed_bytes(s, buf_size);
if ((avctx->skip_frame >= AVDISCARD_NONREF &&
s->me.qpel_avg = s->qdsp.avg_qpel_pixels_tab;
}
- if ((ret = ff_MPV_frame_start(s, avctx)) < 0)
+ if ((ret = ff_mpv_frame_start(s, avctx)) < 0)
return ret;
if (!s->divx_packed && !avctx->hwaccel)
/* the second part of the wmv2 header contains the MB skip bits which
* are stored in current_picture->mb_type which is not available before
- * ff_MPV_frame_start() */
+ * ff_mpv_frame_start() */
if (CONFIG_WMV2_DECODER && s->msmpeg4_version == 5) {
ret = ff_wmv2_decode_secondary_picture_header(s);
if (ret < 0)
return ret;
}
- ff_MPV_frame_end(s);
+ ff_mpv_frame_end(s);
if (CONFIG_MPEG4_DECODER && avctx->codec_id == AV_CODEC_ID_MPEG4)
ff_mpeg4_frame_end(avctx, buf, buf_size);
return ret;
ff_print_debug_info(s, s->current_picture_ptr, pict);
ff_mpv_export_qp_table(s, pict, s->current_picture_ptr, FF_QSCALE_TYPE_MPEG1);
- } else if (s->last_picture_ptr != NULL) {
+ } else if (s->last_picture_ptr) {
if ((ret = av_frame_ref(pict, s->last_picture_ptr->f)) < 0)
return ret;
ff_print_debug_info(s, s->last_picture_ptr, pict);