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 #define Y4M_UNKNOWN -1
27 #define Y4M_ILACE_NONE 0 /* non-interlaced, progressive frame */
28 #define Y4M_ILACE_TOP_FIRST 1 /* interlaced, top-field first */
29 #define Y4M_ILACE_BOTTOM_FIRST 2 /* interlaced, bottom-field first */
30 #define Y4M_ILACE_MIXED 3 /* mixed, "refer to frame header" */
32 #include "interlacemodes.h"
34 // AUTO FIX METHOD ====================
36 void ilaceautofixoption_to_text(char *string, int autofixoption)
39 switch(autofixoption) {
40 case ILACE_AUTOFIXOPTION_AUTO: cp = ILACE_AUTOFIXOPTION_AUTO_T; break;
41 case ILACE_AUTOFIXOPTION_MANUAL: cp = ILACE_AUTOFIXOPTION_MANUAL_T; break;
42 default: cp = ILACE_UNKNOWN_T; break;
44 strcpy(string, _(cp));
47 int ilaceautofixoption_from_text(const char *text, int thedefault)
49 if(!strcasecmp(text, _(ILACE_AUTOFIXOPTION_AUTO_T))) return ILACE_AUTOFIXOPTION_AUTO;
50 if(!strcasecmp(text, _(ILACE_AUTOFIXOPTION_MANUAL_T))) return ILACE_AUTOFIXOPTION_MANUAL;
54 // INTERLACE MODE ====================
56 void ilacemode_to_text(char *string, int ilacemode)
60 case ILACE_MODE_UNDETECTED: cp = ILACE_MODE_UNDETECTED_T; break;
61 case ILACE_MODE_TOP_FIRST: cp = ILACE_MODE_TOP_FIRST_T; break;
62 case ILACE_MODE_BOTTOM_FIRST: cp = ILACE_MODE_BOTTOM_FIRST_T; break;
63 case ILACE_MODE_NOTINTERLACED: cp = ILACE_MODE_NOTINTERLACED_T; break;
64 default: cp = ILACE_UNKNOWN_T; break;
66 strcpy(string, _(cp));
69 int ilacemode_from_text(const char *text, int thedefault)
71 if(!strcasecmp(text, _(ILACE_MODE_UNDETECTED_T))) return ILACE_MODE_UNDETECTED;
72 if(!strcasecmp(text, _(ILACE_MODE_TOP_FIRST_T))) return ILACE_MODE_TOP_FIRST;
73 if(!strcasecmp(text, _(ILACE_MODE_BOTTOM_FIRST_T))) return ILACE_MODE_BOTTOM_FIRST;
74 if(!strcasecmp(text, _(ILACE_MODE_NOTINTERLACED_T))) return ILACE_MODE_NOTINTERLACED;
78 void ilacemode_to_xmltext(char *string, int ilacemode)
81 case ILACE_MODE_UNDETECTED: strcpy(string, ILACE_MODE_UNDETECTED_XMLT); return;
82 case ILACE_MODE_TOP_FIRST: strcpy(string, ILACE_MODE_TOP_FIRST_XMLT); return;
83 case ILACE_MODE_BOTTOM_FIRST: strcpy(string, ILACE_MODE_BOTTOM_FIRST_XMLT); return;
84 case ILACE_MODE_NOTINTERLACED: strcpy(string, ILACE_MODE_NOTINTERLACED_XMLT); return;
86 strcpy(string, ILACE_UNKNOWN_T);
89 int ilacemode_from_xmltext(const char *text, int thedefault)
92 if(!strcasecmp(text, ILACE_MODE_UNDETECTED_XMLT)) return ILACE_MODE_UNDETECTED;
93 if(!strcasecmp(text, ILACE_MODE_TOP_FIRST_XMLT)) return ILACE_MODE_TOP_FIRST;
94 if(!strcasecmp(text, ILACE_MODE_BOTTOM_FIRST_XMLT)) return ILACE_MODE_BOTTOM_FIRST;
95 if(!strcasecmp(text, ILACE_MODE_NOTINTERLACED_XMLT)) return ILACE_MODE_NOTINTERLACED;
100 // INTERLACE FIX METHOD ====================
102 void ilacefixmethod_to_text(char *string, int fixmethod)
106 case ILACE_FIXMETHOD_NONE: cp = ILACE_FIXMETHOD_NONE_T; break;
107 case ILACE_FIXMETHOD_UPONE: cp = ILACE_FIXMETHOD_UPONE_T; break;
108 case ILACE_FIXMETHOD_DOWNONE: cp = ILACE_FIXMETHOD_DOWNONE_T; break;
109 default: cp = ILACE_UNKNOWN_T; break;
111 strcpy(string, _(cp));
114 int ilacefixmethod_from_text(const char *text, int thedefault)
116 if(!strcasecmp(text, _(ILACE_FIXMETHOD_NONE_T))) return ILACE_FIXMETHOD_NONE;
117 if(!strcasecmp(text, _(ILACE_FIXMETHOD_UPONE_T))) return ILACE_FIXMETHOD_UPONE;
118 if(!strcasecmp(text, _(ILACE_FIXMETHOD_DOWNONE_T))) return ILACE_FIXMETHOD_DOWNONE;
122 void ilacefixmethod_to_xmltext(char *string, int fixmethod)
125 case ILACE_FIXMETHOD_NONE: strcpy(string, ILACE_FIXMETHOD_NONE_XMLT); return;
126 case ILACE_FIXMETHOD_UPONE: strcpy(string, ILACE_FIXMETHOD_UPONE_XMLT); return;
127 case ILACE_FIXMETHOD_DOWNONE: strcpy(string, ILACE_FIXMETHOD_DOWNONE_XMLT); return;
129 strcpy(string, ILACE_UNKNOWN_T);
132 int ilacefixmethod_from_xmltext(const char *text, int thedefault)
134 if(!strcasecmp(text, ILACE_FIXMETHOD_NONE_XMLT)) return ILACE_FIXMETHOD_NONE;
135 if(!strcasecmp(text, ILACE_FIXMETHOD_UPONE_XMLT)) return ILACE_FIXMETHOD_UPONE;
136 if(!strcasecmp(text, ILACE_FIXMETHOD_DOWNONE_XMLT)) return ILACE_FIXMETHOD_DOWNONE;
140 int ilaceautofixmethod(int projectmode, int assetmode)
142 if (projectmode == assetmode)
143 return ILACE_FIXMETHOD_NONE;
144 if( (projectmode == ILACE_MODE_BOTTOM_FIRST && assetmode == ILACE_MODE_TOP_FIRST ) ||
145 (projectmode == ILACE_MODE_TOP_FIRST && assetmode == ILACE_MODE_BOTTOM_FIRST) )
146 return ILACE_FIXDEFAULT;
147 // still to implement anything else...
148 return ILACE_FIXMETHOD_NONE;
151 int ilaceautofixmethod2(int projectilacemode, int assetautofixoption, int assetilacemode, int assetfixmethod)
153 if (assetautofixoption == ILACE_AUTOFIXOPTION_AUTO)
154 return (ilaceautofixmethod(projectilacemode, assetilacemode));
155 return (assetfixmethod);
158 int ilace_bc_to_yuv4mpeg(int ilacemode)
161 case ILACE_MODE_UNDETECTED: return(Y4M_UNKNOWN);
162 case ILACE_MODE_TOP_FIRST: return(Y4M_ILACE_TOP_FIRST);
163 case ILACE_MODE_BOTTOM_FIRST: return(Y4M_ILACE_BOTTOM_FIRST);
164 case ILACE_MODE_NOTINTERLACED: return(Y4M_ILACE_NONE);
169 int ilace_yuv4mpeg_to_bc(int ilacemode)
172 case Y4M_UNKNOWN: return (ILACE_MODE_UNDETECTED);
173 case Y4M_ILACE_NONE: return (ILACE_MODE_NOTINTERLACED);
174 case Y4M_ILACE_TOP_FIRST: return (ILACE_MODE_TOP_FIRST);
175 case Y4M_ILACE_BOTTOM_FIRST: return (ILACE_MODE_BOTTOM_FIRST);
176 // case Y4M_ILACE_MIXED: return (ILACE_MODE_UNDETECTED); // fixme!!
178 return (ILACE_MODE_UNDETECTED);
182 void ilace_yuv4mpeg_mode_to_text(char *string, int ilacemode)
186 case Y4M_UNKNOWN: cp = ILACE_Y4M_UKNOWN_T; break;
187 case Y4M_ILACE_NONE: cp = ILACE_Y4M_NONE_T; break;
188 case Y4M_ILACE_TOP_FIRST: cp = ILACE_Y4M_TOP_FIRST_T; break;
189 case Y4M_ILACE_BOTTOM_FIRST: cp = ILACE_Y4M_BOTTOM_FIRST_T; break;
190 // case Y4M_ILACE_MIXED: cp = ILACE_Y4M_MIXED_T; break;
191 default: cp = ILACE_UNKNOWN_T; break;
193 strcpy(string, _(cp));