On Sunday 13 April 2014 12.23:31 Dan Dennedy wrote:
> On Sun, Apr 13, 2014 at 2:19 AM, jbm <[email protected]> wrote:
> > Hi Dan and everyone.
> >
> > I have been silent for almost a year due to some health issue, but I am
> > fine now and slowly starting to work again on Kdenlive.
> >
> > A recent Movit related commit creates a huge memory leak when seeking in
>
> > Kdenlive. The responsible commit is this one:
> Do you have more information about what conditions are needed to
> reproduce this? Do I have to disable opengl? Do I have to apply
> cropping? I am not seeing the problem while scrubbing over a video
> clip for quite a while within Shotcut. I tested both with opengl
> module in use and not and with both cropping and not. Is it only when
> using a color or image producer?
Ok, I did some more testing.
The problem happens with mpegts interlaced clips that were taken from a sony
camcorder (the same happens with HDV interlaced clips captured with dvgrab),
using the xgl consumer.
Using MLT from current git with these mpegts interlaced clips, I get the
following results:
melt myclip.MTS
= works fine
melt myclip.MTS -consumer xgl
= crashes (backtrace at the end of the mail)
melt -profile atsc_1080p_50 myclip.MTS -consumer xgl
= plays but huge memleak (2 GB of memory used after 20 seconds)
Reverting the recent change in filter_movit_crop.cpp by re-adding at line 56:
*format = mlt_image_none;
Fixes the crash and memleak in xgl consumer (and Kdenlive).
I am using movit from today's git if it is relevant...
I can mail you a sample clip if you need it.
regards
jb
- - - - FFMpeg info about the clip - - - - - -
Input #0, mpegts, from '00023.MTS':
Duration: 00:00:14.02, start: 1.040000, bitrate: 10268 kb/s
Program 1
Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p,
1440x1080 [SAR 4:3 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo,
fltp, 256 kb/s
Stream #0:2[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] /
0x0090), 1920x1080
- - - -xgl crash backtrace - - - - -
Thread 13 (Thread 0x7fffdbc08700 (LWP 25416)):
#0 __GI___pthread_mutex_lock (mutex=0x0) at ../nptl/pthread_mutex_lock.c:66
#1 0x00007ffff7bbc4e5 in mlt_properties_lock (self=self@entry=0x7fffc4406520)
at
mlt_properties.c:2061
---Type <return> to continue, or q <return> to quit---
#2 0x00007ffff7bbcb6e in mlt_properties_find (name=<optimized out>,
self=0x7fffc4406520) at mlt_properties.c:506
#3 mlt_properties_get (self=0x7fffc4406520, name=0x7fffe88bddd1 "_unique_id")
at mlt_properties.c:782
#4 0x00007fffe88b5fda in GlslManager::get_frame_specific_data
(service=service@entry=0x7fffc4406520, frame=frame@entry=0x7fffc42bad90,
key=key@entry=0x7fffe88bddef "_movit effect", length=length@entry=0x0) at
filter_glsl_manager.cpp:280
#5 0x00007fffe88b613e in GlslManager::get_effect
(service=service@entry=0x7fffc4406520, frame=frame@entry=0x7fffc42bad90)
at filter_glsl_manager.cpp:306
#6 0x00007fffe88b74b6 in build_fingerprint (service=0x7fffc4406520,
frame=frame@entry=0x7fffc42bad90,
fingerprint=fingerprint@entry=0x7fffdbc07c90) at
filter_movit_convert.cpp:118
#7 0x00007fffe88b7522 in build_fingerprint (service=0x7b6300,
frame=frame@entry=0x7fffc42bad90, fingerprint=fingerprint@entry=0x7fffdbc07c90)
at filter_movit_convert.cpp:122
#8 0x00007fffe88b7522 in build_fingerprint (service=0x7d0e40,
frame=frame@entry=0x7fffc42bad90, fingerprint=fingerprint@entry=0x7fffdbc07c90)
at filter_movit_convert.cpp:122
#9 0x00007fffe88b7522 in build_fingerprint (service=service@entry=0x7e6140,
frame=frame@entry=0x7fffc42bad90,
fingerprint=fingerprint@entry=0x7fffdbc07c90) at
filter_movit_convert.cpp:122
#10 0x00007fffe88b8a33 in finalize_movit_chain (frame=0x7fffc42bad90,
leaf_service=0x7e6140) at filter_movit_convert.cpp:227
#11 convert_image (frame=0x7fffc42bad90, image=0x7fffdbc07ec8, format=0x83038c,
output_format=mlt_image_glsl_texture)
at filter_movit_convert.cpp:481
#12 0x00007ffff7bb640f in mlt_frame_get_image (self=self@entry=0x7fffc42bad90,
buffer=buffer@entry=0x7fffdbc07ec8,
format=format@entry=0x83038c, width=width@entry=0x7fffdbc07ea8,
height=height@entry=0x7fffdbc07eac, writable=writable@entry=0)
at mlt_frame.c:586
#13 0x00007ffff7bcb8bd in producer_get_image (self=self@entry=0x7fffc42bc770,
buffer=buffer@entry=0x7fffdbc07ec8,
format=format@entry=0x83038c, width=width@entry=0x7fffdbc07ea8,
height=height@entry=0x7fffdbc07eac, writable=writable@entry=0)
at mlt_tractor.c:273
#14 0x00007ffff7bb62e7 in mlt_frame_get_image (self=self@entry=0x7fffc42bc770,
buffer=buffer@entry=0x7fffdbc07ec8,
format=format@entry=0x83038c, width=width@entry=0x7fffdbc07ea8,
height=height@entry=0x7fffdbc07eac, writable=writable@entry=0)
at mlt_frame.c:580
#15 0x00007ffff7bc912d in consumer_read_ahead_thread (arg=0x9c3fc0) at
mlt_consumer.c:782
>
> > https://github.com/mltframework/mlt/commit/3f84fe14c06956b5092c257fd27da49
> > 0565566e5
> >
> > Removing:
> >
> > *format = mlt_image_none;
> >
> > in filter_movit_crop.cpp seems to have some bad side effects. I was able
> > to fix the leak by changing mlt_frame.c and adding some checks for
> > mlt_image_glsl like:
> >
> > (...)
> >
> > - if ( self->convert_image && requested_format !=
> > mlt_image_none ) + if ( self->convert_image &&
> > requested_format != mlt_image_none && requested_format != mlt_image_glsl
> > ) {
> >
> > self->convert_image( self, buffer, format,
> > requested_format );
> >
> > (...)
> >
> > The full patch is attached.
>
> This change looks incompatible with filter movit.convert, which does
> need to be called when requested_format == glsl.
>
> > I also have a patch ready for the slowmotion producer
> > (producer_framebuffer.c) that makes it handle formats mlt_image_none and
> > mlt_image_glsl so that when it is asked for these formats, it queries the
> > original avformat producer for its format to set it. I will submit a pull
> > request for it.
> >
> > Comments welcome,
> >
> > regards
> > jb
------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
Mlt-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mlt-devel