comparison m_option.c @ 9600:f55ea7b2fa50

Improve the imgfmt option type
author albeu
date Sat, 15 Mar 2003 20:49:39 +0000
parents e9a2af584986
children c5b63e88253d
comparison
equal deleted inserted replaced
9599:77bddc6d9266 9600:f55ea7b2fa50
911 NULL, 911 NULL,
912 NULL 912 NULL
913 }; 913 };
914 914
915 #include "libmpcodecs/img_format.h" 915 #include "libmpcodecs/img_format.h"
916 // TODO : use an array so we parse/print easily 916
917 static struct {
918 char* name;
919 unsigned int fmt;
920 } mp_imgfmt_list[] = {
921 {"444p", IMGFMT_444P},
922 {"422p", IMGFMT_422P},
923 {"411p", IMGFMT_411P},
924 {"yuy2", IMGFMT_YUY2},
925 {"yv12", IMGFMT_YV12},
926 {"i420", IMGFMT_I420},
927 {"yvu9", IMGFMT_YVU9},
928 {"if09", IMGFMT_IF09},
929 {"iyuv", IMGFMT_IYUV},
930 {"uyvy", IMGFMT_UYVY},
931 {"bgr24", IMGFMT_BGR24},
932 {"bgr32", IMGFMT_BGR32},
933 {"bgr16", IMGFMT_BGR16},
934 {"bgr15", IMGFMT_BGR15},
935 {"bgr8", IMGFMT_BGR8},
936 {"bgr4", IMGFMT_BGR4},
937 {"bg4b", IMGFMT_BG4B},
938 {"bgr1", IMGFMT_BGR1},
939 {"rgb24", IMGFMT_RGB24},
940 {"rgb32", IMGFMT_RGB32},
941 {"rgb16", IMGFMT_RGB16},
942 {"rgb15", IMGFMT_RGB15},
943 {"rgb8", IMGFMT_RGB8},
944 {"rgb4", IMGFMT_RGB4},
945 {"rg4b", IMGFMT_RG4B},
946 {"rgb1", IMGFMT_RGB1},
947 { NULL, 0 }
948 };
917 949
918 static int parse_imgfmt(m_option_t* opt,char *name, char *param, void* dst, int src) { 950 static int parse_imgfmt(m_option_t* opt,char *name, char *param, void* dst, int src) {
919 uint32_t fmt = 0; 951 uint32_t fmt = 0;
952 int i;
920 953
921 if (param == NULL || strlen(param) == 0) 954 if (param == NULL || strlen(param) == 0)
922 return M_OPT_MISSING_PARAM; 955 return M_OPT_MISSING_PARAM;
923 956
924 // From vf_format 957 if(!strcmp(param,"help")) {
925 if(!strcasecmp(param,"444p")) fmt=IMGFMT_444P; else 958 mp_msg(MSGT_CFGPARSER, MSGL_INFO, "Avaible formats :");
926 if(!strcasecmp(param,"422p")) fmt=IMGFMT_422P; else 959 for(i = 0 ; mp_imgfmt_list[i].name ; i++)
927 if(!strcasecmp(param,"411p")) fmt=IMGFMT_411P; else 960 mp_msg(MSGT_CFGPARSER, MSGL_INFO, " %s",mp_imgfmt_list[i].name);
928 if(!strcasecmp(param,"yuy2")) fmt=IMGFMT_YUY2; else 961 mp_msg(MSGT_CFGPARSER, MSGL_INFO, "\n");
929 if(!strcasecmp(param,"yv12")) fmt=IMGFMT_YV12; else 962 exit(0);
930 if(!strcasecmp(param,"i420")) fmt=IMGFMT_I420; else 963 }
931 if(!strcasecmp(param,"yvu9")) fmt=IMGFMT_YVU9; else 964
932 if(!strcasecmp(param,"if09")) fmt=IMGFMT_IF09; else 965 for(i = 0 ; mp_imgfmt_list[i].name ; i++) {
933 if(!strcasecmp(param,"iyuv")) fmt=IMGFMT_IYUV; else 966 if(!strcasecmp(param,mp_imgfmt_list[i].name)) {
934 if(!strcasecmp(param,"uyvy")) fmt=IMGFMT_UYVY; else 967 fmt=mp_imgfmt_list[i].fmt;
935 if(!strcasecmp(param,"bgr24")) fmt=IMGFMT_BGR24; else 968 break;
936 if(!strcasecmp(param,"bgr32")) fmt=IMGFMT_BGR32; else 969 }
937 if(!strcasecmp(param,"bgr16")) fmt=IMGFMT_BGR16; else 970 }
938 if(!strcasecmp(param,"bgr15")) fmt=IMGFMT_BGR15; else 971 if(!mp_imgfmt_list[i].name) {
939 if(!strcasecmp(param,"bgr8")) fmt=IMGFMT_BGR8; else 972 mp_msg(MSGT_CFGPARSER, MSGL_ERR, "Option %s: unknown format name: '%s'\n",name,param);
940 if(!strcasecmp(param,"bgr4")) fmt=IMGFMT_BGR4; else
941 if(!strcasecmp(param,"bgr1")) fmt=IMGFMT_BGR1; else
942 if(!strcasecmp(param,"rgb24")) fmt=IMGFMT_RGB24; else
943 if(!strcasecmp(param,"rgb32")) fmt=IMGFMT_RGB32; else
944 if(!strcasecmp(param,"rgb16")) fmt=IMGFMT_RGB16; else
945 if(!strcasecmp(param,"rgb15")) fmt=IMGFMT_RGB15; else
946 if(!strcasecmp(param,"rgb8")) fmt=IMGFMT_RGB8; else
947 if(!strcasecmp(param,"rgb4")) fmt=IMGFMT_RGB4; else
948 if(!strcasecmp(param,"rgb1")) fmt=IMGFMT_RGB1; else {
949 mp_msg(MSGT_CFGPARSER, MSGL_ERR, "Option %s: unknown format name: '%s'\n",param);
950 return M_OPT_INVALID; 973 return M_OPT_INVALID;
951 } 974 }
952 975
953 if(dst) 976 if(dst)
954 *((uint32_t*)dst) = fmt; 977 *((uint32_t*)dst) = fmt;
955 978
956 return 1; 979 return 1;
957 } 980 }
958 981
959 m_option_type_t m_option_type_imgfmt = { 982 m_option_type_t m_option_type_imgfmt = {
960 "Image format (aka colorspace)", 983 "Image format",
961 "Pls report any missing colorspace", 984 "Pls report any missing colorspace",
962 sizeof(uint32_t), 985 sizeof(uint32_t),
963 0, 986 0,
964 parse_imgfmt, 987 parse_imgfmt,
965 NULL, 988 NULL,