2 * This library is free software; you can redistribute it and/or modify it
3 * under the terms of the GNU Lesser General Public License as published
4 * by the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
7 * This library is distributed in the hope that it will be useful, but
8 * WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 * Lesser General Public License for more details.
12 * You should have received a copy of the GNU Lesser General Public
13 * License along with this library; if not, write to the Free Software
14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
24 #endif /* HAVE_STDINT_H */
26 #include <mjpegtools/yuv4mpeg.h>
27 #include "interlacemodes.h"
29 // AUTO FIX METHOD ====================
31 void ilaceautofixoption_to_text(char *string, int autofixoption)
33 switch(autofixoption) {
34 case BC_ILACE_AUTOFIXOPTION_AUTO: strcpy(string, BC_ILACE_AUTOFIXOPTION_AUTO_T); return;
35 case BC_ILACE_AUTOFIXOPTION_MANUAL: strcpy(string, BC_ILACE_AUTOFIXOPTION_MANUAL_T); return;
37 strcpy(string, BC_ILACE_UNKNOWN_T);
40 int ilaceautofixoption_from_text(const char *text, int thedefault)
42 if(!strcasecmp(text, BC_ILACE_AUTOFIXOPTION_AUTO_T)) return BC_ILACE_AUTOFIXOPTION_AUTO;
43 if(!strcasecmp(text, BC_ILACE_AUTOFIXOPTION_MANUAL_T)) return BC_ILACE_AUTOFIXOPTION_MANUAL;
47 // INTERLACE MODE ====================
49 void ilacemode_to_text(char *string, int ilacemode)
52 case BC_ILACE_MODE_UNDETECTED: strcpy(string, BC_ILACE_MODE_UNDETECTED_T); return;
53 case BC_ILACE_MODE_TOP_FIRST: strcpy(string, BC_ILACE_MODE_TOP_FIRST_T); return;
54 case BC_ILACE_MODE_BOTTOM_FIRST: strcpy(string, BC_ILACE_MODE_BOTTOM_FIRST_T); return;
55 case BC_ILACE_MODE_NOTINTERLACED: strcpy(string, BC_ILACE_MODE_NOTINTERLACED_T); return;
57 strcpy(string, BC_ILACE_UNKNOWN_T);
60 int ilacemode_from_text(const char *text, int thedefault)
62 if(!strcasecmp(text, BC_ILACE_MODE_UNDETECTED_T)) return BC_ILACE_MODE_UNDETECTED;
63 if(!strcasecmp(text, BC_ILACE_MODE_TOP_FIRST_T)) return BC_ILACE_MODE_TOP_FIRST;
64 if(!strcasecmp(text, BC_ILACE_MODE_BOTTOM_FIRST_T)) return BC_ILACE_MODE_BOTTOM_FIRST;
65 if(!strcasecmp(text, BC_ILACE_MODE_NOTINTERLACED_T)) return BC_ILACE_MODE_NOTINTERLACED;
69 void ilacemode_to_xmltext(char *string, int ilacemode)
72 case BC_ILACE_MODE_UNDETECTED: strcpy(string, BC_ILACE_MODE_UNDETECTED_XMLT); return;
73 case BC_ILACE_MODE_TOP_FIRST: strcpy(string, BC_ILACE_MODE_TOP_FIRST_XMLT); return;
74 case BC_ILACE_MODE_BOTTOM_FIRST: strcpy(string, BC_ILACE_MODE_BOTTOM_FIRST_XMLT); return;
75 case BC_ILACE_MODE_NOTINTERLACED: strcpy(string, BC_ILACE_MODE_NOTINTERLACED_XMLT); return;
77 strcpy(string, BC_ILACE_UNKNOWN_T);
80 int ilacemode_from_xmltext(const char *text, int thedefault)
83 if(!strcasecmp(text, BC_ILACE_MODE_UNDETECTED_XMLT)) return BC_ILACE_MODE_UNDETECTED;
84 if(!strcasecmp(text, BC_ILACE_MODE_TOP_FIRST_XMLT)) return BC_ILACE_MODE_TOP_FIRST;
85 if(!strcasecmp(text, BC_ILACE_MODE_BOTTOM_FIRST_XMLT)) return BC_ILACE_MODE_BOTTOM_FIRST;
86 if(!strcasecmp(text, BC_ILACE_MODE_NOTINTERLACED_XMLT)) return BC_ILACE_MODE_NOTINTERLACED;
91 // INTERLACE FIX METHOD ====================
93 void ilacefixmethod_to_text(char *string, int fixmethod)
96 case BC_ILACE_FIXMETHOD_NONE: strcpy(string, BC_ILACE_FIXMETHOD_NONE_T); return;
97 case BC_ILACE_FIXMETHOD_UPONE: strcpy(string, BC_ILACE_FIXMETHOD_UPONE_T); return;
98 case BC_ILACE_FIXMETHOD_DOWNONE: strcpy(string, BC_ILACE_FIXMETHOD_DOWNONE_T); return;
100 strcpy(string, BC_ILACE_UNKNOWN_T);
103 int ilacefixmethod_from_text(const char *text, int thedefault)
105 if(!strcasecmp(text, BC_ILACE_FIXMETHOD_NONE_T)) return BC_ILACE_FIXMETHOD_NONE;
106 if(!strcasecmp(text, BC_ILACE_FIXMETHOD_UPONE_T)) return BC_ILACE_FIXMETHOD_UPONE;
107 if(!strcasecmp(text, BC_ILACE_FIXMETHOD_DOWNONE_T)) return BC_ILACE_FIXMETHOD_DOWNONE;
111 void ilacefixmethod_to_xmltext(char *string, int fixmethod)
114 case BC_ILACE_FIXMETHOD_NONE: strcpy(string, BC_ILACE_FIXMETHOD_NONE_XMLT); return;
115 case BC_ILACE_FIXMETHOD_UPONE: strcpy(string, BC_ILACE_FIXMETHOD_UPONE_XMLT); return;
116 case BC_ILACE_FIXMETHOD_DOWNONE: strcpy(string, BC_ILACE_FIXMETHOD_DOWNONE_XMLT); return;
118 strcpy(string, BC_ILACE_UNKNOWN_T);
121 int ilacefixmethod_from_xmltext(const char *text, int thedefault)
123 if(!strcasecmp(text, BC_ILACE_FIXMETHOD_NONE_XMLT)) return BC_ILACE_FIXMETHOD_NONE;
124 if(!strcasecmp(text, BC_ILACE_FIXMETHOD_UPONE_XMLT)) return BC_ILACE_FIXMETHOD_UPONE;
125 if(!strcasecmp(text, BC_ILACE_FIXMETHOD_DOWNONE_XMLT)) return BC_ILACE_FIXMETHOD_DOWNONE;
129 int ilaceautofixmethod(int projectmode, int assetmode)
131 if (projectmode == assetmode)
132 return BC_ILACE_FIXMETHOD_NONE;
133 if( (projectmode == BC_ILACE_MODE_BOTTOM_FIRST && assetmode == BC_ILACE_MODE_TOP_FIRST ) ||
134 (projectmode == BC_ILACE_MODE_TOP_FIRST && assetmode == BC_ILACE_MODE_BOTTOM_FIRST) )
135 return BC_ILACE_FIXDEFAULT;
136 // still to implement anything else...
137 return BC_ILACE_FIXMETHOD_NONE;
140 int ilaceautofixmethod2(int projectilacemode, int assetautofixoption, int assetilacemode, int assetfixmethod)
142 if (assetautofixoption == BC_ILACE_AUTOFIXOPTION_AUTO)
143 return (ilaceautofixmethod(projectilacemode, assetilacemode));
144 return (assetfixmethod);
147 int ilace_bc_to_yuv4mpeg(int ilacemode)
150 case BC_ILACE_MODE_UNDETECTED: return(Y4M_UNKNOWN);
151 case BC_ILACE_MODE_TOP_FIRST: return(Y4M_ILACE_TOP_FIRST);
152 case BC_ILACE_MODE_BOTTOM_FIRST: return(Y4M_ILACE_BOTTOM_FIRST);
153 case BC_ILACE_MODE_NOTINTERLACED: return(Y4M_ILACE_NONE);
158 int ilace_yuv4mpeg_to_bc(int ilacemode)
161 case Y4M_UNKNOWN: return (BC_ILACE_MODE_UNDETECTED);
162 case Y4M_ILACE_NONE: return (BC_ILACE_MODE_NOTINTERLACED);
163 case Y4M_ILACE_TOP_FIRST: return (BC_ILACE_MODE_TOP_FIRST);
164 case Y4M_ILACE_BOTTOM_FIRST: return (BC_ILACE_MODE_BOTTOM_FIRST);
165 // case Y4M_ILACE_MIXED: return (BC_ILACE_MODE_UNDETECTED); // fixme!!
167 return (BC_ILACE_MODE_UNDETECTED);
171 void ilace_yuv4mpeg_mode_to_text(char *string, int ilacemode)
174 case Y4M_UNKNOWN: strcpy(string, BC_ILACE_Y4M_UKNOWN_T); return;
175 case Y4M_ILACE_NONE: strcpy(string, BC_ILACE_Y4M_NONE_T); return;
176 case Y4M_ILACE_TOP_FIRST: strcpy(string, BC_ILACE_Y4M_TOP_FIRST_T); return;
177 case Y4M_ILACE_BOTTOM_FIRST: strcpy(string, BC_ILACE_Y4M_BOTTOM_FIRST_T); return;
178 // case Y4M_ILACE_MIXED: strcpy(string, BC_ILACE_Y4M_MIXED_T); return;
180 strcpy(string, BC_ILACE_UNKNOWN_T);