ultravideo / kvazaar

An open-source HEVC encoder
BSD 3-Clause "New" or "Revised" License
838 stars 181 forks source link

Corrupted encoded file in xilinx zynq "Zypo kit" #165

Closed amrlsayed closed 7 years ago

amrlsayed commented 7 years ago

Hi, Kindly help me the following problem regarding encoding Kvazaar on ARM. I have successfully cross-compiled Kvazaar targeting arm using arm-xilinx-linux-gnueabi toolchain the shell commands I used on Ubuntu are

$ git clone git://github.com/ultravideo/kvazaar.git
$ cd /kvazaar
$ ./autogen.sh
$ ./configure --host=arm-xilinx-linux-gnueabi --prefix=/opt/Xilinx/SDK/2014.4/gnu/arm/lin/arm-xilinx-linux-gnueabi/libc/usr
$ make

N.B. xilinx-linux-gnueabi toolchain is in my $path I copied the elf file to the SD card ,along with a valid sample yuv file and successfully encoded the .yuv file using this command $ ./kvazaar -i RaceHorses_416x240_30.yuv --input-res 416x240 -o out it encodes the file without any error "it only says No SMID optimization" before encoding , but the problem is when I try to decode it I get the .yuv corrupted , like half of the frames are green, I attached a screenshot for the decoded file. when I encode the same file using Kvazaar on an Intel machine using Ubuntu , I get the file good without corruption , the problem only appear on ZYPO board with Petalinux. N.B.I got kvazaar working before on ZYNQ-ZC702 board without corruption but using a prebuild Ubuntu image from xilinx, that I was able to build kvazaar on the board itself without cross-compiling (cloning , apt-get packages ,autogen , configure ,make,encoding,... all on ZYNQ) I see from the attached screenshot that the frames are corrupted on reading or writing frames from/to the SD card , or something with data types while cross-compiling, I don't know , the problem is that I don't know how to trace the problem so if you can help me what I am doing wrong. Thanks in advance. Amr Elsayed. screenshot

fador commented 7 years ago

Hi, Sorry for the delay, we don't have any experience with the Zynq, but could you try disabling the threading by using: --threads=0 --no-wpp because we think it might be a threading problem.

Best Regards, Marko

amrlsayed commented 7 years ago

Dear Marko, thank you for your kind support , I got it working " Yaaaaah :D " , I took some time to reply because I wanted to try several test cases. the problem was that the Petalinux default image Rootfs is working on RAM , which was too small for a video to be encoded on , changing to SD card Rootfs have solved the problem , but I had to configure Petalinux to add the video file during building instead of copying it to the rootfs partition of SD card. this thread can be taken as a reference for building kvazaar on ZYNQ as I got it working. Thanks again and Best Regards, Amr Elsayed.