Rob's right, the Link details are intentionally hidden under Codec Engine.  But 
it's often useful to know what's going on underneath.

There are more details about CE and DSP Link interaction during DSP start/stop 
in section 2's "Opening an Engine" and "Closing an Engine" here:
http://tiexpressdsp.com/index.php/Codec_Engine_Application_Developers_Guide

-------------------------

I couldn't find an article that describes the internal MSGQ usage under the 
VISA APIs, but you can get a good feel for what's going on under by studying 
the trace output when setting CE_DEBUG=3 
(http://tiexpressdsp.com/index.php/CE_DEBUG).

Here's a [very trimmed] excerpt of trace from a single VIDENC_process() call 
with CE_DEBUG=3 set.  The ARM-side is in red, the DSP side is in green, and 
I've underlined the lines where Codec Engine internally calls 
MSGQ_alloc()/put()/get()/free() on the ARM side, as well as MSGQ_get()/put() on 
the DSP side:

@1,454,227us: [+0 T:0x4001f000 S:0x03874944] ti.sdo.ce.video.VIDENC - 
VIDENC_process> Enter (handle=0x44c90, inBufs=0x3874a74, outBufs=0x3874a68, 
inArgs=0x443c8, outArgs=0x443e0)
@1,454,428us: [+5 T:0x4001f000 S:0x038748dc] CV - VISA_allocMsg> Allocating 
message for messageId=0x00026700
@1,458,639us: [+0 T:0x4001f000 S:0x038748e4] CV - VISA_call(visa=0x44c90, 
msg=0x41169c80): messageId=0x00026700, command=0x0
@1,458,807us: [+0 T:0x4001f000 S:0x038748ac] OC - Comm_put> Enter(queue=0x2, 
msg=0x41169c80)
@1,459,039us: [+0 T:0x4001f000 S:0x038748ac] OC - Comm_put> return (0)
@1,459,221us: [+0 T:0x4001f000 S:0x038748a4] OC - Comm_get> 
Enter(queue=0x10001, msg=0x387495c, timeout=-1)
@1,507,703us: [+0 T:0x4001f000 S:0x038748a4] OC - Comm_get> MSGQ_get() 
status=0x8000, return (0)
[DSP] @0,511,501tk: [+5 T:0x8b9fb21c S:0x8b9fd1e4] CN - NODE> 
0x8fa82398(xavsc_ateme#0) call(algHandle=0x8fa82450, msg=0x8fe06c80); 
messageId=0x00026700
[DSP] @0,512,933tk: [+0 T:0x8b9fb21c S:0x8b9fd14c] ti.sdo.ce.video.VIDENC - 
VIDENC_process> Enter (handle=0x8fa82450, inBufs=0x8b9fd1ec, 
outBufs=0x8b9fd1f8, inArgs=0x8fe06db8, outArgs=0x8fe06dc8)
[DSP] @0,513,035tk: [+5 T:0x8b9fb21c S:0x8b9fd12c] CV - 
VISA_enter(visa=0x8fa82450): algHandle = 0x8fa82480
[DSP] @0,513,095tk: [+0 T:0x8b9fb21c S:0x8b9fd10c] ti.sdo.ce.alg.Algorithm - 
Algorithm_activate> Enter(alg=0x8fa82480)
[DSP] @0,513,157tk: [+0 T:0x8b9fb21c S:0x8b9fd10c] ti.sdo.ce.alg.Algorithm - 
Algorithm_activate> Exit
[DSP] @0,622,199tk: [+5 T:0x8b9fb21c S:0x8b9fd12c] CV - 
VISA_exit(visa=0x8fa82450): algHandle = 0x8fa82480
[DSP] @0,622,282tk: [+0 T:0x8b9fb21c S:0x8b9fd10c] ti.sdo.ce.alg.Algorithm - 
Algorithm_deactivate> Enter(alg=0x8fa82480)
[DSP] @0,622,371tk: [+0 T:0x8b9fb21c S:0x8b9fd10c] ti.sdo.ce.alg.Algorithm - 
Algorithm_deactivate> Exit
[DSP] @0,622,424tk: [+0 T:0x8b9fb21c S:0x8b9fd14c] ti.sdo.ce.video.VIDENC - 
VIDENC_process> Exit (handle=0x8fa82450, retVal=0x0)
[DSP] @0,623,888tk: [+5 T:0x8b9fb21c S:0x8b9fd1e4] CN - NODE> returned from 
call(algHandle=0x8fa82450, msg=0x8fe06c80); messageId=0x00026700
@1,518,966us: [+0 T:0x4001f000 S:0x038748e4] CV - VISA_call Completed: 
messageId=0x00026700, command=0x0, return(status=0)
@1,522,687us: [+5 T:0x4001f000 S:0x038748bc] CV - VISA_freeMsg(0x44c90, 
0x41169c80): Freeing message with messageId=0x00026700
@1,522,855us: [+0 T:0x4001f000 S:0x03874944] ti.sdo.ce.video.VIDENC - 
VIDENC_process> Exit (handle=0x44c90, retVal=0x0)

Chris

________________________________
From: davinci-linux-open-source-boun...@linux.davincidsp.com 
[mailto:davinci-linux-open-source-boun...@linux.davincidsp.com] On Behalf Of 
Tivy, Robert
Sent: Wednesday, April 07, 2010 10:39 AM
To: liuyue18301; davinci-linux-open-source@linux.davincidsp.com
Subject: RE: how Codec_engine call the dsplink



________________________________
From: davinci-linux-open-source-boun...@linux.davincidsp.com 
[mailto:davinci-linux-open-source-boun...@linux.davincidsp.com] On Behalf Of 
liuyue18301
Sent: Tuesday, April 06, 2010 6:56 PM
To: davinci-linux-open-source@linux.davincidsp.com
Subject: how Codec_engine call the dsplink

hello everybody:
      well in the video_copy demos of the codec_engine i think i call the api 
of dsplink to implement the communication between arm and dsp. but i can't find 
out that in the code
      who can help me it confused me so long time. what is the relationship 
codec_engine and dsplink and the relationship of calling
      thank you very much.




DSPLink is used internally by Codec Engine.  You do not call any DSPLink APIs, 
which is the whole point of Codec Engine, to insulate the user from the details 
of the implementation.  You just call Codec Engine APIs, as the video_copy demo 
does, or any of the Codec Engine example apps.

DSPLink is used by Codec Engine when there is a remote server configured into 
the system, so you need to configure a remote server but you don't need to 
configure the use of DSPLink, since Codec Engine does that for you.  If you're 
just doing a "local" codec then you won't specify a server and DSPLink is not 
needed in this case.

- Rob
_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to