Hi again!
I bet you're all getting sick of me so I appologise for bothering you all
again. I am trying to convert my project from a single thread into multiple
threads using the encode demo as a guide. My stucture is almost the same except
I have no writer thread and my video thread captures JPEGs instead of encoding
video (I'll deal with changing the name of the thread later!). I succesfully
modified the video thread removing anything related to encoding video or
interacting with the writer thread, so essentially all it does for now is get
buffers from the capture thread and send them back. This runs fine and simply
displays the video from the camera on screen with a slightly modified OSD. The
porblem is now when I try and insert the code responsible for capturing JPEGs
into the video thread. During the initialisation I get the error "can't set dyn
params 0x0" which comes from the function in bold below:
/* Reset, load, and start DSP Engine */
CE = Engine_open(engineName, NULL, NULL);
if (CE == NULL) {
ERR("Failed to open codec engine %s\n", engineName);
cleanup(THREAD_FAILURE);
}
DBG("Codec Engine opened in video thread\n");
// allocate and initialize image encoder on the engine
enc = IMGENC_create( CE, encoderName, &imgParams );
if ( enc == NULL ) {
ERR("error: can't open codec %s\n", encoderName);
cleanup(THREAD_FAILURE);
}
jstatus = IMGENC_control( enc, XDM_SETPARAMS,
(IMGENC_DynamicParams*)(&dynParams),
(IMGENC_Status*)(&imgStatus) );
if ( jstatus == IALG_EFAIL ) {
ERR("error: can't set dyn params 0x%x\n", (int)(imgStatus.extendedError) );
cleanup(THREAD_FAILURE);
}
This is part of the output I get when running the code:
@0x000b15aa:[T:0x4265fb60] ti.sdo.ce.image.IMGENC - IMGENC_create> return
(0x2c398)
@0x000b1643:[T:0x4265fb60] ti.sdo.ce.image.IMGENC - IMGENC_control> Enter
(handle=0x2c398, id=1, params=0x29358, status=0x299f4
@0x000b1702:[T:0x4265fb60] ti.sdo.ce.image.IMGENC - IMGENC_control> return (-1)
-- FAILED
Video Chain Debug: Checking video standard
Video Chain Error: error: can't set dyn params 0x0
This is the same part the output from my project running as a single thread:
@0x000e07c7:[T:0x402c8568] ti.sdo.ce.image.IMGENC - IMGENC_create> return
(0x282f0)
@0x000e085f:[T:0x402c8568] ti.sdo.ce.image.IMGENC - IMGENC_control> Enter
(handle=0x282f0, id=1, params=0x25338, status=0x259d0
In both programs the params are set up as below (above the value shown for
params is different in each case, is this the value or the address where the
params are stored?)
// image dynamic parameters
IMGENC_DynamicParams dynParams = {
sizeof(IIMGENC_DynamicParams), // size
0, // numAU
XDM_YUV_422ILE, // inputChromaFormat
480, // inputHeight
720, // inputWidth
0, // captureWidth
XDM_ENCODE_AU, // generateHeader
73 // qValue
};
Below is the full output when running my app. Can anyone think why the function
might fail like that? There are no errors or warning when I compile.
Thanks again,
Euan
Video Chain Debug: NTSC selected
Video Chain started.
Video Chain Debug: Codec Engine initialized
Video Chain Debug: Logging not initialized
@0x000c91d3:[T:0x40ac9b60] OP - daemon> thread created.
Video Chain Debug: Pause object opened
Video Chain Debug: Init rendezvous opened for 1 threads
Video Chain Debug: Cleanup rendezvous opened for 1 threads
Video Chain Debug: Priming rendezvous opened for 2 threads
@0x000cba72:[T:0x412c9b60] OM - Memory_getPhysicalAddress>
Enter(virtAddr=0x412ca000)
@0x000cbb6f:[T:0x412c9b60] OM - Memory__getPhysicalAddress>
Enter(virtAddr=0x412ca000, size=1)
@0x000cbc1a:[T:0x412c9b60] OM - Memory__getPhysicalAddress> returning
physAddr=0x0
@0x000cbcbd:[T:0x412c9b60] OM - Memory_getPhysicalAddress> return (0x86800000)
Video Chain Debug: Display buffer 0 mapped to 0x412ca000 has physical address
0x86800000
@0x000cdb56:[T:0x412c9b60] OM - Memory_getPhysicalAddress>
Enter(virtAddr=0x413c9000)
@0x000cdc14:[T:0x412c9b60] OM - Memory__getPhysicalAddress>
Enter(virtAddr=0x413c9000, size=1)
@0x000cdcb9:[T:0x412c9b60] OM - Memory__getPhysicalAddress> returning
physAddr=0x0
@0x000cdd54:[T:0x412c9b60] OM - Memory_getPhysicalAddress> return (0x868ff000)
Video Chain Debug: Display buffer 1 mapped to 0x413c9000 has physical address
0x868ff000
@0x000cfbd1:[T:0x412c9b60] OM - Memory_getPhysicalAddress>
Enter(virtAddr=0x414c8000)
@0x000cfc95:[T:0x412c9b60] OM - Memory__getPhysicalAddress>
Enter(virtAddr=0x414c8000, size=1)
@0x000cfd35:[T:0x412c9b60] OM - Memory__getPhysicalAddress> returning
physAddr=0x0
@0x000cfdcf:[T:0x412c9b60] OM - Memory_getPhysicalAddress> return (0x869fe000)
Video Chain Debug: Display buffer 2 mapped to 0x414c8000 has physical address
0x869fe000
Video Chain Debug: Video display device initialized.
Video Chain Debug: Display thread created
Video Chain Debug: captureWidth = 720, captureHeight = 480
Video Chain Debug: Capture thread created
@0x000d0708:[T:0x4265fb60] CE - Engine_open('jpegencdec', 0x0, 0x4265f554)
@0x000d0819:[T:0x4265fb60] CE - rserverOpen('./jpegencdecCombo.x64P'), count = 0
@0x000d08d3:[T:0x4265fb60] OP - Process_create>
Enter(imageName='./jpegencdecCombo.x64P', attrs=0x4265f558)
Video Chain Debug: Set the capture input to id 0
Video Chain Debug: Control thread created
Video Chain Debug: OSD successfully initialized
Video Chain Debug: OSD transparency initialized
@0x000d2897:[T:0x402c8568] CE - Engine_open('jpegencdec', 0x0, 0xbefff754)
@0x000d29a9:[T:0x40ac9b60] OP - Process_create_d> Enter(proc=0x2c2d0)
@0x000d2a57:[T:0x40ac9b60] OP - Process_create_d> Initializing DSP PROC...
@0x000d32f4:[T:0x40ac9b60] OP - Process_create_d> Attaching to DSP PROC...
@0x000d39cb:[T:0x40ac9b60] OP - Process_create_d> Opening MSGQ pool...
@0x000d3caf:[T:0x40ac9b60] OP - Process_create_d> Loading
./jpegencdecCombo.x64P on DSP (1 args)...
Video Chain Debug: Entering display main loop.
@0x000de2a5:[T:0x40ac9b60] OP - Process_create_d> Starting DSP PROC...
@0x000df040:[T:0x40ac9b60] OP - Process_create_d> Opening remote transport...
@0x000df2cb:[T:0x40ac9b60] OP - Process_create_d> return (1)
@0x000df43d:[T:0x4265fb60] OP - Process_create> return (0x2c2d0)
@0x000df4f5:[T:0x4265fb60] CE - rserverOpen('./jpegencdecCombo.x64P'): 0x2966c
done.
@0x000df5d9:[T:0x4265fb60] OC - Comm_create> Enter(queueName='jpegencdec',
queue=0x2c2b0, attrs=0x0)
@0x000df84d:[T:0x4265fb60] OC - Comm_create> return (0x2c338)
@0x000df91b:[T:0x4265fb60] OC - Comm_alloc> Enter(poolId=0x0, msg=0x2c2bc,
size=576)
@0x000dfa13:[T:0x4265fb60] OC - Comm_alloc> msg=0x427f6900, returning (0)
@0x000dfab9:[T:0x4265fb60] OC - Comm_locate> Enter(queueName='rmsq',
queue=0x2c2ac)
@0x000e1a0f:[T:0x4265fb60] OC - Comm_locate> return (0)
@0x000e1ad7:[T:0x4265fb60] CE - checkServer(0x2c2a0)
@0x000e1ba9:[T:0x4265fb60] OC - Comm_put> Enter(queue=0x0, msg=0x427f6900)
@0x000e1c7e:[T:0x4265fb60] OC - Comm_put> return (0)
@0x000e1d5b:[T:0x4265fb60] OC - Comm_get> Enter(queue=0x10000, msg=0x4265f550,
timeout=-1)
@0x000e1e22:[T:0x4265fb60] OC - Comm_get> return (0)
Video Chain Debug: Codec Engine opened in video thread
@0x000e1f15:[T:0x4265fb60] ti.sdo.ce.image.IMGENC - IMGENC_create> Enter
(server=0x2c2a0, name='jpegenc', params=0x29378)
@0x000e1ff2:[T:0x4265fb60] CV - VISA_create(0x2c2a0, 'jpegenc', 0x29378, 0x828,
'ti.sdo.ce.image.IIMGENC')
@0x000e20e2:[T:0x4265fb60] CE - Engine_createNode(0x2c2a0, 'jpegenc', 828,
0x29378)
@0x000e2191:[T:0x4265fb60] OC - Comm_create> Enter(queueName='gppfromnode',
queue=0x2c3c0, attrs=0x0)
@0x000e23f6:[T:0x4265fb60] OC - Comm_create> return (0x2c3e0)
@0x000e250b:[T:0x4265fb60] OC - Comm_put> Enter(queue=0x0, msg=0x427f6900)
@0x000e25f1:[T:0x4265fb60] OC - Comm_put> return (0)
@0x000e26b2:[T:0x4265fb60] OC - Comm_get> Enter(queue=0x10000, msg=0x4265f504,
timeout=-1)
@0x000e27c3:[T:0x4265fb60] OC - Comm_get> return (0)
@0x000e2856:[T:0x4265fb60] OC - Comm_put> Enter(queue=0x0, msg=0x427f6900)
@0x000e2914:[T:0x4265fb60] OC - Comm_put> return (0)
@0x000e29e4:[T:0x4265fb60] OC - Comm_get> Enter(queue=0x10000, msg=0x4265f504,
timeout=-1)
@0x000e2ab0:[T:0x4265fb60] OC - Comm_get> return (0)
@0x000e2b3a:[T:0x4265fb60] CE - Engine_createNode> created node(stdIn=0x2,
stdOut=0x10001, msgq=0x2c3e0, algName='jpegenc', rmsNode=0x8fa46480,
algHandle=0x8fa46560)
@0x000e2c37:[T:0x4265fb60] CE - Engine_createNode> Returning 0x2c3b8
@0x00136193:[T:0x4265fb60] OC - Comm_alloc> Enter(poolId=0x0, msg=0x2c3a4,
size=828)
@0x00136290:[T:0x4265fb60] OC - Comm_alloc> msg=0x427f7900, returning (0)
@0x00136351:[T:0x4265fb60] CV - VISA_create> remote codec created
(name='jpegenc', localQueueID=0x10001, remoteQueueID=0x0002)
@0x00136424:[T:0x4265fb60] ti.sdo.ce.image.IMGENC - IMGENC_create> return
(0x2c398)
@0x001364bf:[T:0x4265fb60] ti.sdo.ce.image.IMGENC - IMGENC_control> Enter
(handle=0x2c398, id=1, params=0x29358, status=0x299f4
@0x0013657d:[T:0x4265fb60] ti.sdo.ce.image.IMGENC - IMGENC_control> return (-1)
-- FAILED
Video Chain Debug: Checking video standard
Video Chain Error: error: can't set dyn params 0x0
@0x00136929:[T:0x402c8568] CE - rserverOpen('./jpegencdecCombo.x64P'), count = 1
@0x00136a12:[T:0x402c8568] CE - rserverOpen('./jpegencdecCombo.x64P'): 0x2966c
done.
@0x00136acb:[T:0x402c8568] OC - Comm_create> Enter(queueName='jpegencdec',
queue=0x2c308, attrs=0x0)
@0x00136e7b:[T:0x402c8568] OC - Comm_create> return (0x2c3f0)
@0x00136f43:[T:0x402c8568] OC - Comm_alloc> Enter(poolId=0x0, msg=0x2c314,
size=576)
@0x00137012:[T:0x402c8568] OC - Comm_alloc> msg=0x427f8900, returning (0)
@0x001370ad:[T:0x402c8568] OC - Comm_locate> Enter(queueName='rmsq',
queue=0x2c304)
Video Chain Debug: NTSC camera detected
@0x00139743:[T:0x402c8568] OC - Comm_locate> return (0)
@0x00139808:[T:0x402c8568] CE - checkServer(0x2c2f8)
@0x001398ce:[T:0x402c8568] OC - Comm_put> Enter(queue=0x0, msg=0x427f8900)
@0x0013999d:[T:0x402c8568] OC - Comm_put> return (0)
@0x00139b2e:[T:0x402c8568] OC - Comm_get> Enter(queue=0x10002, msg=0xbefff750,
timeout=-1)
@0x00139c08:[T:0x402c8568] OC - Comm_get> return (0)
Video Chain Debug: Codec Engine opened in control thread
Video Chain Debug: Setting capture cropping (720x480)
Capturing 720x480 video (cropped to 720x480)
Video Chain Debug: 3 capture buffers were successfully allocated.
Video Chain Debug: Capture driver buffer 0 at physical address 1116102656
mapped to virtual address 0x86e00000
Video Chain Debug: Capture driver buffer 1 at physical address 1116987392
mapped to virtual address 0x86f00000
Video Chain Debug: Capture driver buffer 2 at physical address 1117872128
mapped to virtual address 0x86400000
Video Chain Debug: Video capture initialized and started
Video Chain Debug: Entering capture main loop.
Video Chain Debug: MSP430 library initialized
Video Chain Debug: User interface created
Command [ 'help' for usage ] > Video Chain Debug: Entering control main loop.
@0x0016f942:[T:0x402c8568] CE - Engine_close(0x2c2f8)
@0x0016f9eb:[T:0x402c8568] OC - Comm_free> Enter (msg=0x427f8900)
@0x0016faa3:[T:0x402c8568] OC - Comm_free> return (0)
@0x0016fb48:[T:0x402c8568] OC - Comm_delete> Enter (comm=0x2c3f0)
@0x0016fddb:[T:0x402c8568] OC - Comm_delete> return
@0x0016fe96:[T:0x402c8568] OC - Comm_release> Enter(queue=0x0)
@0x0016ff42:[T:0x402c8568] OC - Comm_release> return (0)
@0x0016ffd0:[T:0x402c8568] CE - rserverClose(0x2966c), count = 2
@0x00170059:[T:0x402c8568] CE - rserverClose(0x2966c) done.
@0x0017057f:[T:0x40ac9b60] OP - daemon> thread terminating
@0x00170735:[T:0x402c8568] OT - Thread_join> Enter (task=0x2c0c8)
@0x001707fe:[T:0x402c8568] OT - Thread_join> Exit (task=0x2c0c8)
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source