Repository navigation
Conversation
|
Hello, Can you give more details about "handling more than eight channels", you mean the movie being played or your computer having 8 channels audio setup? |
|
This refers to the channel count of the audio frame being copied in For planar audio, each channel has its own data pointer. The old code indexed This was checked with a synthetic 10-channel planar frame under ASan/UBSan, not with a game movie containing that many channels. The wording in the description could have been clearer. |
|
The decoder regression test also passes on Windows with GCC 15.2 and FFmpeg 8.1: packed and planar audio including 10-channel frames, odd-width video, timestamps and end-of-stream draining. The test produced the expected 30 video frames and 192000 audio bytes. I also tested movie playback in the Windows build containing these PRs; the videos I checked played correctly. |
|
Why are you testing cases that not even occur in the real game for real players? this is not a movie player app this is a game, we dont need to support every possible movie/audio input... just the ones game assets contain... Please stop wasting time with synthetic and madeup circumstances that don't occur for real users and limit the changes to actual necessary fixes or i will have to close the PR, what bugs are you seeing that does this PR actually fix? |
|
You're right. These changes came out of debugging movie playback on macOS, and I didn't check whether they were needed before opening the PR. I've now tested Perimeter and Emperor's Testament on macOS with the original decoder and player, keeping the FFmpeg dependency selection fix from #200 and the other macOS changes. All tested movies play correctly without #202 or #203. The synthetic tests didn't demonstrate a problem with the game's movies. I'll close this PR. Sorry for the unnecessary review work, and thank you for pushing back. |
Audio copies included alignment padding, planar audio handling did not support more than eight channels, and decoder/filter output could be lost at EOF. The wrapper now copies the actual samples, preserves audio timestamps and drains pending output. Video scaling uses the decoded frame's format and dimensions.