double new_samplerate = session->sample_rate;
double new_framerate = session->frame_rate;
+ edl->retrack();
edl->rechannel();
edl->resample(old_samplerate, new_samplerate, TRACK_AUDIO);
edl->resample(old_framerate, new_framerate, TRACK_VIDEO);
double new_samplerate = session->sample_rate;
double new_framerate = session->frame_rate;
+ edl->retrack();
edl->rechannel();
edl->resample(old_samplerate, new_samplerate, TRACK_AUDIO);
edl->resample(old_framerate, new_framerate, TRACK_VIDEO);
#include "interlacemodes.h"
#include "labels.h"
#include "localsession.h"
+#include "maskautos.h"
#include "mutex.h"
#include "nestededls.h"
#include "panauto.h"
return 0;
}
+void EDL::retrack()
+{
+ int min_w = session->output_w, min_h = session->output_h;
+ for( Track *track=tracks->first; track!=0; track=track->next ) {
+ if( track->data_type != TRACK_VIDEO ) continue;
+ int w = min_w, h = min_h;
+ for( Edit *current=track->edits->first; current!=0; current=NEXT ) {
+ Indexable* indexable = current->get_source();
+ if( !indexable ) continue;
+ int edit_w = indexable->get_w(), edit_h = indexable->get_h();
+ if( w < edit_w ) w = edit_w;
+ if( h < edit_h ) h = edit_h;
+ }
+ if( track->track_w == w && track->track_h == h ) continue;
+ ((MaskAutos*)track->automation->autos[AUTOMATION_MASK])->
+ translate_masks( (w - track->track_w) / 2, (h - track->track_h) / 2);
+ track->track_w = w; track->track_h = h;
+ }
+}
+
void EDL::rechannel()
{
for(Track *current = tracks->first; current; current = NEXT)
// Convert position to frames if cursor alignment is enabled
double align_to_frame(double position, int round);
+// increase track w/h to at least session w/h
+ void retrack();
// Scale all sample values since everything is locked to audio
void rechannel();
void resample(double old_rate, double new_rate, int data_type);
}
}
if( ret < 0 ) {
-//printf("** seek fail %ld, %ld\n", pos, tstmp);
+printf("** seek fail %ld, %ld\n", pos, tstmp);
seeked = need_packet = 0;
st_eof(flushed=1);
return -1;
{
#if 1
double display_aspect = asset->width / (double)asset->height;
- double sample_aspect = asset->aspect_ratio / display_aspect;
+ double sample_aspect = display_aspect / asset->aspect_ratio;
int width = 1000000, height = width * sample_aspect + 0.5;
float w, h;
MWindow::create_aspect_ratio(w, h, width, height);
if( dupl ) continue;
FFOptions_Opt *fopt = new FFOptions_Opt(this, opt, opt->name);
append(fopt);
+ AVDictionaryEntry *elem = av_dict_get(win->dialog->ff_opts,
+ opt->name, 0, AV_DICT_IGNORE_SUFFIX);
+ if( elem && elem->value ) fopt->set(elem->value);
char val[BCTEXTLEN], *vp = fopt->get(val, sizeof(val));
fopt->item_value->update(vp);
}
else if( delete_tracks )
edl->tracks->delete_track(track);
}
+ edl->retrack();
edl->resample(old_framerate, session->frame_rate, TRACK_VIDEO);
}
if( !result && asset->audio_data && asset->channels > 0 ) {
mwindow->edl->copy_session(new_settings, 1);
mwindow->edl->session->output_w = dimension[0];
mwindow->edl->session->output_h = dimension[1];
+ mwindow->edl->retrack();
mwindow->edl->rechannel();
mwindow->edl->resample(old_samplerate, new_samplerate, TRACK_AUDIO);
mwindow->edl->resample(old_framerate, new_framerate, TRACK_VIDEO);
gtk_window::~gtk_window()
{
+ gdk_flush();
gtk_widget_destroy(window);
g_object_unref(pbuf0);
g_object_unref(img0);
[ libtwolame ])
PKG_3RD([x264],[auto],
- [x264-snapshot-20170416-2245-stable],
+ [x264-snapshot-20170426-2245],
[ libx264.a ],
[ . ])
PKG_3RD([x265],[auto],
- [x265_2.3],
+ [x265_2.4],
[ libx265.a ],
[ . source ])
profile=baseline
level=3.0
preset=medium
+keyint_min=25
x264opts keyint=25:min-keyint=4:qpmin=3:qpmax=33:qp_step=4:merange=8
mp4 libx264
+# use framerate for 1 keyframe/sec, needed for seeks
+keyint_min=25
+x264opts keyint=25
color_primaries=bt2020
color_trc=bt2020_12bit
pixel_format=yuv422p12
-x265-params=output-depth=12
+# use framerate for 1 keyframe/sec, needed for seeks
+keyint_min=30
+x265-params=output-depth=12:keyint=30
cin_quality=-1
mp4 libx265
crf=5
cin_quality=-1
+# use framerate for 1 keyframe/sec, needed for seeks
+keyint_min=30
+x265-params=keyint=30
# lossy but faster
crf=25
cin_quality=-1
+# use framerate for 1 keyframe/sec, needed for seeks
+keyint_min=30
+x265-params=keyint=30
# visually lossless
crf=18
cin_quality=-1
+# use framerate for 1 keyframe/sec, needed for seeks
+keyint_min=30
+x265-params=keyint=30
mp4 libx265
cin_quality=-1
+# use framerate for 1 keyframe/sec, needed for seeks
+keyint_min=30
+x265-params=keyint=30
https://sourceforge.net/projects/lame/files/latest/download?source=directory = 3.99.5
http://dl.maptools.org/dl/libtiff/libtiff-cvsroot, untar, cd libtiff, cvs init, cd /tmp/x, cvs co -d path/libtiff = 4.0.6
https://sourceforge.net/projects/libuuid/files/latest/download?source=directory - 1.0.3
-ftp://ftp.videolan.org/pub/x264/snapshots/x264-snapshot-20170416-2245-stable.tar.bz2
-https://bitbucket.org/multicoreware/x265/downloads/x265_2.3.tar.gz
+ftp://ftp.videolan.org/pub/x264/snapshots/x264-snapshot-20170426-2245-stable.tar.bz2
+https://bitbucket.org/multicoreware/x265/downloads/x265_2.4.tar.gz
http://ffmpeg.org/releases/ffmpeg-3.3.tar.bz2
https://chromium.googlesource.com/webm/libvpx/+archive/0c0a05046db1c0b59a7fcc29785a190fdbbe39c2.tar.gz = 1,6,1