I have been using and experimenting with the DM8127 IPNC RDK for several months now. I am using the latest release GA Release 2.0. A number of times I have attempted simple modifications to one of the McFW Example Usecases (i.e. - Tri-Stream Full Featured, DSP, or Low Power). In almost every case the outcome is a "system crash". For instance, I often see this in the serial terminal after my modified McFW Usecase Examples / chains fail:
TimeOut occure in boot_proc.
Program exit.
TimeOut occure in boot_proc.
Program exit.
ApproDrvExit: 7
Error: WaitStreamReady Fail.
Error: SemWait: Invalid Semaphore handler
Sometimes they fail in other ways.
I have read the IPNC RDK Multi Channel FrameWork Software User Guide (Document Revision 1.04) many many times. I have grepped the McFW API and Usecase Example source code over and over and I think I've looked at almost every relevant file multiple times. The documentation for the McFW makes it sound like it's an easy process to connect links to form chains and then do some "high level configuration" to set the parameters and control it all. I'm finding it not easy at all. I'm a very experienced embedded C programmer (25 years) and I usually don't have nearly this much trouble when working with a new platform / framework API.
I feel like I must be "missing something". Is there other documentation for the McFW? Are there more fundamental and simple examples that I should be starting with? Should I even be trying to use the McFW at all? Is there an alternative framework I could / should be using? I feel like I might gain a better understanding of the platform if I worked directly with the Link APIs but I don't know of any simple tutorial examples to learn that either.
For the most part, I've been focusing my attention on modifying and understanding these files:
ti_mcfw_ipnc_main.c
multich_tristream_dsp.c
multich_tristream_fullFeature.c
Some of the things I'd like to be able to modify and understand are:
1. How to modify the resolution or framerate of one or more of the camera inputs and then have the modified resolution and framerate go correctly all the way through the chain and be available as an RTP/RTSP stream (i.e. - make the Camera(0) output 640x480 30fps and the Camera(1) output 1080P 30fps in the DSP Usecase Example and also make the chains work all the way to the RTP/RTSP streams).
2. How to insert a Scaler link somewhere in one of the chains (i.e. - between the DUP and IPC_FRAMES_OUT_VPSS links in the DSP Usecase Example).
3. How to turn off or delete one of the streams if I don't need all 3.
I've tried the obvious (to me) ways to do these things, but as mentioned previously, they never seem to work correctly and completely. It really doesn't seem to me that there is truly a single "high level configuration" for the McFW. It seems like several or many different things (some hidden in places I haven't found yet) may need to be configured to get a chain to work.
Can anyone provide me with modified usecase examples that accomplishes any of those goals?
Thanks for any help, advice, examples, tutorials or documentation you can give me!