comparison imgconvert.c @ 10043:5d5562aa94df libavcodec

Use RGB5x5LE, RGB5x5BE, BGR5x5LE and BGR5x5BE instead of their native endian counterparts. Patch by Alexis Ballier, alexis D ballier gmail
author cehoyos
date Tue, 11 Aug 2009 16:18:55 +0000
parents 266bf83f634d
children 399b5d6b5439
comparison
equal deleted inserted replaced
10042:37485479bb6e 10043:5d5562aa94df
700 case PIX_FMT_RGB48LE: 700 case PIX_FMT_RGB48LE:
701 picture->linesize[0] = width * 6; 701 picture->linesize[0] = width * 6;
702 break; 702 break;
703 case PIX_FMT_GRAY16BE: 703 case PIX_FMT_GRAY16BE:
704 case PIX_FMT_GRAY16LE: 704 case PIX_FMT_GRAY16LE:
705 case PIX_FMT_BGR555: 705 case PIX_FMT_BGR555BE:
706 case PIX_FMT_BGR565: 706 case PIX_FMT_BGR555LE:
707 case PIX_FMT_RGB555: 707 case PIX_FMT_BGR565BE:
708 case PIX_FMT_RGB565: 708 case PIX_FMT_BGR565LE:
709 case PIX_FMT_RGB555BE:
710 case PIX_FMT_RGB555LE:
711 case PIX_FMT_RGB565BE:
712 case PIX_FMT_RGB565LE:
709 case PIX_FMT_YUYV422: 713 case PIX_FMT_YUYV422:
710 picture->linesize[0] = width * 2; 714 picture->linesize[0] = width * 2;
711 break; 715 break;
712 case PIX_FMT_UYVY422: 716 case PIX_FMT_UYVY422:
713 picture->linesize[0] = width * 2; 717 picture->linesize[0] = width * 2;
794 case PIX_FMT_BGRA: 798 case PIX_FMT_BGRA:
795 case PIX_FMT_RGB48BE: 799 case PIX_FMT_RGB48BE:
796 case PIX_FMT_RGB48LE: 800 case PIX_FMT_RGB48LE:
797 case PIX_FMT_GRAY16BE: 801 case PIX_FMT_GRAY16BE:
798 case PIX_FMT_GRAY16LE: 802 case PIX_FMT_GRAY16LE:
799 case PIX_FMT_BGR555: 803 case PIX_FMT_BGR555BE:
800 case PIX_FMT_BGR565: 804 case PIX_FMT_BGR555LE:
801 case PIX_FMT_RGB555: 805 case PIX_FMT_BGR565BE:
802 case PIX_FMT_RGB565: 806 case PIX_FMT_BGR565LE:
807 case PIX_FMT_RGB555BE:
808 case PIX_FMT_RGB555LE:
809 case PIX_FMT_RGB565BE:
810 case PIX_FMT_RGB565LE:
803 case PIX_FMT_YUYV422: 811 case PIX_FMT_YUYV422:
804 case PIX_FMT_UYVY422: 812 case PIX_FMT_UYVY422:
805 case PIX_FMT_UYYVYY411: 813 case PIX_FMT_UYYVYY411:
806 case PIX_FMT_RGB4: 814 case PIX_FMT_RGB4:
807 case PIX_FMT_BGR4: 815 case PIX_FMT_BGR4:
858 return -1; 866 return -1;
859 867
860 if (pf->pixel_type == FF_PIXEL_PACKED || pf->pixel_type == FF_PIXEL_PALETTE) { 868 if (pf->pixel_type == FF_PIXEL_PACKED || pf->pixel_type == FF_PIXEL_PALETTE) {
861 if (pix_fmt == PIX_FMT_YUYV422 || 869 if (pix_fmt == PIX_FMT_YUYV422 ||
862 pix_fmt == PIX_FMT_UYVY422 || 870 pix_fmt == PIX_FMT_UYVY422 ||
863 pix_fmt == PIX_FMT_BGR565 || 871 pix_fmt == PIX_FMT_BGR565BE ||
864 pix_fmt == PIX_FMT_BGR555 || 872 pix_fmt == PIX_FMT_BGR565LE ||
865 pix_fmt == PIX_FMT_RGB565 || 873 pix_fmt == PIX_FMT_BGR555BE ||
866 pix_fmt == PIX_FMT_RGB555) 874 pix_fmt == PIX_FMT_BGR555LE ||
875 pix_fmt == PIX_FMT_RGB565BE ||
876 pix_fmt == PIX_FMT_RGB565LE ||
877 pix_fmt == PIX_FMT_RGB555BE ||
878 pix_fmt == PIX_FMT_RGB555LE)
867 w = width * 2; 879 w = width * 2;
868 else if (pix_fmt == PIX_FMT_UYYVYY411) 880 else if (pix_fmt == PIX_FMT_UYYVYY411)
869 w = width + width/2; 881 w = width + width/2;
870 else if (pix_fmt == PIX_FMT_PAL8) 882 else if (pix_fmt == PIX_FMT_PAL8)
871 w = width; 883 w = width;
932 944
933 /* compute loss */ 945 /* compute loss */
934 loss = 0; 946 loss = 0;
935 pf = &pix_fmt_info[dst_pix_fmt]; 947 pf = &pix_fmt_info[dst_pix_fmt];
936 if (pf->depth < ps->depth || 948 if (pf->depth < ps->depth ||
937 (dst_pix_fmt == PIX_FMT_RGB555 && src_pix_fmt == PIX_FMT_RGB565)) 949 ((dst_pix_fmt == PIX_FMT_RGB555BE || dst_pix_fmt == PIX_FMT_RGB555LE) &&
950 (src_pix_fmt == PIX_FMT_RGB565BE || src_pix_fmt == PIX_FMT_RGB565LE)))
938 loss |= FF_LOSS_DEPTH; 951 loss |= FF_LOSS_DEPTH;
939 if (pf->x_chroma_shift > ps->x_chroma_shift || 952 if (pf->x_chroma_shift > ps->x_chroma_shift ||
940 pf->y_chroma_shift > ps->y_chroma_shift) 953 pf->y_chroma_shift > ps->y_chroma_shift)
941 loss |= FF_LOSS_RESOLUTION; 954 loss |= FF_LOSS_RESOLUTION;
942 switch(pf->color_type) { 955 switch(pf->color_type) {
985 switch(pf->pixel_type) { 998 switch(pf->pixel_type) {
986 case FF_PIXEL_PACKED: 999 case FF_PIXEL_PACKED:
987 switch(pix_fmt) { 1000 switch(pix_fmt) {
988 case PIX_FMT_YUYV422: 1001 case PIX_FMT_YUYV422:
989 case PIX_FMT_UYVY422: 1002 case PIX_FMT_UYVY422:
990 case PIX_FMT_RGB565: 1003 case PIX_FMT_RGB565BE:
991 case PIX_FMT_RGB555: 1004 case PIX_FMT_RGB565LE:
992 case PIX_FMT_BGR565: 1005 case PIX_FMT_RGB555BE:
993 case PIX_FMT_BGR555: 1006 case PIX_FMT_RGB555LE:
1007 case PIX_FMT_BGR565BE:
1008 case PIX_FMT_BGR565LE:
1009 case PIX_FMT_BGR555BE:
1010 case PIX_FMT_BGR555LE:
994 bits = 16; 1011 bits = 16;
995 break; 1012 break;
996 case PIX_FMT_UYYVYY411: 1013 case PIX_FMT_UYYVYY411:
997 bits = 12; 1014 bits = 12;
998 break; 1015 break;
1100 switch(pf->pixel_type) { 1117 switch(pf->pixel_type) {
1101 case FF_PIXEL_PACKED: 1118 case FF_PIXEL_PACKED:
1102 switch(pix_fmt) { 1119 switch(pix_fmt) {
1103 case PIX_FMT_YUYV422: 1120 case PIX_FMT_YUYV422:
1104 case PIX_FMT_UYVY422: 1121 case PIX_FMT_UYVY422:
1105 case PIX_FMT_RGB565: 1122 case PIX_FMT_RGB565BE:
1106 case PIX_FMT_RGB555: 1123 case PIX_FMT_RGB565LE:
1107 case PIX_FMT_BGR565: 1124 case PIX_FMT_RGB555BE:
1108 case PIX_FMT_BGR555: 1125 case PIX_FMT_RGB555LE:
1126 case PIX_FMT_BGR565BE:
1127 case PIX_FMT_BGR565LE:
1128 case PIX_FMT_BGR555BE:
1129 case PIX_FMT_BGR555LE:
1109 bits = 16; 1130 bits = 16;
1110 break; 1131 break;
1111 case PIX_FMT_UYYVYY411: 1132 case PIX_FMT_UYYVYY411:
1112 bits = 12; 1133 bits = 12;
1113 break; 1134 break;