A variation on the above Bouncy, Bouncy demo that applies a shape, or
alpha producer, to the the compositing region.
+
+J Cut
+
+ A J cut is an edit where the audio cuts before the video.
+ It gets its name from the way it looks on a NLE timeline user interface.
+ When the audio cuts over, it does an audio crossfade over the duration of
+ one frame. This makes the audio cut slightly less abrupt and avoids any
+ "click" due to mismatched sample levels at the edit point. The video edit
+ is a hard cut.
+
+L Cut
+
+ An L cut is an edit where the video cuts before the audio.
+ It gets its name from the way it looks on a NLE timeline user interface.
+ This demo shows a very quick dissolve over 5 frames for a soft video cut.
+ Like the J Cut demo, an audio crossfade for the duration of one frame makes
+ an audio edit nearly instantaneous while being slightly softened and
+ avoiding aberrations.
+
+Fade from/to black/silence
+
+ Of course, it is possible using MLT to fade from black on video and silence
+ on audio as well fade to black and silence.
+
+Push wipe
+
+ A push wipe is a somewhat fancier transition than most standard wipes
+ because it involves motion. The new video clip "pushes" the old video
+ clip off one edge. If you can preview on an analog monitor you will notice
+ how smooth the motion is due to field-based rendering.
+
+Ticker tape
+
+ A very minimal reverse crawling title neard the bottom of the screen.
+ The goal of the demo is show fluid motion of the field-based rendering of
+ the compositor when viewed on an analog monitor using a DV or BlueFish444
+ consumer. The demo also shows the potientional for using and extending the
+ existing set of services for a full blown news ticker implementation.
libdv to /dev/dv1394 libdv:/dev/dv1394 rescale=nearest buffer=25
BlueFish444 PAL bluefish:1
BlueFish444 NTSC bluefish:1 standard=NTSC
+BlueFish444 PAL Prog LL bluefish:1 progressive=1 buffer=1 n_frames=4
+BlueFish444 NTSC Prog LL bluefish:1 standard=NTSC progressive=1 buffer=1 frames=4
mlt_slideshow Slideshow Scotland
mlt_bouncy Bouncy, Bouncy clip1.dv,clip3.dv
mlt_bouncy_ball Bouncy, Bouncy Ball clip1.mpeg,clip3.mpeg,circle.png
-mlt_jcut J Cut (using composite) clip1.dv, clip2.dv
-mlt_jcut2 J Cut (using mix) clip1.dv, clip2.dv
+mlt_jcut J Cut clip1.dv,clip2.dv
+mlt_lcut L Cut clip1.dv,clip2.dv
+mlt_fade_black Fade from/to black/silence clip3.mpeg
+mlt_push Push wipe clip1.mpeg, clip2.mpeg
+mlt_ticker Ticker tape clip1.dv
--- /dev/null
+inigo \
+clip3.mpeg in=100 out=299 \
+-track \
+colour:black \
+-transition \
+luma in=0 out=49 a_track=0 b_track=1 reverse=1 \
+-transition \
+luma in=150 out=199 a_track=0 b_track=1 \
+-filter \
+volume in=0 out=49 track=0 gain=0 end=1.0 \
+-filter \
+volume in=150 out=199 track=0 gain=1.0 end=0 \
+$*
inigo \
-clip1.dv \
-out=199 \
+clip1.dv out=99 \
-track \
--blank 59 \
-clip2.dv \
-in=100 \
-out=239 \
+-blank 49 \
+clip2.dv in=100 \
-transition \
-composite \
-start=0,0:100%x100%:0 \
-key[5]=0,0:100%x100%:100 \
-end=0,0:100%x100%:100 \
-in=60 \
-out=199 \
-a_track=0 \
-b_track=1 \
+mix start=0 end=1 in=49 out=50 a_track=0 b_track=1 \
+-transition \
+mix:1 in=51 out=99 a_track=0 b_track=1 \
$*
+++ /dev/null
-inigo \
--blank 59 \
-clip2.dv \
-in=100 \
-out=239 \
--track \
-clip1.dv \
-in=0 \
-out=199 \
--transition mix:1 \
-in=60 \
-out=199 \
-a_track=0 \
-b_track=1 \
--transition \
-luma \
-in=60 \
-out=65 \
-a_track=0 \
-b_track=1 \
-reverse=1 \
-$*
--- /dev/null
+inigo \
+-blank 49 \
+clip2.dv in=100 \
+-track \
+clip1.dv in=0 out=100 \
+-transition \
+luma in=50 out=55 a_track=0 b_track=1 reverse=1 \
+-transition \
+mix:1 in=50 out=98 a_track=0 b_track=1 \
+-transition \
+mix start=1 end=0 in=99 out=100 a_track=0 b_track=1 \
+$*
--- /dev/null
+inigo \
+-blank 49 \
+colour:red out=25 \
+-blank 999 \
+-track \
+clip3.dv in=200 out=275 \
+-track \
+-blank 49 \
+clip2.dv in=200 \
+-transition \
+composite in=50 out=75 a_track=0 b_track=1 \
+start=0,0:100%x100%:100 \
+end=100%,0:100%x100%:100 \
+-transition \
+composite in=50 out=75 a_track=0 b_track=2 \
+start=-100%,0:100%x100%:100 \
+end=0,0:100%x100%:100 \
+-transition \
+mix:1 in=50 out=75 a_track=0 b_track=1 \
+-transition \
+mix start=0 end=1 in=50 out=75 a_track=1 b_track=2 \
+$*
--- /dev/null
+inigo \
+clip1.dv out=299 \
+-track \
+colour:black out=299 \
+-track \
+"+The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog..txt" \
+out=299 \
+-transition \
+composite a_track=0 b_track=1 out=299 \
+start=0,70%:100%x64:100 \
+distort=true \
+-transition \
+composite a_track=0 b_track=2 out=299 \
+start=100%,70%:999%x20% \
+end=-299%,70%:999%x20% \
+$*
string standard - "PAL" (default) or "NTSC"
- default is based upon MLT_NORMALISATION
environment variable, which defaults to PAL.
- int frames - the number of DMA video frames. default is 4.
+ int frames - the number of DMA video frames. default is 8.
minimum is 2. maximum on my system is 11.
int buffer - the number of frames to buffer within MLT, minimum 1,
default 25.
mlt_producer_close( producer );
free( producer );
}
-
}
// crop overlay beyond right edge of frame
- else if ( x + width_src > width_dest )
+ if ( x + width_src > width_dest )
width_src = width_dest - x;
// crop overlay off the top edge of the frame
y_src = -y;
height_src -= y_src;
}
+
// crop overlay below bottom edge of frame
- else if ( y + height_src > height_dest )
+ if ( y + height_src > height_dest )
height_src = height_dest - y;
// offset pointer into overlay buffer based on cropping
uint8_t *dest = *image;
uint8_t *src = image_b;
uint8_t *alpha = mlt_frame_get_alpha_mask( b_frame );
- int progressive = mlt_properties_get_int( a_props, "progressive" ) ||
+ int progressive =
mlt_properties_get_int( a_props, "consumer_progressive" ) ||
mlt_properties_get_int( properties, "progressive" );
int field;
float frame_delta = delta_calculate( transition, a_frame );
float luma_softness = mlt_properties_get_double( properties, "softness" );
- int progressive = mlt_properties_get_int( a_props, "progressive" ) ||
+ int progressive =
mlt_properties_get_int( a_props, "consumer_progressive" ) ||
mlt_properties_get_int( properties, "progressive" ) ||
mlt_properties_get_int( b_props, "luma.progressive" );