mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-27 01:42:20 +00:00
indeo45: use is_indeo4 context flag instead of checking codec ID
Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
This commit is contained in:
parent
c67b449beb
commit
e121ac634b
@ -620,6 +620,8 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
||||
ctx->switch_buffers = switch_buffers;
|
||||
ctx->is_nonnull_frame = is_nonnull_frame;
|
||||
|
||||
ctx->is_indeo4 = 1;
|
||||
|
||||
ctx->p_frame = av_frame_alloc();
|
||||
if (!ctx->p_frame)
|
||||
return AVERROR(ENOMEM);
|
||||
|
@ -640,6 +640,8 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
||||
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;
|
||||
|
@ -968,8 +968,7 @@ int ff_ivi_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
if (ctx->gop_invalid)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
if (avctx->codec_id == AV_CODEC_ID_INDEO4 &&
|
||||
ctx->frame_type == IVI4_FRAMETYPE_NULL_LAST) {
|
||||
if (ctx->is_indeo4 && ctx->frame_type == IVI4_FRAMETYPE_NULL_LAST) {
|
||||
if (ctx->got_p_frame) {
|
||||
av_frame_move_ref(data, ctx->p_frame);
|
||||
*got_frame = 1;
|
||||
@ -1027,7 +1026,7 @@ int ff_ivi_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
}
|
||||
|
||||
if (ctx->is_scalable) {
|
||||
if (avctx->codec_id == AV_CODEC_ID_INDEO4)
|
||||
if (ctx->is_indeo4)
|
||||
ff_ivi_recompose_haar(&ctx->planes[0], frame->data[0], frame->linesize[0]);
|
||||
else
|
||||
ff_ivi_recompose53 (&ctx->planes[0], frame->data[0], frame->linesize[0]);
|
||||
@ -1045,8 +1044,7 @@ int ff_ivi_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
* to be the only way to handle the B-frames mode.
|
||||
* That's exactly the same Intel decoders do.
|
||||
*/
|
||||
if (avctx->codec_id == AV_CODEC_ID_INDEO4 &&
|
||||
ctx->frame_type == IVI4_FRAMETYPE_INTRA) {
|
||||
if (ctx->is_indeo4 && ctx->frame_type == IVI4_FRAMETYPE_INTRA) {
|
||||
int left;
|
||||
|
||||
while (get_bits(&ctx->gb, 8)); // skip version string
|
||||
@ -1077,7 +1075,7 @@ av_cold int ff_ivi_decode_close(AVCodecContext *avctx)
|
||||
ff_free_vlc(&ctx->mb_vlc.cust_tab);
|
||||
|
||||
#if IVI4_STREAM_ANALYSER
|
||||
if (avctx->codec_id == AV_CODEC_ID_INDEO4) {
|
||||
if (ctx->is_indeo4) {
|
||||
if (ctx->is_scalable)
|
||||
av_log(avctx, AV_LOG_ERROR, "This video uses scalability mode!\n");
|
||||
if (ctx->uses_tiling)
|
||||
|
@ -261,6 +261,8 @@ typedef struct IVI45DecContext {
|
||||
|
||||
int gop_invalid;
|
||||
|
||||
int is_indeo4;
|
||||
|
||||
AVFrame *p_frame;
|
||||
int got_p_frame;
|
||||
} IVI45DecContext;
|
||||
|
Loading…
Reference in New Issue
Block a user