Skip to content
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

skip_duration is unusably slow #443

Open
ivakam opened this issue Sep 18, 2022 · 4 comments
Open

skip_duration is unusably slow #443

ivakam opened this issue Sep 18, 2022 · 4 comments

Comments

@ivakam
Copy link
Contributor

ivakam commented Sep 18, 2022

Calling skip_duration on a source seems to block the thread for a completely unacceptable amount of time (several seconds, often double-digit). My guess is that this is due to how skipping is implemented where the source is manually stepped forward frame-by-frame until the offset is reached. Is is possible that the source could instead be indexed to reach the correct offset directly? I feel this should be possible, at least with sources that are constant in sample rate (or rather, sources that already use do_skip_duration_unchecked).

@callum-hopkins-dev
Copy link

I suspect that because the skip_duration effect sits on top of what is essentially an iterator of audio samples it cannot directly jump forwards to where it needs to be...

@est31
Copy link
Member

est31 commented Apr 27, 2023

It should be possible to implement fast duration skipping at least with lewton: decoding is a choice for the users.

@callum-hopkins-dev
Copy link

callum-hopkins-dev commented Apr 27, 2023

Absolutely, I think though that the Source trait would need to expose some sort of explicit skip frame function, so that the underlying file readers can safely jump through the audio file without attempting to decode the audio along the way...

@dag-h
Copy link

dag-h commented Apr 27, 2023

My solution to this was making my own Source impl that used seek on the Symphonia reader to skip forward, which was pretty much instantaneous.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants