rework proxy scaler, fix crop-gui coord, video_data tweak for proxy_format
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / asset.C
index 2856ed5c0dde278aa7661dfdaa322ca177671061..48dfca3ca66934d7379e30570f3bd115773dbd42 100644 (file)
@@ -95,26 +95,12 @@ int Asset::init_values()
 
        jpeg_quality = 80;
        aspect_ratio = -1;
-       interlace_autofixoption = ILACE_AUTOFIXOPTION_AUTO;
        interlace_mode = ILACE_MODE_UNDETECTED;
-       interlace_fixmethod = ILACE_FIXMETHOD_NONE;
 
        mp3_bitrate = 224;
        ampeg_bitrate = 256;
        ampeg_derivative = 3;
 
-       vorbis_vbr = 0;
-       vorbis_min_bitrate = -1;
-       vorbis_bitrate = 128000;
-       vorbis_max_bitrate = -1;
-
-       theora_fix_bitrate = 1;
-       theora_bitrate = 860000;
-       theora_quality = 16;
-       theora_sharpness = 2;
-       theora_keyframe_frequency = 64;
-       theora_keyframe_force_frequency = 64;
-
 // mpeg parameters
        vmpeg_iframe_distance = 45;
        vmpeg_pframe_distance = 0;
@@ -161,6 +147,7 @@ void Asset::reset_video()
        layers = 0;
        actual_width = width = 0;
        actual_height = height = 0;
+       proxy_scale = 0; // not a proxy
        video_length = 0;
        single_frame = 0;
        vmpeg_cmodel = BC_YUV420P;
@@ -210,9 +197,7 @@ void Asset::copy_format(Asset *asset, int do_index)
        mp3_bitrate = asset->mp3_bitrate;
        use_header = asset->use_header;
        aspect_ratio = asset->aspect_ratio;
-       interlace_autofixoption = asset->interlace_autofixoption;
        interlace_mode = asset->interlace_mode;
-       interlace_fixmethod = asset->interlace_fixmethod;
 
        video_data = asset->video_data;
        layers = asset->layers;
@@ -222,6 +207,7 @@ void Asset::copy_format(Asset *asset, int do_index)
        height = asset->height;
        actual_width = asset->actual_width;
        actual_height = asset->actual_height;
+       proxy_scale = asset->proxy_scale;
        strcpy(vcodec, asset->vcodec);
        strcpy(acodec, asset->acodec);
 
@@ -241,21 +227,6 @@ void Asset::copy_format(Asset *asset, int do_index)
        ampeg_bitrate = asset->ampeg_bitrate;
        ampeg_derivative = asset->ampeg_derivative;
 
-
-       vorbis_vbr = asset->vorbis_vbr;
-       vorbis_min_bitrate = asset->vorbis_min_bitrate;
-       vorbis_bitrate = asset->vorbis_bitrate;
-       vorbis_max_bitrate = asset->vorbis_max_bitrate;
-
-
-       theora_fix_bitrate = asset->theora_fix_bitrate;
-       theora_bitrate = asset->theora_bitrate;
-       theora_quality = asset->theora_quality;
-       theora_sharpness = asset->theora_sharpness;
-       theora_keyframe_frequency = asset->theora_keyframe_frequency;
-       theora_keyframe_force_frequency = asset->theora_keyframe_frequency;
-
-
        jpeg_quality = asset->jpeg_quality;
 
 // mpeg parameters
