From be06106884d4f298fec9079c9309a78318c68086 Mon Sep 17 00:00:00 2001 From: Pierre Dumuid Date: Fri, 9 Jun 2006 05:09:24 +0000 Subject: [PATCH] r830: Fixed a problem whereby the project interlace setting was not being stored in the file, \(this could possibly fix bug 231\) --- cinelerra/edlsession.C | 9 +++++++-- quicktime/interlacemodes.c | 21 +++++++++++++++++++++ quicktime/interlacemodes.h | 23 +++++++++++++++-------- 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/cinelerra/edlsession.C b/cinelerra/edlsession.C index ee17051f..35998943 100644 --- a/cinelerra/edlsession.C +++ b/cinelerra/edlsession.C @@ -130,7 +130,8 @@ int EDLSession::load_defaults(Defaults *defaults) brender_start = defaults->get("BRENDER_START", brender_start); cmodel_to_text(string, BC_RGBA8888); color_model = cmodel_from_text(defaults->get("COLOR_MODEL", string)); - interlace_mode = defaults->get("INTERLACE_MODE", interlace_mode); + ilacemode_to_xmltext(string, BC_ILACE_MODE_NOTINTERLACED); + interlace_mode = ilacemode_from_xmltext(defaults->get("INTERLACE_MODE",string), BC_ILACE_MODE_NOTINTERLACED); crop_x1 = defaults->get("CROP_X1", 0); crop_x2 = defaults->get("CROP_X2", 320); crop_y1 = defaults->get("CROP_Y1", 0); @@ -250,7 +251,8 @@ int EDLSession::save_defaults(Defaults *defaults) defaults->update("BRENDER_START", brender_start); cmodel_to_text(string, color_model); defaults->update("COLOR_MODEL", string); - defaults->update("INTERLACE_MODE", interlace_mode); + ilacemode_to_xmltext(string, interlace_mode); + defaults->update("INTERLACE_MODE", string); defaults->update("CROP_X1", crop_x1); defaults->update("CROP_X2", crop_x2); defaults->update("CROP_Y1", crop_y1); @@ -380,6 +382,7 @@ int EDLSession::load_video_config(FileXML *file, int append_mode, uint32_t load_ interpolation_type = file->tag.get_property("INTERPOLATION_TYPE", interpolation_type); cmodel_to_text(string, color_model); color_model = cmodel_from_text(file->tag.get_property("COLORMODEL", string)); + interlace_mode = ilacemode_from_xmltext(file->tag.get_property("INTERLACE_MODE"), BC_ILACE_MODE_NOTINTERLACED); video_channels = file->tag.get_property("CHANNELS", video_channels); for(int i = 0; i < video_channels; i++) { @@ -556,6 +559,8 @@ int EDLSession::save_video_config(FileXML *file) file->tag.set_property("INTERPOLATION_TYPE", interpolation_type); cmodel_to_text(string, color_model); file->tag.set_property("COLORMODEL", string); + ilacemode_to_xmltext(string, interlace_mode); + file->tag.set_property("INTERLACE_MODE",string); file->tag.set_property("CHANNELS", video_channels); for(int i = 0; i < video_channels; i++) { diff --git a/quicktime/interlacemodes.c b/quicktime/interlacemodes.c index b5a41d12..6485f362 100644 --- a/quicktime/interlacemodes.c +++ b/quicktime/interlacemodes.c @@ -64,6 +64,27 @@ int ilacemode_from_text(char *text, int thedefault) return thedefault; } +void ilacemode_to_xmltext(char *string, int ilacemode) +{ + switch(ilacemode) + { + case BC_ILACE_MODE_UNDETECTED: strcpy(string, BC_ILACE_MODE_UNDETECTED_XMLT); break; + case BC_ILACE_MODE_TOP_FIRST: strcpy(string, BC_ILACE_MODE_TOP_FIRST_XMLT); break; + case BC_ILACE_MODE_BOTTOM_FIRST: strcpy(string, BC_ILACE_MODE_BOTTOM_FIRST_XMLT); break; + case BC_ILACE_MODE_NOTINTERLACED: strcpy(string, BC_ILACE_MODE_NOTINTERLACED_XMLT); break; + default: strcpy(string, BC_ILACE_UNKNOWN_T); break; + } +} + +int ilacemode_from_xmltext(char *text, int thedefault) +{ + if(!strcasecmp(text, BC_ILACE_MODE_UNDETECTED_XMLT)) return BC_ILACE_MODE_UNDETECTED; + if(!strcasecmp(text, BC_ILACE_MODE_TOP_FIRST_XMLT)) return BC_ILACE_MODE_TOP_FIRST; + if(!strcasecmp(text, BC_ILACE_MODE_BOTTOM_FIRST_XMLT)) return BC_ILACE_MODE_BOTTOM_FIRST; + if(!strcasecmp(text, BC_ILACE_MODE_NOTINTERLACED_XMLT)) return BC_ILACE_MODE_NOTINTERLACED; + return thedefault; +} + void ilacefixmethod_to_text(char *string, int fixmethod) { switch(fixmethod) diff --git a/quicktime/interlacemodes.h b/quicktime/interlacemodes.h index b2ca3643..627f9ce8 100644 --- a/quicktime/interlacemodes.h +++ b/quicktime/interlacemodes.h @@ -28,14 +28,18 @@ //Note: Do not change what the numbers mean as this will make backward-compatability have erroraneous settings. //Interlace Modes -#define BC_ILACE_MODE_UNDETECTED 0 -#define BC_ILACE_MODE_UNDETECTED_T "Unknown" -#define BC_ILACE_MODE_TOP_FIRST 1 -#define BC_ILACE_MODE_TOP_FIRST_T "Top Fields First" -#define BC_ILACE_MODE_BOTTOM_FIRST 2 -#define BC_ILACE_MODE_BOTTOM_FIRST_T "Bottom Fields First" -#define BC_ILACE_MODE_NOTINTERLACED 3 -#define BC_ILACE_MODE_NOTINTERLACED_T "Not Interlaced" +#define BC_ILACE_MODE_UNDETECTED 0 +#define BC_ILACE_MODE_UNDETECTED_XMLT "UNKNOWN" +#define BC_ILACE_MODE_UNDETECTED_T "Unknown" +#define BC_ILACE_MODE_TOP_FIRST 1 +#define BC_ILACE_MODE_TOP_FIRST_XMLT "TOP_FIELD_FIRST" +#define BC_ILACE_MODE_TOP_FIRST_T "Top Fields First" +#define BC_ILACE_MODE_BOTTOM_FIRST 2 +#define BC_ILACE_MODE_BOTTOM_FIRST_XMLT "BOTTOM_FIELD_FIRST" +#define BC_ILACE_MODE_BOTTOM_FIRST_T "Bottom Fields First" +#define BC_ILACE_MODE_NOTINTERLACED 3 +#define BC_ILACE_MODE_NOTINTERLACED_XMLT "NOTINTERLACED" +#define BC_ILACE_MODE_NOTINTERLACED_T "Not Interlaced" #define BC_ILACE_ASSET_MODEDEFAULT BC_ILACE_MODE_UNDETECTED #define BC_ILACE_PROJECT_MODEDEFAULT BC_ILACE_MODE_NOTINTERLACED_T @@ -69,6 +73,9 @@ int ilaceautofixoption_from_text(char *text, int thedefault); void ilacemode_to_text(char *string, int ilacemode); int ilacemode_from_text(char *text, int thedefault); +void ilacemode_to_xmltext(char *string, int ilacemode); +int ilacemode_from_xmltext(char *text, int thedefault); + void ilacefixmethod_to_text(char *string, int fixmethod); int ilacefixmethod_from_text(char *text, int thedefault); -- 2.11.4.GIT