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...

regards
jb


------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
_______________________________________________
Mlt-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mlt-devel

Reply via email to