Sorry for insisting on this filepng  part  - but it was my work, 
and I dislike to ship broken feature!

I actually tested Cinelerra git on Ubuntu Live DVD, and 
_16 bit_ pngs were broken there without it.

It was as simple as 
1) opening  the video
2) setting project to rgba-float color format.
3) trying to save png (from non-black area of timeline) 
and set options to "with alpha, 16 bits".

By default Cin adds encoded results into resources and on new tracks -
you clearly can see it will be black/broken. 8-bits PNGs are OK.

Ubuntu image I used:
http://mirror.yandex.ru/ubuntu-cdimage/xubuntu/releases/18.04/release/
xubuntu-18.04.4-desktop-amd64.iso - 1.4 Gb

Then I created 4 Gb file in tmpfs, formatted it with btrfs with compression, 
and booted Live image:

guest@slax:/dev/shm$ wget 
http://mirror.yandex.ru/ubuntu-cdimage/xubuntu/releases/18.04/release/xubuntu-18.04.4-desktop-amd64.iso
--2020-03-25 13:55:42--  
http://mirror.yandex.ru/ubuntu-cdimage/xubuntu/releases/18.04/release/xubuntu-18.04.4-desktop-amd64.iso
Распознаётся mirror.yandex.ru… 213.180.204.183, 2a02:6b8::183
Подключение к mirror.yandex.ru|213.180.204.183|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 1534459904 (1,4G) [application/octet-stream]
Сохранение в: «xubuntu-18.04.4-desktop-amd64.iso»

xubuntu-18.04.4-desktop-amd64.iso                  
100%[==============================================================================================================>]
   1,43G  8,26MB/s    за 6m 40s

2020-03-25 14:02:28 (3,66 MB/s) - «xubuntu-18.04.4-desktop-amd64.iso» сохранён 
[1534459904/1534459904]

guest@slax:/dev/shm$ qemu-sy
qemu-system-aarch64       qemu-system-i386          qemu-system-mips          
qemu-system-nios2         qemu-system-riscv64       qemu-system-sparc64       
qemu-system-xtensaeb
qemu-system-alpha         qemu-system-lm32          qemu-system-mips64        
qemu-system-or1k          qemu-system-s390x         qemu-system-tricore
qemu-system-arm           qemu-system-m68k          qemu-system-mips64el      
qemu-system-ppc           qemu-system-sh4           qemu-system-unicore32
qemu-system-cris          qemu-system-microblaze    qemu-system-mipsel        
qemu-system-ppc64         qemu-system-sh4eb         qemu-system-x86_64
qemu-system-hppa          qemu-system-microblazeel  qemu-system-moxie         
qemu-system-riscv32       qemu-system-sparc         qemu-system-xtensa
guest@slax:/dev/shm$ qemu-system-x86_64 -m 2000 -display sdl,gl=on -soundhw 
es1370 -usb -cdrom xubuntu-18.04.4-desktop-amd64.iso
qemu-system-x86_64: cannot set up guest memory 'pc.ram': Cannot allocate memory
guest@slax:/dev/shm$ qemu-system-x86_64 -m 2000 -display sdl,gl=on -soundhw 
es1370 -usb -cdrom xubuntu-18.04.4-desktop-amd64.iso
guest@slax:/dev/shm$ qemu-system-x86_64 -m 2000 -display sdl,gl=on -soundhw 
es1370 -usb -cdrom xubuntu-18.04.4-desktop-amd64.iso -enable-kvm -smp 3
guest@slax:/dev/shm$ qemu-system-x86_64 -m 2000 -display sdl,gl=on -soundhw 
es1370 -usb -cdrom xubuntu-18.04.4-desktop-amd64.iso -enable-kvm -smp 3
guest@slax:/dev/shm$ dd if=/dev/zero of=4Gb bs=1k count=4M
4194304+0 записей получено
4194304+0 записей отправлено
4294967296 байт (4,3 GB, 4,0 GiB) скопирован, 20,7155 s, 207 MB/s
guest@slax:/dev/shm$ qemu-system-x86_64 -m 2000 -display sdl,gl=on -soundhw 
es1370 -usb -cdrom xubuntu-18.04.4-desktop-amd64.iso -enable-kvm -smp 4 -hda 4Gb
WARNING: Image format was not specified for '4Gb' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write 
operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.

in just a hour I had compiled Cinelerra (by copying git tree from host BEFORE 
launching qemu)

Note, in such mem-restricted VM you want to use zram (not default in this 
ubuntu flavor):
as root 
modprobe zram
echo 1000000000 > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon /dev/zram0

this will create 1Gb sized compressed swap in ram

I even send email from this virtual setup, but it apparently was stuck in 
moderation
due to size (over 750 kb).

