Video Zoom
Home › Forums › Feature Suggestions › Video Zoom
- This topic is empty.
-
AuthorPosts
-
November 4, 2010 at 9:48 pm #23216AnonymousInactive
Hi I have looked and don’t think I’ve seen this mentioned. I would love to see a zoom feature implemented into the video player part of WiiMC. I am watching old TV programs or Movies that are a square picture and would like to drag the picture closer and cut the top and bottom off a little and push the black bars off the sides (have picture covering whole screen). I am also running into movies that have black bars on top and bottom and would like to drag the picture closer and cut the sides off a bit. Basically a realtime feature using (Nunchuk?), that allows you to grab the center of the screen and perform a slow zoom in/out, that doesn’t effect video position or aspect ratio. I am assuming because the Wii is only 480p, you should be able to get some zoom out of it before any noticable picture quality problems start happening. Also zoom presets would be cool, “I think I’ll have a gilligan’s island marathon, better select (4:3 to HD Zoom preset) in my WiiMC zoom menu first. 😆
Thanks for your time: WiiMC is awesome…….
November 4, 2010 at 10:48 pm #27508cadbuscaParticipantIMHO your problem is no different than those watching 4:3 TV on 16:9 TVs (black bars at sides), or those watching 2.35 movies on 16:9 TV (black bars at top and bottom) or those shows with black all around. Perhaps other TV’s are incapable of handling these common problems, but my SONY, has “full” for stretching 4:3 proportionately horizontal and “wide zoom” for stretching only the sides to fill the screen with letterbox, and “zoom” to move in closer which fills the screen when black all around or with 2.35(although as you note the sides get cut off). Check yours out.
November 4, 2010 at 11:20 pm #27509rodriesKeymasterThe scaling your TV does will look better than anything WiiMC does.
November 5, 2010 at 12:03 am #27510AnonymousInactiveHi, thanks for the quick replies guys. Currently I have a 42″ TOSHIBA LCD that is on it’s last legs, and the zoom/aspect ratio options on it really suck. I am going to get a new 46″ SAMSUNG LCD soon to replace it, hopefully I’ll have better luck with the zoom options on the samsung.
Thanks for getting back to me 🙂
timerider….November 5, 2010 at 9:02 am #27511AnonymousInactiveI would like a feature like this too. Is it possible to put the mplayer panscan setting in the GUI like in mplayer-ce or put it as a wiimote button input?
November 5, 2010 at 7:10 pm #27512AnonymousInactiveHi everybody,
I think that the zooming capability is quite useful feature.
Here my proposal: use the B button as a toggle, for switching the function of the D-pad among FF,REW,… and Zoom increment/decrement.
Here the implementation (based on svn rev.684):
input.cpp, line 25
#include "mplayer/osdep/gx_supp.h"
input.cpp, line 131
/****************************************************************************
* MPlayerInput
***************************************************************************/
void MPlayerResize(float fZoomHorIncr, float fZoomVertIncr)
{
if(!wiiIsPaused())
{
WiiSettings.videoZoomHor += fZoomHorIncr;
WiiSettings.videoZoomVert += fZoomVertIncr;
GX_SetScreenPos(WiiSettings.videoXshift, WiiSettings.videoYshift,
WiiSettings.videoZoomHor, WiiSettings.videoZoomVert);
wiiReinitMPlayerVideo();
}
}
void MPlayerInput()
{
bool ir = false;
bool inDVDMenu = wiiInDVDMenu();
static bool volumeUpdated = false;
static bool BtnsBToogle = false;
if(userInput[0].wpad->ir.valid)
ir = true;
if(userInput[0].wpad->btns_d & WPAD_BUTTON_1)
osdLevel ^= 1;
else if(ExitRequested || userInput[0].wpad->btns_d & WPAD_BUTTON_HOME)
wiiGotoGui();
if(userInput[0].wpad->btns_d & WPAD_BUTTON_B)
BtnsBToogle ^= 1;
if(!inDVDMenu)
{
if(userInput[0].wpad->btns_d & WPAD_BUTTON_A)
{
// Hack to allow people to unpause while the OSD GUI is visible by
// pointing above the button bar and pressing A. We also need to be outside
// the boundaries of the volume bar area, when it is visible
int x = userInput[0].wpad->ir.x;
int y = userInput[0].wpad->ir.y;
int xoffset = 20;
if(screenwidth == 768)
xoffset = 80;
if(!drawGui || (y < 360 &&
(!VideoVolumeLevelBarVisible() || !(x > xoffset && x 180))))
{
wiiPause();
}
}
else if(userInput[0].wpad->btns_d & WPAD_BUTTON_RIGHT)
{
if (BtnsBToogle)
MPlayerResize(+0.01F, 0.00F);
else
wiiFastForward();
}
else if(userInput[0].wpad->btns_d & WPAD_BUTTON_LEFT)
{
if (BtnsBToogle)
MPlayerResize(-0.01F, 0.00F);
else
wiiRewind();
}
else if(userInput[0].wpad->btns_d & WPAD_BUTTON_UP)
{
if (BtnsBToogle)
MPlayerResize(0.00F, +0.01F);
else
{
if(!wiiIsPaused())
wiiSetProperty(MP_CMD_SUB_SELECT, -2);
}
}
else if(userInput[0].wpad->btns_d & WPAD_BUTTON_DOWN)
{
if (BtnsBToogle)
MPlayerResize(0.00F, -0.01F);
else
{
if(!wiiIsPaused())
wiiSetProperty(MP_CMD_SWITCH_AUDIO, -1);
}
}
else if(userInput[0].wpad->btns_h & WPAD_BUTTON_PLUS)
{
volnow = gettime();
if(diff_usec(volprev, volnow) > VOL_DELAY)
{
volprev = volnow;
WiiSettings.volume++;
if(WiiSettings.volume > 100) WiiSettings.volume = 100;
wiiSetVolume(WiiSettings.volume);
volumeUpdated = true;
ShowVideoVolumeLevelBar();
}
}
else if(userInput[0].wpad->btns_h & WPAD_BUTTON_MINUS)
{
volnow = gettime();
if(diff_usec(volprev, volnow) > VOL_DELAY)
{
volprev = volnow;
WiiSettings.volume--;
if(WiiSettings.volume < 0) WiiSettings.volume = 0;
wiiSetVolume(WiiSettings.volume);
volumeUpdated = true;
ShowVideoVolumeLevelBar();
}
}
if(userInput[0].wpad->btns_d & WPAD_BUTTON_2)
wiiDVDNav(MP_CMD_DVDNAV_MENU);
}
else
{
if(userInput[0].wpad->ir.valid)
wiiUpdatePointer((int)userInput[0].wpad->ir.x, (int)userInput[0].wpad->ir.y);
if(userInput[0].wpad->btns_d & WPAD_BUTTON_A)
{
if(userInput[0].wpad->ir.valid)
wiiDVDNav(MP_CMD_DVDNAV_MOUSECLICK);
else
wiiDVDNav(MP_CMD_DVDNAV_SELECT);
}
if(userInput[0].wpad->btns_d & WPAD_BUTTON_UP)
{
if (BtnsBToogle)
MPlayerResize(0.00F, +0.01F);
else
wiiDVDNav(MP_CMD_DVDNAV_UP);
}
else if(userInput[0].wpad->btns_d & WPAD_BUTTON_DOWN)
{
if (BtnsBToogle)
MPlayerResize(0.00F, -0.01F);
else
wiiDVDNav(MP_CMD_DVDNAV_DOWN);
}
else if(userInput[0].wpad->btns_d & WPAD_BUTTON_RIGHT)
{
if (BtnsBToogle)
MPlayerResize(+0.01F, 0.00F);
else
wiiDVDNav(MP_CMD_DVDNAV_RIGHT);
}
else if(userInput[0].wpad->btns_d & WPAD_BUTTON_LEFT)
{
if (BtnsBToogle)
MPlayerResize(-0.01F, 0.00F);
else
wiiDVDNav(MP_CMD_DVDNAV_LEFT);
}
}
if(volumeUpdated)
{
volnow = gettime();
if(volnow > volprev && diff_usec(volprev, volnow) > VOLDISP_MAX)
volumeUpdated = false;
else
ir = true; // trigger display
}
if(ir || BufferingStatusSet() || osdLevel)
{
drawGui = true;
}
else if(drawGui)
{
drawGui = false;
HideVideoVolumeLevelBar();
ShutoffRumble();
}
}
wiimc.h, line 82:
void wiiReinitMPlayerVideo();
mplayer/mplayer.c, line 5250:
oid wiiReinitMPlayerVideo()
{
reinit_video();
}
I’m not an expert wii homebrew developer, so I’m not so sure that the reinit_video() is totally safe without stopping the player. But probably I’m lucky and it seems to work 😀
November 20, 2010 at 6:05 am #27513rodriesKeymasterreinit_video is total overkill for what needs to be done. I’ve made a few changes to the patch (eg: now you have to hold B and use the arrow keys to resize) but in general the idea is sound so I’ve committed it.
Thanks for the contribution!
November 20, 2010 at 3:36 pm #27514AnonymousInactiveHold B and use the arrows for resizing was also my first idea, but I didn’t know how to catch the hold signal: now I know what the btns_h variable is for 😀
Happy to know that my (very very small) contribution helps to improve wiimc.December 18, 2010 at 9:17 pm #27515AnonymousInactiveHi there! Thanks clava for the code and to the WiiMC for adding it to the latest WiiMC update.
So, I’m now able to stretch/shrink the screen vertically & horizontally by holding the ‘B’ button and pressing the arrow keys, but unless I haven’t been able to figure it out, there is no ‘reset zoom’ button press function, is there? This I think would be useful feature.
I have 2 workaround ideas:
– ‘double-tap of B button’ to reset the zoom
Is that even possible?
– on-screen display of current width(w) & height(h) zoom percentages while the screen is being resized
ex: “h: 99%, w:90%”
This would allow users to revert to original h:100%, w:100% manually without the need for a new ‘reset’ button assignment. When the user lets go of ‘B’, the w%/h% display should disappear.What do you think?
December 18, 2010 at 9:29 pm #27516rodriesKeymasterThe second idea isn’t bad.
December 19, 2010 at 6:33 pm #27517AnonymousInactiveThe OSD of the actual zoom is a good idea!
This could also open the possibility of having multi-function D-pad. The B button (pressed alone) could be used to cycle through a set controls, for instance:
– ff, rew, subtitle, audio stream
– zoom
– pan
– audio delay, subtitle size (as in jhb50 enanchment pack)
…As we say… the appetite comes with eating 😀
December 20, 2010 at 12:30 am #27518cadbuscaParticipantI looked at this but it is impractical without a pop up OSD. In the absence of that I used rumble when audio delay changed to zero.
-
AuthorPosts
- You must be logged in to reply to this topic.