google / google/sagetv

Problem with 4K 10-bit videos and MadVR renderer

Open
#395 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
287
Forks
172
PR merge metrics
No merged PRs in 30d

Description

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

Contributor guide

Open the contributing guide

Research direction

Start in PlaybackControl.cpp at Java_sage_DShowMediaPlayer_play0, especially the pMC->Run() call, and reproduce playback with a 10-bit HEVC file using MadVR. Compare SageTV's DirectShow setup with the working MPC-BE, GraphStudio, and MFC cases. Done would mean identifying why SageTV fails with 10-bit MadVR playback and documenting or fixing the differing setup.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, java
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.