So, I was working on restoring direct copy support for cinelerra-cv and realized I can xcheck Cin-GG too.
I think attached two patches make it possible to skip de/encoding for unchaged portions of timeline when working with image lists of exr and ppm types (in addition to png/tiff/tga/jpeg support already there) Please test?
From 7e376e1ea1bac200eaf47599d6aa9922ef163de6 Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 26 Oct 2022 19:45:23 +0300 Subject: [PATCH 1/2] Add fileppm direct copy --- cinelerra-5.1/cinelerra/fileppm.C | 9 +++++++++ cinelerra-5.1/cinelerra/fileppm.h | 1 + 2 files changed, 10 insertions(+) diff --git a/cinelerra-5.1/cinelerra/fileppm.C b/cinelerra-5.1/cinelerra/fileppm.C index e91690a1..fe10742d 100644 --- a/cinelerra-5.1/cinelerra/fileppm.C +++ b/cinelerra-5.1/cinelerra/fileppm.C @@ -183,6 +183,15 @@ int FilePPM::write_frame(VFrame *frame, VFrame *output, return 0; } +int FilePPM::can_copy_from(Asset *asset, int64_t position) +{ + if(asset->format == FILE_PPM || + asset->format == FILE_PPM_LIST) + return 1; + + return 0; +} + int FilePPM::colormodel_supported(int colormodel) { return BC_RGB888; diff --git a/cinelerra-5.1/cinelerra/fileppm.h b/cinelerra-5.1/cinelerra/fileppm.h index ec6a094a..4711b107 100644 --- a/cinelerra-5.1/cinelerra/fileppm.h +++ b/cinelerra-5.1/cinelerra/fileppm.h @@ -43,6 +43,7 @@ public: int check_frame_header(FILE *fp); int read_frame_header(char *path); int write_frame(VFrame *frame, VFrame *output, FrameWriterUnit *unit); + int can_copy_from(Asset *asset, int64_t position); FrameWriterUnit* new_writer_unit(FrameWriter *writer); static void get_parameters(BC_WindowBase *parent_window, Asset *asset, BC_WindowBase* &format_window, -- 2.38.1
From 89500e500905d40ff027c88b51481d5ce708845a Mon Sep 17 00:00:00 2001 From: Andrew Randrianasulu <[email protected]> Date: Wed, 26 Oct 2022 19:51:24 +0300 Subject: [PATCH 2/2] Add direct copy for fileexr --- cinelerra-5.1/cinelerra/fileexr.C | 9 +++++++++ cinelerra-5.1/cinelerra/fileexr.h | 1 + 2 files changed, 10 insertions(+) diff --git a/cinelerra-5.1/cinelerra/fileexr.C b/cinelerra-5.1/cinelerra/fileexr.C index fbc39862..e09dd1fc 100644 --- a/cinelerra-5.1/cinelerra/fileexr.C +++ b/cinelerra-5.1/cinelerra/fileexr.C @@ -506,6 +506,15 @@ int FileEXR::write_frame(VFrame *frame, VFrame *data, FrameWriterUnit *unit) return 0; } +int FileEXR::can_copy_from(Asset *asset, int64_t position) +{ + if(asset->format == FILE_EXR || + asset->format == FILE_EXR_LIST) + return 1; + + return 0; +} + FrameWriterUnit* FileEXR::new_writer_unit(FrameWriter *writer) { return new EXRUnit(this, writer); diff --git a/cinelerra-5.1/cinelerra/fileexr.h b/cinelerra-5.1/cinelerra/fileexr.h index 5f5b251e..40fb01c9 100644 --- a/cinelerra-5.1/cinelerra/fileexr.h +++ b/cinelerra-5.1/cinelerra/fileexr.h @@ -44,6 +44,7 @@ public: int read_frame_header(char *path); int read_frame(VFrame *frame, VFrame *data); int64_t get_memory_usage(); + int can_copy_from(Asset *asset, int64_t position); int write_frame(VFrame *frame, VFrame *data, FrameWriterUnit *unit); FrameWriterUnit* new_writer_unit(FrameWriter *writer); -- 2.38.1
-- Cin mailing list [email protected] https://lists.cinelerra-gg.org/mailman/listinfo/cin

