indeo45: use is_indeo4 context flag instead of checking codec ID
authorDirk Ausserhaus <dausserhaus@gmail.com>
Fri, 20 Jun 2014 18:15:20 +0000 (20:15 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Mon, 23 Jun 2014 07:29:39 +0000 (09:29 +0200)
Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
libavcodec/indeo4.c
libavcodec/indeo5.c
libavcodec/ivi_common.c
libavcodec/ivi_common.h

index 3e97221..6893077 100644 (file)
@@ -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);
index 476355b..2465ce6 100644 (file)
@@ -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;
index 6eb5b6c..93936c2 100644 (file)
@@ -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)
index 604b549..515b073 100644 (file)
@@ -261,6 +261,8 @@ typedef struct IVI45DecContext {
 
     int gop_invalid;
 
+    int is_indeo4;
+
     AVFrame         *p_frame;
     int             got_p_frame;
 } IVI45DecContext;