-
Notifications
You must be signed in to change notification settings - Fork 2.9k
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ao_sndio broken [was: mp3: incomplete frame] #531
Comments
Can you upload the file? |
I got the file per mail. I played it, and nothing is unusual. The warning is printed, but that's possibly due to weird non-standard tags at the end of the file. I suspect the problem is with your AO. I see you use sndio, which hasn't really been battle-tested yet. Especially at the end of a file, corner cases can make the AO freeze. Not sure how to test this, since I don't have access to an OpenBSD system. |
actually, i am told that upstream mplayer has accepted sndiod patches, and they are newer than the one that was merged with mpv... i'd be happy to test it :) |
Yes. I think the mplayer version includes some additional fixes. If anyone wants to merge these changes from mplayer, that would be welcome. (I don't want to do it without testing.) PS: you can confirm with |
Forgot to mention: the most common reason why an AO would interfere with proper termination is that ao_get_delay() doesn't return 0 when all audio is played. |
i will try to adapt the mplayer patches. this another file stopped with
|
time for some
and a "bad" file:
shouldn't |
audio.c does call In general, the player has to deal with an audio pipeline, where each stage can buffer arbitrary amounts of data. For example, even if the demuxer has reached EOF, there can still be data in the demuxer, or in the audio filter chain, or in the AO. "Real" EOF (as in what This also means that when the AO keeps returning a high value with I'm not entirely sure why Note that ao_alsa doesn't get AOPLAY_FINAL_CHUNK set in this case either. But the AO shouldn't just stop because it gets partially filled and the flag is not set. It's worth noting that the audio uninit code actually does flush some remaining audio and sets AOPLAY_FINAL_CHUNK doing it, but that is after the EOF condition has been detected. (There are complicated interactions with gapless audio...) You can look at ao_null.c, which tries to emulate an ideal AO. (Sorry for the late reply.) |
Ping? |
Ping? This is still not solved as far as I know. |
sorry for the delay. thanks for fixing the build with 75d7d87, this was holding me back. |
Made a 0.3.9 release. This still will need --disable-asm on OpenBSD (I think). |
Long outdated, also there were more openbsd-specific sndio patches recently. |
when i use mpv as a music player, on certain mp3 files (perhaps incorrectly encoded) it keeps spinning:
i realize the error message is from ffmpeg, but should mpv stop playback and keep spinning like this? (mplayer plays this file fine and moves on)
The text was updated successfully, but these errors were encountered: