An update around my work to get JPEG encoding of high res pictures to work. Still no luck to get it working but I have come a bit further. A question that is still unanswered is if Freescale with any software ever verified the feature to encode 8192x8192 pictures to JPEG?
In order to avoid the memory allocation problem I have increased the CMA buffer inte the kernel. The problem I see right now is that I get a timeout from the VPU. I will describe and hope someone can give me some more input.
GST_DEBUG=vpuenc:5 VPU_LIB_DBG=5 gst-launch-0.10 -v videotestsrc num-buffers=1 ! video/x-raw-yuv,format=\(fourcc\)UYVY,width=6400,height=4800,framerate=1/1,color-matrix=hdtv ! ffmpegcolorspace ! video/x-raw-yuv,format=\(fourcc\)NV12,width=6400,height=4800,framerate=1/1 ! vpuenc codec=mjpg ! filesink location=sample.jpg
........
vpuenc versions
plugin: 4.0.3
wrapper: 1.0.58(VPUWRAPPER_ARM_LINUX Build on Apr 21 2015 15:40:06)
vpulib: 5.4.28
firmware: 3.1.1.46063
........
0:00:03.992470667 834 0x759f20 LOG vpuenc /home/sepbe/yocto/nitrogen_master/build/tmp/work/nitrogen6x-poky-linux-gnueabi/gst-fsl-plugin/4.0.3-r0/gst-fsl-plugins-4.0.3/src/video/vpu/src/vpuenc.c:1277:gst_vpuenc_chain: chain in with inbuffer size = 46080000 ts 0:00:00.000000000
vpu_lib.c:2068 enter vpu_EncGiveCommand()
vpu_lib.c:1523 enter vpu_EncStartOneFrame()
vpu_io.c:811 vpu clock gate setting = 1
vpu_io.c:811 vpu clock gate setting = 1
vpu_io.c:811 vpu clock gate setting = 0
vpu_lib.c:129 enter vpu_WaitForInt()
vpu_lib.c:132 ret of IOWaitForInt 0
vpu_io.c:811 vpu clock gate setting = 1
vpu_lib.c:219 status 0x4, wrPtr 0x46300000, bbcEnd 0x46300000
vpu_lib.c:224 pic not done, wait
vpu_io.c:811 vpu clock gate setting = 0
vpu_lib.c:129 enter vpu_WaitForInt()
vpu_lib.c:132 ret of IOWaitForInt -1
vpu_io.c:811 vpu clock gate setting = 1
vpu_lib.c:219 status 0x4, wrPtr 0x46300000, bbcEnd 0x46300000
vpu_lib.c:224 pic not done, wait
vpu_io.c:811 vpu clock gate setting = 0
vpu_lib.c:129 enter vpu_WaitForInt()
vpu_lib.c:132 ret of IOWaitForInt -1
vpu_io.c:811 vpu clock gate setting = 1
vpu_lib.c:219 status 0x4, wrPtr 0x46300000, bbcEnd 0x46300000
vpu_lib.c:224 pic not done, wait
vpu_io.c:811 vpu clock gate setting = 0
vpu_lib.c:129 enter vpu_WaitForInt()
vpu_lib.c:132 ret of IOWaitForInt -1
vpu_io.c:811 vpu clock gate setting = 1
vpu_lib.c:219 status 0x4, wrPtr 0x46300000, bbcEnd 0x46300000
vpu_lib.c:224 pic not done, wait
vpu_io.c:811 vpu clock gate setting = 0
vpu_lib.c:129 enter vpu_WaitForInt()
vpu_lib.c:132 ret of IOWaitForInt -1
vpu_io.c:811 vpu clock gate setting = 1
vpu_lib.c:219 status 0x4, wrPtr 0x46300000, bbcEnd 0x46300000
vpu_lib.c:224 pic not done, wait
vpu_io.c:811 vpu clock gate setting = 0
0:00:24.082916670 834 0x759f20 ERROR vpuenc /home/sepbe/yocto/nitrogen_master/build/tmp/work/nitrogen6x-poky-linux-gnueabi/gst-fsl-plugin/4.0.3-r0/gst-fsl-plugins-4.0.3/src/video/vpu/src/vpuenc.c:1328:gst_vpuenc_chain: func VPU_EncEncodeFrame failed!! with ret 8
It seems that it is a timeout from the VPU. Inside the function IOWaitForInt the status is traced out. The value of status is read from register MJPEG_PIC_STATUS_REG.
How shall I interpret status=0x4? I can not find any register definition document of the MJPEG_PIC_STATUS_REG.
I am quite stuck here. Where can I find more information regarding this problem? With my setup I have been able to encode a picture of size 5120x3200, increasing the reolution from there I always end up in this timeout situation.