<br><br><div class="gmail_quote">On Sat, Apr 5, 2008 at 9:05 PM, Dan Dennedy <<a href="mailto:dan@dennedy.org">dan@dennedy.org</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I already replied previously to the other interested party or the list<br>
here about the slowmotion producer. I tried it, and I can not get it<br>
to work good. It ends up distorting the image very badly.</blockquote><div><br>Yup, producer slowmotion is definitely not production code. Here are some of the reasons:<br><br>1. Motion (as calculated by filer motion_est) is assumed to be in the plane of the frame and not perpendicular to it. This is a false assumption.<br>
2. The motion code does not account for rotation within the frame of the plane. This problem is easier to solve than #1 but is still difficult.<br>3. The code has trouble accounting for things moving in front of other things.<br>
<br>In other words it's crazy and insanely difficult to interpolate between two frames without severe artifacts. Here are notes and a long list of deficiencies from the motion_est code:<br><br><a href="http://mlt.svn.sourceforge.net/viewvc/mlt/trunk/mlt/src/modules/motion_est/README?revision=855&view=markup">http://mlt.svn.sourceforge.net/viewvc/mlt/trunk/mlt/src/modules/motion_est/README?revision=855&view=markup</a><br>
<br>For now, the motion_est related code is useful in a small number of circumstances:<br><br>1. Detecting scene changes (applying filer_motion_est will have the side effect of flagging frames that are part of a new scene)<br>
2. Detecting crops (filer_crop_detect, this is a good candidate to move to core modules)<br>3. Tracking objects to obscure them (like faces)<br>4. Trippy effects<br><br>I hope  this clears things up.<br><br>Zach <br><br><br>
<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<div><div></div><div class="Wj3C7c"><br>
On Sat, Apr 5, 2008 at 2:10 PM, Mads Bondo Dydensborg<br>
<<a href="mailto:mads@dydensborg.dk">mads@dydensborg.dk</a>> wrote:<br>
> mandag 24 Marts 2008 skrev Dan Dennedy:<br>
><br>
> > On Sun, Mar 23, 2008 at 3:26 PM, Mads Bondo Dydensborg<br>
><br>
> > >  I have some footage taken with a helmet cam in 640x480 @30 fps (4/3),<br>
>  that I<br>
>  > >  would like to use in a PAL DV 16/9 project.<br>
>  > ><br>
>  > >  What is the best way to get the highest quality of the headcam footage in<br>
>  > >  kdenlive? Should I transcode it using some external program, or just add<br>
>  it<br>
>  > >  as a clip to kdenlive?<br>
>  ><br>
>  > The simplest is to just add it as a clip. MLT does framerate<br>
>  > decimation and image resampling automatically. However, to get more<br>
>  > quality, you need high quality temporal interpolation. Zachard Drew<br>
>  > wrote the motion estimation module[1] in MLT that can use in an inigo<br>
>  > job to transcode it prior to use in kdenlive. However, I do not have<br>
>  > any experience using motion estimation for this. After making sure to<br>
>  > build the module (it is opt-in), try this as a hint to get started:<br>
>  ><br>
>  > $ inigo -profile dv_pal_wide slowmotion:some-ntsc.avi speed=0.8342<br>
>  > -consumer avformat:my.dv ...<br>
><br>
>  Hi Dan<br>
><br>
>  I had quite some trouble getting this to work:<br>
><br>
>  $ /opt/bin/inigo -profile dv_pal_wide -producer slowmotion:avi_0019.avi<br>
>  speed=0.8342 -consumer avformat:0019.dv progress=1<br>
><br>
>  Turns out, the command line parsing in inigo can be tricked to loop (some more<br>
>  info below).<br>
><br>
>  This command works (I have still to experiment further):<br>
><br>
>  $ /opt/bin/inigo -profile dv_pal_wide -consumer avformat:0019.dv progress=1<br>
>  slowmotion:avi_0019.avi speed=0.8342<br>
><br>
>  The "-producer" is from me misreading the cli syntax of inigo. My bad. But<br>
>  still, I suspect there is a loop in inigo command line parsing. A quick look<br>
>  with gdb seems to indicate a never ending loop in scanning the command line<br>
>  arguments of the first try:<br>
><br>
>  Program received signal SIGINT, Interrupt.<br>
>  [Switching to Thread -1210513216 (LWP 31948)]<br>
>  0xb6d02b13 in producer_inigo_init (profile=0x8091608, type=producer_type,<br>
>  id=0x804b8c7 "inigo", argv=0xbf9ffef8)<br>
>     at producer_inigo.c:157<br>
>  157                     else if ( !strcmp( argv[ i ], "-attach" ) ||<br>
>  (gdb) bt<br>
>  #0  0xb6d02b13 in producer_inigo_init (profile=0x8091608, type=producer_type,<br>
>  id=0x804b8c7 "inigo",<br>
>     argv=0xbf9ffef8) at producer_inigo.c:157<br>
>  #1  0xb7f591c2 in mlt_repository_create (this=0x8050e28, profile=0x8091608,<br>
>  type=producer_type,<br>
>     service=0x804b8c7 "inigo", input=0xbf9ffef8) at mlt_repository.c:171<br>
>  #2  0xb7f5884c in mlt_factory_producer (profile=0x8091608,<br>
>  service=0x804b8c7 "inigo", input=0xbf9ffef8)<br>
>     at mlt_factory.c:179<br>
><br>
>  (gdb)<br>
>  145             for ( i = 0; argv[ i ] != NULL; i ++ )<br>
>  (gdb) p i<br>
>  $6 = 1<br>
>  (gdb) p argv[i]<br>
>  $7 = 0xbfa006a5 "dv_pal_wide"<br>
>  (gdb) n<br>
>  147                     if ( !strcmp( argv[ i ], "-group" ) )<br>
>  (gdb) p i<br>
>  $8 = 2<br>
>  (gdb) p argv[i]<br>
>  $9 = 0xbfa006b1 "-producer"<br>
>  (gdb) n<br>
>  157                     else if ( !strcmp( argv[ i ], "-attach" ) ||<br>
>  (gdb) n<br>
>  202                     else if ( !strcmp( argv[ i ], "-repeat" ) )<br>
><br>
>  This continues, and never matches anything. At some point it hits a i--; - and<br>
>  loops. For ever AFAICT :-/<br>
><br>
><br>
>  > It's just that 0.8342 is an approximation, and I do not know how good<br>
>  > the results will be.<br>
><br>
>  How did you get the 0.8342?<br>
><br>
>  25/30<br>
>  .83333333333333333333<br>
>  25000/29999<br>
>  .83336111203706790226<br>
><br>
><br>
><br>
>  > Sharing your experience would be valuable.<br>
><br>
>  My first experience is this: I loose the sound, right?<br>
><br>
><br>
>  > There<br>
>  > is a trick to get kdenlive to do this for you without transcoding. You<br>
>  > can convert the above into a westley-based "virtual" clip and load the<br>
>  > .westley into kdenlive:<br>
>  ><br>
>  > $ inigo -profile dv_pal_wide slowmotion:some-ntsc.avi speed=0.8342<br>
>  > -consumer westley:some-ntsc.westley<br>
><br>
>  Thanks - I have yet to test it out.<br>
><br>
>  Now, that it actually works for me, I will test with some more clips, and see<br>
>  if I can figure out anything about the quality of the result, and so on.<br>
><br>
>  Regards<br>
><br>
>  Mads<br>
><br>
>  --<br>
>  Mads Bondo Dydensborg   <a href="mailto:mads@dydensborg.dk">mads@dydensborg.dk</a>   <a href="http://www.madsdydensborg.dk/" target="_blank">http://www.madsdydensborg.dk/</a><br>
><br>
>  Today, the record companies are saying MP3s are the biggest evil. Tomorrow<br>
>  they're going to say they're the greatest thing when they figure<br>
>  them out.<br>
>                                - Gene Kan, Gnutella developer<br>
><br>
<br>
-------------------------------------------------------------------------<br>
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference<br>
Register now and save $200. Hurry, offer ends at 11:59 p.m.,<br>
Monday, April 7! Use priority code J8TLD2.<br>
<a href="http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone" target="_blank">http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone</a><br>
_______________________________________________<br>
Kdenlive-devel mailing list<br>
<a href="mailto:Kdenlive-devel@lists.sourceforge.net">Kdenlive-devel@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/kdenlive-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/kdenlive-devel</a><br>
</div></div></blockquote></div><br>