@@ -369,9 +340,7 @@ int Asset::equivalent(Asset &asset, int test_audio, int test_video, EDL *edl)
                result = (layers == asset.layers &&
                        program == asset.program &&
                        frame_rate == asset.frame_rate &&
-                       asset.interlace_autofixoption == interlace_autofixoption &&
                        asset.interlace_mode    == interlace_mode &&
-                       interlace_fixmethod     == asset.interlace_fixmethod &&
                        width == asset.width &&
                        height == asset.height &&
                        !strcmp(vcodec, asset.vcodec) &&
@@ -512,6 +481,7 @@ int Asset::read_video(FileXML *file)
        actual_width = file->tag.get_property("ACTUAL_WIDTH", actual_width);
        height = file->tag.get_property("HEIGHT", height);
        width = file->tag.get_property("WIDTH", width);
+       proxy_scale = file->tag.get_property("PROXY_SCALE", 0);
        layers = file->tag.get_property("LAYERS", layers);
        program = file->tag.get_property("PROGRAM", program);
 // This is loaded from the index file after the EDL but this
@@ -524,15 +494,9 @@ int Asset::read_video(FileXML *file)
        mov_sphere = file->tag.get_property("MOV_SPHERE", 0);
        jpeg_sphere = file->tag.get_property("JPEG_SPHERE", 0);
        single_frame = file->tag.get_property("SINGLE_FRAME", (int64_t)0);
-
-       interlace_autofixoption = file->tag.get_property("INTERLACE_AUTOFIX",0);
-
        ilacemode_to_xmltext(string, ILACE_MODE_NOTINTERLACED);
        interlace_mode = ilacemode_from_xmltext(file->tag.get_property("INTERLACE_MODE",string), ILACE_MODE_NOTINTERLACED);
 
-       ilacefixmethod_to_xmltext(string, ILACE_FIXMETHOD_NONE);
-       interlace_fixmethod = ilacefixmethod_from_xmltext(file->tag.get_property("INTERLACE_FIXMETHOD",string), ILACE_FIXMETHOD_NONE);
-
        return 0;
 }
 
@@ -639,14 +603,7 @@ int Asset::write_audio(FileXML *file)
 
 //     file->tag.set_property("AMPEG_BITRATE", ampeg_bitrate);
 //     file->tag.set_property("AMPEG_DERIVATIVE", ampeg_derivative);
-//
-//     file->tag.set_property("VORBIS_VBR", vorbis_vbr);
-//     file->tag.set_property("VORBIS_MIN_BITRATE", vorbis_min_bitrate);
-//     file->tag.set_property("VORBIS_BITRATE", vorbis_bitrate);
-//     file->tag.set_property("VORBIS_MAX_BITRATE", vorbis_max_bitrate);
-//
 //     file->tag.set_property("MP3_BITRATE", mp3_bitrate);
-//
 
 
 
@@ -672,6 +629,7 @@ int Asset::write_video(FileXML *file)
        file->tag.set_property("ACTUAL_WIDTH", actual_width);
        file->tag.set_property("HEIGHT", height);
        file->tag.set_property("WIDTH", width);
+       file->tag.set_property("PROXY_SCALE", proxy_scale);
        file->tag.set_property("LAYERS", layers);
        file->tag.set_property("PROGRAM", program);
        file->tag.set_property("FRAMERATE", frame_rate);
@@ -683,14 +641,9 @@ int Asset::write_video(FileXML *file)
        file->tag.set_property("JPEG_SPHERE", jpeg_sphere);
        file->tag.set_property("SINGLE_FRAME", single_frame);
 
-       file->tag.set_property("INTERLACE_AUTOFIX", interlace_autofixoption);
-
        ilacemode_to_xmltext(string, interlace_mode);
        file->tag.set_property("INTERLACE_MODE", string);
 
-       ilacefixmethod_to_xmltext(string, interlace_fixmethod);
-       file->tag.set_property("INTERLACE_FIXMETHOD", string);
-
        file->append_tag();
        if(video_data)
                file->tag.set_title("/VIDEO");
