]> git.sesse.net Git - mlt/commitdiff
remove some progressive flag handling in field renderers
authorddennedy <ddennedy@d19143bc-622f-0410-bfdd-b5b2a6649095>
Wed, 24 Mar 2004 04:49:16 +0000 (04:49 +0000)
committerddennedy <ddennedy@d19143bc-622f-0410-bfdd-b5b2a6649095>
Wed, 24 Mar 2004 04:49:16 +0000 (04:49 +0000)
bugfix compositing images wider than the frame
added more demos

git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@235 d19143bc-622f-0410-bfdd-b5b2a6649095

13 files changed:
demo/README
demo/consumers.ini
demo/demo.ini
demo/mlt_fade_black [new file with mode: 0644]
demo/mlt_jcut
demo/mlt_jcut2 [deleted file]
demo/mlt_lcut [new file with mode: 0644]
demo/mlt_push [new file with mode: 0644]
demo/mlt_ticker [new file with mode: 0644]
docs/services.txt
src/modules/core/producer_colour.c
src/modules/core/transition_composite.c
src/modules/core/transition_luma.c

index 6cec29c9dbdfa34cdedaf87e6abba32f17c89f1a..62a4be07bbd9efed456152d19a9db207e2d45cc3 100644 (file)
@@ -166,3 +166,41 @@ Bouncy, Bouncy Ball
 
        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.
index a53006a3e9d6ecfea71a60ce90f02147a8c1e3eb..16720ffcdf101ee7fcddd1bade05e6468b18421c 100644 (file)
@@ -8,3 +8,5 @@ MainConcept DV to /dev/dv1394   mcdv:/dev/dv1394 rescale=nearest buffer=25
 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
index 5f0ab2f2f7b7cc69757158359c292719f989e91f..db49077ce94fc9a3ef8936f8ce8cec21cd0a3b6a 100644 (file)
@@ -16,5 +16,8 @@ mlt_title_over_gfx                    Title over graphic                                      watermark1.png,clip1.dv
 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
diff --git a/demo/mlt_fade_black b/demo/mlt_fade_black
new file mode 100644 (file)
index 0000000..87646c3
--- /dev/null
@@ -0,0 +1,13 @@
+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 \
+$*
index cde10ab68e007196e417fb2843db6804cbe67498..fd0b4a336849c5c55f57edd3a0063caf19bfd473 100644 (file)
@@ -1,18 +1,10 @@
 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 \
 $*
diff --git a/demo/mlt_jcut2 b/demo/mlt_jcut2
deleted file mode 100644 (file)
index b5b6b8b..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-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 \
-$*
diff --git a/demo/mlt_lcut b/demo/mlt_lcut
new file mode 100644 (file)
index 0000000..1b8485b
--- /dev/null
@@ -0,0 +1,12 @@
+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 \
+$*
diff --git a/demo/mlt_push b/demo/mlt_push
new file mode 100644 (file)
index 0000000..ab58b15
--- /dev/null
@@ -0,0 +1,22 @@
+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 \
+$*
diff --git a/demo/mlt_ticker b/demo/mlt_ticker
new file mode 100644 (file)
index 0000000..6e64462
--- /dev/null
@@ -0,0 +1,16 @@
+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% \
+$*
index 5b45ccb55b81c458da6048e9ecf53d02374d47a8..07b6d01ec9c5547ea6150ea379f688f8bb5de072 100644 (file)
@@ -1224,7 +1224,7 @@ Consumers
                        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.
index 415b595eed325fb018affda975f003e64e2ad532..bee525adf81eb9a386c0f8e63abc91fb2792d0ee 100644 (file)
@@ -216,4 +216,3 @@ static void producer_close( mlt_producer producer )
        mlt_producer_close( producer );
        free( producer );
 }
-
index 3c4557ed356e486e9f002b159e3a7d74f36b18fa..1af94dff5aa6629c5fef0337233a99c2bef1d448 100644 (file)
@@ -552,7 +552,7 @@ static int composite_yuv( uint8_t *p_dest, int width_dest, int height_dest, uint
        }
        
        // 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
@@ -561,8 +561,9 @@ static int composite_yuv( uint8_t *p_dest, int width_dest, int height_dest, uint
                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
@@ -995,7 +996,7 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f
                        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;
index f0032c131d647d74df92dff16cfd552bec7039c2..609b6105dadc8b2913fed43179cb9136c3013273 100644 (file)
@@ -437,7 +437,7 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f
        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" );