]> git.sesse.net Git - movit/blobdiff - effect_chain.h
In ResampleEffect, precompute the Lanczos function into a table.
[movit] / effect_chain.h
index e07c2e9061b9b01f68d6baf753dacec03cead707..2e89c3bcc38717473c10f8b05cfffe80a68b9689 100644 (file)
@@ -83,6 +83,21 @@ enum YCbCrOutputSplitting {
        YCBCR_OUTPUT_PLANAR,
 };
 
+// Where (0,0) is taken to be in the output. If you want to render to an
+// OpenGL screen, you should keep the default of bottom-left, as that is
+// OpenGL's natural coordinate system. However, there are cases, such as if you
+// render to an FBO and read the pixels back into some other system, where
+// you'd want a top-left origin; if so, an additional flip step will be added
+// at the very end (but done in a vertex shader, so it will have zero extra
+// cost).
+//
+// Note that Movit's coordinate system in general consistently puts (0,0) in
+// the top left for _input_, no matter what you set as output origin.
+enum OutputOrigin {
+       OUTPUT_ORIGIN_BOTTOM_LEFT,
+       OUTPUT_ORIGIN_TOP_LEFT,
+};
+
 // A node in the graph; basically an effect and some associated information.
 class Node {
 public:
@@ -225,6 +240,14 @@ public:
                this->num_dither_bits = num_bits;
        }
 
+       // Set where (0,0) is taken to be in the output. The default is
+       // OUTPUT_ORIGIN_BOTTOM_LEFT, which is usually what you want
+       // (see OutputOrigin above for more details).
+       void set_output_origin(OutputOrigin output_origin)
+       {
+               this->output_origin = output_origin;
+       }
+
        void finalize();
 
        // Measure the GPU time used for each actual phase during rendering.
@@ -378,6 +401,7 @@ private:
        std::vector<Phase *> phases;
 
        unsigned num_dither_bits;
+       OutputOrigin output_origin;
        bool finalized;
 
        ResourcePool *resource_pool;