r784: Fix to bug 250 by Dan Streetman
[cinelerra_cv/mob.git] / quicktime / interlacemodes.c
blobb5a41d1292534cf3afa093698a63775ce815e456
1 /*
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.
6 *
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
15 * USA
18 #include <stdlib.h>
19 #include <stdint.h>
21 #ifndef HAVE_STDINT_H
22 #define HAVE_STDINT_H
23 #endif /* HAVE_STDINT_H */
25 #include <mjpegtools/yuv4mpeg.h>
27 #include "interlacemodes.h"
29 void ilaceautofixoption_to_text(char *string, int autofixoption)
31 switch(autofixoption)
33 case BC_ILACE_AUTOFIXOPTION_AUTO: strcpy(string, BC_ILACE_AUTOFIXOPTION_AUTO_T); break;
34 case BC_ILACE_AUTOFIXOPTION_MANUAL: strcpy(string, BC_ILACE_AUTOFIXOPTION_MANUAL_T); break;
35 default: strcpy(string, BC_ILACE_UNKNOWN_T); break;
39 int ilaceautofixoption_from_text(char *text, int thedefault)
41 if(!strcasecmp(text, BC_ILACE_AUTOFIXOPTION_AUTO_T)) return BC_ILACE_AUTOFIXOPTION_AUTO;
42 if(!strcasecmp(text, BC_ILACE_AUTOFIXOPTION_MANUAL_T)) return BC_ILACE_AUTOFIXOPTION_MANUAL;
43 return thedefault;
46 void ilacemode_to_text(char *string, int ilacemode)
48 switch(ilacemode)
50 case BC_ILACE_MODE_UNDETECTED: strcpy(string, BC_ILACE_MODE_UNDETECTED_T); break;
51 case BC_ILACE_MODE_TOP_FIRST: strcpy(string, BC_ILACE_MODE_TOP_FIRST_T); break;
52 case BC_ILACE_MODE_BOTTOM_FIRST: strcpy(string, BC_ILACE_MODE_BOTTOM_FIRST_T); break;
53 case BC_ILACE_MODE_NOTINTERLACED: strcpy(string, BC_ILACE_MODE_NOTINTERLACED_T); break;
54 default: strcpy(string, BC_ILACE_UNKNOWN_T); break;
58 int ilacemode_from_text(char *text, int thedefault)
60 if(!strcasecmp(text, BC_ILACE_MODE_UNDETECTED_T)) return BC_ILACE_MODE_UNDETECTED;
61 if(!strcasecmp(text, BC_ILACE_MODE_TOP_FIRST_T)) return BC_ILACE_MODE_TOP_FIRST;
62 if(!strcasecmp(text, BC_ILACE_MODE_BOTTOM_FIRST_T)) return BC_ILACE_MODE_BOTTOM_FIRST;
63 if(!strcasecmp(text, BC_ILACE_MODE_NOTINTERLACED_T)) return BC_ILACE_MODE_NOTINTERLACED;
64 return thedefault;
67 void ilacefixmethod_to_text(char *string, int fixmethod)
69 switch(fixmethod)
71 case BC_ILACE_FIXMETHOD_NONE: strcpy(string, BC_ILACE_FIXMETHOD_NONE_T); break;
72 case BC_ILACE_FIXMETHOD_UPONE: strcpy(string, BC_ILACE_FIXMETHOD_UPONE_T); break;
73 case BC_ILACE_FIXMETHOD_DOWNONE: strcpy(string, BC_ILACE_FIXMETHOD_DOWNONE_T); break;
74 default: strcpy(string, BC_ILACE_UNKNOWN_T); break;
78 int ilacefixmethod_from_text(char *text, int thedefault)
80 if(!strcasecmp(text, BC_ILACE_FIXMETHOD_NONE_T)) return BC_ILACE_FIXMETHOD_NONE;
81 if(!strcasecmp(text, BC_ILACE_FIXMETHOD_UPONE_T)) return BC_ILACE_FIXMETHOD_UPONE;
82 if(!strcasecmp(text, BC_ILACE_FIXMETHOD_DOWNONE_T)) return BC_ILACE_FIXMETHOD_DOWNONE;
83 return thedefault;
86 int ilaceautofixmethod(int projectmode, int assetmode)
88 if (projectmode == assetmode)
89 return BC_ILACE_FIXMETHOD_NONE;
91 if (
92 (projectmode == BC_ILACE_MODE_BOTTOM_FIRST && assetmode == BC_ILACE_MODE_TOP_FIRST )
94 (projectmode == BC_ILACE_MODE_TOP_FIRST && assetmode == BC_ILACE_MODE_BOTTOM_FIRST)
96 return BC_ILACE_FIXDEFAULT;
98 // still to implement anything else...
99 return BC_ILACE_FIXMETHOD_NONE;
102 int ilaceautofixmethod2(int projectilacemode, int assetautofixoption, int assetilacemode, int assetfixmethod)
104 if (assetautofixoption == BC_ILACE_AUTOFIXOPTION_AUTO)
105 return (ilaceautofixmethod(projectilacemode, assetilacemode));
106 else
107 return (assetfixmethod);
110 int ilace_bc_to_yuv4mpeg(int ilacemode)
112 switch (ilacemode)
114 case BC_ILACE_MODE_UNDETECTED:
115 return(Y4M_UNKNOWN);
116 break;
117 case BC_ILACE_MODE_TOP_FIRST:
118 return(Y4M_ILACE_TOP_FIRST);
119 break;
120 case BC_ILACE_MODE_BOTTOM_FIRST:
121 return(Y4M_ILACE_BOTTOM_FIRST);
122 break;
123 case BC_ILACE_MODE_NOTINTERLACED:
124 return(Y4M_ILACE_NONE);
125 break;
129 int ilace_yuv4mpeg_to_bc(int ilacemode)
131 switch (ilacemode)
133 case Y4M_UNKNOWN:
134 return (BC_ILACE_MODE_UNDETECTED);
135 break;
136 case Y4M_ILACE_NONE:
137 return (BC_ILACE_MODE_NOTINTERLACED);
138 break;
139 case Y4M_ILACE_TOP_FIRST:
140 return (BC_ILACE_MODE_TOP_FIRST);
141 break;
142 case Y4M_ILACE_BOTTOM_FIRST:
143 return (BC_ILACE_MODE_BOTTOM_FIRST);
144 break;
145 // case Y4M_ILACE_MIXED:
146 // return (BC_ILACE_MODE_UNDETECTED); // fixme!!
147 // break;
148 default:
149 return (BC_ILACE_MODE_UNDETECTED);
154 void ilace_yuv4mpeg_mode_to_text(char *string, int ilacemode)
156 switch(ilacemode)
158 case Y4M_UNKNOWN: strcpy(string, BC_ILACE_Y4M_UKNOWN_T); break;
159 case Y4M_ILACE_NONE: strcpy(string, BC_ILACE_Y4M_NONE_T); break;
160 case Y4M_ILACE_TOP_FIRST: strcpy(string, BC_ILACE_Y4M_TOP_FIRST_T); break;
161 case Y4M_ILACE_BOTTOM_FIRST: strcpy(string, BC_ILACE_Y4M_BOTTOM_FIRST_T); break;
162 // case Y4M_ILACE_MIXED: strcpy(string, BC_ILACE_Y4M_MIXED_T); break;
164 default: strcpy(string, BC_ILACE_UNKNOWN_T); break;