HDMI outputs 720P display


#1

As I tried to touch: apq8016-sbc.dtsi, msm8916-cdp.dtsi and made adv7533 output 720P.
Yes, I could obtain 720P signal display on my LCD monitor screen.
But still have an issue on bottom of screen for those 3 android menu buttons:“Triangle(Back),Round,Square” are missing.
Is it scaling issue or how we can make display frame buffer scaling down to fit in 720P?

Thanks, Dennis.


#2

I don’t think its a scaling issue. If you notice on the right hand side of the screen when you do this, there is a black bar approximately the correct size for that button bar. You will also notice that it renders the mouse pointer quite normally in this area.

There is something in the Android side of things that is getting messed up when thinking about switching to the alternative (on the side) control bar layout.

I haven’t gotten around to looking into this yet, but one thing you might try, is messing around with the screen density figures, which are used to calculate the physical screen size, which is used to determine the screen layout. /system/build.prop the parameter is “ro.sf.lcd_density=#”. Lower density obviously means larger screen.

The default 720p layout is width in pixels: 1280, physical width: 160mm = 6.299 inches. That puts the default density at 1280/6.299 = 203 dpi. Try something lower, like 160, or 120… even something crazy low like 40.

Note that you have to reboot for the changes to take effect.


#3

Thanks!!, will give a trial.


#4

Confirmed. Knocking the density down to 160 brings the button bar back to the bottom of the screen. Unfortunately, 160 is way too low for my screen, everything turns smartphone size. Make it real fun to click stuff in a car :stuck_out_tongue:


#5

Hi doitright,

After my trials, I set 148 to get correct display on my LCD monitor.
You are right!! it cause by ro.sf.lcd_density as you told.

Thank a lot, Dennis


#6

If you look here, this is the code that is kicking in;
https://www.codeaurora.org/cgit/quic/la/platform/frameworks/base/tree/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java?id=LA.BR.1.2.4-01510-8x16.0#n1719

mNavigationBarCanMove = shortSizeDp < 600;

Basically, on a small screen device, the navigation bar will be permanently affixed to the short edge of the screen. By “move”, it doesn’t actually mean to different parts of the screen physically, it means it can move between “bottom” and “right side” which are defined by how you are holding the device.

So for example, when you hold a portrait cellphone in portrait orientation, the narrow side of the screen is the “bottom”. Rotate it counter-clockwise 90 degrees, and what was once the “bottom” has become the “right”, even though it is physically the same part of the screen.

A “dp” is a density-independent pixel. There are 160 dp’s in an inch, by convention, based on the physical screen resolution of an HTC Dream… since it was the first Android device. So 600 dp = 600/160=3.75 inches. Basically, if the SHORT side of the screen is under 3.75 inches (95.25 mm), then it keeps the nav bar on the short side.

The actual rotation code is in the same file, line 3703.
mNavigationBarOnBottom = (!mNavigationBarCanMove || displayWidth < displayHeight);


#7

Bet you the problem is something really stupid, like something not setting the vertical nav layout to visible:
https://www.codeaurora.org/cgit/quic/la/platform/frameworks/base/tree/packages/SystemUI/res/layout/navigation_bar.xml?h=LA.BR.1.2.4_rb1.8&id=7c1113712b3819bd2a86018cfcb910cda911a36c#n179

I think that usually these things are reset upon a screen rotation, which doesn’t actually happen ever.

For my project, I’m probably just going to hardcode the bar to the right side and set the vertical nav layout visible. I need big and predictable buttons on my project :wink: