OpenVisualCloud / SVT-HEVC

SVT HEVC encoder. Scalable Video Technology (SVT) is a software-based video coding technology that is highly optimized for Intel® Xeon® processors. Using the open source SVT-HEVC encoder, it is possible to spread video encoding processing across multiple Intel® Xeon® processors to achieve a real advantage of processing efficiency.
Other
518 stars 170 forks source link

Add RGB 10/12 encoder support. #363

Open alatteri opened 5 years ago

alatteri commented 5 years ago

I am interested in using SVT-HEVC for realtime color accurate streaming for the Visual Effects/Post Production space. In that world, YUV, even 10 bit is not color accurate enough. 10/12 native RGB is the only acceptable solution. While x265 can do this, the CPU processing requirements are very large, and as yet, (testing with HP z820/z840 workstations), I've been unable to get realtime 24fps encoding. NVENC is also YUV only, so all possible HW accelerations are currently unable to fit the bill. With the large performance improvements seen with SVT, it would be great if 10/12bit RGB encoding was added, and we wouldn't have to throw bigger metal at the problem, but instead use smarter software.

intelmark commented 5 years ago

Alan – Curious what the video resolution is set to as well as the desired framerate.

-mark

From: Alan Latteri [mailto:notifications@github.com] Sent: Monday, September 16, 2019 10:43 AM To: OpenVisualCloud/SVT-HEVC SVT-HEVC@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Subject: [OpenVisualCloud/SVT-HEVC] Add RGB 10/12 encoder support. (#363)

I am interested in using SVT-HEVC for realtime color accurate streaming for the Visual Effects/Post Production space. In that world, YUV, even 10 bit is not color accurate enough. 10/12 native RGB is the only acceptable solution. While x265 can do this, the CPU processing requirements are very large, and as yet, (testing with HP z820/z840 workstations), I've been unable to get realtime 24fps encoding. NVENC is also YUV only, so all possible HW accelerations are currently unable to fit the bill. With the great performance improvements seen with SVT, it would be great if 10/12bit RGB encoding was added, and we wouldn't have to throw bigger metal at the problem, but instead use smarter software.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/OpenVisualCloud/SVT-HEVC/issues/363?email_source=notifications&email_token=AMC5UQTSQNT2DSLSZ66KGQLQJ7ATDA5CNFSM4IXFJ5OKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HLUWGZQ, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMC5UQQ277YAAACCRMXKB2TQJ7ATDANCNFSM4IXFJ5OA.

alatteri commented 5 years ago

2048x1080@23.976 R12L from Blackmagic Decklink SDI source. But ideally we'd like to be able to go up to 4K too.

intelmark commented 5 years ago

There is a plug-in for SVT to use with FFmpeg. You might investigate if an encoding solution can be built around that, as it should support RGB->YUV conversion.

-mark

From: Alan Latteri [mailto:notifications@github.com] Sent: Monday, September 16, 2019 10:51 AM To: OpenVisualCloud/SVT-HEVC SVT-HEVC@noreply.github.com Cc: Feldman, Mark mark.feldman@intel.com; Comment comment@noreply.github.com Subject: Re: [OpenVisualCloud/SVT-HEVC] Add RGB 10/12 encoder support. (#363)

2048x1080@23.976mailto:2048x1080@23.976 R12L from Blackmagic Decklink SDI source. But ideally we'd like to be able to go up to 4K too.

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/OpenVisualCloud/SVT-HEVC/issues/363?email_source=notifications&email_token=AMC5UQWETDPEDINZ6KOGBZLQJ7BPHA5CNFSM4IXFJ5OKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6Z6XIQ#issuecomment-531884962, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMC5UQWJUX6U3ZL7DTNH3VDQJ7BPHANCNFSM4IXFJ5OA.

alatteri commented 5 years ago

I'll give it a try later this week. Thanks.

tianjunwork commented 5 years ago

@alatteri, may I know what is your command line using x265 with RGB 10/12 input? You may try converting RGB->yuv444p10le with ffmpeg then feed to svt-hevc, which though is not truly lossless. But you can see if performance meets your need first.

alatteri commented 5 years ago

I haven't yet played with SVT, but this is the basic command I was doing some testing with x265

Sender: ./ffmpeg -raw_format rgb10 -f decklink -i 'DeckLink 4K Pro' -c:v libx265 -preset ultrafast -tune zerolatency -f mpegts "udp://192.168.101.195:1234?overrun_nonfatal=1"

Reciever: ./ffmpeg -i "udp://192.168.101.194:1234?overrun_nonfatal=1" -f decklink -vcodec v210 'DeckLink SDI 4K'

RoflTom commented 4 years ago

Please add 12bit support c: I wan't to use svt-hevc for all my movie-stuff cuz its faster compared to x265. But 10bit isn't good enough to get rid of all the banding at higher compression and choosing a higher qualitylevel to compensate for this ruins the efficiency.

tianjunwork commented 4 years ago

Hi @RoflTom, I believe you are asking for 12-bits yuv input support? I can feedback this request to the dev team. Also welcome contribution from the community. Before it is implemented, you could try to find a trade off(-encMode) between quality and efficiency using -bit-depth 10.

RoflTom commented 4 years ago

My inputs are 8/10 bit and the output should have 12bit yuv cuz that really helps with visual quality. Like x265 which is what im using until svt-hevc can do 12bits. And if not i just stay with the slower x265.