I have an app that works great on original Kindle Fire but very poorly on the Kindle Fire HD (7"). A main feature of the app is that it displays a jpg, and then when the user touches the jpg a movie starts playing whose first frame is the same as the jpg. Here are three reasons why this doesn't work on the HD: 1) The movie (which is an mp4 loaded with the app) takes WAY longer to start playing than on the original Kindle Fire. Like over half a second, while on the original Fire it was under 250ms. This makes for a very sluggish user experience. 2) When the movie player starts, the screen gets noticeably brighter. When the movie player stops, it goes back to the original brightness. This happens to the entire screen even if the movie is covered by something, and even if the movie doesn't take up the whole screen. This means that the jpg and the first frame of the movie no longer match. 3) The movie is very slightly stretched vertically, so that a bit of the bottom of it goes off the screen. Since my code works fine on a large variety of screens and aspect ratios and so forth on other devices, I'm guessing this is some sort of roundoff error in the KF HD movie player code. Again this means the jpg and movie don't match. Would love to release for the HD but it doesn't seem possible. Any suggestions appreciated.
Hi David, As per Kindle Fire documentation "The video-centric apps with fullscreen playback must be at least 24 frames per second and at least 720p in video-focused apps". However, we are following up on your question, and we will update this thread once we have an update. For more information on Kindle Fire, please refer -
https://developer.amazon.com/sdk/fire/optimize-graphics.html Thank you.
Hi David, Sorry for delay in getting back to your questions. We got update for two of your issues and please find them below, 1) The team tested videos on the Kindle Fire HD and Kindle Fire that match the developer's video - 1280 by 800 resolution, 30 FPS. The team did notice a difference in startup time of the video - the Fire HD did take longer to start playback. In a way, this makes sense - the Fire HD has a higher resolution screen so there is more information in each frame to deal with, so more processing time is required per frame. In addition, the devices have different processors, drivers, etc...so identical behavior is not expected. The team is still looking into ways to mitigate this behavior in your instance. As soon as we got response from the team, we will update this thread. It's worth noting that since the Fire HD is higher resolution, the video should look better (the video has to be scaled down on the original Kindle Fire). 2) The team believes they have identified the cause of this behavior, and are researching potential workarounds. As soon as we got response, we will update this thread. 3) This issue was not reproduced in the team's tests - but we do not have the exact code, nor video. Our best guess is that the soft keys/menus are not being accounted for. There is good advice here:
https://developer.amazon.com/sdk/fire/cx-guidelines.html The "Fullscreen and Other Screen Modes" section is a good section to pay attention to. Thank you.
Thanks very much for looking into this. If and when I can borrow an HD again, I'll look into issue #3 and include some code if I still have a problem. Just to clarify: on the Kindle Fire original version I'm using 600x1024 mp4 in a 600x1024 window so it is not rescaled. My goal was to exactly match the full screen of the device. The 20px bar at the bottom covers the bottom 20 pixels of the video, which is fine. Similarly, at least I thought I was running an 800x1280 video in an 800x1280 window on the HD. (When I say 800x1280 window I mean: those values were coded in.) Since jpgs were done the same way, it is weird that they would be different. But something may have gone wrong with my code. As I said: my borrowed HD had to be returned so can't check just now.
Hi David, Thanks for your patience. We got an update on #2 issue and the team confirmed that this is intentional and is a feature of the Kindle Fire HD screen. It is not a feature of the Kindle Fire screen, which is why you don't see that behavior on that device. This behavior is expected, and cannot be disabled on the HD devices. However we have forwarded the feedback of disabling this feature to concerned team. Thanks again.
Thanks for your replies! Eight months later...I am finally looking at Kindle Fire HD again. Nothing is changed, as far as I can tell, despite being on latest software update. I continue to be puzzled by my issue #3. (By the way, the link you gave me for that no longer works. I did find some information, but not sure if it was what you had in mind.) I am running in full screen mode, portrait. I set the window sizes manually to 800 x 1280. I display an 800 x 1280 jpg. It looks fine. I play an 800 x 1280 movie, having the same image as the jpg. It is very slightly stretched vertically, so that it very slightly goes off the bottom of the screen. What could possibly be wrong that I am doing? It's full screen mode. (The soft key sticks up over the image at the bottom, as it should.) It works fine on every other device including the old Kindle Fire. Note that this effect is very slight. It's only visible at the bottom of the screen. If you use an appropriate image with sufficient details near the bottom of the screen, you can see the bottom of the image move slightly down when you play the movie. As for the startup speed issue, here is something I notice in the logs. Shortly after playing the movie I get the lines: 08-05 09:27:30.693: I/OMXCodec(109): [OMX.TI.DUCATI1.VIDEO.DECODER] video dimensions are 896 x 1376 08-05 09:27:30.693: I/OMXCodec(109): [OMX.TI.DUCATI1.VIDEO.DECODER] Crop rect is 800 x 1280 @ (0, 0) Now there is a delay, typically 400ms or so (but it varies a lot), and then these lines: 08-05 09:27:31.107: I/OMXCodec(109): [OMX.TI.DUCATI1.VIDEO.DECODER] video dimensions are 896 x 1376 08-05 09:27:31.107: I/OMXCodec(109): [OMX.TI.DUCATI1.VIDEO.DECODER] Crop rect is 800 x 1280 @ (32, 24) What is happening during that time? This seems to me to be the extra time that is taken on the Kindle Fire HD. After that, there is another 120ms to 180ms before the movie starts, which is more in line with other machines like the original Kindle Fire. I have trouble buying that this has to do with the bigger screen size because, after all, this is the HD. It has a faster CPU, etcetera. What is the (0,0) vs the (32,24)? I'm just curious. Does this have to do with some kind of movie-enhancing processing that the Kindle Fire HD is doing? (I ask because: the brightening of the screen when playing a movie seems to be an attempt to do the same sort of thing: enhance the movie-playing experience...at the expense of application developers). As for that brightness issue, you have answered that this is as designed. Oh well. I cannot put my app on this device. Unless I use another movie player like ffmpeg, which I don't know how to do and which would probably take me forever to get to work. Meanwhile, here is something I learned about the original Kindle Fire. There is an issue on movie startup. After sitting idle for three seconds, the audio hardware goes to sleep. If you then prepare a movie, and then play it, at some point it wakes up the audio hardware, which takes some time, and for some reason this seems to cause the movie player to start dropping frames. I've even seen 12 frames dropped. (Meanwhile the movie sync gets a little weird, so that the the time from mp.start() to movie completion is sometimes LESS than the length of the movie!) If you don't wait three seconds and the audio hardware is not asleep, no frames are dropped and the movie starts reliably something like 120-190 ms after doing mp.start(). If the audio hardware were woken up right away, like when you do mp.start() instead of sometime later, I bet this wouldn't happen. The trouble with all these dropped frames, besides missing out on those frames, is: meanwhile the surfaceview is black for an unpredictable length of time. But: who cares, right? Probably no one, but there it is.
Hi, There is a continuous improvement with new hardware and new devices coming up, there always a challenge between higher performance and battery life, The detail observation of yours ,are all taken with respect to brightness on the screen. The Codec team is also working on reducing the delay in reading the file and rendering on the screen. All small action items are taken for making the movie watching in kindle a better experience. We will update on this thread once we have an update.