google / sagetv

SageTV is a cross-platform networked DVR and media management system
http://forums.sagetv.com/
Apache License 2.0
267 stars 174 forks source link

Problem with 4K 10-bit videos and MadVR renderer #395

Open redondo-se opened 5 years ago

redondo-se commented 5 years ago

Hi,

I'm experimenting with using SageTV to play 4K 10-bit videos. I have 1 4K TV but no HDR TVs. I've been thinking about getting into 4K HDR, but want to be able to use SageTV as my player. From what I've been reading I think MadVR is required to get 4K 10-bit HDR working with directshow.

I can get SageTV to use MadVR by setting it to the highest merit renderer and then telling SageTV to use the default renderer. It works fine with HEVC 8-bit videos but as soon as I try 10-bit it won't start playing.

I compiled the DShowPlayer from source and debugged playback and found that I get an error "0x8876017c" in PlaybackControl.cpp Java_sage_DShowMediaPlayer_play0 at:

       hr = pMC->Run();

This error seems to be DDERR_OUTOFVIDEOMEMORY: "DirectDraw does not have enough display memory to perform the operation."

My video card is an Nvidia GTX 1050 with 2GB of RAM. I'm wondering if a card with 4GB would solve the problem but I'm reluctant to spend $200 on a new video card to test.

These videos play fine in other directshow players using the same filters including MPC-BE with MadVR, graphstudio, and a self-built c++ MFC app that simply loads the file and renders it with directshow. It's only in SageTV that I'm having this problem.

Does anybody have a clue why only SageTV has this problem on my system? Is it using extra video memory and causing problems?

p.s. SageTV can play these files using EVR with LAV video decoder set to cuvid decoding, but EVR will only accept 8-bit from LAV. If I change LAV to only output 10-bit or 16-bit, EVR won't connect to LAV.

Also, I've tried 10-bit files from several different sources including the HEVC jellyfish videos from:

http://jell.yfish.us/

Thanks