[Cin] Blu-ray encoding again

Andrew Randrianasulu randrianasulu at gmail.com
Thu Nov 14 15:18:50 CET 2019


Hi!

With Marton's patches from git clone -b mpegts https://github.com/cus/ffmpeg/ 
and CinGG compiled with ffmpg.git I _nearly_ got some rendering.

But option files still needed some modification

For example I was running into x264 errors.

cin
Cinelerra Infinity - built: Nov 14 2019 14:17:05
git://git.cinelerra-gg.org/goodguy/cinelerra.git
(c) 2006-2019 Heroine Virtual Ltd. by Adam Williams
(c) 2007-2019 cin5 derivative by W.P. Morrow aka goodguy
Cinelerra is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions. There is absolutely no warranty for Cinelerra.

Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
[libx264 @ 0xe9a3c4c0] interlace + weightp is not implemented
[libx264 @ 0xe9a3c4c0] using mv_range_thread = 88
[libx264 @ 0xe9a3c4c0] NAL HRD parameters require VBV parameters
[libx264 @ 0xe9a3c4c0] using SAR=1/1
[libx264 @ 0xe9a3c4c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX XOP FMA3 BMI1
[libx264 @ 0xe9a3c4c0] profile High, level 4.1
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
FFMPEG::encode_activate: write header failed /dev/shm//bd_20191114-163217/bd.m2ts
  err: Недопустимый аргумент
Render::render_single: Session finished.
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl


some of them were fixed by applying parameters from 

http://www.x264bluray.com/home/1080i-p

[libx264 @ 0xe0609640] using mv_range_thread = 88
[libx264 @ 0xe0609640] using SAR=1/1
[libx264 @ 0xe0609640] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX XOP FMA3 BMI1
[libx264 @ 0xe0609640] HRD bitrate: 40000000 bits/sec
[libx264 @ 0xe0609640] CPB size: 30000000 bits
[libx264 @ 0xe0609640] profile High, level 4.1
[SWR @ 0xcfba81c0] Using fltp internally between filters
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
Render::render_single: Session finished.

but there still warning at ffmpeg site about deprecation of x264opts:

https://trac.ffmpeg.org/wiki/Encode/H.264
Warning: Do not use the option x264opts, as it will eventually be removed. Use x264-params instead.

---
/usr/share/cin/ffmpeg/video/bluray.m2ts                                                                                                                                         417/417               100%
bluray libx264
bluray-compat=1
id=0x1011
level=41
bf=2
fake-interlaced=1
bitrate=40000
slices=4
sar=1:1
# vbv-maxrate=40000
# vbv-bufsize=30000
refs=3
cin_pix_fmt=yuv420p
color_range=mpeg
colorspace=bt709
color_trc=bt709
color_primaries=bt709
profile=high
preset=medium
flags=+cgop
# must be last for bdcreate.C
x264opts keyint=25:min-keyint=4:qpmin=3:qpmax=33:qp_step=4:merange=8:vbv-maxrate=40000:vbv-bufsize=30000

---
/usr/share/cin/ffmpeg/format/bluray                                                                                                                                             129/129               100%
mpegts
mpegts_m2ts_mode=1
mpegts_start_pid=1024
mpegts_pmt_start_pid=256
muxrate 1
#sdt_period=-1
packetsize 2048
preload 500000


But please note some x264 params actually should vary for interlaced or progressive, 25 vs 30 fps:

1080p 
Primary and Secondary Streams

1080p23.976 / 1080p24

x264 --bitrate XXXXX --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 24 --open-gop --slices 4 --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o out.264 input.file

x264 --bitrate XXXXX --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 24 --open-gop --slices 4 --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 2 -o out.264 input.file

NB: the following two streams are encoded using fake-interlaced mode. This allows the stream to be encoded progressively yet flagged as interlaced.

1080p25

x264 
--bitrate XXXXX --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 25 
--open-gop 
--slices 4 --fake-interlaced 
--colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o out.264 
input.file

x264 
--bitrate XXXXX --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 25 
--open-gop 
--slices 4 --fake-interlaced 
--colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 2 -o out.264 
input.file

1080p29.97

x264 
--bitrate XXXXX 
--preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 30 
--open-gop 
--slices 4 --fake-interlaced 
--colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o out.264 
input.file

x264 
--bitrate XXXXX 
--preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 30 --open-gop --slices 4 --fake-interlaced --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 2 -o out.264 input.file

1080i 
Primary and Secondary Streams (assumes top field first)

1080i25

x264 
--bitrate XXXXX 
--preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 25 --open-gop --slices 4 --tff --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o out.264 
input.file

x264 
--bitrate XXXXX 
--preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 25 --open-gop --slices 4 --tff --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 2 -o out.264 
input.file

1080i29.97 / 1080i30

x264 
--bitrate XXXXX 
--preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 30 --open-gop --slices 4 --tff --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o out.264 
input.file

x264 
--bitrate XXXXX 
--preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level
 4.1 --keyint 30 --open-gop --slices 4 --tff --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 2 -o out.264 
input.file

so, keyint must be dynamically-selected, depending on profile you (user) choose,
and fake_interlaced must be present for progressive encodings

More on those constrains, refering  same page:
https://av.community/guides/encoding-video-for-blu-ray-using-h264-avc/

"8-bit (4:2:0) Colorspace is only allowed 
Main and High profiles are allowed 
Maximum 3 B-Frames is allowed 
NAL-HRD Type 2 capable encoder is needed"

note, according to some comments around vbv-bufsize you can mux to DVD, so test this, too?
"vbv-maxrate Maximum allowed bitrate. Depend of destination media, for normal BD Media, 
maximum settings is allowed (40000), while for DVD Media (eg BD-5 or BD-9) there is no 
maximum per Blu-Ray specification, but is strongly recommended that use less 
or equal to 15000, since DVD reading is slower."
-------------- next part --------------
# apply at init encode
loglevel=debug
threads=auto
side_data_only_packets=1
-------------- next part --------------
mpegts
mpegts_m2ts_mode=1
mpegts_start_pid=1024
mpegts_pmt_start_pid=256
muxrate 1
#sdt_period=-1
packetsize 2048
preload 500000
-------------- next part --------------
bluray libx264
bluray-compat=1
id=0x1011
level=41
bf=2
fake-interlaced=1
bitrate=40000
slices=4
sar=1:1
# vbv-maxrate=40000
# vbv-bufsize=30000
refs=3
cin_pix_fmt=yuv420p
color_range=mpeg
colorspace=bt709
color_trc=bt709
color_primaries=bt709
profile=high
preset=medium
flags=+cgop
# must be last for bdcreate.C
x264opts keyint=25:min-keyint=4:qpmin=3:qpmax=33:qp_step=4:merange=8:vbv-maxrate=40000:vbv-bufsize=30000


More information about the Cin mailing list