|
Ticket Name: Linux/TDA2: eve framcopy usecases add |
|
|
|
Query Text: |
|
Part Number: TDA2 Tool/software: Linux i am using SDK_VISION_03_04_00_00 . i am thy to add a usecases in sample_app\src\hlos\usecases chains_nullSrc_eveDisplay.txt is UseCase: chains_null_eveSrcDisplay NullSource (A15) -> Alg_FrameCopy (EVE1) ->Display cfg.mk is ALG_framecopy=yes NEED_PROC_IPU1_0=yes NEED_PROC_A15_0=yes NEED_PROC_EVE1=yes but when i run the usecases it failed ,i donot know what is the problem! follow is the log HOST] [HOST ] Sample Application Usecases, [HOST] [HOST ] --------------------------- [HOST] [HOST ] 1: Null Source -> Display (Supports only 1920x1080 HDMI display) [HOST] [HOST ] 2: Null Source_eve -> Display (Supports only 1920x1080 HDMI display) [HOST] [HOST ] [HOST] [HOST ] x: Exit [HOST] [HOST ] [HOST] [HOST ] Enter Choice: [HOST] [HOST ] 2 [HOST] [HOST ] 688.765357 s: #### ENTERING SAMPLE_APP:NULL SOURCE_eve -> DISPLAY USE CASE #### ASSERT (system_ipc_msgq.c|System_ipcMsgQTskMain|218) [HOST] [HOST ] 689.779296 s: IPC_OUT_0 : Create in progress !!! [HOST] [HOST ] 689.779357 s: IPC_OUT_0 : Create Done !!! [HOST] [HOST ] 689.780424 s: IPC_IN_0 : Create in progress !!! [HOST] [HOST ] 689.780455 s: IPC_IN_0 : Create Done !!! [HOST] [HOST ] 689.780485 s: SYSTEM: IPC: [HOST] Notify send failed (Socket operation on non-socket, 88) !!! [HOST] [EVE1 ] 689.779723 s: IPC_IN_0 : Create in progress !!! in PROCESSOR_SDK_VISION_03_04_00_00/ti_components/os_tools/linux/targetfs/lib/firmware$ have dra7-dsp1-fw.lzop dra7-dsp2-fw.xe66.rsc dra7-ipu2-fw.xem4.rsc dra7-dsp1-fw.xe66 dra7-ipu2-fw.lzop goodix_9271_cfg.bin dra7-dsp1-fw.xe66.rsc dra7-ipu2-fw.xem4 tigon dra7-dsp2-fw.lzop dra7-ipu2-fw.xem4.ipumm-fw vpdma-1b8.bin dra7-dsp2-fw.xe66 dra7-ipu2-fw.xem4.map but no files for arp32. |
|
|
|
Responses: |
|
Hi, Please take a reference of the below usecase vision_sdk\apps\src\hlos\adas\src\usecases\vip_single_cam_framecopyEve_sgx_display You can replace the capture link with your NullSource link if the input file is in raw format. If the input file is in encoded format then please add a decoder link after NullSource. Regards, Anuj |
|
|
|
Hi Anuj: yes i can refer to vision_sdk\apps\src\hlos\adas\src\usecases\vip_single_cam_framecopyEve_sgx_display. But sample_app\src\hlos\usecases \nullSrc_display is more simple i think just replace DSP1 to EVE1 NullSource (A15) -> Alg_FrameCopy (DSP1) ->Display NullSource (A15) -> Alg_FrameCopy (EVE1) ->Display Can this be done in theory? 7115.chains_nullSrcDisplay.c /* |
|
Copyright (c) [2012 - 2017] Texas Instruments Incorporated |
|
|
|
All rights reserved not granted herein. |
|
|
|
Limited License. |
|
|
|
Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive |
|
license under copyrights and patents it now or hereafter owns or controls to |
|
make, have made, use, import, offer to sell and sell ("Utilize") this software |
|
subject to the terms herein. With respect to the foregoing patent license, |
|
such license is granted solely to the extent that any such patent is necessary |
|
to Utilize the software alone. The patent license shall not apply to any |
|
combinations which include this software, other than combinations with devices |
|
manufactured by or for TI ("TI Devices"). No hardware patent is licensed |
|
hereunder. |
|
|
|
Redistributions must preserve existing copyright notices and reproduce this |
|
license (including the above copyright notice and the disclaimer and |
|
(if applicable) source code license limitations below) in the documentation |
|
and/or other materials provided with the distribution |
|
|
|
Redistribution and use in binary form, without modification, are permitted |
|
provided that the following conditions are met: |
|
|
|
* No reverse engineering, decompilation, or disassembly of this software |
|
is permitted with respect to any software provided in binary form. |
|
|
|
* Any redistribution and use are licensed by TI for use only with TI Devices. |
|
|
|
* Nothing shall obligate TI to provide you with source code for the software |
|
licensed and provided to you in object code. |
|
|
|
If software source code is provided to you, modification and redistribution of |
|
the source code are permitted provided that the following conditions are met: |
|
|
|
* Any redistribution and use of the source code, including any resulting |
|
derivative works, are licensed by TI for use only with TI Devices. |
|
|
|
* Any redistribution and use of any object code compiled from the source code |
|
and any resulting derivative works, are licensed by TI for use only with TI |
|
Devices. |
|
|
|
Neither the name of Texas Instruments Incorporated nor the names of its |
|
suppliers may be used to endorse or promote products derived from this software |
|
without specific prior written permission. |
|
|
|
DISCLAIMER. |
|
|
|
THIS SOFTWARE IS PROVIDED BY TI AND TI�S LICENSORS "AS IS" AND ANY EXPRESS OR |
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
|
IN NO EVENT SHALL TI AND TI�S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE |
|
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
*/ |
|
|
|
/******************************************************************************* |
|
* INCLUDE FILES |
|
******************************************************************************* |
|
*/ |
|
#include "chains_nullSrcDisplay_priv.h" |
|
#include <src/hlos/chains_common/chains.h> |
|
#include <links_fw/src/hlos/osa/include/osa_mem.h> |
|
#include <src/common/TI_logo_640_224_sp.h> |
|
|
|
/******************************************************************************* |
|
* DEFINES |
|
******************************************************************************* |
|
*/ |
|
#define NULLSRC_TIME_INTERVAL (33) |
|
#define NULLSRC_NUM_OUTBUF (4) |
|
#define NULLSRC_OUT_WIDTH (768) // (1280) |
|
#define NULLSRC_OUT_HEIGHT (576) // (720) |
|
//#define TILOGO_WIDTH (640) |
|
//#define TILOGO_HEIGHT (224) |
|
#define TILOGO_WIDTH (768) |
|
#define TILOGO_HEIGHT (576) |
|
/******************************************************************************* |
|
* GLOBALS |
|
******************************************************************************* |
|
*/ |
|
chains_nullSrcDisplayObj gUcObj; |
|
Chains_DisplayType gDisplayType; |
|
UInt32 gDisplayWidth; |
|
UInt32 gDisplayHeight; |
|
|
|
static char useCaseRunTimeMenu[] = { |
|
"\n " |
|
"\n ====================" |
|
"\n Chains Run-time Menu" |
|
"\n ====================" |
|
"\n " |
|
"\n 0: Stop Chain" |
|
"\n " |
|
"\n p: Print Performance Statistics " |
|
"\n " |
|
"\n Enter Choice: " |
|
"\n " |
|
}; |
|
|
|
/** |
|
******************************************************************************* |
|
* |
|
* \brief Null source Null use case Set Application paremeters |
|
*` |
|
* This functions executes the create, start functions |
|
* |
|
* Further in a while loop displays run time menu and waits |
|
* for user inputs to print the statistics or to end the demo. |
|
* |
|
* Once the user inputs end of demo stop and delete |
|
* functions are executed. |
|
* |
|
* \param chainsCfg [IN] Chains_Ctrl |
|
* |
|
******************************************************************************* |
|
*/ |
|
Void chains_nullSrcDisplay_SetAppPrms(chains_nullSrcDisplayObj *pObj, Void *appObj) |
|
{ |
|
System_LinkChInfo *pChInfo; |
|
NullSrcLink_CreateParams *pNullSrcPrm = &pObj->NullSourcePrm; |
|
|
|
ChainsCommon_GetDisplayWidthHeight( |
|
gDisplayType, |
|
&gDisplayWidth, |
|
&gDisplayHeight); |
|
|
|
NullSrcLink_CreateParams_Init(pNullSrcPrm); |
|
|
|
pNullSrcPrm->timerPeriodMilliSecs = NULLSRC_TIME_INTERVAL; |
|
pNullSrcPrm->outQueInfo.numCh = 1; |
|
pNullSrcPrm->channelParams[0].numBuffers = NULLSRC_NUM_OUTBUF; |
|
|
|
pChInfo = &pNullSrcPrm->outQueInfo.chInfo[0]; |
|
|
|
pChInfo->flags = System_Link_Ch_Info_Set_Flag_Data_Format(pChInfo->flags, |
|
SYSTEM_DF_YUV420SP_UV); |
|
pChInfo->flags = System_Link_Ch_Info_Set_Flag_Scan_Format(pChInfo->flags, |
|
SYSTEM_SF_PROGRESSIVE); |
|
pChInfo->flags = System_Link_Ch_Info_Set_Flag_Buf_Type(pChInfo->flags, |
|
SYSTEM_BUFFER_TYPE_VIDEO_FRAME); |
|
pChInfo->width = NULLSRC_OUT_WIDTH; |
|
pChInfo->height = NULLSRC_OUT_HEIGHT; |
|
pChInfo->startX = 0; |
|
pChInfo->startY = 0; |
|
pChInfo->pitch[0] = SystemUtils_align(pChInfo->width, 32); |
|
pChInfo->pitch[1] = SystemUtils_align(pChInfo->width, 32); |
|
// Vps_printf(" ALGORITHM_LINK_DSP_ALG_FRAMECOPY wordWidth: DMA: height CH (TCC) = %d (%d)\n", 300,300); |
|
/* Alg FrameCopy parameters */ |
|
pObj->Alg_FrameCopyPrm.baseClassCreate.algId = ALGORITHM_LINK_DSP_ALG_FRAMECOPY; |
|
pObj->Alg_FrameCopyPrm.maxWidth = NULLSRC_OUT_WIDTH; |
|
pObj->Alg_FrameCopyPrm.maxHeight = NULLSRC_OUT_HEIGHT; |
|
pObj->Alg_FrameCopyPrm.numOutputFrames = 3; |
|
|
|
/* Display parameters */ |
|
pObj->DisplayPrm.rtParams.tarWidth = gDisplayWidth; |
|
pObj->DisplayPrm.rtParams.tarHeight = gDisplayHeight; |
|
pObj->DisplayPrm.rtParams.posX = 0U; |
|
pObj->DisplayPrm.rtParams.posY = 0U; |
|
pObj->DisplayPrm.displayId = DISPLAY_LINK_INST_DSS_VID1; |
|
|
|
ChainsCommon_StartDisplayCtrl( |
|
gDisplayType, |
|
gDisplayWidth, |
|
gDisplayHeight); |
|
} |
|
|
|
/** |
|
******************************************************************************* |
|
* |
|
* \brief Fill the source buffers with known pattern |
|
*` |
|
* This functions executes the create, start functions |
|
* |
|
* Further in a while loop displays run time menu and waits |
|
* for user inputs to print the statistics or to end the demo. |
|
* |
|
* Once the user inputs end of demo stop and delete |
|
* functions are executed. |
|
* |
|
* \param chainsCfg [IN] Chains_Ctrl |
|
* |
|
******************************************************************************* |
|
*/ |
|
static Void fillSrcBuf(chains_nullSrcDisplayObj *pObj) |
|
{ |
|
Int32 status; |
|
UInt32 ht, bufCnt, logoStartX, logoStartY, offset; |
|
UInt8 *srcAddr, *dstAddr; |
|
NullSrcLink_GetBufInfoParams getBufInfoPrm; |
|
System_Buffer *pBuffer; |
|
System_VideoFrameBuffer *pVideoFrame; |
|
|
|
/** |
|
* Get the Null source buffer info |
|
*/ |
|
getBufInfoPrm.chId = 0U; |
|
status = System_linkControl( |
|
pObj->NullSourceLinkID, |
|
NULL_SRC_LINK_CMD_GET_BUF_INFO, |
|
&getBufInfoPrm, |
|
sizeof(NullSrcLink_GetBufInfoParams), |
|
TRUE); |
|
UTILS_assert (SYSTEM_LINK_STATUS_SOK == status); |
|
|
|
for (bufCnt = 0;bufCnt < getBufInfoPrm.numBuf;bufCnt ++) |
|
{ |
|
pBuffer = &getBufInfoPrm.buffer[bufCnt]; |
|
pVideoFrame = pBuffer->payload; |
|
|
|
memset( |
|
pVideoFrame->bufAddr[0], |
|
0xFF, |
|
(NULLSRC_OUT_WIDTH * NULLSRC_OUT_HEIGHT)); |
|
|
|
memset( |
|
pVideoFrame->bufAddr[1], |
|
0x80, |
|
(NULLSRC_OUT_WIDTH * NULLSRC_OUT_HEIGHT/2)); |
|
|
|
/* copy TI logo */ |
|
logoStartX = (NULLSRC_OUT_WIDTH - TILOGO_WIDTH)/2; |
|
logoStartY = (NULLSRC_OUT_HEIGHT - TILOGO_HEIGHT)/2; |
|
offset = (logoStartY * NULLSRC_OUT_WIDTH) + logoStartX; |
|
dstAddr = (UInt8*)((UInt32)pVideoFrame->bufAddr[0] + offset); |
|
srcAddr = tiLogo_640_224; |
|
for(ht = 0;ht < TILOGO_HEIGHT;ht++) |
|
{ |
|
memcpy(dstAddr, srcAddr, TILOGO_WIDTH); |
|
dstAddr += NULLSRC_OUT_WIDTH; |
|
srcAddr += TILOGO_WIDTH; |
|
} |
|
|
|
offset = ((logoStartY/2) * NULLSRC_OUT_WIDTH) + logoStartX; |
|
dstAddr = (UInt8*)((UInt32)pVideoFrame->bufAddr[1] + offset); |
|
srcAddr = (UInt8*)((UInt32)tiLogo_640_224 + \ |
|
(TILOGO_WIDTH * TILOGO_HEIGHT)); |
|
for(ht = 0;ht < TILOGO_HEIGHT/2;ht++) |
|
{ |
|
memcpy(dstAddr, srcAddr, TILOGO_WIDTH); |
|
dstAddr += NULLSRC_OUT_WIDTH; |
|
srcAddr += TILOGO_WIDTH; |
|
} |
|
/////////////////////////////////////////////////////////////////////////////////arcsoft |
|
FILE *fptxt = fopen("./input_img/mykeys.txt", "rb"); |
|
if (fptxt == NULL) |
|
{ |
|
printf("fopen failed \n"); |
|
return -1; |
|
} |
|
UInt8 Ciphertext[2048] = { 0 }; |
|
fread(Ciphertext, 1, 2048, fptxt); |
|
fclose(fptxt); |
|
dstAddr = (UInt8*)((UInt32)pVideoFrame->bufAddr[1] + offset); |
|
memcpy(dstAddr, Ciphertext, 2048); |
|
//int i=0; |
|
//for (i = 0; i < 128; i++) |
|
//{ |
|
// Vps_printf(" id = %d,Ciphertext=%d\n",i,dstAddr[i]); |
|
// } |
|
//////////////////////////////////////////////////////////////////////////////////// |
|
OSA_memCacheWb( |
|
(UInt32)pVideoFrame->bufAddr[0], |
|
((UInt32)pVideoFrame->bufAddr[0] + \ |
|
(NULLSRC_OUT_WIDTH * NULLSRC_OUT_HEIGHT))); |
|
OSA_memCacheWb( |
|
(UInt32)pVideoFrame->bufAddr[1], |
|
((UInt32)pVideoFrame->bufAddr[1] + \ |
|
(NULLSRC_OUT_WIDTH * (NULLSRC_OUT_HEIGHT/2)))); |
|
} |
|
} |
|
|
|
/** |
|
******************************************************************************* |
|
* |
|
* \brief Null source Null use case |
|
*` |
|
* This functions executes the create, start functions |
|
* |
|
* Further in a while loop displays run time menu and waits |
|
* for user inputs to print the statistics or to end the demo. |
|
* |
|
* Once the user inputs end of demo stop and delete |
|
* functions are executed. |
|
* |
|
* \param chainsCfg [IN] Chains_Ctrl |
|
* |
|
******************************************************************************* |
|
*/ |
|
Void Chains_nullSrc_display() |
|
{ |
|
char ch; |
|
UInt32 done = FALSE; |
|
|
|
gDisplayType = CHAINS_DISPLAY_TYPE_HDMI_1080P; |
|
|
|
Vps_printf(" #### ENTERING SAMPLE_APP:NULL SOURCE -> DISPLAY USE CASE ####"); |
|
|
|
chains_nullSrcDisplay_Create(&gUcObj,NULL); |
|
|
|
/* Fill the source buffers */ |
|
fillSrcBuf(&gUcObj); |
|
ChainsCommon_statCollectorReset(); |
|
ChainsCommon_memPrintHeapStatus(); |
|
|
|
chains_nullSrcDisplay_Start(&gUcObj); |
|
|
|
ChainsCommon_prfLoadCalcEnable(TRUE, FALSE, FALSE); |
|
|
|
|
|
done = FALSE; |
|
while(!done) |
|
{ |
|
Vps_printf(useCaseRunTimeMenu); |
|
ch = Chains_readChar(); |
|
|
|
switch(ch) |
|
{ |
|
case '0': |
|
done = TRUE; |
|
break; |
|
case 'p': |
|
chains_nullSrcDisplay_printStatistics(&gUcObj); |
|
ChainsCommon_PrintStatistics(); |
|
break; |
|
default: |
|
Vps_printf("\nUnsupported option '%c'. Please try again\n", |
|
ch); |
|
break; |
|
} |
|
} |
|
|
|
chains_nullSrcDisplay_Stop(&gUcObj); |
|
chains_nullSrcDisplay_Delete(&gUcObj); |
|
|
|
ChainsCommon_StopDisplayCtrl(); |
|
ChainsCommon_prfLoadCalcEnable(FALSE, FALSE, FALSE); |
|
|
|
Vps_printf(" #### EXITING SAMPLE_APP:NULL SOURCE -> DISPLAY USE CASE ####"); |
|
} |
|
|
|
can i move usecases\vip_single_cam_framecopyEve_sgx_display. usecase to sample_app\src\hlos\usecases and run it? |
|
|
|
Hi, Only copying the folder wont work. You need to call that usecase and also you need to enable that usecase from uc_cfg.mk Regards, Anuj |
|
|
|
|