NOW, I found something really weird!
Patch as attached worked on 64-bit Ubuntu,
but for my system I *must*
place this call to  png_set_swap(png_ptr); differently, not before  
png_write_info(png_ptr, info_ptr);
but AFTER! I actually left both there ....

Still, this is something strange, I'll try to contact libpng author about 
this.....

Also, I attach my current OpenCV tweaks - trim out unneeded stuff, 
fixing two typos, adding -stdc++11 line for my odd system.

I still use opencv-20180401.tgz

I also have two lame (mp3lame) patches, but will send them separately.
diff --git a/cinelerra-5.1/cinelerra/filepng.C b/cinelerra-5.1/cinelerra/filepng.C
index 3b28e0ea..2d1f3fbd 100644
--- a/cinelerra-5.1/cinelerra/filepng.C
+++ b/cinelerra-5.1/cinelerra/filepng.C
@@ -228,6 +228,8 @@ int FilePNG::write_frame(VFrame *frame, VFrame *data, FrameWriterUnit *unit)
 			png_set_IHDR(png_ptr, info_ptr, asset->width, asset->height, asset->png_depth,
 				asset->png_use_alpha ?  PNG_COLOR_TYPE_RGB_ALPHA : PNG_COLOR_TYPE_RGB,
 				PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
+			if( asset->png_depth == 16 && BC_Resources::little_endian )
+			png_set_swap(png_ptr);
 			png_write_info(png_ptr, info_ptr);
 			png_write_image(png_ptr, output_frame->get_rows());
 			png_write_end(png_ptr, info_ptr);
diff --git a/cinelerra-5.1/opencv_build b/cinelerra-5.1/opencv_build
index 736e1d90..7be18228 100644
--- a/cinelerra-5.1/opencv_build
+++ b/cinelerra-5.1/opencv_build
@@ -49,6 +49,7 @@ jobs:=-j$(shell echo $$(($(cpus) + $(cpus)/2 +2)))
 #opencv4 breaks SIFT/SURF findobj
 CFLAGS += -I$(opencv_prefix)/include/opencv4
 CFLAGS += -I$(opencv_prefix)/include
+CFLAGS += -std=c++11
 
 ifeq ($(src),git)
 $(opencv).src:
@@ -83,6 +84,9 @@ $(opencv)/build: $(opencv).src
   -DINSTALL_C_EXAMPLES=OFF \
   -DINSTALL_PYTHON_EXAMPLES=OFF \
   -DBUILD_EXAMPLES=OFF .. \
+  -DBUILD_PERF_TESTS=OFF \
+  -DBUILD_TESTS=OFF \
+  -DBUILD_opencv_apps=OFF \
   -DBUILD_opencv_python3=no \
   -DCMAKE_INSTALL_PREFIX=/usr/local \
   -DOPENCV_EXTRA_MODULES_PATH="$(opencv)_contrib/modules/"
@@ -106,10 +110,13 @@ $(opencv)/build: $(opencv).src
   -DINSTALL_PYTHON_EXAMPLES=ON \
   -DBUILD_EXAMPLES=ON .. \
   -DBUILD_opencv_python3=no \
+  -DBUILD_PERF_TESTS=OFF \
+  -DBUILD_TESTS=OFF \
+  -DBUILD_opencv_apps=OFF \
   -DCMAKE_INSTALL_PREFIX=/usr/local \
   -DOPENCV_EXTRA_MODULES_PATH="$(opencv)_contrib/modules/"
 
-SYSLIB := $(lastword $(wildcard /usr/lib /usrlib32 /usr/lib64))
+SYSLIB := $(lastword $(wildcard /usr/lib /usr/lib32 /usr/lib64))
 CVLIBS := $(dir $(shell find $(opencv_prefix) -name libopencv_core.so))
 LFLAGS += -L$(CVLIBS) $(patsubst $(CVLIBS)/lib%.so,-l%,$(wildcard $(CVLIBS)/libopencv_*.so))
 LFLAGS += $(patsubst $(SYSLIB)/lib%.so,-l%,$(wildcard $(SYSLIB)/lib{Half,Imath,Ilm,Iex}*.so))
@@ -118,7 +125,7 @@ static_incs :=
 else ifeq ($(bld),sys)
 $(opencv)/build:
 
-SYSLIB := $(lastword $(wildcard /usr/lib /usrlib32 /usr/lib64))
+SYSLIB := $(lastword $(wildcard /usr/lib /usr/lib32 /usr/lib64))
 LFLAGS += $(patsubst $(SYSLIB)/lib%.so,-l%,$(wildcard $(SYSLIB)/libopencv_*.so))
 LFLAGS += $(patsubst $(SYSLIB)/lib%.so,-l%,$(wildcard $(SYSLIB)/lib{Half,Imath,Ilm,Iex}*.so))
 static_libs :=
-- 
Cin mailing list
[email protected]
https://lists.cinelerra-gg.org/mailman/listinfo/cin

Reply via email to