Testsekvens för HEVC 2160p50 playback
Nu när HEVC och UHD börjar sakta men säkert ta form och bli tillgängligt så lär fler å fler bli bli intresserade av att spela upp media i dessa format. Jag har lekt ganska mycket med detta senaste året så tänkte dela med mig av en sekvens som man kan använda som testklipp för att se hur sitt system klarar koda av 10bit HEVC 2160p50 (Main10 4:2:0 specifikt, som imo är det format som kommer/borde gälla i #framtiden).
http://www.filedropper.com/svtmultiformat2160p50i420p10
Källan till denna testsekvens är "SVT High Definition Multi Format Test Set" (vad jag kan se så bryts ingen upphovsrätt när den används som den gör här). Värt att notera är att denna sekvens är inte framtagen för att blåsa skjortan av folk för dess imponerande visuella bild som tex demo-slingor i elektronikbutiker utan är framtagen för att testa kompression så förvänta er inte en fantastisk 4k upplevelse. Det är dock en av de få fria källor som erbjuder 2160p50 lossless som man kan leka med.
Man kan även grotta ner sig i kompression osv, men tänkte inte göra det allt för mycket här och nu utan gjorde detta mest för att folk ska ha ett testklipp som de kan prova sina system med. Men värt att nämna är dock att detta testklipp är relativt svårkomprimerat och innehåller väldigt mycket "film grain", betydligt mer än vad man får ur modernare kamera system så går inte att dra så mycket slutsatser kring bitrate osv, att jag valde 26Mbps för detta klipp är för att jag kände att det är ungefär runt det den mesta median kommer ligga runt om man bortser från UHD-bluray (netflix använder 15Mbps för 24p osv), broadcast kommer ligga runt 20Mbps också, samt att det var ungefär det som krävdes för att det skulle se hyfsat transparent ut om man bortser från all film grain i originalet (som inte lyckas behållas alls vid denna relativt låga bitrate).
Kan tillägga att min 4770k klarar iaf inte detta tesklipp med MPC-BE(madvr/lav filter) men det har funkat fint i de UHD TV-apparater jag testat så har man hårdvaruavkodning för HEVC så bör det gå bra, så hade vart kul att se någon med skylake CPU rapportera hur det funkar där! Kan även tillägga att 24p funkar fint i denna bitraten, men börjar lagga när bitraten börjar gå över 50Mbps. Värt att nämna är också att det verkar väldigt struligt med lösningar för 10bit och HEVC fortfarande, både när det kommer till hårdvaruavkodning (broadwell/skylake, GTX960 etc) och mjukvaruavkodning, så det är inte säkert att någon kommer lyckas spela upp detta laggfritt. Men ni som har hårdvara att leka med kör så det ryker
Slänger med lite kod här för de som är tekniskt intresserade. Orginalfilerna är 48Bit RGB som går via ett 10bit 4:2:0 avisynth-skript direkt till x265 (v1.9.3, Main10 4:2:0, Level 5.1, VBR 2pass 26Mbps (40Mbps Max))
Inställningar för x265
"avs4x265.exe" --bitrate 26000 --vbv-bufsize 40000 --vbv-maxrate 40000 --preset fast --tune grain --pass 1 --level 5.1 --input-depth 10 --output-depth 10 --stats "encode.stats" --output NUL ".avs"
"avs4x265.exe" --bitrate 26000 --vbv-bufsize 40000 --vbv-maxrate 40000 --preset slow --tune grain --pass 2 --level 5.1 --input-depth 10 --output-depth 10 --stats "encode.stats" --output .hevc ".avs"
Avisynth
clip = RawReader("1_CrowdRun_2160p50_CgrLevels_MASTER_SVTdec05_.rgb", "RGB", 3840, 2160, packing="16:0:8") + \
RawReader("2_ParkJoy_2160p50_CgrLevels_MASTER_SVTdec05_.rgb", "RGB", 3840, 2160, packing="16:0:8") + \
RawReader("3_DucksTakeOff_2160p50_CgrLevels_MASTER_SVTdec05_.rgb", "RGB", 3840, 2160, packing="16:0:8") + \
RawReader("4_InToTree_2160p50_CgrLevels_MASTER_SVTdec05_.rgb", "RGB", 3840, 2160, packing="16:0:8") + \
RawReader("5_OldTownCross_2160p50_CgrLevels_MASTER_SVTdec05_.rgb", "RGB", 3840, 2160, packing="16:0:8")
MSB = clip
LSB = clip
StackVertical(MSB, LSB)
Red = ShowRed("YV12")
Green = ShowGreen("YV12")
Blue = ShowBlue("YV12")
Dither_convert_rgb_to_yuv(Red, Green, Blue, matrix="709", output="YV12")
Dither_quantize(bitdepth=10, reducerange=true)
Dither_out()
clip1 = Trim(0, 244) clip2 = Trim(245, 490) clip3 = Trim(491, 740) clip4 = Trim(741, 990) clip5 = Trim(991, 1240) clip6 = Trim(1241, 1490) clip7 = Trim(1491, 1740) clip8 = Trim(1741, 1990) clip9 = Trim(1991, 2240) clip10 = Trim(2241, 2490)
AlignedSplice(clip1, clip3, clip5, clip7, clip9, clip2, clip4, clip6, clip8, clip10)
AssumeFPS(50,1)
(nån kommer säkert notera att klippen är trimmade och omlagda, detta var för att göra det tuffare för komprimeringen, tyckte antalet scener och längden var lite för snäll i grundutförandet)