Maybe VLC could have a bimodal response in order to provide the previous frame feature. If it can jump back a few seconds, great, problem solved. In the scenarios where it can't...
Code: Select all
[
Code: Select all
]
I've read most of this thread and I think I have understood the issues.
I'm almost affraid to say this, but I might have an idea...
I really do believe I could help here.
Why complicate things by figuring out how to go backwards, when it could be done the easy and dumb way, going forward instead?
Hear me out:
User plays the video in whichever format he likes. The video plays as it normally does until the user decides to pause.
From here the user could then presses the "next frame" button. VLC would then transcode the next 15 frames in the background to a (lossless) format that DOES support backward frame navigation.
The user could then navigate forward for 15 frames and then backward within them. What's important to note is that the user CANNOT go backwards from where he paused, and can only navigate from within the 15 frames ahead of the pause.
This solution seems to work for the issues in this thread!
If you have can't resuming because it's impossible to know which frame we are on after the user moved frames? So what, just resume at the same place he paused, as if nothing was changed, end the subroutine and continue.
15 frames is too much? Make it 1 by default and let the user decide.
Hardware decoding acceleration an issue? Make it only available if the user disables acceleration. OR since the video is already paused, it could even be disabled when starting to transcode and re-enabled right before the user resumes the video.
Yeah, this might be more complex than I give it credit, but I believe that the possibility of navigating frames more valuable than acceleration or memory, and I'm sure, as you know, I'm not the only one.
There is one downfall to this and it comes down to: is VLC able to transcode from the current paused frame. I assume it is possible to transcode directly from the data in the GPU buffer but if it's not possible for every format, well, I don't have a solution other than forcing the current frame to become an I-frame (if that's even possible) to speed up the transcoding.
On a side note: Technically the forward frame limit is still limitless, well.. if this solution is dynamic.
This solution needs a "max backward jumps/frames". The user would still have unlimited forward steps but the transcoding would have to be done gradually following the user forward and keeping the backwards limit to the same value (on purpose) making it so it would lower memory and processing without going behind the pause frame.
Point being: 100% of the users that do not want frame-by-frame navigation will have 0 impact by this solution because it is only computing things AFTER the user paused AND then pressed the "next frame" button.
If you don't use it, you won't see it or feel it.
Other than the possibility of this solution being impossible, it's fool proof. It CANNOT affect anyone negatively when deployed: It is opt-in by design, working almost as it's own seperate thing.
Sure it's not the prettiest or most efficient, but It can be implimented in a way that works for every kind of video format (assuming my above assumption) without one's head or computer exploding trying to make the code work for each and every other format.
It gets the job done and being only 15 frames, I can't see how transcoding that runs on the side while paused would cause more issues than it solves. (Technically I can, but I think it's worth a shot.)
I for one would call that a good feature. One I would have no problem using instead of an impossible to make full backward navigation.
It's ALMOST just as good, but outright ALWAYS better than nothing.
On the bright side, it would also satisfy 95% of the comments here and in the ones in the future.
Sorry for the super long message, I sort of tried to keep it breif and detailed.
I am truly trying to help make life a bit easier by giving my input.
Best of luck, hope it helps.
It’s not algorithmically impossible, it’s just not generalizable to all video formats. As evidenced by the fact that several other video players have this functionality and that the developer in this thread ultimately admitted that the issue is that it would be difficult and tedious to implement.a 10+ year-old algorithmically impossible question
Return to “General VLC media player Troubleshooting”
Users browsing this forum: No registered users and 9 guests