程序运行显示一帧图像,然后画面就没了,打印信息:
请问是不是MpSclr引起的?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Chu Hi,
你是1600x1200到1920x1080,水平方向放大,垂直方向缩小,默认的Mpsclar只做缩小的。
1600x1200是4:3的,1920x1080是16:9的,你确认要这样不等比缩放么?
谢谢你的回复,我如果换成2048*2048,还是报错了:
[m3vpss ] 131577:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]
[m3vpss ] 131577:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]size[4147200]
[m3vpss ] UTILS: MEM: Alloc'ing from FRAME BUF. (required size = 4147200 B, free space = 190192512 B)
[m3vpss ] UTILS: MEM: FRAME ALLOC, addr = 0xb345e480, size = 4147200 bytes
[m3vpss ] 131599:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]
[m3vpss ] 131600:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]size[4147200]
[m3vpss ] UTILS: MEM: Alloc'ing from FRAME BUF. (required size = 4147200 B, free space = 186045312 B)
[m3vpss ] UTILS: MEM: FRAME ALLOC, addr = 0xb3852c80, size = 4147200 bytes
[m3vpss ] 131621:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]
[m3vpss ] 131621:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]size[4147200]
[m3vpss ] UTILS: MEM: Alloc'ing from FRAME BUF. (required size = 4147200 B, free space = 181898112 B)
[m3vpss ] UTILS: MEM: FRAME ALLOC, addr = 0xb3c47480, size = 4147200 bytes
[m3vpss ] 131643:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]
[m3vpss ] 131643:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]size[4147200]
[m3vpss ] UTILS: MEM: Alloc'ing from FRAME BUF. (required size = 4147200 B, free space = 177750912 B)
[m3vpss ] UTILS: MEM: FRAME ALLOC, addr = 0xb403bc80, size = 4147200 bytes
[m3vpss ] 131665:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]
[m3vpss ] 131666:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]size[4147200]
[m3vpss ] UTILS: MEM: Alloc'ing from FRAME BUF. (required size = 4147200 B, free space = 173603712 B)
[m3vpss ] UTILS: MEM: FRAME ALLOC, addr = 0xb4430480, size = 4147200 bytes
[m3vpss ] 131687:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]
[m3vpss ] 131687:Utils_memFrameGetSize:dataFormat[1]w[1920]h[1080]pitch0[3840]pitch1[0]size[4147200]
[m3vpss ] UTILS: MEM: Alloc'ing from FRAME BUF. (required size = 4147200 B, free space = 169456512 B)
[m3vpss ] UTILS: MEM: FRAME ALLOC, addr = 0xb4824c80, size = 4147200 bytes
[m3vpss ] 131708: MP_SCLR: - Input Resolution Changed, updating...
[m3vpss ] 131709: MP_SCLR: - Input Resolution Updated
[m3vpss ] 131709: MP_SCLR:w[2048]h[2048]inFmt.width[2048]inFmt.height[2048]outFmt.width[1920]outFmt.height[1080]numPixelsPerLine[1776]w3[1920]
[c6xdsp ] DSP BGR_Img=9dc1af4c
[m3vpss ] DUP ReRGB_Img=1
Receive num=646
send over size=645
recvfrom......
[c6xdsp ] 114874: SYSTEM: Opening MsgQ [HOST_MSGQ] ...
[m3vpss ] SWMS: *** UPDATING RT Params ***
[m3vpss ] 131753: SWMS : ******* Configuring clock 30 secs...
[m3vpss ] 131753: SWMS1 : Loading Vertical Co-effs (UPSCALE)x ...
[m3vpss ] 131753: SWMS1 : Loading Horizontal Co-effs (UPSCALE)x ...
[m3vpss ] 131753: SWMS : Co-effs Loading ... DONE !!!
[m3vpss ] 131753: SWMS1 : Loading Vertical Co-effs (UPSCALE)x ...
[m3vpss ] 131753: SWMS1 : Loading Horizontal Co-effs (UPSCALE)x ...
[m3vpss ] 131753: SWMS : Co-effs Loading ... DONE !!!
[m3vpss ]
[m3vpss ] *** [SWMS1] Mosaic Parameters ***
[m3vpss ]
[m3vpss ] Output FPS: 30
[m3vpss ]
[m3vpss ] Win | Ch | Input | Input | Input | Input | Output | Output | Output | Output | Scan | Low Cost | SWMS | Data | Blank |
[m3vpss ] Num | Num | Start X, Y | Width x Height | Pitch Y / C | Memory Type | Start X, Y | Width x Height | Pitch Y / C | Memory Type | Fmt | ON / OFF | Inst | Format| Frame |
[m3vpss ] ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[m3vpss ] 0 | 0 | 0, 0 | 1920 x 1080 | 3840 / 0 | NON-TILED | 0, 0 | 1920 x 1080 | 3840 / 0 | NON-TILED | PROGRESSIVE | OFF | 0 | 422I | OFF |
[m3vpss ]
[m3vpss ] SWMS: *** UPDATING RT Params ***
[m3vpss ] 131759: SWMS : ******* Configuring clock 30 secs...
[m3vpss ] 131759: SWMS0 : Loading Vertical Co-effs (10/16)x ...
[m3vpss ] 131759: SWMS0 : Loading Horizontal Co-effs (4/16)x ...
[m3vpss ] 131760: SWMS : Co-effs Loading ... DONE !!!
[m3vpss ] 131760: SWMS0 : Loading Vertical Co-effs (10/16)x ...
[m3vpss ] 131760: SWMS0 : Loading Horizontal Co-effs (4/16)x ...
[m3vpss ] 131760: SWMS : Co-effs Loading ... DONE !!!
[m3vpss ]
[m3vpss ] *** [SWMS0] Mosaic Parameters ***
[m3vpss ]
[m3vpss ] Output FPS: 30
[m3vpss ]
[m3vpss ] Win | Ch | Input | Input | Input | Input | Output | Output | Output | Output | Scan | Low Cost | SWMS | Data | Blank |
[m3vpss ] Num | Num | Start X, Y | Width x Height | Pitch Y / C | Memory Type | Start X, Y | Width x Height | Pitch Y / C | Memory Type | Fmt | ON / OFF | Inst | Format| Frame |
[m3vpss ] ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[m3vpss ] 0 | 0 | 0, 0 | 1920 x 540 | 7680 / 0 | NON-TILED | 200, 40 | 576 x 346 | 3840 / 0 | NON-TILED | PROGRESSIVE | ON | 0 | 422I | OFF |
[m3vpss ] 1 | 255 | 0, 0 | 352 x 264 | 704 / 704 | NON-TILED | 776, 40 | 576 x 346 | 3840 / 0 | NON-TILED | INTERLACE | ON | 1 | 422I | ON |
[m3vpss ] 2 | 255 | 0, 0 | 352 x 264 | 704 / 704 | NON-TILED | 1352, 40 | 576 x 346 | 3840 / 0 | NON-TILED | INTERLACE | ON | 1 | 422I | ON |
decodeSwitchDone == TRUE
[m3vpss ] 3 | 255 | 0, 0 | 352 x 264 | 704 / 704 | NON-TILED | 200, 386 | 576 x 346 | 3840 / 0 | NON-TILED | INTERLACE | ON | 1 | 422I | ON |
[m3vpss ] 4 | 255 | 0, 0 | 352 x 264 | 704 / 704 | NON-TILED | 776, 386 | 576 x 346 | 3840 / 0 | NON-TILED | INTERLACE | ON | 1 | 422I | ON |
[m3vpss ] 5 | 255 | 0, 0 | 352 x 264 | 704 / 704 | NON-TILED | 1352, 386 | 576 x 346 | 3840 / 0 | NON-TILED | INTERLACE | ON | 1 | 422I | ON |
[m3vpss ] 6 | 255 | 0, 0 | 352 x 264 | 704 / 704 | NON-TILED | 200, 732 | 576 x 346 | 3840 / 0 | NON-TILED | INTERLACE | ON | 1 | 422I | ON |
[m3vpss ] 7 | 255 | 0, 0 | 352 x 264 | 704 / 704 | NON-TILED | 776, 732 | 576 x 346 | 3840 / 0 | NON-TILED | INTERLACE | ON | 1 | 422I | ON |
[m3vpss ] 8 | 255 | 0, 0 | 352 x 264 | 704 / 704 | NON-TILED | 1352, 732 | 576 x 346 | 3840 / 0 | NON-TILED | INTERLACE | ON | 1 | 422I | ON |
[m3vpss ]
[m3vpss ] SWMS:Restoring blank frame params for winId:1
[m3vpss ] SWMS:Restoring blank frame params for winId:2
[m3vpss ] SWMS:Restoring blank frame params for winId:3
[m3vpss ] SWMS:Restoring blank frame params for winId:4
[m3vpss ] SWMS:Restoring blank frame params for winId:5
[m3vpss ] SWMS:Restoring blank frame params for winId:6
[m3vpss ] SWMS:Restoring blank frame params for winId:7
[m3vpss ] SWMS:Restoring blank frame params for winId:8
[m3vpss ] Unhandled Exception:
[m3vpss ] Exception occurred in ThreadType_Task
[m3vpss ] handle: 0x3fab5870.
[m3vpss ] stack base: 0x3f9e4440.
[m3vpss ] stack size: 0x8000.
[m3vpss ] R0 = 0xb385ac78 R8 = 0x9dc18b3c
[m3vpss ] R1 = 0x00004000 R9 = 0x9dc18f3c
[m3vpss ] R2 = 0x9dc1873c R10 = 0x00000085
[m3vpss ] R3 = 0x0000008c R11 = 0x00000009
[m3vpss ] R4 = 0x00000009 R12 = 0x00000000
[m3vpss ] R5 = 0x00004001 SP(R13) = 0x3f9ec358
[m3vpss ] R6 = 0x9dc1b4ec LR(R14) = 0x9dc1933c
[m3vpss ] R7 = 0x00003ff9 PC(R15) = 0x0043c098
[m3vpss ] PSR = 0xa1000000
[m3vpss ] ICSR = 0x0440f803
[m3vpss ] MMFSR = 0x00
[m3vpss ] BFSR = 0x82
[m3vpss ] UFSR = 0x0000
[m3vpss ] HFSR = 0x40000000
[m3vpss ] DFSR = 0x00000000
[m3vpss ] MMAR = 0x00004001
[m3vpss ] BFAR = 0x00004001
[m3vpss ] AFSR = 0x00000000
[m3vpss ] Terminating Execution...
Chu Hi,
你测试的使用mpsclar缩小2048*2048到1920x1080,对么?如果是,你能否调整一下MP_SCLR_LINK_MAX_VERTICAL_SLICE_SIZE的大小,看是否有改善?
最好是在mpsclara驱动里面再打印一下,看看分片,分片的缩放比例设置是否正确。
Chris Hi,
谢谢回复,是2048*2048到1920*1080,MP_SCLR_LINK_MAX_VERTICAL_SLICE_SIZE现在是1900,要改成2048?
Chu Hi,
SC的限制是输入输出不能大于1920x1080,MP_SCLR_LINK_MAX_VERTICAL_SLICE_SIZE是用来定义从什么地方输入图片分割为两个或者多个,然后分别输入SC处理,这就是MPsclar的原理。
所以MP_SCLR_LINK_MAX_VERTICAL_SLICE_SIZE不能大于1920,先可以尝试一下1824。
hl chu 说:Chris Hi,
有段错误啊,这个该怎么调试,不知道错误在哪
如果这个段错误是由于Mpsclar导致的,我建议你先尝试修改一下我提供的这个参数。
如果你的板子上有JTAG口,你也有仿真器,你可以连上vpss M3 (不要加载gel), 然后把出现Exception时候的各个寄存器的值在CCS里面填回去,就可以恢复到出现exception前的那个状态。具体请参考:http://processors.wiki.ti.com/index.php/SYS/BIOS_FAQs#4_Exception_Dump_Decoding_Using_the_CCS_Register_View
hl chu 说:异常是在mpSclr以后dup处理数据函数DupLink_drvProcessFrames里。
你能否在duplink里面设置断点,看看具体什么导致的错误?
Chu Hi,
打印提示错误是OCMC的memory不够用了,因为debug版本的代码比较大。
解决方法就是修改cmd文件,调整代码存放的位置,放到其他地方去。
Chu hl,
hl chu 说:我把代码放到LINUX_MEM里,编译可以通过,这样行不行?
应该不可以啊,M3的代码是和Linux一起运行的。
hl chu 说:连接CCS调试的时候,输入异常寄存器地址,没跳到出错的地方,
这个测试需要先运行这个debug版本的代码,然后记录下exception时候的R0~R15的值。接下来连上CCS,在M3上load 这个debug版本的代码,然后填入R0~R15的值。运行和load的两个代码必须完全一致。
Chu Hl,
任何已经分配使用的memory都不建议重复使用。
建议你修改cfg文件,可以把SR2的大小变小一点,把M3的memory段加大相应大小,例如VIDEO_M3_BSS_SIZE,然后把相应section指定到VIDEO_M3_BSS这个段。
hl chu 说:输入R0-R15没有到出错的地方,
你是如何得出这个结论的?
请问你的编码异常具体现象是什么?有报错么?根据你提供的信息,像是挂死在process call里面了?
你使用的编码器的版本是多少?你具体的静态,动态参数是如何配置的?
Chu Hi,
填寄存器的方法适用月exception情况。
是的,h264enc只支持YUV420sp的输入格式,请参考编码的datasheet和user guide。
Chris Hi,
创建link链路的时候有设置,以前用的是SC4:
#if defined(TI_814X_BUILD) || defined(TI_8107_BUILD)
mpSclrPrm.pathId = MP_SCLR_LINK_SEC0_SC3_VIP0;
#else
mpSclrPrm.pathId = MP_SCLR_LINK_SEC1_SC4_VIP1;
#endif
我把MP_SCLR_LINK_SEC1_SC4_VIP1改成MP_SCLR_LINK_SEC0_SC3_VIP0或者MP_SCLR_LINK_SC5,
把MP_SCLR_LINK_OUT_DATATYPE改成SYSTEM_DF_YUV420SP_UV,编译通过,运行时下图492行有警告:
Chu HL,
请参考下面的帖子:
https://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/p/104897/315186.aspx
Chris Hi,
MpSclr和swMs等里面,pObj->fvidHandle = FVID2_create(FVID2_VPS_M2M_SC_DRV,
drvInstId,
&pObj->scCreateParams,
&pObj->scCreateStatus, &cbParams);
这个函数执行的时候会使用VPSS M3里面哪段空间?
Chu Hl,
建议你看一下相关的map文件,例如:dvr_rdk\build\dvr_rdk\bin\ti816x-evm\dvr_rdk_m3vpss_release_1024M_256M.xem3.map
hl chu 说:摄像头分辨率是1920*1080,本地显示正常,网页点播是左右两个重复的画面,颜色也不对;
h264编码后的数据在电脑上回放也是类似现象么?如果是,请问你送给编码的buffer pitch是多少?请确保正确。
Chris Hi,
1)初始化的时候把长宽设置为2048*2048,摄像头分辨率是2048*2048,进入nsf的时候,pitch是3840。
初始化的时候把长宽设置为1920*1080,摄像头分辨率是1920*1080,进入nsf的时候,pitch是2048。
2)前面说的pObj->fvidHandleNsf = FVID2_create执行不成功,是因为要求输入dataformat是1,也就是422i,我在FVID2_create前面根据pitch是2048把dataformat设置为1,后面NsfLink_drvDoNsfFilter中根据pitch不对数据做处理,把传进来的数据给输出队列,这样200万的也可以网页点播。
3)200万,400万的单独都可以了。所以我又试了2路都是400万是可以的,2路200万的话第二路刚开始有画面。
我在nsf里加了打印,NsfLink_drvProcessData里面2个通道一直有接收到数据,但是第二通道接收6次数据后申请不到空间了,就把frame释放了。后面NsfLink_drvDoNsfFilter中第二通道只接受到6次数据,numBufsPerCh是6。我的做法会导致bufffer没释放?