From: Kartik K. Khullar<kartikkhullar...@gmail.com>

---
 FFmpeg/libavcodec/flif16transform.c | 53 +++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/FFmpeg/libavcodec/flif16transform.c 
b/FFmpeg/libavcodec/flif16transform.c
index e69de29..febf5e9 100644
--- a/FFmpeg/libavcodec/flif16transform.c
+++ b/FFmpeg/libavcodec/flif16transform.c
@@ -0,0 +1,53 @@
+#include <math.h>
+#include <stdint.h>
+
+//array of 2 elements is used as parameter because it represents min, max pair.
+void TransformYCoCg(int16_t *range[2], int16_t *crange[2], int16_t yval, 
int16_t coval){       
+       int max_temp;
+       if (range[1][0] > range[1][1]){
+               if (range[1][0] > range[1][2]){
+                       max_temp = range[1][0];
+               }
+               else{
+                       max_temp = range[1][2];
+               }
+       }
+       else{
+               max_temp  = range[1][1];
+       }
+       int origmax4 = max_temp / 4 + 1;
+       int newmax = 4*origmax4 - 1;
+       
+       //Updating color ranges
+       range[0][0] = 0;                //first channel minimum
+       range[1][0] = newmax;   //first channek maximum
+       range[0][1] = -newmax;  //second channel minimum
+       range[1][1] = newmax;   //second channel maximum
+       range[0][2] = -newmax;  //third channel minimum
+       range[1][2] = newmax;   //third channel maximum
+       
+       //Updating conditional range values
+       crange[0][0] = range[0][0];
+       crange[1][0] = range[1][0];
+       
+       if (yval < origmax4 - 1){
+               crange[0][1] = -3 + 4*yval;
+               crange[1][1] = 3 + 4*yval;
+               crange[0][2] = -2 - 2*yval;
+               crange[1][2] = 1 + 2 * yval - 2 * (abs(coval)/2);
+       }
+       else if (yval > 3*origmax4 - 1){
+               crange[0][1] = 4*(yval - newmax);
+               crange[1][1] = 4*(newmax - yval);
+               crange[0][2] = -2*(newmax - yval) + 2 * ((abs(coval)+1)/2);
+               crange[1][2] = 2*(newmax - yval);
+       }
+       else{   
+               crange[0][1] = -newmax;
+               crange[1][1] = newmax;
+               crange[0][2] = (((2*newmax - 2*yval - 2*abs(coval) + 1) < (2 * 
yval + 1)) ? 
+               (2*newmax - 2*yval - 2*abs(coval) + 1) : (2 * yval + 1)) / 2;
+               crange[1][2] = (2*(yval - newmax)) < (-2*yval - 1 + 
2*(abs(coval)/2)) ? 
+               (2*(yval - newmax)) : (-2*yval - 1 + 2*(abs(coval)/2));
+       }
+}
\ No newline at end of file
-- 
2.20.1.windows.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to