From f007a674187f11ab58a5aebfe1eec27a90398bcb Mon Sep 17 00:00:00 2001 From: Good Guy Date: Wed, 14 Mar 2018 18:34:45 -0600 Subject: [PATCH] upgrade ffmpeg to 3.4.2, add proxy popup, undo/redo deadlock fix, rework nested edl --- cinelerra-5.1/cinelerra/Makefile | 1 + cinelerra-5.1/cinelerra/awindowgui.C | 25 +- cinelerra-5.1/cinelerra/awindowgui.h | 3 + cinelerra-5.1/cinelerra/clipedls.C | 4 + cinelerra-5.1/cinelerra/clippopup.C | 22 +- cinelerra-5.1/cinelerra/edl.C | 33 ++- cinelerra-5.1/cinelerra/edl.h | 4 +- cinelerra-5.1/cinelerra/localsession.C | 9 - cinelerra-5.1/cinelerra/localsession.h | 1 - cinelerra-5.1/cinelerra/mainundo.C | 29 +- cinelerra-5.1/cinelerra/mwindow.C | 66 +++-- cinelerra-5.1/cinelerra/mwindow.h | 1 + cinelerra-5.1/cinelerra/mwindowedit.C | 6 +- cinelerra-5.1/cinelerra/proxypopup.C | 271 ++++++++++++++++++ cinelerra-5.1/cinelerra/proxypopup.h | 142 +++++++++ cinelerra-5.1/cinelerra/proxypopup.inc | 33 +++ cinelerra-5.1/cinelerra/versioninfo.h | 6 +- cinelerra-5.1/cinelerra/vwindow.C | 44 +-- cinelerra-5.1/configure.ac | 2 +- .../thirdparty/src/ffmpeg-3.4.1.patch4 | 110 ------- ...fmpeg-3.4.1.patch1 => ffmpeg-3.4.2.patch1} | 0 ...fmpeg-3.4.1.patch2 => ffmpeg-3.4.2.patch2} | 0 ...fmpeg-3.4.1.patch3 => ffmpeg-3.4.2.patch3} | 24 +- .../thirdparty/src/ffmpeg-3.4.2.patch4 | 16 ++ ...fmpeg-3.4.1.patch5 => ffmpeg-3.4.2.patch5} | 0 ...fmpeg-3.4.1.tar.xz => ffmpeg-3.4.2.tar.xz} | Bin 8481964 -> 8478376 bytes .../thirdparty/src/ffmpeg.git.patch3 | 24 +- 27 files changed, 620 insertions(+), 256 deletions(-) create mode 100644 cinelerra-5.1/cinelerra/proxypopup.C create mode 100644 cinelerra-5.1/cinelerra/proxypopup.h create mode 100644 cinelerra-5.1/cinelerra/proxypopup.inc delete mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch4 rename cinelerra-5.1/thirdparty/src/{ffmpeg-3.4.1.patch1 => ffmpeg-3.4.2.patch1} (100%) rename cinelerra-5.1/thirdparty/src/{ffmpeg-3.4.1.patch2 => ffmpeg-3.4.2.patch2} (100%) rename cinelerra-5.1/thirdparty/src/{ffmpeg-3.4.1.patch3 => ffmpeg-3.4.2.patch3} (78%) create mode 100644 cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch4 rename cinelerra-5.1/thirdparty/src/{ffmpeg-3.4.1.patch5 => ffmpeg-3.4.2.patch5} (100%) rename cinelerra-5.1/thirdparty/src/{ffmpeg-3.4.1.tar.xz => ffmpeg-3.4.2.tar.xz} (52%) diff --git a/cinelerra-5.1/cinelerra/Makefile b/cinelerra-5.1/cinelerra/Makefile index 755e4298..c341abcb 100644 --- a/cinelerra-5.1/cinelerra/Makefile +++ b/cinelerra-5.1/cinelerra/Makefile @@ -234,6 +234,7 @@ OBJS = \ $(OBJDIR)/presets.o \ $(OBJDIR)/probeprefs.o \ $(OBJDIR)/proxy.o \ + $(OBJDIR)/proxypopup.o \ $(OBJDIR)/question.o \ $(OBJDIR)/quit.o \ $(OBJDIR)/recconfirmdelete.o \ diff --git a/cinelerra-5.1/cinelerra/awindowgui.C b/cinelerra-5.1/cinelerra/awindowgui.C index 0ed6b1ce..42672233 100644 --- a/cinelerra-5.1/cinelerra/awindowgui.C +++ b/cinelerra-5.1/cinelerra/awindowgui.C @@ -57,6 +57,7 @@ #include "newfolder.h" #include "preferences.h" #include "proxy.h" +#include "proxypopup.h" #include "renderengine.h" #include "samples.h" #include "theme.h" @@ -833,6 +834,7 @@ AWindowGUI::AWindowGUI(MWindow *mwindow, AWindow *awindow) effectlist_menu = 0; assetlist_menu = 0; cliplist_menu = 0; + proxylist_menu = 0; labellist_menu = 0; folderlist_menu = 0; temp_picon = 0; @@ -860,14 +862,6 @@ AWindowGUI::~AWindowGUI() delete vicon_audio; delete newfolder_thread; - delete asset_menu; - delete clip_menu; - delete label_menu; - delete effectlist_menu; - delete assetlist_menu; - delete cliplist_menu; - delete labellist_menu; - delete folderlist_menu; delete search_text; delete temp_picon; delete remove_plugin; @@ -1060,6 +1054,8 @@ void AWindowGUI::create_objects() clip_menu->create_objects(); add_subwindow(label_menu = new LabelPopup(mwindow, this)); label_menu->create_objects(); + add_subwindow(proxy_menu = new ProxyPopup(mwindow, this)); + proxy_menu->create_objects(); add_subwindow(effectlist_menu = new EffectListMenu(mwindow, this)); effectlist_menu->create_objects(); @@ -1069,6 +1065,8 @@ void AWindowGUI::create_objects() cliplist_menu->create_objects(); add_subwindow(labellist_menu = new LabelListMenu(mwindow, this)); labellist_menu->create_objects(); + add_subwindow(proxylist_menu = new ProxyListMenu(mwindow, this)); + proxylist_menu->create_objects(); add_subwindow(folderlist_menu = new FolderListMenu(mwindow, this)); folderlist_menu->create_objects(); @@ -1584,6 +1582,7 @@ EDL *AWindowGUI::collect_proxy(Indexable *indexable) EDL *proxy_edl = new EDL(mwindow->edl); proxy_edl->create_objects(); FileSystem fs; fs.extract_name(path, proxy_asset->path); + proxy_edl->set_path(path); strcpy(proxy_edl->local_session->clip_title, path); strcpy(proxy_edl->local_session->clip_notes, _("Proxy clip")); proxy_edl->session->video_tracks = proxy_asset->layers; @@ -1999,8 +1998,11 @@ int AWindowAssets::button_press_event() gui->cliplist_menu->update(); gui->cliplist_menu->activate_menu(); break; - case AW_MEDIA_FOLDER: case AW_PROXY_FOLDER: + gui->proxylist_menu->update(); + gui->proxylist_menu->activate_menu(); + break; + case AW_MEDIA_FOLDER: gui->assetlist_menu->update_titles(folder==AW_MEDIA_FOLDER); gui->assetlist_menu->activate_menu(); break; @@ -2057,6 +2059,11 @@ int AWindowAssets::selection_changed() gui->clip_menu->update(); gui->clip_menu->activate_menu(); break; + case AW_PROXY_FOLDER: + if( !item->indexable && !item->edl ) break; + gui->proxy_menu->update(); + gui->proxy_menu->activate_menu(); + break; default: if( !item->indexable && !item->edl ) break; gui->asset_menu->update(); diff --git a/cinelerra-5.1/cinelerra/awindowgui.h b/cinelerra-5.1/cinelerra/awindowgui.h index 4bc25642..440b4019 100644 --- a/cinelerra-5.1/cinelerra/awindowgui.h +++ b/cinelerra-5.1/cinelerra/awindowgui.h @@ -42,6 +42,7 @@ #include "mwindow.inc" #include "newfolder.inc" #include "pluginserver.inc" +#include "proxypopup.inc" #include "renderengine.inc" #include "samples.inc" #include "vicon.h" @@ -264,10 +265,12 @@ public: AssetPopup *asset_menu; ClipPopup *clip_menu; LabelPopup *label_menu; + ProxyPopup *proxy_menu; EffectListMenu *effectlist_menu; AssetListMenu *assetlist_menu; ClipListMenu *cliplist_menu; LabelListMenu *labellist_menu; + ProxyListMenu *proxylist_menu; FolderListMenu *folderlist_menu; AddTools *add_tools; // Temporary for reading picons from files diff --git a/cinelerra-5.1/cinelerra/clipedls.C b/cinelerra-5.1/cinelerra/clipedls.C index 65dd58e2..52dd7678 100644 --- a/cinelerra-5.1/cinelerra/clipedls.C +++ b/cinelerra-5.1/cinelerra/clipedls.C @@ -38,6 +38,10 @@ void ClipEDLs::remove_clip(EDL *clip) EDL* ClipEDLs::get_copy(EDL *src) { if( !src ) return 0; + for( int i=0; iid == dst->id ) return dst; + } for( int i=0; ipath, src->path) ) return dst; diff --git a/cinelerra-5.1/cinelerra/clippopup.C b/cinelerra-5.1/cinelerra/clippopup.C index 677b9bed..ef291f19 100644 --- a/cinelerra-5.1/cinelerra/clippopup.C +++ b/cinelerra-5.1/cinelerra/clippopup.C @@ -432,11 +432,9 @@ int ClipPopupNest::handle_event() if( mwindow->session->drag_clips->total > 0 ) { EDL *edl = mwindow->edl; EDL *clip = mwindow->session->drag_clips->values[0]; - EDL *clip_edl = new EDL; // no parent for nested clip - clip_edl->create_objects(); - clip_edl->copy_all(clip); EDL *new_clip = new EDL(edl); new_clip->create_objects(); + new_clip->copy_all(clip); new_clip->awindow_folder = AW_CLIP_FOLDER; snprintf(new_clip->local_session->clip_title, sizeof(new_clip->local_session->clip_title), @@ -445,27 +443,25 @@ int ClipPopupNest::handle_event() clip->local_session->clip_notes); time_t dt; time(&dt); struct tm dtm; localtime_r(&dt, &dtm); - char path[BCSTRLEN]; - sprintf(path, _("Nested_%02d%02d%02d-%02d%02d%02d"), - dtm.tm_year+1900, dtm.tm_mon+1, dtm.tm_mday, - dtm.tm_hour, dtm.tm_min, dtm.tm_sec); - clip_edl->set_path(path); sprintf(new_clip->local_session->clip_icon, "clip_%02d%02d%02d-%02d%02d%02d.png", dtm.tm_year+1900, dtm.tm_mon+1, dtm.tm_mday, dtm.tm_hour, dtm.tm_min, dtm.tm_sec); - new_clip->set_path(path); - new_clip->to_nested(clip_edl); + char path[BCSTRLEN]; + sprintf(path, _("Nested_%02d%02d%02d-%02d%02d%02d"), + dtm.tm_year+1900, dtm.tm_mon+1, dtm.tm_mday, + dtm.tm_hour, dtm.tm_min, dtm.tm_sec); + EDL *clip_edl = edl->new_nested(new_clip, path); + new_clip->remove_user(); int idx = edl->clips.number_of(clip); if( idx >= 0 ) { - edl->clips[idx] = new_clip; + edl->clips[idx] = clip_edl; clip->remove_user(); } else - edl->clips.append(new_clip); + edl->clips.append(clip_edl); mwindow->mainindexes->add_next_asset(0, clip_edl); mwindow->mainindexes->start_build(); - clip_edl->remove_user(); popup->gui->async_update_assets(); } gui->unlock_window(); diff --git a/cinelerra-5.1/cinelerra/edl.C b/cinelerra-5.1/cinelerra/edl.C index 49d4cecf..55ca9a29 100644 --- a/cinelerra-5.1/cinelerra/edl.C +++ b/cinelerra-5.1/cinelerra/edl.C @@ -580,21 +580,38 @@ int EDL::copy(double start, double end, int all, return 0; } -int EDL::to_nested(EDL *nested_edl) +EDL *EDL::get_nested(EDL *nested_edl, const char *path) { -// Keep frame rate, sample rate, and output size unchanged. -// These parameters would revert the project if VWindow displayed an asset -// of different size than the project. + for( int i=0; ipath) ) return dst; + } + return new_nested(nested_edl, path); +} + +EDL *EDL::new_nested(EDL *nested_edl, const char *path) +{ + EDL *new_edl = new EDL; // no parent for nested clip + new_edl->create_objects(); + new_edl->copy_session(this); + new_edl->create_nested(nested_edl, path); + return new_edl; +} +void EDL::create_nested(EDL *nested_edl, const char *path) +{ + set_path(path); + strcpy(local_session->clip_title, path); +// save a ref to nested edl for garbage delete + EDL *nest = clips.get_copy(nested_edl); +// Keep frame rate, sample rate, and output size unchanged. // Nest all video & audio outputs session->video_tracks = 1; - session->audio_tracks = nested_edl->session->audio_channels; + session->audio_tracks = nest->session->audio_channels; create_default_tracks(); - insert_asset(0, nested_edl, 0, 0, 0); - return 0; + insert_asset(0, nest, 0, 0, 0); } - void EDL::retrack() { int min_w = session->output_w, min_h = session->output_h; diff --git a/cinelerra-5.1/cinelerra/edl.h b/cinelerra-5.1/cinelerra/edl.h index 60784dcf..d523779b 100644 --- a/cinelerra-5.1/cinelerra/edl.h +++ b/cinelerra-5.1/cinelerra/edl.h @@ -181,7 +181,9 @@ public: int copy(double start, double end, int all, const char *closer, FileXML *file, const char *output_path, int rewind_it); - int to_nested(EDL *nested_edl); + EDL *get_nested(EDL *nested_edl, const char *path); + EDL *new_nested(EDL *nested_edl, const char *path); + void create_nested(EDL *nested_edl, const char *path); void paste_silence(double start, double end, int edit_labels /* = 1 */, int edit_plugins, diff --git a/cinelerra-5.1/cinelerra/localsession.C b/cinelerra-5.1/cinelerra/localsession.C index eace821b..8e691310 100644 --- a/cinelerra-5.1/cinelerra/localsession.C +++ b/cinelerra-5.1/cinelerra/localsession.C @@ -507,12 +507,3 @@ int LocalSession::outpoint_valid() return out_point >= 0; } -void LocalSession::set_clip_path(Indexable *indexable) -{ - char string[BCTEXTLEN]; - FileSystem fs; - fs.extract_name(string, indexable->path); - strcpy(clip_title, string); -} - - diff --git a/cinelerra-5.1/cinelerra/localsession.h b/cinelerra-5.1/cinelerra/localsession.h index bf1ddeeb..cd948aa3 100644 --- a/cinelerra-5.1/cinelerra/localsession.h +++ b/cinelerra-5.1/cinelerra/localsession.h @@ -63,7 +63,6 @@ public: void load_xml(FileXML *file, unsigned long load_flags); int load_defaults(BC_Hash *defaults); int save_defaults(BC_Hash *defaults); - void set_clip_path(Indexable *indexable); // Used to copy parameters that affect rendering. void synchronize_params(LocalSession *that); diff --git a/cinelerra-5.1/cinelerra/mainundo.C b/cinelerra-5.1/cinelerra/mainundo.C index 4a921cf4..3bc8d7cf 100644 --- a/cinelerra-5.1/cinelerra/mainundo.C +++ b/cinelerra-5.1/cinelerra/mainundo.C @@ -200,14 +200,14 @@ int MainUndo::undo() mwindow->gui->mainmenu->redo-> update_caption(next ? next->get_description() : ""); } - FileXML file; char *current_data = current->get_data(); if( current_data ) { + FileXML file; file.read_from_string(current_data); + delete [] current_data; load_from_undo(&file, current->get_flags()); //printf("MainUndo::undo %d %s\n", __LINE__, current->get_filename()); mwindow->set_filename(current->get_filename()); - delete [] current_data; if( mwindow->gui ) { // Now update the menu with the after entry @@ -231,21 +231,18 @@ int MainUndo::redo() undo_stack->current = current; char *current_data = current->get_data(); if( current_data ) { - FileXML file; mwindow->set_filename(current->get_filename()); + FileXML file; file.read_from_string(current_data); load_from_undo(&file, current->get_flags()); delete [] current_data; - - if( mwindow->gui ) { // Update menu - mwindow->gui->mainmenu->undo-> - update_caption(current->get_description()); + mwindow->gui->mainmenu->undo-> + update_caption(current->get_description()); // Get next after entry - if( (current=NEXT) ) current = NEXT; - mwindow->gui->mainmenu->redo-> - update_caption(current ? current->get_description() : ""); - } + if( (current=NEXT) ) current = NEXT; + mwindow->gui->mainmenu->redo-> + update_caption(current ? current->get_description() : ""); } } reset_creators(); @@ -258,8 +255,11 @@ int MainUndo::redo() // Here the master EDL loads int MainUndo::load_from_undo(FileXML *file, uint32_t load_flags) { - if( load_flags & LOAD_SESSION ) + if( load_flags & LOAD_SESSION ) { + mwindow->gui->unlock_window(); mwindow->close_mixers(); + mwindow->gui->lock_window("MainUndo::load_from_undo"); + } mwindow->edl->load_xml(file, load_flags); for( Asset *asset=mwindow->edl->assets->first; asset; asset=asset->next ) { mwindow->mainindexes->add_next_asset(0, asset); @@ -270,8 +270,11 @@ int MainUndo::load_from_undo(FileXML *file, uint32_t load_flags) } mwindow->mainindexes->start_build(); mwindow->update_plugin_guis(1); - if( load_flags & LOAD_SESSION ) + if( load_flags & LOAD_SESSION ) { + mwindow->gui->unlock_window(); mwindow->open_mixers(); + mwindow->gui->lock_window("MainUndo::load_from_undo"); + } return 0; } diff --git a/cinelerra-5.1/cinelerra/mwindow.C b/cinelerra-5.1/cinelerra/mwindow.C index 4245e872..56059c67 100644 --- a/cinelerra-5.1/cinelerra/mwindow.C +++ b/cinelerra-5.1/cinelerra/mwindow.C @@ -1288,35 +1288,53 @@ void MWindow::close_mixers() } } +ZWindow *MWindow::create_mixer(Indexable *indexable) +{ + ArrayList new_assets; + new_assets.append(indexable); + Track *track = edl->tracks->last; + load_assets(&new_assets, 0, LOADMODE_NEW_TRACKS, 0, 0, 0, 0, 0, 0); + track = !track ? edl->tracks->first : track->next; + Mixer *mixer = 0; + ZWindow *zwindow = get_mixer(mixer); + while( track ) { + track->play = track->record = 0; + if( track->data_type == TRACK_VIDEO ) { + sprintf(track->title, _("Mixer %d"), zwindow->idx); + } + mixer->mixer_ids.append(track->get_mixer_id()); + track = track->next; + } + if( indexable->is_asset ) { + char *path = indexable->path; + char *tp = strrchr(path, '/'); + if( !tp ) tp = path; else ++tp; + zwindow->set_title(tp); + } + else { + char *title = ((EDL*)indexable)->local_session->clip_title; + zwindow->set_title(title); + } + return zwindow; +} + void MWindow::create_mixers() { - if( !session->drag_assets->size() ) return; + if( !session->drag_assets->size() && + !session->drag_clips->size() ) return; undo->update_undo_before(); select_zwindow(0); ArrayListnew_mixers; - for( int i=0; idrag_assets->total; ++i ) { - Indexable *indexable = session->drag_assets->values[i]; - ArrayList new_assets; - new_assets.append(indexable); - Track *track = edl->tracks->last; - load_assets(&new_assets, -1, LOADMODE_NEW_TRACKS, 0, 0, 0, 0, 0, 0); - track = !track ? edl->tracks->first : track->next; - Mixer *mixer = 0; - ZWindow *zwindow = get_mixer(mixer); - while( track ) { - track->play = track->record = 0; - if( track->data_type == TRACK_VIDEO ) { - sprintf(track->title, _("Mixer %d"), zwindow->idx); - } - mixer->mixer_ids.append(track->get_mixer_id()); - track = track->next; - } - char *path = indexable->path; - char *tp = strrchr(path, '/'); - if( !tp ) tp = path; else ++tp; - zwindow->set_title(tp); + for( int i=0; idrag_assets->size(); ++i ) { + Indexable *indexable = session->drag_assets->get(i); + ZWindow *zwindow = create_mixer(indexable); + new_mixers.append(zwindow); + } + for( int i=0; idrag_clips->size(); ++i ) { + Indexable *indexable = (Indexable*)session->drag_clips->get(i); + ZWindow *zwindow = create_mixer(indexable); new_mixers.append(zwindow); } @@ -1941,11 +1959,9 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); // Load temporary EDL for nesting. EDL *nested_edl = new EDL; nested_edl->create_objects(); - nested_edl->set_path(filenames->get(i)); nested_edl->load_xml(&xml_file, LOAD_ALL); //printf("MWindow::load_filenames %p %s\n", nested_edl, nested_edl->project_path); - new_edl->to_nested(nested_edl); - new_edl->local_session->set_clip_path(nested_edl); + new_edl->create_nested(nested_edl, filenames->get(i)); nested_edl->Garbage::remove_user(); } else { diff --git a/cinelerra-5.1/cinelerra/mwindow.h b/cinelerra-5.1/cinelerra/mwindow.h index 69781804..0dfd24ce 100644 --- a/cinelerra-5.1/cinelerra/mwindow.h +++ b/cinelerra-5.1/cinelerra/mwindow.h @@ -204,6 +204,7 @@ public: void queue_mixers(EDL *edl, int command, int wait_tracking, int use_inout, int update_refresh, int toggle_audio, int loop_play); + ZWindow *create_mixer(Indexable *indexable); void create_mixers(); void refresh_mixers(int dir=1); void stop_mixers(); diff --git a/cinelerra-5.1/cinelerra/mwindowedit.C b/cinelerra-5.1/cinelerra/mwindowedit.C index 2366c388..51f1b421 100644 --- a/cinelerra-5.1/cinelerra/mwindowedit.C +++ b/cinelerra-5.1/cinelerra/mwindowedit.C @@ -1207,17 +1207,15 @@ if( debug ) printf("MWindow::load_assets %d\n", __LINE__); EDL *new_edl = new EDL; new_edl->create_objects(); new_edl->copy_session(edl); - new_edls.append(new_edl); - if( !indexable->is_asset ) { EDL *nested_edl = (EDL*)indexable; - new_edl->to_nested(nested_edl); - new_edl->local_session->set_clip_path(nested_edl); + new_edl->create_nested(nested_edl, indexable->path); } else { Asset *asset = (Asset*)indexable; asset_to_edl(new_edl, asset); } + new_edls.append(new_edl); if( labels ) { for( RecordLabel *label=labels->first; label; label=label->next ) { diff --git a/cinelerra-5.1/cinelerra/proxypopup.C b/cinelerra-5.1/cinelerra/proxypopup.C new file mode 100644 index 00000000..225b21bd --- /dev/null +++ b/cinelerra-5.1/cinelerra/proxypopup.C @@ -0,0 +1,271 @@ + +/* + * CINELERRA + * Copyright (C) 1997-2012 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "assetedit.h" +#include "proxypopup.h" +#include "awindow.h" +#include "awindowgui.h" +#include "bcsignals.h" +#include "clipedit.h" +#include "cwindow.h" +#include "cwindowgui.h" +#include "edit.h" +#include "edits.h" +#include "edl.h" +#include "filexml.h" +#include "language.h" +#include "localsession.h" +#include "mainerror.h" +#include "mainsession.h" +#include "mwindow.h" +#include "mwindowgui.h" +#include "track.h" +#include "tracks.h" +#include "vwindow.h" +#include "vwindowgui.h" + + + +ProxyPopup::ProxyPopup(MWindow *mwindow, AWindowGUI *gui) + : BC_PopupMenu(0, 0, 0, "", 0) +{ + this->mwindow = mwindow; + this->gui = gui; +} + +ProxyPopup::~ProxyPopup() +{ +} + +void ProxyPopup::create_objects() +{ + add_item(info = new ProxyPopupInfo(mwindow, this)); + add_item(format = new AWindowListFormat(mwindow, gui)); + add_item(new ProxyPopupSort(mwindow, this)); + add_item(view = new ProxyPopupView(mwindow, this)); + add_item(view_window = new ProxyPopupViewWindow(mwindow, this)); + add_item(new ProxyPopupCopy(mwindow, this)); + add_item(new ProxyPopupPaste(mwindow, this)); +} + +void ProxyPopup::paste_assets() +{ +// Collect items into the drag vectors for temporary storage + gui->lock_window("ProxyPopup::paste_assets"); + mwindow->gui->lock_window("ProxyPopup::paste_assets"); + mwindow->cwindow->gui->lock_window("ProxyPopup::paste_assets"); + + gui->collect_assets(1); + mwindow->paste_assets(mwindow->edl->local_session->get_selectionstart(1), + mwindow->edl->tracks->first, 0); // do not overwrite + + gui->unlock_window(); + mwindow->gui->unlock_window(); + mwindow->cwindow->gui->unlock_window(); +} + +int ProxyPopup::update() +{ + format->update(); + gui->collect_assets(1); + return 0; +} + + +ProxyPopupInfo::ProxyPopupInfo(MWindow *mwindow, ProxyPopup *popup) + : BC_MenuItem(_("Info...")) +{ + this->mwindow = mwindow; + this->popup = popup; +} + +ProxyPopupInfo::~ProxyPopupInfo() +{ +} + +int ProxyPopupInfo::handle_event() +{ + int cur_x, cur_y; + popup->gui->get_abs_cursor(cur_x, cur_y, 0); + + if( mwindow->session->drag_assets->total ) { + AssetEdit *asset_edit = mwindow->awindow->get_asset_editor(); + asset_edit->edit_asset( + mwindow->session->drag_assets->values[0], cur_x, cur_y); + } + else + if( mwindow->session->drag_clips->total ) { + popup->gui->awindow->clip_edit->edit_clip( + mwindow->session->drag_clips->values[0], cur_x, cur_y); + } + return 1; +} + + +ProxyPopupSort::ProxyPopupSort(MWindow *mwindow, ProxyPopup *popup) + : BC_MenuItem(_("Sort items")) +{ + this->mwindow = mwindow; + this->popup = popup; +} + +ProxyPopupSort::~ProxyPopupSort() +{ +} + +int ProxyPopupSort::handle_event() +{ + mwindow->awindow->gui->sort_assets(0); + return 1; +} + + +ProxyPopupView::ProxyPopupView(MWindow *mwindow, ProxyPopup *popup) + : BC_MenuItem(_("View")) +{ + this->mwindow = mwindow; + this->popup = popup; +} + +ProxyPopupView::~ProxyPopupView() +{ +} + +int ProxyPopupView::handle_event() +{ + VWindow *vwindow = mwindow->get_viewer(1, DEFAULT_VWINDOW); + + if( mwindow->session->drag_assets->total ) + vwindow->change_source( + mwindow->session->drag_assets->values[0]); + else + if( mwindow->session->drag_clips->total ) + vwindow->change_source( + mwindow->session->drag_clips->values[0]); + + return 1; +} + + +ProxyPopupViewWindow::ProxyPopupViewWindow(MWindow *mwindow, ProxyPopup *popup) + : BC_MenuItem(_("View in new window")) +{ + this->mwindow = mwindow; + this->popup = popup; +} + +ProxyPopupViewWindow::~ProxyPopupViewWindow() +{ +} + +int ProxyPopupViewWindow::handle_event() +{ + for( int i=0; isession->drag_assets->size(); ++i ) { + VWindow *vwindow = mwindow->get_viewer(1); + vwindow->gui->lock_window("ProxyPopupView::handle_event 1"); + vwindow->change_source(mwindow->session->drag_assets->get(i)); + vwindow->gui->unlock_window(); + } + for( int i=0; isession->drag_clips->size(); ++i ) { + VWindow *vwindow = mwindow->get_viewer(1); + vwindow->gui->lock_window("ProxyPopupView::handle_event 2"); + vwindow->change_source(mwindow->session->drag_clips->get(i)); + vwindow->gui->unlock_window(); + } + return 1; +} + + +ProxyPopupCopy::ProxyPopupCopy(MWindow *mwindow, ProxyPopup *popup) + : BC_MenuItem(_("Copy")) +{ + this->mwindow = mwindow; + this->popup = popup; +} +ProxyPopupCopy::~ProxyPopupCopy() +{ +} + +int ProxyPopupCopy::handle_event() +{ + MWindowGUI *gui = mwindow->gui; + gui->lock_window("ProxyPopupCopy::handle_event"); + if( mwindow->session->drag_clips->total > 0 ) { + EDL *edl = mwindow->session->drag_clips->values[0]; + EDL *copy_edl = new EDL; // no parent or assets wont be copied + copy_edl->create_objects(); + copy_edl->copy_all(edl); + FileXML file; + double start = 0, end = edl->tracks->total_length(); + copy_edl->copy(start, end, 1, &file, "", 1); + copy_edl->remove_user(); + const char *file_string = file.string(); + long file_length = strlen(file_string); + gui->to_clipboard(file_string, file_length, SECONDARY_SELECTION); + gui->to_clipboard(file_string, file_length, BC_PRIMARY_SELECTION); + } + gui->unlock_window(); + return 1; +} + + +ProxyPopupPaste::ProxyPopupPaste(MWindow *mwindow, ProxyPopup *popup) + : BC_MenuItem(_("Paste")) +{ + this->mwindow = mwindow; + this->popup = popup; +} + +ProxyPopupPaste::~ProxyPopupPaste() +{ +} + +int ProxyPopupPaste::handle_event() +{ + popup->paste_assets(); + return 1; +} + + +ProxyListMenu::ProxyListMenu(MWindow *mwindow, AWindowGUI *gui) + : BC_PopupMenu(0, 0, 0, "", 0) +{ + this->mwindow = mwindow; + this->gui = gui; +} + +ProxyListMenu::~ProxyListMenu() +{ +} + +void ProxyListMenu::create_objects() +{ + add_item(format = new AWindowListFormat(mwindow, gui)); + add_item(new AWindowListSort(mwindow, gui)); + update(); +} + +void ProxyListMenu::update() +{ + format->update(); +} + + diff --git a/cinelerra-5.1/cinelerra/proxypopup.h b/cinelerra-5.1/cinelerra/proxypopup.h new file mode 100644 index 00000000..3a079806 --- /dev/null +++ b/cinelerra-5.1/cinelerra/proxypopup.h @@ -0,0 +1,142 @@ + +/* + * CINELERRA + * Copyright (C) 2008 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef PROXYPOPUP_H +#define PROXYPOPUP_H + +#include "assetedit.inc" +#include "awindowgui.inc" +#include "proxypopup.inc" +#include "edl.inc" +#include "guicast.h" +#include "assets.inc" +#include "mwindow.inc" + + + +class ProxyPopup : public BC_PopupMenu +{ +public: + ProxyPopup(MWindow *mwindow, AWindowGUI *gui); + ~ProxyPopup(); + + void create_objects(); +// Set mainsession with the current selections + int update(); + void paste_assets(); + + MWindow *mwindow; + AWindowGUI *gui; + + ProxyPopupInfo *info; + ProxyPopupView *view; + ProxyPopupViewWindow *view_window; + AWindowListFormat *format; +}; + +class ProxyPopupInfo : public BC_MenuItem +{ +public: + ProxyPopupInfo(MWindow *mwindow, ProxyPopup *popup); + ~ProxyPopupInfo(); + + int handle_event(); + int button_press_event(); + + MWindow *mwindow; + ProxyPopup *popup; +}; + +class ProxyPopupSort : public BC_MenuItem +{ +public: + ProxyPopupSort(MWindow *mwindow, ProxyPopup *popup); + ~ProxyPopupSort(); + + int handle_event(); + + MWindow *mwindow; + ProxyPopup *popup; +}; + +class ProxyPopupView : public BC_MenuItem +{ +public: + ProxyPopupView(MWindow *mwindow, ProxyPopup *popup); + ~ProxyPopupView(); + + int handle_event(); + + MWindow *mwindow; + ProxyPopup *popup; +}; + + +class ProxyPopupViewWindow : public BC_MenuItem +{ +public: + ProxyPopupViewWindow(MWindow *mwindow, ProxyPopup *popup); + ~ProxyPopupViewWindow(); + + int handle_event(); + + MWindow *mwindow; + ProxyPopup *popup; +}; + +class ProxyPopupCopy : public BC_MenuItem +{ +public: + ProxyPopupCopy(MWindow *mwindow, ProxyPopup *popup); + ~ProxyPopupCopy(); + + int handle_event(); + + MWindow *mwindow; + ProxyPopup *popup; +}; + +class ProxyPopupPaste : public BC_MenuItem +{ +public: + ProxyPopupPaste(MWindow *mwindow, ProxyPopup *popup); + ~ProxyPopupPaste(); + + int handle_event(); + + MWindow *mwindow; + ProxyPopup *popup; +}; + +class ProxyListMenu : public BC_PopupMenu +{ +public: + ProxyListMenu(MWindow *mwindow, AWindowGUI *gui); + ~ProxyListMenu(); + + void create_objects(); + void update(); + AWindowListFormat *format; + MWindow *mwindow; + AWindowGUI *gui; +}; + +#endif diff --git a/cinelerra-5.1/cinelerra/proxypopup.inc b/cinelerra-5.1/cinelerra/proxypopup.inc new file mode 100644 index 00000000..e0a544ad --- /dev/null +++ b/cinelerra-5.1/cinelerra/proxypopup.inc @@ -0,0 +1,33 @@ + +/* + * CINELERRA + * Copyright (C) 2008 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef __PROXYPOPUP_INC__ +#define __PROXYPOPUP_INC__ + +class ProxyPopup; +class ProxyPopupInfo; +class ProxyPopupSort; +class ProxyPopupView; +class ProxyPopupViewWindow; +class ProxyPopupCopy; +class ProxyListMenu; + +#endif diff --git a/cinelerra-5.1/cinelerra/versioninfo.h b/cinelerra-5.1/cinelerra/versioninfo.h index 21621aec..19a9189d 100644 --- a/cinelerra-5.1/cinelerra/versioninfo.h +++ b/cinelerra-5.1/cinelerra/versioninfo.h @@ -3,9 +3,9 @@ #define CINELERRA_VERSION "5.1" #define REPOMAINTXT "git://git.cinelerra-cv.org/goodguy/cinelerra.git\n" -#define COPYRIGHT_DATE "2017" -#define COPYRIGHTTEXT1 "(c) 2006-2017 Heroine Virtual Ltd. by Adam Williams\n" -#define COPYRIGHTTEXT2 "(c) 2007-2017 cin5 derivative by W.P. Morrow aka goodguy\n" +#define COPYRIGHT_DATE "2018" +#define COPYRIGHTTEXT1 "(c) 2006-2018 Heroine Virtual Ltd. by Adam Williams\n" +#define COPYRIGHTTEXT2 "(c) 2007-2018 cin5 derivative by W.P. Morrow aka goodguy\n" #undef COMPILEDATE #endif diff --git a/cinelerra-5.1/cinelerra/vwindow.C b/cinelerra-5.1/cinelerra/vwindow.C index 451c7132..98858289 100644 --- a/cinelerra-5.1/cinelerra/vwindow.C +++ b/cinelerra-5.1/cinelerra/vwindow.C @@ -208,62 +208,36 @@ void VWindow::change_source(int edl_number) void VWindow::change_source(Indexable *indexable) { + if( !indexable->is_asset ) { + change_source((EDL*)indexable); + return; + } if(!running()) return; if( playback_engine->is_playing_back ) stop_playback(1); -// if(asset && this->asset && -// asset->id == this->asset->id && -// asset == this->asset) return; gui->lock_window("VWindow::change_source 2"); -//printf("VWindow::change_source %d\n", __LINE__); - char title[BCTEXTLEN]; FileSystem fs; fs.extract_name(title, indexable->path); -//printf("VWindow::change_source 1\n"); - delete_source(1, 0); -//printf("VWindow::change_source 1\n"); - -// Generate EDL off of main EDL for cutting - Asset *asset = 0; - EDL *nested_edl = 0; - if(indexable->is_asset) - { - this->indexable = asset = new Asset; - asset->copy_from((Asset*)indexable, 0); - } - else - { - this->indexable = nested_edl = new EDL; - nested_edl->create_objects(); - nested_edl->copy_all((EDL*)indexable); - } // Create EDL this->edl = new EDL(mwindow->edl); this->edl->create_objects(); mwindow->edl->append_vwindow_edl(this->edl, 1); -// mwindow->edl->vwindow_edl = new EDL(mwindow->edl); -// mwindow->edl->vwindow_edl_shared = 0; -// mwindow->edl->vwindow_edl->create_objects(); - -//printf("VWindow::change_source 1 %d %p %p\n", __LINE__, asset, nested_edl); - if(asset) - mwindow->asset_to_edl(this->edl, asset); - else - this->edl->to_nested(nested_edl); +// Generate EDL off of main EDL for cutting + Asset *asset = new Asset; + asset->copy_from((Asset*)indexable, 0); + this->indexable = asset; + mwindow->asset_to_edl(this->edl, asset); // Update GUI gui->change_source(this->edl, title); update_position(CHANGE_ALL, 1, 1, 1); - - -//printf("VWindow::change_source 2\n"); gui->unlock_window(); } diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac index d54d4905..557aae3c 100644 --- a/cinelerra-5.1/configure.ac +++ b/cinelerra-5.1/configure.ac @@ -132,7 +132,7 @@ PKG_3RD([fdk],[auto], [ libAACdec/include libAACenc/include libSYS/include ]) PKG_3RD([ffmpeg],[yes], - [ffmpeg-3.4.1], + [ffmpeg-3.4.2], [ libavutil/libavutil.a \ libavcodec/libavcodec.a \ libpostproc/libpostproc.a \ diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch4 b/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch4 deleted file mode 100644 index e218ae5a..00000000 --- a/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch4 +++ /dev/null @@ -1,110 +0,0 @@ ---- a/libavcodec/libx264.c 2017-12-10 14:35:08.000000000 -0700 -+++ b/libavcodec/libx264.c 2018-02-08 16:57:46.028108824 -0700 -@@ -279,7 +279,11 @@ - - x264_picture_init( &x4->pic ); - x4->pic.img.i_csp = x4->params.i_csp; -+#if X264_BUILD >= 153 -+ if (x4->params.i_bitdepth > 8) -+#else - if (x264_bit_depth > 8) -+#endif - x4->pic.img.i_csp |= X264_CSP_HIGH_DEPTH; - x4->pic.img.i_plane = avfmt2_num_planes(ctx->pix_fmt); - -@@ -490,6 +494,9 @@ - x4->params.p_log_private = avctx; - x4->params.i_log_level = X264_LOG_DEBUG; - x4->params.i_csp = convert_pix_fmt(avctx->pix_fmt); -+#if X264_BUILD >= 153 -+ x4->params.i_bitdepth = av_pix_fmt_desc_get(avctx->pix_fmt)->comp[0].depth; -+#endif - - PARSE_X264_OPT("weightp", wpredp); - -@@ -701,24 +708,8 @@ - if (x4->nal_hrd >= 0) - x4->params.i_nal_hrd = x4->nal_hrd; - -- if (x4->motion_est >= 0) { -+ if (x4->motion_est >= 0) - x4->params.analyse.i_me_method = x4->motion_est; --#if FF_API_MOTION_EST --FF_DISABLE_DEPRECATION_WARNINGS -- } else { -- if (avctx->me_method == ME_EPZS) -- x4->params.analyse.i_me_method = X264_ME_DIA; -- else if (avctx->me_method == ME_HEX) -- x4->params.analyse.i_me_method = X264_ME_HEX; -- else if (avctx->me_method == ME_UMH) -- x4->params.analyse.i_me_method = X264_ME_UMH; -- else if (avctx->me_method == ME_FULL) -- x4->params.analyse.i_me_method = X264_ME_ESA; -- else if (avctx->me_method == ME_TESA) -- x4->params.analyse.i_me_method = X264_ME_TESA; --FF_ENABLE_DEPRECATION_WARNINGS --#endif -- } - - if (x4->coder >= 0) - x4->params.b_cabac = x4->coder; -@@ -878,6 +869,24 @@ - AV_PIX_FMT_NV20, - AV_PIX_FMT_NONE - }; -+static const enum AVPixelFormat pix_fmts_all[] = { -+ AV_PIX_FMT_YUV420P, -+ AV_PIX_FMT_YUVJ420P, -+ AV_PIX_FMT_YUV422P, -+ AV_PIX_FMT_YUVJ422P, -+ AV_PIX_FMT_YUV444P, -+ AV_PIX_FMT_YUVJ444P, -+ AV_PIX_FMT_NV12, -+ AV_PIX_FMT_NV16, -+#ifdef X264_CSP_NV21 -+ AV_PIX_FMT_NV21, -+#endif -+ AV_PIX_FMT_YUV420P10, -+ AV_PIX_FMT_YUV422P10, -+ AV_PIX_FMT_YUV444P10, -+ AV_PIX_FMT_NV20, -+ AV_PIX_FMT_NONE -+}; - #if CONFIG_LIBX264RGB_ENCODER - static const enum AVPixelFormat pix_fmts_8bit_rgb[] = { - AV_PIX_FMT_BGR0, -@@ -889,12 +898,16 @@ - - static av_cold void X264_init_static(AVCodec *codec) - { -+#if X264_BUILD < 153 - if (x264_bit_depth == 8) - codec->pix_fmts = pix_fmts_8bit; - else if (x264_bit_depth == 9) - codec->pix_fmts = pix_fmts_9bit; - else if (x264_bit_depth == 10) - codec->pix_fmts = pix_fmts_10bit; -+#else -+ codec->pix_fmts = pix_fmts_all; -+#endif - } - - #define OFFSET(x) offsetof(X264Context, x) -@@ -958,6 +971,7 @@ - { "vbr", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = X264_NAL_HRD_VBR}, INT_MIN, INT_MAX, VE, "nal-hrd" }, - { "cbr", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = X264_NAL_HRD_CBR}, INT_MIN, INT_MAX, VE, "nal-hrd" }, - { "avcintra-class","AVC-Intra class 50/100/200", OFFSET(avcintra_class),AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 200 , VE}, -+ { "me_method", "Set motion estimation method", OFFSET(motion_est), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, X264_ME_TESA, VE, "motion-est"}, - { "motion-est", "Set motion estimation method", OFFSET(motion_est), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, X264_ME_TESA, VE, "motion-est"}, - { "dia", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = X264_ME_DIA }, INT_MIN, INT_MAX, VE, "motion-est" }, - { "hex", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = X264_ME_HEX }, INT_MIN, INT_MAX, VE, "motion-est" }, -@@ -1002,9 +1016,6 @@ - { "nr", "-1" }, - #endif - { "me_range", "-1" }, --#if FF_API_MOTION_EST -- { "me_method", "-1" }, --#endif - { "subq", "-1" }, - #if FF_API_PRIVATE_OPT - { "b_strategy", "-1" }, diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch1 b/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch1 similarity index 100% rename from cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch1 rename to cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch1 diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch2 b/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch2 similarity index 100% rename from cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch2 rename to cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch2 diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch3 b/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch3 similarity index 78% rename from cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch3 rename to cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch3 index a96cf1cd..36699eea 100644 --- a/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch3 +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch3 @@ -1,6 +1,6 @@ diff -ur a/libavformat/avformat.h b/libavformat/avformat.h ---- a/libavformat/avformat.h 2017-12-10 14:35:10.000000000 -0700 -+++ b/libavformat/avformat.h 2017-12-18 11:11:31.791996302 -0700 +--- a/libavformat/avformat.h 2018-02-11 17:29:06.000000000 -0700 ++++ b/libavformat/avformat.h 2018-03-13 09:45:00.061310268 -0600 @@ -504,6 +504,9 @@ The user or muxer can override this through AVFormatContext.avoid_negative_ts @@ -21,9 +21,9 @@ diff -ur a/libavformat/avformat.h b/libavformat/avformat.h */ int flags; -diff -ur a/libavformat/dv.c b/libavformat/dv.c ---- a/libavformat/dv.c 2017-12-10 14:35:10.000000000 -0700 -+++ b/libavformat/dv.c 2017-12-18 11:11:31.792996246 -0700 +diff -ur a/libavformat/dv.c b/ffmpeg-3.4.2/libavformat/dv.c +--- a/libavformat/dv.c 2018-02-11 17:29:06.000000000 -0700 ++++ b/libavformat/dv.c 2018-03-13 09:45:00.061310268 -0600 @@ -632,6 +632,7 @@ AVInputFormat ff_dv_demuxer = { .name = "dv", @@ -33,9 +33,9 @@ diff -ur a/libavformat/dv.c b/libavformat/dv.c .read_probe = dv_probe, .read_header = dv_read_header, diff -ur a/libavformat/matroskadec.c b/libavformat/matroskadec.c ---- a/libavformat/matroskadec.c 2017-12-10 14:35:10.000000000 -0700 -+++ b/libavformat/matroskadec.c 2017-12-18 11:11:31.793996189 -0700 -@@ -3984,6 +3984,7 @@ +--- a/libavformat/matroskadec.c 2018-02-11 17:29:18.000000000 -0700 ++++ b/libavformat/matroskadec.c 2018-03-13 09:45:00.061310268 -0600 +@@ -3992,6 +3992,7 @@ AVInputFormat ff_matroska_demuxer = { .name = "matroska,webm", .long_name = NULL_IF_CONFIG_SMALL("Matroska / WebM"), @@ -43,7 +43,7 @@ diff -ur a/libavformat/matroskadec.c b/libavformat/matroskadec.c .extensions = "mkv,mk3d,mka,mks", .priv_data_size = sizeof(MatroskaDemuxContext), .read_probe = matroska_probe, -@@ -3997,6 +3998,7 @@ +@@ -4005,6 +4006,7 @@ AVInputFormat ff_webm_dash_manifest_demuxer = { .name = "webm_dash_manifest", .long_name = NULL_IF_CONFIG_SMALL("WebM DASH Manifest"), @@ -51,9 +51,9 @@ diff -ur a/libavformat/matroskadec.c b/libavformat/matroskadec.c .priv_data_size = sizeof(MatroskaDemuxContext), .read_header = webm_dash_manifest_read_header, .read_packet = webm_dash_manifest_read_packet, -diff -ur a/libavformat/utils.c ./libavformat/utils.c ---- a/libavformat/utils.c 2017-12-10 14:35:18.000000000 -0700 -+++ b/libavformat/utils.c 2017-12-18 11:11:31.795996077 -0700 +diff -ur a/libavformat/utils.c b/libavformat/utils.c +--- a/libavformat/utils.c 2018-02-11 17:29:06.000000000 -0700 ++++ b/libavformat/utils.c 2018-03-13 09:45:00.062310270 -0600 @@ -2416,6 +2416,13 @@ return seek_frame_byte(s, stream_index, timestamp, flags); } diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch4 b/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch4 new file mode 100644 index 00000000..8c7cddb7 --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch4 @@ -0,0 +1,16 @@ +diff -ur a/libavcodec/libx264.c b/libavcodec/libx264.c +--- a/libavcodec/libx264.c 2018-02-11 17:29:18.000000000 -0700 ++++ b/libavcodec/libx264.c 2018-03-13 09:38:03.241861794 -0600 +@@ -280,7 +280,11 @@ + + x264_picture_init( &x4->pic ); + x4->pic.img.i_csp = x4->params.i_csp; +- if (desc->comp[0].depth > 8) ++#if X264_BUILD >= 153 ++ if (x4->params.i_bitdepth > 8) ++#else ++ if (x264_bit_depth > 8) ++#endif + x4->pic.img.i_csp |= X264_CSP_HIGH_DEPTH; + x4->pic.img.i_plane = avfmt2_num_planes(ctx->pix_fmt); + diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch5 b/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch5 similarity index 100% rename from cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.patch5 rename to cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.patch5 diff --git a/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.tar.xz b/cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.tar.xz similarity index 52% rename from cinelerra-5.1/thirdparty/src/ffmpeg-3.4.1.tar.xz rename to cinelerra-5.1/thirdparty/src/ffmpeg-3.4.2.tar.xz index 8970943ccc92547d6fcee5bdaa23a63aff2253a6..e1acc976c40a479ddb216d0f0225201cfa4e313a 100644 GIT binary patch literal 8478376 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

vR#_WGoCgkn(FHl*-GY5kS^HLgGRgZ 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