View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001397KdenliveUser Interfacepublic2010-01-24 02:242014-02-03 13:15
Assigned Toeddrog 
Platform64 bitOSKubuntu LinuxOS Version9.10
Product VersionRecent git 
Target VersionFixed in Version 
Summary0001397: Jack Transport support
DescriptionKdenlive should support (sync with) Jack Transport.
I'm not talking about audio output, but Transport as timeline frames synced to Jack frames.

This should be an option, but not be enabled by default (I can guess most of the users will not use this).

When enabled, kdenlive timeline will be synced to Jack, which means:
- kdenlive will report the current timeline frame and sync Jack to that,
- once the timeline play/pauses/stops, same will happen in Jack Transport
- kdenlive should receive and sync Jack frames to the timeline

I believe that the best way to get this done is:

1 - add a new option to kdenlive settings:
--> "Enable Jack Transport" (with subsettings:)
--- --> "[x] kdenlive controls time" (a checkbox)
--- --> "[ ] Jack controls time"

2 - Implement basic code (testing), which makes kdenlive controlling Jack Transport.

3 - Implement Jack controlling kdenlive

4 - Bugfix and merge code

Please tell me what you think
TagsNo tags attached.
Build/Install MethodNot Applicable
Attached Filesgz file icon gui.tar.gz [^] (5,254 bytes) 2010-01-25 15:38
gz file icon jackit-cmd.tar.gz [^] (2,948 bytes) 2010-02-04 13:40
gz file icon jacktrans_rcs.diff.tar.gz [^] (1,782 bytes) 2010-02-06 20:19
gz file icon kdenlive_jacktransport_v02.patch.gz [^] (2,848 bytes) 2010-08-30 17:40

- Relationships
has duplicate 0001355assignededdrog Add JACK support 

-  Notes
falkTX (reporter)
2010-01-26 10:45
edited on: 2010-01-26 10:46

