Hi Dan, the last weeks I thought my job will kill me :-)). But now I had some time and here my new results:
1) There is one issue with seeking with mlt jack if the consumer (sdl_preview) is stopped or paused. The reason is the same as for our ugly noise. The function in filter_jackrack.c: static int jackrack_get_audio( mlt_frame frame, void **buffer, mlt_audio_format *format, int *frequency, int *channels, int *samples) { ... if ( pos == mlt_properties_get_position( filter_properties, "_jack_seek" ) ) { jack_client_t *jack_client = mlt_properties_get_data(filter_properties, "jack_client", NULL ); jack_position_t jack_pos; jack_transport_query( jack_client, &jack_pos ); double fps = mlt_profile_fps( mlt_service_profile(MLT_FILTER_SERVICE(filter) ) ); jack_nframes_t jack_frame = jack_pos.frame_rate * pos / fps; jack_transport_locate( jack_client, jack_frame ); mlt_properties_set_position( filter_properties, "_jack_seek", -1 ); } ... } is not called and the _jack_seek property is not evaluated. This means that seeking on paused consumers is not possible. I think this is the common use case - seeking is done on paused consumers. Another big issue is resulting from this: Seeking in Tracks without or muted audio is not possible at all. Very bad for the following use case: Video is edited in kdenlive and audio in ardour/tractor. In Kdenlive I don't have audio at all ==> jack seeking in kdenlive is not possible. In the function: static void on_jack_seek( mlt_properties owner, mlt_filter filter, mlt_position *position ) { mlt_properties properties = MLT_FILTER_PROPERTIES( filter ); mlt_log_verbose( MLT_FILTER_SERVICE(filter), "%s: %d\n", __FUNCTION__, *position ); mlt_properties_set_int( properties, "_sync_guard", 1 ); mlt_properties_set_position( properties, "_jack_seek", *position ); return; <--- why mlt_profile profile = mlt_service_profile( MLT_FILTER_SERVICE( filter ) ); jack_client_t *jack_client = mlt_properties_get_data( properties, "jack_client", NULL ); jack_nframes_t jack_frame = jack_get_sample_rate( jack_client ); jack_frame *= *position / mlt_profile_fps( profile ); jack_transport_locate( jack_client, jack_frame ); } you return after setting the property "_jack_seek" without calling the jack_transport_locate( jack_client, jack_frame ); . I don't understand that the sync is not done here. This is done later in the function "jackrack_get_audio". But this function is not called in cases mentioned above. In my private mlt branch I removed the return and the setting of the "_jack_seek" property it worked pretty good so far. Have you got an idea how to solve this issues??? 2) The crazy noise is now fixed. But on stopping/pausing jack transport it takes at least one second until sound stops to play. I tried this with shotcut with the same result. In ardour the sound stops immediately after pressing the stop key.Is there a way to optimize this behaviour? (of course low prio). 3) By the way. I played a little bit with shotcut. On my computer I have the same behaviour with opengl and jack (I reported this some time ago with kdenlive). If shotcut is connected to jack on exit it hangs forever. For this I want to try jack1 and perhaps another linux installation. PS: With the hack in mlt (removing return ...) and the jack enabled kdenlive I made a 15min film. The video was done in kdenlive and the audio in ardour. It worked for me so far. I think now I am a step closer to the end :-))) regards eddrog ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Kdenlive-devel mailing list Kdenlive-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kdenlive-devel