Re: [Mlt-devel] Avformat producer not cleaning up [PATCH]
Brought to you by:
ddennedy,
lilo_booter
From: Dan D. <da...@de...> - 2011-06-14 07:52:24
|
On Tue, Jun 14, 2011 at 12:32 AM, j-b-m <j-...@us...> wrote: > On Sunday 22 May 2011 18:39:08 j-b-m wrote: > >> Creating a video4linux producer like (simplified code): >> >> producer = new Mlt::Producer(*profile, "video4linux2:/dev/video0"); >> consumer->connect(*producer); >> consumer->start(); >> >> It works fine. But when I want to stop the capture, there is no way to stop >> the video4linux producer. Deleting the producer and the consumer still >> leaves the video4linux device open. >> >> After a few hours of struggling, I figured out that some stuff was kept in >> the cache. Adding : >> >> mlt_service_cache_purge( MLT_PRODUCER_SERVICE(parent) ); > > This issue came back in a different way since the refactoring of producer_open, > in this commit: > > http://mltframework.org/gitweb/mlt.git?p=mltframework.org/mlt.git;a=commit;h=a0c82f0eb433e5b756e8239ebb684abc81b796d9 > > When connecting the producer to an sdl_preview consumer, it works fine, > deleting the producer and consumer closes the video4linux device. > > However, when connecting the producer to an avformat consumer, deleting > producer and consumer leaves the device open, "producer_avformat_close" is > never called. Something must remain in cache or is not deleted. The only way > to close the video4linux device is to close MLT's factory. > > So Dan, if you have an idea about what happens here, I am listening because I > couldn't find the exact problem... Basically, all frames must be closed to release the reference. I will look for it soon. -- +-DRD-+ |