gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog backend/render_handler.h backen...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen...
Date: Mon, 04 Jun 2007 16:59:04 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/06/04 16:59:03

Modified files:
        .              : ChangeLog 
        backend        : render_handler.h render_handler_agg.cpp 
                         render_handler_agg.h 
        testsuite      : MovieTester.cpp 

Log message:
                * backend/render_handler.h: expose a new getBitsPerPixel 
interface.
                * backend/render_handler_agg.{cpp,h}: implement getBitsPerPixel,
                  const-correct the existing getBytesPerPixel.
                * testsuite/MovieTester.cpp (checkPixel): never use a tolerance
                  inferior to the minimum tolerance for a renderer, with min 
tolerance
                  being a function of BPP (formula suggested by UdoG).
                  Fixes bug #20035.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3447&r2=1.3448
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler.h?cvsroot=gnash&r1=1.40&r2=1.41
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_agg.cpp?cvsroot=gnash&r1=1.83&r2=1.84
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_agg.h?cvsroot=gnash&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/MovieTester.cpp?cvsroot=gnash&r1=1.37&r2=1.38

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3447
retrieving revision 1.3448
diff -u -b -r1.3447 -r1.3448
--- ChangeLog   4 Jun 2007 14:31:30 -0000       1.3447
+++ ChangeLog   4 Jun 2007 16:59:02 -0000       1.3448
@@ -1,5 +1,15 @@
 2007-06-04 Sandro Santilli <address@hidden>
 
+       * backend/render_handler.h: expose a new getBitsPerPixel interface.
+       * backend/render_handler_agg.{cpp,h}: implement getBitsPerPixel,
+         const-correct the existing getBytesPerPixel.
+       * testsuite/MovieTester.cpp (checkPixel): never use a tolerance
+         inferior to the minimum tolerance for a renderer, with min tolerance
+         being a function of BPP (formula suggested by UdoG).
+         Fixes bug #20035.
+
+2007-06-04 Sandro Santilli <address@hidden>
+
        * server/asobj/NetStreamFfmpeg.cpp (av_streamer): sleep for 1
          microsecond between iterations, to allow other threads to run.
          Fixes the 100% CPU problem (thanks to UdoG for support).

Index: backend/render_handler.h
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- backend/render_handler.h    28 May 2007 15:40:57 -0000      1.40
+++ backend/render_handler.h    4 Jun 2007 16:59:03 -0000       1.41
@@ -18,7 +18,7 @@
 // 
 //
 
-/* $Id: render_handler.h,v 1.40 2007/05/28 15:40:57 ann Exp $ */
+/* $Id: render_handler.h,v 1.41 2007/06/04 16:59:03 strk Exp $ */
 
 #ifndef RENDER_HANDLER_H
 #define RENDER_HANDLER_H
@@ -582,6 +582,19 @@
                return false;
        }
   
+       /// Return color depth (bits per pixel) or 0 if unknown/unimplemented.
+       //
+       /// Default implementation returns 0 (unknown).
+       ///
+       /// TODO: this should be a pure abstract function, just don't want
+       ///       to scan ogl and cairo backend for an implementation *now*
+       ///       but would be needed for automated testing... Quinn, can you 
help ?
+       ///
+       virtual unsigned int getBitsPerPixel() const
+       {
+               return 0;
+       }
+  
        /// Sets the x/y scale for the movie  
        virtual void set_scale(float /*xscale*/, float /*yscale*/) {
                // nop

Index: backend/render_handler_agg.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler_agg.cpp,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -b -r1.83 -r1.84
--- backend/render_handler_agg.cpp      29 May 2007 08:49:14 -0000      1.83
+++ backend/render_handler_agg.cpp      4 Jun 2007 16:59:03 -0000       1.84
@@ -17,7 +17,7 @@
 
  
 
-/* $Id: render_handler_agg.cpp,v 1.83 2007/05/29 08:49:14 udog Exp $ */
+/* $Id: render_handler_agg.cpp,v 1.84 2007/06/04 16:59:03 strk Exp $ */
 
 // Original version by Udo Giacomozzi and Hannes Mayr, 
 // INDUNET GmbH (www.indunet.it)
@@ -1999,7 +1999,7 @@
     scale.m_y = PIXELS_TO_TWIPS(yscale);
   }
   
-  virtual unsigned int getBytesPerPixel() {
+  virtual unsigned int getBytesPerPixel() const {
     return bpp/8;
   }  
   

Index: backend/render_handler_agg.h
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler_agg.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- backend/render_handler_agg.h        28 May 2007 15:40:57 -0000      1.16
+++ backend/render_handler_agg.h        4 Jun 2007 16:59:03 -0000       1.17
@@ -42,7 +42,9 @@
   // these methods need to be accessed from outside:
   virtual void init_buffer(unsigned char *mem, int size, int x, int y)=0;
 
-  virtual unsigned int getBytesPerPixel()=0;
+  virtual unsigned int getBytesPerPixel() const=0;
+
+  unsigned int getBitsPerPixel() const { return getBytesPerPixel()*8; }
   
   virtual bool initTestBuffer(unsigned width, unsigned height) {
     int size = width * height * getBytesPerPixel();

Index: testsuite/MovieTester.cpp
===================================================================
RCS file: /sources/gnash/gnash/testsuite/MovieTester.cpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -b -r1.37 -r1.38
--- testsuite/MovieTester.cpp   29 May 2007 17:15:14 -0000      1.37
+++ testsuite/MovieTester.cpp   4 Jun 2007 16:59:03 -0000       1.38
@@ -40,6 +40,7 @@
 #include <cstdio>
 #include <string>
 #include <memory> // for auto_ptr
+#include <cmath> // for ceil and exp2
 
 #define SHOW_INVALIDATED_BOUNDS_ON_ADVANCE 1
 
@@ -238,22 +239,36 @@
 
                rgba obt_col;
 
-               if ( ! rend.getRenderer().getAveragePixel(obt_col, x, y, 
radius) )
-               //if ( ! rend.getRenderer().getPixel(obt_col, x, y) )
+               render_handler& handler = rend.getRenderer();
+
+               if ( ! handler.getAveragePixel(obt_col, x, y, radius) )
                {
                        ss << " is out of rendering buffer";
                        log_msg("%sFAILED: %s (%s)", X,
                                        ss.str().c_str(),
                                        label.c_str()
                                        );
+                       continue;
+               }
+
+               // Find minimum tolerance as a function of BPP
+
+               unsigned short minRendererTolerance = tolerance;
+               unsigned int bpp = handler.getBitsPerPixel();
+               if ( bpp ) 
+               {
+                       // UdoG: check_pixel should *always* tolerate at least 
2 ^ (8 - bpp/3)
+                       minRendererTolerance = int(ceil(exp2(8 - bpp/3)));
                }
 
+               unsigned short tol = std::max(tolerance, minRendererTolerance);
+
                ss << "exp:" << color.toShortString() << " ";
                ss << "obt:" << obt_col.toShortString() << " ";
-               ss << "tol:" << tolerance;
+               ss << "tol:" << tol;
 
-               FuzzyPixel obt(obt_col, tolerance);
-               if (exp ==  obt)
+               FuzzyPixel obt(obt_col, tol);
+               if (exp ==  obt) // equality operator would use tolerance of 
most tolerating FuzzyPixel
                {
                        log_msg("%sPASSED: %s %s", X,
                                        ss.str().c_str(),




reply via email to

[Prev in Thread] Current Thread [Next in Thread]