Anmerkung: Ich habe immer "mod16" oder "mod4" in Klammern geschrieben um aufzuzeigen das es hier um ein Vielfaches von 16 o. 4 und nicht um eine Modulo Operation an dieser Stelle geht !
ok ...
Erstes Testfile mit 1000 Frames gecoded mit folgenden Settings:
"C:\Program Files (x86)\Video Tools\avs2pipemod-1.1.1\avs2pipemod.exe" -rawvideo "test.avs" | "C:\Program Files\x265\x265-2.4_37.exe" --preset slower --crf 24 --psy-rd 2.0 --psy-rdoq 10.0 --aq-mode 3 --rd 5 --me star --no-open-gop --no-sao --ctu 32 --limit-modes --input-res 1280x720 --input-depth 16 --fps 24000/1003 --output "test.h265" --input -
Wie man sofort erkennt wird nur ein SPS geschrieben. Ich habe bewusst eine völlig abstruse Geschwindigkeit genommen um die Werte besser wiederzufinden.
Hier mal ein Ausschnitt aus dem SPS mit den relevanten Bytes:
Die ersten 2 Bytes geben den Denominator an: 0xFA -> 250 -> x4 (mod4) -> 1000
Die nächsten 2 Byte das "Offset" des Denominators (1003 kann man ja nicht durch 4 teilen ...) Nur das erste der zwei Bytes wird scheinbar ausgewertet ...
0xC0 ist zwar dezimal 192 steht aber in diesem Fall aber für 3. ( 0x40 = 1, 0x80 = 2) ... (mod64 ???)
Die letzten Bytes markieren die eigentlichen FPS: 0x1770 -> 6000 -> x4 (mod4) -> 24000
ABER
Nächstes testfile mit folgenden Optionen gecoded:
"C:\Program Files (x86)\Video Tools\avs2pipemod-1.1.1\avs2pipemod.exe" -rawvideo "test.avs" | "C:\Program Files\x265\x265-2.4_37.exe" --preset faster --crf 24 --repeat-headers --limit-modes --ctu 32 --input-res 1280x720 --input-depth 16 --fps 24000/1003 --output "test.h265" --input -
Diese Settings packen alle "paar Frames" einen neuen VPS/SPS/PPS in den Stream ...
Nur jetzt schaut's folgendermaßen aus:
Erste 2 Byte: 0x3e -> 62 -> x16 (mod16) -> 992
Zweite 2 Bytes: 0xb0 -> 176 (nur das erste Byte wird ausgewertet ... und ja, hier ist alles "big" ) Teilt man die 176 durch 16 (anstatt durch 64 wie im Beispiel oben) so bekommt man 11. Addiert man das zu 992 -> 1003
Drittes Byte Paar: 0x05dc -> 1500 -> x16 (mod16) -> 24000
Und nun die Große Preisfrage: Wo/wie bzw. an welcher Stelle wird angegeben ob nun in mod4, mod16 oder ... gearbeitet wird ?
Ums besser/komplizierter zu machen sollte man sich mal einen Stream mit dem hevcbrowser anschauen