rework proxy scaler, fix crop-gui coord, video_data tweak for proxy_format
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / filelist.C
index d04ee5ab30d08e7d8431546ab40bf5bc9a571dfc..591cb8114a3454a24b87db6745f6af3f9203abeb 100644 (file)
@@ -113,38 +113,34 @@ int FileList::open_file(int rd, int wr)
                        if(stream)
                        {
                                char string[BCTEXTLEN];
-                               (void)fread(string, strlen(list_prefix), 1, stream);
+                               int len = strlen(list_prefix);
+                               int ret = fread(string, 1, strlen(list_prefix), stream);
                                fclose(stream);
-
-                               if(!strncasecmp(string, list_prefix, strlen(list_prefix)))
-                               {
-
-//printf("FileList::open_file %d\n", __LINE__);
+                               result = len == ret ? 0 : 1;
+                               if( !result && !strncasecmp(string, list_prefix, len)) {
                                        asset->format = list_type;
-
-// Open index here or get frame size from file.
                                        result = read_list_header();
-//printf("FileList::open_file %d %s\n", __LINE__, path_list.values[0]);
-                                       if(!result) result = read_frame_header(path_list.values[0]);
+                                       if( !result )
+                                               result = read_frame_header(path_list.values[0]);
                                }
-                               else
-                               {
-//printf("FileList::open_file 2\n", asset->use_header);
-//printf("FileList::open_file %d\n", __LINE__);
+                               else if( !result && frame_type != FILE_UNKNOWN ) {
                                        asset->format = frame_type;
-                                       int width = asset->width;
-                                       int height = asset->height;
                                        result = read_frame_header(asset->path);
+                                       asset->video_length = -1;
+                               }
+                               else
+                                       result = 1;
+                               if( !result ) {
                                        asset->actual_width = asset->width;
-                                       if( width ) asset->width = width;
                                        asset->actual_height = asset->height;
-                                       if( height ) asset->height = height;
+                                       int scale = asset->proxy_scale;
+                                       if( !scale ) scale = 1;
+                                       asset->width = asset->actual_width * scale;
+                                       asset->height = asset->actual_height * scale;
                                        asset->layers = 1;
                                        if( !asset->frame_rate )
-                                               asset->frame_rate = 1;
-                                       asset->video_length = -1;
+                                               asset->frame_rate = 10;
                                }
-                               result = 0;
                        }
                        else
                                eprintf(_("Error while opening \"%s\" for reading. \n%m\n"), asset->path);