intrax8 decoder patch by "someone"
[ffmpeg.git] / libavcodec / wmv2.c
index 16e9dfd..365f565 100644 (file)
@@ -29,6 +29,7 @@
 #include "msmpeg4.h"
 #include "msmpeg4data.h"
 #include "simple_idct.h"
+#include "intrax8.h"
 
 #define SKIP_TYPE_NONE 0
 #define SKIP_TYPE_MPEG 1
@@ -38,6 +39,7 @@
 
 typedef struct Wmv2Context{
     MpegEncContext s;
+    IntraX8Context x8;
     int j_type_bit;
     int j_type;
     int abt_flag;
@@ -472,12 +474,9 @@ int ff_wmv2_decode_secondary_picture_header(MpegEncContext * s)
 s->picture_number++; //FIXME ?
 
 
-//    if(w->j_type)
-//        return wmv2_decode_j_picture(w); //FIXME
-
     if(w->j_type){
-        av_log(s->avctx, AV_LOG_ERROR, "J-type picture is not supported\n");
-        return -1;
+        ff_intrax8_decode_picture(&w->x8, 2*s->qscale, (s->qscale-1)|1 );
+        return 1;
     }
 
     return 0;
@@ -830,11 +829,17 @@ int ff_wmv2_decode_mb(MpegEncContext *s, DCTELEM block[6][64])
 static int wmv2_decode_init(AVCodecContext *avctx){
     Wmv2Context * const w= avctx->priv_data;
 
+    if(avctx->idct_algo==FF_IDCT_AUTO){
+        avctx->idct_algo=FF_IDCT_WMV2;
+    }
+
     if(ff_h263_decode_init(avctx) < 0)
         return -1;
 
     wmv2_common_init(w);
 
+    ff_intrax8_common_init(&w->x8,&w->s);
+
     return 0;
 }