Request: Add an Instant Transition [SOLVED]
-
@Hex I don't have one, but I notice similar regular CPU consumption (unsure if at 60%, but certainly not idle) when emulationstation is idle. I haven't read your code but from what you described you're avoiding refreshing the screen - including reading and processing the textures - unless there's an input. That's a wise change, as very little of it is animated. You probably have a few seconds of buffer to accommodate animations, inferring from the fact that videos play for a few seconds.
The reasons video views would need to be refreshed is because they are rendered in a normal texture, so if emulationstation doesn't refresh the screen it won't render more frames.
But for the time being that's the only exception that comes to mind.
-
@pjft said in Request: Add an Instant Transition:
@Hex would you consider bringing your changes over to the main repository? The optimizations could come either as a compilation option (if compiled on a pi zero or 1), emulationstation option (for users to select) and/or command line option (and have RetroPie Setup add that option on a pi zero or 1 to the emulationstation startup script).
The rest could come as normal options for everyone.
I suspect that'd be the best to avoid fragmentation, bring your work to a wider audience and bring another good emulationstation developer to the project.
Do consider that. Happy to help.
Also, you could certainly make videos work by forcing the screen to refresh in the video view only, which I agree isn't needed for anywhere else on emulationstation as everything is static.
Oh, and that won't be an issue with OMX player, as rendering is handled in a separate process.
Still, good work!
@pjft Can you update the clone and test it? I have set it to disable powersavings if Videos are present.
-
@Hex I haven't tested it yet, but I don't think the power saver flag is going to work properly. On startup,
getGameListView
is called for each system and the view is cached. As implemented, I believe the power saver flag will be set based on the last view created vs. the current view. Instead of setting and returning a boolean, you could test the name ofmCurrentView
to see if it isvideo
. -
@TMNTturtlguy I agree changing the view transition style shouldn't effect the animation in the carousel itself.
-
@jdrassa Can you test it. I dont have Videos so i cant test it. I will change the implementation if it doesn't work
-
@Hex I will try to get it tested in the next couple of days will report back.
-
@Hex did you make changes to the carousel transition or just the video playback? Thanks
-
@TMNTturtlguy power savings is suspended if Game lists have video. I also want to see what jdrassa meant that all views are cached.
-
@Hex I just reinstalled your ES build and did not notice much a change in the video. It may play for about a second longer than it did before, but it still stalls out after 2-3 seconds. Thanks
-
@TMNTturtlguy Can you send me the video preview files/gamelists and a small how to so i can get video preview set up and testing
-
@Hex I can't send you any files, but I can tell you how to set it up.
-
create a gamelist for a rom you have that looks like this. You can just copy this and use it in your current game list for whatever system you have. Replace "romnamehere" with the exact name of the rom you have, also make sure the extension matches, like .zip or .nes. Make sure the vidoe .mp4 name matches exactly with the name in the gamelist. Place your video in a folder named "downloaded_images"
<game id="" source=""> <path>./romnamehere.zip</path> <name>romnamehere</name> <desc /> <image>./downloaded_images/name.png</image> <marquee>./downloaded_images/name.png</marquee> <video>./downloaded_images/name.mp4</video> <releasedate /> <developer /> <publisher /> <genre /> </game>
-
place the gamelist.xml in your rom folder for that system.
-
create a folder named "downloaded_images" in your rom folder for that system and place the .mp4 video file in that folder.
Use a theme with video preview. Carbon is a light weight theme that has video enabled. You can update it from the retropie menu just to be sure you have the most recent copy.
Restart ES and now when you go to the system with the rom and gamelist, the view will automatically open to video view. You should see the .mp4 playing when the game is highlighted. Please note you will want to have a video that is fairly small a resolution of 320x240 at 30fps is probably max size.
Hope this helps
-
-
@TMNTturtlguy You running ES on Pi 0,1,2,3 ?
I installed latest from binary (official) and the video stops after 2 secs on Pi 0 and 1. I tried the same on 3 and it runs nicely. I am currently compling it on 3. If it works then it is a playback performance issue.
-
@Hex I am on a pi 3
-
@TMNTturtlguy I tested it on Rpi 3 now and it is working. I had some git troubles and that might be the issue. Can you
git pull
andmake
again and let me know. -
@jdrassa said in Request: Add an Instant Transition:
@Hex I haven't tested it yet, but I don't think the power saver flag is going to work properly. On startup,
getGameListView
is called for each system and the view is cached. As implemented, I believe the power saver flag will be set based on the last view created vs. the current view. Instead of setting and returning a boolean, you could test the name ofmCurrentView
to see if it isvideo
.Now I understand what you mean. Currently my setup is such that if you have even a single video then the power saver is not implemented. I am not going to mess with video back-end as they are implementing OMX player support.
I am trying to figure out where power saver needs to be disable for proper functionality.
-
@Hex I would try to enable it here:
https://github.com/hex007/EmulationStation/blob/master/es-app/src/views/ViewController.cpp#L118That is where the current view is set. The tricker part if figuring out if mCurrentView is a video view. You should be able to check using
getName
, but you will need to cast it first.You will also want to set mPowerSaver to false here, since SystemView does not have video.
https://github.com/hex007/EmulationStation/blob/master/es-app/src/views/ViewController.cpp#L75 -
@jdrassa This was really helpful. I have implemented the changes here.
https://github.com/hex007/EmulationStation/commit/fd613418a04630c64a0e3e58170202f7dafcef9c
mCurrentView
is instance ofGuiComponent
which doesnt havegetName()
getGameListView(system)
returnsIGameListView
(Child ofGuiComponent
) which does.@TMNTturtlguy Thanks for all the help, now you can test what mode it is on in Menu where it shows ES version
-
@Capeman I apologise for hijacking your thread like this.
I have finished incorporating what you wanted. Looks like this
-
@Hex love it!
-
@hex - nice work! The video is now playing perfectly. The Instant and None transitions are realy cool and they both work so well. I am excited to try to build a new theme based on this.
You may want to look into the screensaver on your build. They are not currently working.
Thanks so much for coming up with the new transitions. I now this takes a lot of time. Again, if you have the time and desire, it would be really cool if you submitted a PR to the man branch to incorporate the "instant" and "none" transitions. I know they would be really well recieved by the community.
Great work and have a good weekend. Keep me posted on if you every need any help testing your builds, i have you in my es-tests script, so it is easy for me to do.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.