Alex Newman
unread,Dec 3, 2012, 5:24:34 PM12/3/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to openr...@googlegroups.com
(I'm not a professional coder, most of my experience is in scripting and the like.)
I
think my best play here is to boil down the current code to its basics. I don't need DSK capability, input selectors nor the video output to
be on the GUI. Cue/playback on the BlackMagic output, if no clip is loaded, mirror the input.
So, getting to the code... I'm a little confused on how the buffers work.
in decklink_ingest.cpp:
16 MmapBuffer *buffer;
...
57 buffer->put(frm, sizeof(struct mjpeg_frame) + frm->flsize);
I believe this is what declares the record buffer and writes the individual frame to it.
and then in playoutd.cpp, line 29:
MmapBuffer *buffers[MAX_CHANNELS];
So, as far as I can tell, these are separate buffers. playoutd.cpp never invokes the buffer->get method.
My basic idea is this, basing it off the code found in the event listener of playoutd.cpp line 461...
case EVT_OUTPUT_NEED_FRAME:
(get the current frame being sent to the input...
until an event comes through to pause, rewind, load clip)
So I think this could be the key here. Getting the record buffer to be accessed by playout.d. would it be OK to combine the mainloops of decklink_ingest.cpp and playoutd.cpp into one master record/playback daemon? then I could access the record buffer directly, correct?
The idea with my GUI spin is to use XML to create "shows," which will track different clips. when an in-out-clip sequence is done, it'll access the main record buffer for playback. after the show's over, it can melt all the clips into separate movie files and dispose of the record buffer, making the clips available for the next show. Once it's stable it'll get its own runlevel and the entire Fedora desktop will be invisible.