Mercurial > mplayer.hg
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, |