]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Invoke future RV30/40 loop filter for already decoded rows instead of
authorkostya <kostya@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 29 Nov 2008 06:22:31 +0000 (06:22 +0000)
committerkostya <kostya@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 29 Nov 2008 06:22:31 +0000 (06:22 +0000)
the whole frame at once.

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@15949 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/rv34.c
libavcodec/rv34.h

index 9f84c4d9761ed4509ae10e9e58e0676188459c9b..bd0dfff0b8c1edcde9fe6d2c5fe91888f8206765 100644 (file)
@@ -1285,6 +1285,9 @@ static int rv34_decode_slice(RV34DecContext *r, int end, uint8_t* buf, int buf_s
 
             memmove(r->intra_types_hist, r->intra_types, s->b4_stride * 4 * sizeof(*r->intra_types_hist));
             memset(r->intra_types, -1, s->b4_stride * 4 * sizeof(*r->intra_types_hist));
+
+            if(r->loop_filter && s->mb_y >= 2)
+                r->loop_filter(r, s->mb_y - 2);
         }
         if(s->mb_x == s->resync_mb_x)
             s->first_slice_line=0;
@@ -1405,7 +1408,7 @@ int ff_rv34_decode_frame(AVCodecContext *avctx,
 
     if(last){
         if(r->loop_filter)
-            r->loop_filter(r);
+            r->loop_filter(r, s->mb_height - 1);
         ff_er_frame_end(s);
         MPV_frame_end(s);
         if (s->pict_type == FF_B_TYPE || s->low_delay) {
index 16e0faa42331524c3748c054e854abac3d52d8a7..fc3642d8838b3a93f634a360064cc5f4420a4c76 100644 (file)
@@ -115,7 +115,7 @@ typedef struct RV34DecContext{
     int (*parse_slice_header)(struct RV34DecContext *r, GetBitContext *gb, SliceInfo *si);
     int (*decode_mb_info)(struct RV34DecContext *r);
     int (*decode_intra_types)(struct RV34DecContext *r, GetBitContext *gb, int8_t *dst);
-    void (*loop_filter)(struct RV34DecContext *r);
+    void (*loop_filter)(struct RV34DecContext *r, int row);
 }RV34DecContext;
 
 /**