[FFmpeg-cvslog] r20771 - trunk/libavfilter/vf_vflip.c

stefano subversion
Tue Dec 8 18:08:49 CET 2009


Author: stefano
Date: Tue Dec  8 18:08:49 2009
New Revision: 20771

Log:
Fix alpha plane flipping for the yuva420p and similar pixel formats.

Modified:
   trunk/libavfilter/vf_vflip.c

Modified: trunk/libavfilter/vf_vflip.c
==============================================================================
--- trunk/libavfilter/vf_vflip.c	Tue Dec  8 15:50:46 2009	(r20770)
+++ trunk/libavfilter/vf_vflip.c	Tue Dec  8 18:08:49 2009	(r20771)
@@ -48,11 +48,11 @@ static AVFilterPicRef *get_video_buffer(
     AVFilterPicRef *picref = avfilter_get_video_buffer(link->dst->outputs[0],
                                                        perms, w, h);
 
-    picref->data[0] += (h-1) * picref->linesize[0];
-    picref->linesize[0] = -picref->linesize[0];
-    for (i = 1; i < 4; i ++) {
+    for (i = 0; i < 4; i ++) {
+        int vsub = i == 1 || i == 2 ? flip->vsub : 0;
+
         if (picref->data[i]) {
-            picref->data[i] += ((h >> flip->vsub)-1) * picref->linesize[i];
+            picref->data[i] += ((h >> vsub)-1) * picref->linesize[i];
             picref->linesize[i] = -picref->linesize[i];
         }
     }
@@ -66,11 +66,11 @@ static void start_frame(AVFilterLink *li
     AVFilterPicRef *ref2 = avfilter_ref_pic(picref, ~0);
     int i;
 
-    ref2->data[0] += (link->h-1) * ref2->linesize[0];
-    ref2->linesize[0] = -ref2->linesize[0];
-    for (i = 1; i < 4; i ++) {
+    for (i = 0; i < 4; i ++) {
+        int vsub = i == 1 || i == 2 ? flip->vsub : 0;
+
         if (ref2->data[i]) {
-            ref2->data[i] += ((link->h >> flip->vsub)-1) * ref2->linesize[i];
+            ref2->data[i] += ((link->h >> vsub)-1) * ref2->linesize[i];
             ref2->linesize[i] = -ref2->linesize[i];
         }
     }



More information about the ffmpeg-cvslog mailing list