gen_colorspace_tables.c

来自「这个库实现了录象功能」· C语言 代码 · 共 713 行 · 第 1/2 页

C
713
字号
  printf("#endif // HAVE_RGB_TO_YUV\n\n");  printf("#ifdef HAVE_RGB_TO_YUVJ\n\n");    printf("static int r_to_yj[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)((0.29900)*0x10000 * i + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static int g_to_yj[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)((0.58700)*0x10000 * i + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static int b_to_yj[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)((0.11400)*0x10000 * i + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");      printf("static int r_to_uj[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)(-(0.16874)*0x10000 * i + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static int g_to_uj[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)(-(0.33126)*0x10000 * i + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static int b_to_uj[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)( (0.50000)*0x10000 * i + 0x800000 + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");      printf("static int r_to_vj[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)( (0.50000)*0x10000 * i + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static int g_to_vj[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)(-(0.41869)*0x10000 * i + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static int b_to_vj[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)(-(0.08131)*0x10000 * i + 0x800000 + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("#endif // HAVE_RGB_TO_YUVJ\n\n");      printf("/* YUV -> RGB conversions */\n");  // YCbCr (8bit) -> R'G'B' (integer) according to CCIR 601  printf("#ifdef HAVE_YUV_TO_RGB\n\n");   printf("static int y_to_rgb[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");        printf("%d, ", (int)(255.0/219.0*(i-16) * 0x10000 + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");    printf("static int v_to_r[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)( 1.40200*255.0/224.0 * (i - 0x80) * 0x10000 + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static int u_to_g[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)(-0.34414*255.0/224.0 * (i - 0x80) * 0x10000 + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static int v_to_g[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)(-0.71414*255.0/224.0 * (i - 0x80) * 0x10000 + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static int u_to_b[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)( 1.77200*255.0/224.0 * (i - 0x80) * 0x10000 + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("#endif // HAVE_YUV_TO_RGB\n\n");      /* JPEG Quantization */  printf("#ifdef HAVE_YUVJ_TO_RGB\n\n");    printf("static int yj_to_rgb[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)(i * 0x10000 + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");      printf("static int vj_to_r[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)( 1.40200 * (i - 0x80) * 0x10000 + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static int uj_to_g[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)(-0.34414 * (i - 0x80) * 0x10000 + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static int vj_to_g[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)(-0.71414 * (i - 0x80) * 0x10000 + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static int uj_to_b[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%d, ", (int)( 1.77200 * (i - 0x80) * 0x10000 + 0.5));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("#endif // HAVE_YUVJ_TO_RGB\n\n");    // YCbCr (8bit) -> R'G'B' (float) according to CCIR 601  printf("#ifdef HAVE_YUV_TO_RGB_FLOAT\n\n");      printf("static float y_to_rgb_float[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");        printf("%f, ", 1.0/219.0*(i-16));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");    printf("static float v_to_r_float[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%f, ",  1.40200/224.0 * (i - 0x80));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static float u_to_g_float[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%f, ", -0.34414/224.0 * (i - 0x80));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static float v_to_g_float[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%f, ", -0.71414/224.0 * (i - 0x80));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static float u_to_b_float[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%f, ",  1.77200/224.0 * (i - 0x80));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("#endif // HAVE_YUV_TO_RGB_FLOAT\n\n");      /* JPEG Quantization */  printf("#ifdef HAVE_YUVJ_TO_RGB_FLOAT\n\n");    printf("static float yj_to_rgb_float[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%f, ", (float)i/255.0);    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");      printf("static float vj_to_r_float[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%f, ",  1.40200/255.0 * (i - 0x80));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static float uj_to_g_float[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%f, ", -0.34414/255.0 * (i - 0x80));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static float vj_to_g_float[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%f, ", -0.71414/255.0 * (i - 0x80));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("static float uj_to_b_float[256] = \n{\n");  for(i = 0; i < 0x100; i++)    {    if(!((i)%8))      printf("  ");    printf("%f, ",  1.77200/255.0 * (i - 0x80));    if(!((i+1)%8))      printf("\n");    }  printf("};\n\n");  printf("#endif // HAVE_YUVJ_TO_RGB_FLOAT\n\n");  return 0;  }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?