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".