#define BITSTREAM_READER_LE
#include "avcodec.h"
#include "get_bits.h"
-#include "dsputil.h"
+#include "ivi.h"
#include "ivi_dsp.h"
-#include "ivi_common.h"
#include "indeo5data.h"
/**
}
/* check if picture layout was changed and reallocate buffers */
- if (ivi_pic_config_cmp(&pic_conf, &ctx->pic_conf)) {
- result = ff_ivi_init_planes(ctx->planes, &pic_conf);
+ if (ivi_pic_config_cmp(&pic_conf, &ctx->pic_conf) || ctx->gop_invalid) {
+ result = ff_ivi_init_planes(ctx->planes, &pic_conf, 0);
if (result < 0) {
av_log(avctx, AV_LOG_ERROR, "Couldn't reallocate color planes!\n");
return result;
ctx->frame_num = get_bits(&ctx->gb, 8);
if (ctx->frame_type == FRAMETYPE_INTRA) {
- ctx->gop_invalid = 1;
if ((ret = decode_gop_header(ctx, avctx)) < 0) {
av_log(avctx, AV_LOG_ERROR, "Invalid GOP header, skipping frames.\n");
+ ctx->gop_invalid = 1;
return ret;
}
ctx->gop_invalid = 0;
ctx->pic_conf.tile_height = avctx->height;
ctx->pic_conf.luma_bands = ctx->pic_conf.chroma_bands = 1;
- result = ff_ivi_init_planes(ctx->planes, &ctx->pic_conf);
+ result = ff_ivi_init_planes(ctx->planes, &ctx->pic_conf, 0);
if (result) {
av_log(avctx, AV_LOG_ERROR, "Couldn't allocate color planes!\n");
return AVERROR_INVALIDDATA;
ctx->switch_buffers = switch_buffers;
ctx->is_nonnull_frame = is_nonnull_frame;
+ ctx->is_indeo4 = 0;
+
avctx->pix_fmt = AV_PIX_FMT_YUV410P;
return 0;
AVCodec ff_indeo5_decoder = {
.name = "indeo5",
+ .long_name = NULL_IF_CONFIG_SMALL("Intel Indeo Video Interactive 5"),
.type = AVMEDIA_TYPE_VIDEO,
.id = AV_CODEC_ID_INDEO5,
.priv_data_size = sizeof(IVI45DecContext),
.init = decode_init,
.close = ff_ivi_decode_close,
.decode = ff_ivi_decode_frame,
- .long_name = NULL_IF_CONFIG_SMALL("Intel Indeo Video Interactive 5"),
- .capabilities = CODEC_CAP_DR1,
+ .capabilities = AV_CODEC_CAP_DR1,
};