Request: Add an Instant Transition [SOLVED]
-
@TMNTturtlguy You can test it. Just that I dont know how it might behave. Only two options either the video continues playing or it stops after some time. It certainly wont crash or damage your lists/data
On the plus side if it works I will put it on the Readme that videos work
-
@Hex I just ran through your build. I have to say the theme transition NONE, is pretty slick. My only question is if it would be possible to allow the carousel to still transition. I like the static background, but and the carousel images pop up really fast, so it isn't an issue, but i think it would look really cool if the carousel logos could slide or fade over the static backdrop. As for videos, the videos played for 2 seconds and just paused. No other performance issues, they just paused.
I would seriously consider making a branch of the main ES Build and only incorporating the NONE transition into it. Like I said, if he carousel could still transition, it would be perfect. If you isolate this update and submit a PR, a lot of people would be really excited about it.
Thanks for the awesome work
-
@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!
-
@TMNTturtlguy I will try that tomorrow. Also read ahead.
@pjft If you have a Pi Zero or 1, I would appreciate if you can measure CPU consumption of Emulation station (mine and stock) when doing nothing on Carousel.
ssh into Pi
top
I noticed a constant ~60% usage on the stock on pi zero
-
@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
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.