@@ -778,6 +731,7 @@ void Asset::load_defaults(BC_Hash *defaults,
                width = GET_DEFAULT("WIDTH", width);
                actual_height = GET_DEFAULT("ACTUAL_HEIGHT", actual_height);
                actual_width = GET_DEFAULT("ACTUAL_WIDTH", actual_width);
+               proxy_scale = GET_DEFAULT("PROXY_SCALE", proxy_scale);
                program = GET_DEFAULT("PROGRAM", program);
                layers = GET_DEFAULT("LAYERS", layers);
                if(EQUIV(frame_rate, 0)) frame_rate = GET_DEFAULT("FRAMERATE", frame_rate);
@@ -788,18 +742,6 @@ void Asset::load_defaults(BC_Hash *defaults,
        ampeg_bitrate = GET_DEFAULT("AMPEG_BITRATE", ampeg_bitrate);
        ampeg_derivative = GET_DEFAULT("AMPEG_DERIVATIVE", ampeg_derivative);
 
-       vorbis_vbr = GET_DEFAULT("VORBIS_VBR", vorbis_vbr);
-       vorbis_min_bitrate = GET_DEFAULT("VORBIS_MIN_BITRATE", vorbis_min_bitrate);
-       vorbis_bitrate = GET_DEFAULT("VORBIS_BITRATE", vorbis_bitrate);
-       vorbis_max_bitrate = GET_DEFAULT("VORBIS_MAX_BITRATE", vorbis_max_bitrate);
-
-       theora_fix_bitrate = GET_DEFAULT("THEORA_FIX_BITRATE", theora_fix_bitrate);
-       theora_bitrate = GET_DEFAULT("THEORA_BITRATE", theora_bitrate);
-       theora_quality = GET_DEFAULT("THEORA_QUALITY", theora_quality);
-       theora_sharpness = GET_DEFAULT("THEORA_SHARPNESS", theora_sharpness);
-       theora_keyframe_frequency = GET_DEFAULT("THEORA_KEYFRAME_FREQUENCY", theora_keyframe_frequency);
-       theora_keyframe_force_frequency = GET_DEFAULT("THEORA_FORCE_KEYFRAME_FREQUENCY", theora_keyframe_force_frequency);
-
        GET_DEFAULT("FF_AUDIO_OPTIONS", ff_audio_options);
        GET_DEFAULT("FF_SAMPLE_FORMAT", ff_sample_format);
        ff_audio_bitrate = GET_DEFAULT("FF_AUDIO_BITRATE", ff_audio_bitrate);
@@ -813,10 +755,7 @@ void Asset::load_defaults(BC_Hash *defaults,
 
        jpeg_quality = GET_DEFAULT("JPEG_QUALITY", jpeg_quality);
        aspect_ratio = GET_DEFAULT("ASPECT_RATIO", aspect_ratio);
-
-       interlace_autofixoption = ILACE_AUTOFIXOPTION_AUTO;
        interlace_mode          = ILACE_MODE_UNDETECTED;
-       interlace_fixmethod     = ILACE_FIXMETHOD_UPONE;
 
 // MPEG format information
        vmpeg_iframe_distance = GET_DEFAULT("VMPEG_IFRAME_DISTANCE", vmpeg_iframe_distance);
@@ -832,14 +771,6 @@ void Asset::load_defaults(BC_Hash *defaults,
        vmpeg_preset = GET_DEFAULT("VMPEG_PRESET", vmpeg_preset);
        vmpeg_field_order = GET_DEFAULT("VMPEG_FIELD_ORDER", vmpeg_field_order);
 
-       theora_fix_bitrate = GET_DEFAULT("THEORA_FIX_BITRATE", theora_fix_bitrate);
-       theora_bitrate = GET_DEFAULT("THEORA_BITRATE", theora_bitrate);
-       theora_quality = GET_DEFAULT("THEORA_QUALITY", theora_quality);
-       theora_sharpness = GET_DEFAULT("THEORA_SHARPNESS", theora_sharpness);
-       theora_keyframe_frequency = GET_DEFAULT("THEORA_KEYFRAME_FREQUENCY", theora_keyframe_frequency);
-       theora_keyframe_force_frequency = GET_DEFAULT("THEORA_FORCE_KEYFRAME_FEQUENCY", theora_keyframe_force_frequency);
-
-
        ac3_bitrate = GET_DEFAULT("AC3_BITRATE", ac3_bitrate);
 
        png_use_alpha = GET_DEFAULT("PNG_USE_ALPHA", png_use_alpha);
@@ -889,11 +820,6 @@ void Asset::save_defaults(BC_Hash *defaults,
                UPDATE_DEFAULT("AMPEG_BITRATE", ampeg_bitrate);
                UPDATE_DEFAULT("AMPEG_DERIVATIVE", ampeg_derivative);
 
-               UPDATE_DEFAULT("VORBIS_VBR", vorbis_vbr);
-               UPDATE_DEFAULT("VORBIS_MIN_BITRATE", vorbis_min_bitrate);
-               UPDATE_DEFAULT("VORBIS_BITRATE", vorbis_bitrate);
-               UPDATE_DEFAULT("VORBIS_MAX_BITRATE", vorbis_max_bitrate);
-
                UPDATE_DEFAULT("FF_AUDIO_OPTIONS", ff_audio_options);
                UPDATE_DEFAULT("FF_SAMPLE_FORMAT", ff_sample_format);
                UPDATE_DEFAULT("FF_AUDIO_BITRATE", ff_audio_bitrate);
@@ -903,15 +829,6 @@ void Asset::save_defaults(BC_Hash *defaults,
                UPDATE_DEFAULT("FF_VIDEO_BITRATE", ff_video_bitrate);
                UPDATE_DEFAULT("FF_VIDEO_QUALITY", ff_video_quality);
 
-               UPDATE_DEFAULT("THEORA_FIX_BITRATE", theora_fix_bitrate);
-               UPDATE_DEFAULT("THEORA_BITRATE", theora_bitrate);
-               UPDATE_DEFAULT("THEORA_QUALITY", theora_quality);
-               UPDATE_DEFAULT("THEORA_SHARPNESS", theora_sharpness);
-               UPDATE_DEFAULT("THEORA_KEYFRAME_FREQUENCY", theora_keyframe_frequency);
-               UPDATE_DEFAULT("THEORA_FORCE_KEYFRAME_FREQUENCY", theora_keyframe_force_frequency);
-
-
-
                UPDATE_DEFAULT("MP3_BITRATE", mp3_bitrate);
 
                UPDATE_DEFAULT("JPEG_QUALITY", jpeg_quality);
@@ -973,6 +890,7 @@ void Asset::save_defaults(BC_Hash *defaults,
                UPDATE_DEFAULT("WIDTH", width);
                UPDATE_DEFAULT("ACTUAL_HEIGHT", actual_height);
                UPDATE_DEFAULT("ACTUAL_WIDTH", actual_width);
+               UPDATE_DEFAULT("PROXY_SCALE", proxy_scale);
                UPDATE_DEFAULT("PROGRAM", program);
                UPDATE_DEFAULT("LAYERS", layers);
                UPDATE_DEFAULT("FRAMERATE", frame_rate);
@@ -1013,11 +931,15 @@ int Asset::dump(FILE *fp)
        char string[BCTEXTLEN];
        ilacemode_to_xmltext(string, interlace_mode);
        fprintf(fp,"   video_data %d program %d layers %d framerate %f width %d"
-               " height %d vcodec %4.4s aspect_ratio %f ilace_mode %s\n",
+               " height %d vcodec %s aspect_ratio %f ilace_mode %s\n",
                video_data, layers, program, frame_rate, width, height,
                vcodec, aspect_ratio,string);
+       fprintf(fp,"   actual_width %d actual_height %d proxy_scale %d"
+               " video_length %jd repeat %d\n",
+               actual_width, actual_height, proxy_scale, video_length,
+               single_frame);
        fprintf(fp,"   video_length %jd repeat %d\n", video_length, single_frame);
-       printf("   mov_sphere=%d jpeg_sphere=%d\n", mov_sphere, jpeg_sphere);
+       fprintf(fp,"   mov_sphere=%d jpeg_sphere=%d\n", mov_sphere, jpeg_sphere);
        return 0;
 }