VkEncoderConfigH264: fix use of B-frame count in profile autoselect logic - #238
Conversation
|
thank you very much for this PR |
|
I see one crash and one warning in the tests section, could you check what are the failing tests ? |
The crashing test is The test with a warning is |
I checked a normal playback of I dont have the issue neither with I would recommend to investigate why this is failing with Regarding |
|
I tried out the The GeForce RTX 4060 is of the same GPU family (Ada) as the NVIDIA L30, so it's not clear to me why the test passes on the 4060 and fails on the L30. I'll try to locate a 4060 (or equivalent) and independently verify the test results there. At this point, this is seeming like a bug specific to an NVIDIA GPU family or architecture and I will file a bug report internally at NVIDIA for tracking. @dabrain34 do you also need a GitHub issue opened for this? |
|
If its identified as a driver bug I would say this is not necessary. you can create a skipped sample entry in tests/skipped_samples,json and add the device id (25a0 for example ) which should be displayed in the testing framework such as Can you rebase your branch to main ? Can you also show the the crash log with:
Then when its okay you can update the PR description to avoid having a crash in the tests section |
|
I have created #241 to add an entry in skipped_samples.json for the crashing test. As I wrote in that PR, the crash is due to fence timeout and subsequent assert in debug builds. Once that PR is merged, I'll rebase this one on top of that, re-run the test framework and update the test scores in the PR description here. |
|
Thanks #241 has been merged, you can rebase and update the description :) |
…ogic The H.264 encoder profile auto-selection logic currently uses the value returned by VkVideoGopStructure::GetConsecutiveBFrameCount() for determining the lower and upper bounds on the codec profile which can be used for encoding the input content. However, this can end up selecting a higher profile than strictly necessary because GetConsecutiveBFrameCount() returns a default value of 255 (i.e. CONSECUTIVE_B_FRAME_COUNT_MAX_VALUE) when the user has not explicitly specified B-frames in the command line. This change adds an extra check for this condition (in which case the B-frame count is set to 0 for use by the auto-selection logic).
7fe2177 to
7220cc2
Compare
Great; thank you for promptly merging that change. I have updated the test results for the current PR. |
Description
The H.264 encoder profile auto-selection logic currently uses the value returned by VkVideoGopStructure::GetConsecutiveBFrameCount() for determining the lower and upper bounds on the codec profile which can be used for encoding the input content. However, this can end up selecting a higher profile than strictly necessary because GetConsecutiveBFrameCount() returns a default value of 255 (i.e. CONSECUTIVE_B_FRAME_COUNT_MAX_VALUE) when the user has not explicitly specified B-frames in the command line.
This change adds an extra check for this condition (in which case the B-frame count is set to 0 for use by the auto-selection logic).
Type of change
Bug fix
Tests
NVIDIA L30 (10de:26bb) / NVIDIA 595.44.15 / Ubuntu 24.04.4 LTS
Total Tests: 85
Passed: 72 (1 warning(s))
Crashed: 0
Failed: 0
Not Supported: 11
Skipped: 2 (in skip list)
Success Rate: 100.0%
Additional Details (optional)
Follow-up to #171