Re: [Mlt-devel] slow playback and producer_slowmotion
Brought to you by:
ddennedy,
lilo_booter
From: Dan D. <da...@de...> - 2013-05-13 18:21:30
|
On Mon, May 13, 2013 at 9:58 AM, Maksym Veremeyenko <ve...@m1...> wrote: > Hi, > > could anybody give me advice on how to play with speed 0.1 ... 0.9 or > another non-integer speed value. > > mlt_types.h has very interesting lines code: > [...] > /* I don't want to break anyone's applications without warning. -Zach */ > #undef DOUBLE_MLT_POSITION > #ifdef DOUBLE_MLT_POSITION > typedef double mlt_position; > #else > typedef int32_t mlt_position; > #endif > [...] > > that define to use integer type for position, so any float speed values > would be truncated to int value: > > void mlt_producer_prepare_next( mlt_producer self ) > { > if ( mlt_producer_get_speed( self ) != 0 ) > mlt_producer_seek( self, mlt_producer_position( self ) + > mlt_producer_get_speed( self ) ); > } > > so first possible approach would be define DOUBLE_MLT_POSITION, but > could it break MLT? Yes, it is an interesting unused code that I should probably remove. It quite likely will break all sorts of things; it is certainly not as simple a switch as it appears. :-) You are completely on your own should you choose to use it as I know nothing about it. Of course, you can go all in and get something working here and feel free to share your fork for review and merge. > i found producer_slowmotion that sounds like proper solution but i have > no glue how to use it. Could anybody give me a code sample that show how > to use playlist and slowmotion producer? > And that producer is basically useless as well because the resulting image quality is so poor. It attempted to use macroblock motion estimation to do fast frame interpolation. If you just want to repeat or drop frames, then take a look at the framebuffer producer (as used by kdenlive's speed effect). Please be aware that this does not convey the encapsulated producer's audio. framebuffer:some.mp4?0.5 speed < 0 : reverse 0 < abs(speed) < 1.0 : slow 1.0 < abs(speed) : fast -- +-DRD-+ |