Selur's Little Message Board

Full Version: What are the prerequisites for Level 4.2?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
When trying to encode an H.264 video and deinterlace to 50 frames from 25 fields. I chose High and L4.2, x264 slow, tune film. Output parameters are 1920x1080, 25i deinterlaced to 50p (inside Hybrid), CRF 20 and passthrough audio. 

I've previously encoded files without complaint to High L4.2 directly with FFmpeg. However, Hybrid prompts that "Current avc level needs to be at least: 5.1", though I believe 4.2 is a perfectly valid choice. Attempting to restrict to DXVA hardware support seems to make no difference. Is Hybrid attempting to validate based on incorrect constraints, or is there some added requirement for 4.2 compliance I'm not aware of?

Hybrid generated commandline (I've enabled no other settings):

Code:
x264 --preset slow --crf 20.00 --profile high --level 4.2 --ref 4 --keyint 200 --min-keyint 1 --sync-lookahead 24 --psy-rd 1.00:0.15 --weightp 0 --vbv-maxrate 40000 --vbv-bufsize 30000 --nal-hrd vbr --sar 1:1 --qpfile GENERATED_QP_FILE --deblock -1:-1 --non-deterministic --range tv --colormatrix bt709 --demuxer raw --input-res 1920x1080 --input-csp i420 --input-range tv --input-depth 8 --fps 100/1 --output-depth 8 --output "C:\project\output-1080p50.QTGMC.264" -

Hybrid is expanding the -tune film but VBV rates appear to be within 4.2 constraints. What am I doing wrong?
I agree that 1080p@50fps is fine for H.264 High@4.2.
An Hybrid does not complain here when I use it.
According to the command line a fps of 100 is used,...
I think that was a bug in an older version of Hybrid.
-> I'll send you a link to my current dev version.

Cu Selur
(12.04.2021, 15:02)Selur Wrote: [ -> ]I agree that 1080p@50fps is fine for H.264 High@4.2.
An Hybrid does not complain here when I use it.
According to the command line a fps of 100 is used,...
I think that was a bug in an older version of Hybrid.
-> I'll send you a link to my current dev version.

Cu Selur

Hi Selur, greets!

I'm using Hybrid 2021.04.06.1. 

I think this may be due to a quirk of the MKV container of the source, its frame rate is defined as 50/VFR fps, although the elementary stream reports 25 fps (correct, it's interlaced). I noted Hybrid said it was preferring the container frame rate,


Quote:Analyzing video streams...
  Analyzing video stream (0).
=> Detected stretch factor for track 0 is 2/1.
Prefering container (50) over stream frame rate (25)
Notice: Video stream raw and container lenght differ, other streched streams might exist.


MediaInfo:

Code:
Frame rate mode                          : Variable
Frame rate                               : 50.000 FPS
Original frame rate                      : 25.000 FPS

The source is a 1080i50 TFF.

I just aborted my current encode to check frame rate, and Hybrid appears to have encoded as a 100 fps H.264 stream, as I thought it might.

Code:
Stream #0:0: Video: h264 (High), yuv420p(tv, bt709/unknown/unknown, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 100 fps, 100 tbr, 1200k tbn, 200 tbc


I remuxed with ffmpeg and had to -fflags +genpts for the incomplete .h264 stream; this played back at 100 fps though it had actually been improperly interpreted as 50 fps and not correctly deinterlaced. 4x slowing down the playback rate resulted in a 25 fps video with burned in interlacing. 

Some twiddling may be required to get Hybrid to interpret these files properly :-)
Quote: I noted Hybrid said it was preferring the container frame rate,
You can change that under: "Config->Internals->Prefer Original" (Original = stream info)

Cu Selur
(12.04.2021, 16:34)Selur Wrote: [ -> ]
Quote: I noted Hybrid said it was preferring the container frame rate,
You can change that under: "Config->Internals->Prefer Original" (Original = stream info)

Cu Selur

I did notice that; I'm currently running an encode using Filtering -> Speed Change -> Change speed: 50 fps selected, though will that alter audio?

I couldn't figure out a way of easily encoding a small segment through the GUI (like -ss 00:03:00 -t 00:00:30), forgive my ignorance.
Quote: I'm currently running an encode using Filtering -> Speed Change -> Change speed: 50 fps selected, though will that alter audio?
The will change the output frame rate. And no it will not change the audio.

Quote:I couldn't figure out a way of easily encoding a small segment through the GUI (like -ss 00:03:00 -t 00:00:30), forgive my ignorance.
"Config->Internals->Cut Support" needs to be enabled, to allow settings start&end time in the Base-tab.

Cu Selur
(12.04.2021, 18:00)Selur Wrote: [ -> ]
Quote: I'm currently running an encode using Filtering -> Speed Change -> Change speed: 50 fps selected, though will that alter audio?
The will change the output frame rate. And no it will not change the audio.

Indeed! Big Grin I cancelled and muxed to an MKV to test, it worked which I was happy about. I prefer to do it the correct way though by detecting stream FPS so I'll use your recommended method.

Quote:
Quote:I couldn't figure out a way of easily encoding a small segment through the GUI (like -ss 00:03:00 -t 00:00:30), forgive my ignorance.
"Config->Internals->Cut Support" needs to be enabled, to allow settings start&end time in the Base-tab.

Cu Selur

D'oh! I can't believe I missed that. I must have searched every tab several times...  Rolleyes

Enabling Prefer Original Frame rate also worked perfectly and the validation was happy with L4.2. Great! Thank you very much for your help.