Please note that, in the "gui.tar.gz", the actuall GUI will not work right (the lineedits and state buttons).
I'm mostly a python dev, I'm not used to convert QString->char->int, etc (it's much easier in python...)

However, the code shows how to do implement basic Jack Transport.
The file "shared.h" are global variables;
we first do 'jack_client_open' to get access Jack, then there are some actions: play/pause/locate.
The refresh function will get the current Transport frame and time 'k_frame' and 'k_time'. (Those values are not properly set in the lineedits, please fix it if you know how)

falkTX (reporter)
2010-01-26 10:51

Also, we should discuss whatever the implementation will be done in Kdenlive or MLT.

I don't know how deeply kdenlive depends on MLT. Does MLT "controls" the timeline?
falkTX (reporter)
2010-02-04 13:44

Just added new code "jackit-cmd".

This one is a very basic CLI app.
It can do:
- start jack transport
- stop (pause)
- go to a specific jack frame
- go to a specific time (miliseconds)
- get current jack frame
- get current jack time

I put a lot of comments in the code so it's easy to understand.

To compile, type "make" (you just need the basic Qt libs and jack)
ddennedy (developer)
2010-02-04 19:21

Hi. I know jbm said that he believes this might be more proper in MLT. As the primary MLT dev, I am not quite in agreement yet. Currently, services (e.g. filters) are not supposed to affect seeking - they are like slaves. You will see some things like the framebuffer producer that encapsulate another producer and makes it seek , but this is still a slave to the application. I will keep thinking about this.

Thanks for the code and the effort. I might have a play around with integrating it into melt. While I am quite interested in this, I am also extremely busy over the next couple of months with a commercial (i.e. commitment) MLT project.
falkTX (reporter)
2010-02-04 19:26

In my opinion, Jack Transport should be implemented in Kdenlive rather then in MLT.
It's about controlling the timeline, which I guess Kdenlive does, while using MLT for processing (like mlt is the slave).
falkTX (reporter)
2010-02-05 10:17

Good news!

I've successfully coded some of the stuff to get this done (kdenlive syncing timeline to Jack time)

I'll work on this on the weekend and then I'll make a patch.
falkTX (reporter)
2010-02-06 20:21

Just uploaded the patch (diff) to make this baby work.

Kdenlive gets sync from Jack using a QTimer (each 200ms).
Kdenlive also sends Jack transport back when needed.

You'll need to add "-ljack" to the build process to make it compile, or just edit "build/src/cmake_bindir/CMakeFiles/kdenlive.dir/link.txt" and add it to the end of the file.

Please test!
ttill (developer)
2010-08-13 23:53

Are you still willing to help to get this done? At that time all of us developers were really busy (and are still ;)), I hope you are not to frustrated.
If you still want to continue I will try to assist (although I'm not known to jack (yet)). Will setup jack then on my machine and test your code.
falkTX (reporter)
2010-08-16 10:45

Of course I am!

I now know a lot more about C++ and Jack,
so I should be able to get this done shortly.

I'll let you know how it goes
ttill (developer)
2010-08-29 10:27

We plan to release Kdenlive 0.7.8 on 13th September with string freeze on 1st September. So jack support won't make it into this release.

Could you please give me a short update about the current status?
falkTX (reporter)
2010-08-30 17:42

Just uploaded a new patch of my current work.

as you will see, it kinda sucks...

it still need lots of work to get this done
ddennedy (developer)
2011-03-18 19:57

I started working on this with MLT in a private branch. It already works quite well. With this approach, MLT outputs directly to Jack without needing an ALSA or PulseAudio shim. The way it works with the UI/frontend is that the MLT jackrack filter exposes MLT events. The frontend listens to events like jack-stopped and jack-synced and tells MLT to pause and play/seek. Also, the frontend, upon user input, fires events such as jack-start, jack-stop, and jack-seek to which the filter listens and relays as jack_transport functions. I have integrated it with melt, and already it works very well. However, I need to do additional work to tighten the time synchronization between MLT and Jack. Then, the MLT events will need to be integrated into Kdenlive (looking for volunteer).
falkTX (reporter)
2011-03-20 03:54

hey ddennedy,
that is great news!

but... do this apply to audio too?
(using jack as audio driver)
falkTX (reporter)
2011-03-20 03:58

a little off-topic, but I'm working on a small multi-plugin host (LADSPA and DSSI are working fine) [^]

Part of my jack related tools, maybe useful in some way...
gnaag (reporter)
2011-09-03 23:25

Can I ask what is the support of jack now? Is it available in kdenlive 0.8?
ddennedy (developer)
2011-09-03 23:38

not in 0.8 and necessary kdenlive changes not even started AFAIK
eddrog (developer)
2012-06-05 13:44

For some month I'm working on the jack (mlt jackrack filter) integration in kdenlive. The basic work is done but there are some issues yet that has to be fixed in mlt before I can contribute the code to kdenlive.
Probably this feature will be available first in the refactored kdenlive. If the issues can be fixed quick perhaps we can add it in the 0.9 tree but I think this can be discussed later.

can you assign to me this issue?
rugubara (reporter)
2014-02-03 13:15

Can I add my 2 cents?
Would be very good if kdenlive, when connected to JACK, could get audio tracks from JACK - i.e. the audio track in kdenlive would have a JACK input, that I could patch from another application.
I do a lot of music videos. I do sound post-prod in ardour. Avoiding multiple exports/imports of sound is my paradise lost...

- Issue History
Date Modified Username Field Change
2010-01-24 02:24 falkTX New Issue
2010-01-25 15:38 j-b-m File Added: gui.tar.gz
2010-01-26 10:45 falkTX Note Added: 0004583
2010-01-26 10:46 falkTX Note Edited: 0004583 View Revisions
2010-01-26 10:51 falkTX Note Added: 0004584
2010-02-04 13:40 falkTX File Added: jackit-cmd.tar.gz
2010-02-04 13:44 falkTX Note Added: 0004635
2010-02-04 19:21 ddennedy Note Added: 0004637
2010-02-04 19:26 falkTX Note Added: 0004638
2010-02-05 10:17 falkTX Note Added: 0004647
2010-02-06 20:19 falkTX File Added: jacktrans_rcs.diff.tar.gz
2010-02-06 20:21 falkTX Note Added: 0004663
2010-08-13 23:53 ttill Note Added: 0005623
2010-08-13 23:54 ttill Status new => feedback
2010-08-16 10:45 falkTX Note Added: 0005634
2010-08-16 10:45 falkTX Status feedback => new
2010-08-29 10:27 ttill Note Added: 0005700
2010-08-29 10:27 ttill Status new => feedback
2010-08-29 10:27 ttill Target Version => future version
2010-08-30 17:40 falkTX File Added: kdenlive_jacktransport_v02.patch.gz
2010-08-30 17:42 falkTX Note Added: 0005705
2010-08-30 17:42 falkTX Status feedback => new
2010-09-06 22:05 ttill Status new => acknowledged
2011-03-18 19:57 ddennedy Note Added: 0006598
2011-03-20 03:54 falkTX Note Added: 0006612
2011-03-20 03:58 falkTX Note Added: 0006613
2011-09-03 23:25 gnaag Note Added: 0007266
2011-09-03 23:38 ddennedy Note Added: 0007267
2012-06-05 13:44 eddrog Note Added: 0008114
2012-06-05 18:25 j-b-m Assigned To => eddrog
2012-06-05 18:25 j-b-m Status acknowledged => assigned
2012-09-10 15:48 eddrog Status assigned => acknowledged
2012-09-10 16:46 j-b-m Status acknowledged => assigned
2012-09-19 09:58 eddrog Relationship added has duplicate 0001355
2014-02-03 13:15 rugubara Note Added: 0009680

Copyright © 2000 - 2016 MantisBT Team
Powered by Mantis Bugtracker