comment algorithm
authorThomas Vander Stichele <thomas@apestaart.org>
Thu, 22 Jul 2004 16:43:15 +0000 (16:43 +0000)
committerThomas Vander Stichele <thomas@apestaart.org>
Thu, 22 Jul 2004 16:43:15 +0000 (16:43 +0000)
Original commit message from CVS:
comment algorithm

ChangeLog
gst/videoscale/videoscale.c

index 173e4d02dc62b9293bbb4724cb7135e577c2a072..684ab438ec1786929301b721a5f81dc1339b5362 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-07-22  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videoscale/videoscale.c: (gst_videoscale_planar411),
+       (gst_videoscale_scale_nearest_16bit):
+         comment algorithm
+
 2004-07-22  Thomas Vander Stichele  <thomas at apestaart dot org>
 
        * gst/videotestsrc/gstvideotestsrc.c:
index 886ce2bc31557dbf0d80bbbcdc535afacf57bd03..72fe610985c400adbe20f56370c6f08060974a43 100644 (file)
@@ -778,18 +778,20 @@ gst_videoscale_scale_nearest_16bit (GstVideoscale * scale,
   guchar *destp;
   guchar *srcp;
 
-  GST_LOG_OBJECT (scale, "scaling nearest %p %p %d", src, dest, dw);
+  GST_LOG_OBJECT (scale, "scaling nearest from %p to %p, destination width %d",
+      src, dest, dw);
 
 
   ypos = 0;
-  yinc = (sh << 16) / dh;
+  yinc = (sh << 16) / dh;       /* 16 bit fixed point arithmetic */
   xinc = (sw << 16) / dw;
 
-  for (y = dh; y; y--) {
+  /* go over all destination lines */
+  for (y = dh; y; y--) {        /* faster than 0 .. dh */
 
-    if (ypos >= 0x10000) {
-      src += (ypos >> 16) * sw * 2;
-      ypos &= 0xffff;
+    if (ypos >= 0x10000) {      /* ypos >= 1 ? */
+      src += (ypos >> 16) * sw * 2;     /* go down round(ypos) src lines */
+      ypos &= 0xffff;           /* ypos %= 1 */
     }
 
     xpos = 0;
@@ -797,17 +799,18 @@ gst_videoscale_scale_nearest_16bit (GstVideoscale * scale,
     srcp = src;
     destp = dest;
 
+    /* go over all destination pixels for each line */
     for (x = dw; x; x--) {
-      if (xpos >= 0x10000) {
-        srcp += (xpos >> 16) * 2;
-        xpos &= 0xffff;
+      if (xpos >= 0x10000) {    /* xpos >= 1 ? */
+        srcp += (xpos >> 16) * 2;       /* go right round(xpos) src pixels */
+        xpos &= 0xffff;         /* xpos %= 1 */
       }
       destp[0] = srcp[0];
       destp[1] = srcp[1];
-      destp += 2;
+      destp += 2;               /* go right one destination pixel */
       xpos += xinc;
     }
-    dest += dw * 2;
+    dest += dw * 2;             /* go down one destination line */
 
     ypos += yinc;
   }