Opened 3 years ago
Last modified 3 years ago
#2383 new defect
mplayer only uses 1/4 of window for video on MacOS 12.2.1
Reported by: | alex | Owned by: | beastd |
---|---|---|---|
Priority: | normal | Component: | undetermined |
Version: | unspecified | Severity: | critical |
Keywords: | Cc: | alex | |
Blocked By: | Blocking: | ||
Reproduced by developer: | no | Analyzed by developer: | no |
Description (last modified by )
Summary of the bug:
When playing a video with version 1.5-13.0.0
on MacOS 12.2.1 only a fourth of the actual video is shown. 3/4 of the mplayer window is black:
https://i.stack.imgur.com/EUvYo.jpg
This seems to be the case for any video file (mkv, mp4, ...).
This also happens for a new user on the Mac.
Change History (13)
comment:1 by , 3 years ago
Description: | modified (diff) |
---|
comment:2 by , 3 years ago
comment:3 by , 3 years ago
Here is the command line output when playing a video file showing just 1/4 of the screen:
$ mplayer test.mkv MPlayer 1.5-13.0.0 (C) 2000-2022 MPlayer Team Can't init Apple Remote. Playing test.mkv. libavformat version 59.17.102 (internal) libavformat file format detected. [lavf] stream 0: video (h264), -vid 0 [lavf] stream 1: audio (ac3), -aid 0, -alang eng [lavf] stream 2: subtitle (srt), -sid 0, -slang eng, English VIDEO: [H264] 720x480 0bpp 23.976 fps 0.0 kbps ( 0.0 kbyte/s) [gl] using extended formats. Use -vo gl:nomanyfmts if playback fails. ========================================================================== Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family libavcodec version 59.21.100 (internal) Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264) ========================================================================== Clip info: encoder: libebml v1.0.0 + libmatroska v1.0.0 creation_time: 2010-08-29T20:12:47.000000Z Load subtitles in ./ ========================================================================== Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders [ac3 @ 0x105c02f70]Channel layout '5.1(side)' with 6 channels does not match specified number of channels 2: ignoring specified channel layout AUDIO: 48000 Hz, 2 ch, floatle, 448.0 kbit/14.58% (ratio: 56000->384000) Selected audio codec: [ffac3] afm: ffmpeg (FFmpeg AC-3) ========================================================================== AO: [coreaudio] 48000Hz 2ch floatle (4 bytes per sample) Starting playback... Movie-Aspect is 1.33:1 - prescaling to correct movie aspect. VO: [gl_nosw] 720x480 => 720x542 Planar YV12 Fontconfig warning: ignoring UTF-8: not a valid region tag A: 3.4 V: 3.4 A-V: 0.003 ct: 0.001 0/ 0 6% 13% 0.8% 14 0
comment:4 by , 3 years ago
I definitely can't reproduce. Running 12.2.1 on an M1 MacBook Air.
Does anything change if you switch to fullscreen? To fullscreen and back?
Any other ideas why it might work for me and not for you?
Have you/can you try latest SVN, just in case?
Could it be that your MPlayer version is compiled with a setting of macOS max version older than 10.7 (MAC_OS_X_VERSION_MAX_ALLOWED < 1070)?
Proper retina support is not possible if forcing compatibility with 10.6 or older, I'd say only PowerPC builds should do that.
comment:5 by , 3 years ago
When switching to fullscreen and back: The same. 1/4 of screen only shown.
Of course if could be compiled with some incorrect setting. How do I recompile mplayer from scratch?
comment:6 by , 3 years ago
If you have a compiler installed, just
./configure && make
is enough, see also http://mplayerhq.hu/DOCS/HTML/en/features.html
But if I understand you right that you did not compile MPlayer yourself, it might be easier to tell me where you got it from and I can investigate?
comment:7 by , 3 years ago
I do not know how I created mplayer
or how I did install it. I did not write it down. Can I find how that has been created? I just need a command line version...
Also, where do I have to do ./configure && make
? I guess I have to download the source code somewhere. This does not seem to be described properly in the link you added. Maybe you can be VERY SPECIFIC and list EVERY SINGLE command? That would be useful!
comment:8 by , 3 years ago
If you run
which mplayer
that would tell where it was installed, which might tell where you got it from.
More detailed compilation instructions are here, but not sure how great they are if you never did it (and as said on macOS you need to have XCode installed):
http://mplayerhq.hu/DOCS/README
Short version:
Download http://mplayerhq.hu/MPlayer/releases/MPlayer-1.5.tar.xz
extract with "tar xf MPlayer-1.5.tar.xz"
Go into MPlayer-1.5 directory
Then run the
./configure && make -j8
./mplayer
But as said there's a lot that can go wrong if you do it the first time...
comment:9 by , 3 years ago
Thanks a lot for the precise instructions!
With configure
and make
I was able to compile mplayer
in that folder.
But when I use it with a video I get the exact same issue again: Only 1/4 of the mplayer
window is filled with the video. 3/4 of mplayer
's screen stays black. I am absolutely sure to use the newly compiled version...
comment:10 by , 3 years ago
Maybe that is something specific to Intel Macs? Can't test it then.
You could try applying below patch.
If you don't know how to apply a patch, you can do the changes manually.
Open the file libvo/osx_objc_common.m , delete all lines with
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
also the corresponding #endif that is a few lines later for each.
(in the patch I also removed the "if" lines with respondsToSelector but that should not be necessary really)
Index: libvo/osx_objc_common.m
===================================================================
--- libvo/osx_objc_common.m (revision 38361)
+++ libvo/osx_objc_common.m (working copy)
@@ -142,10 +142,7 @@
NSScreen *screen_handle = [self fullscreen_screen];
NSRect screen_frame = [screen_handle frame];
NSSize size = screen_frame.size;
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
- if ([self respondsToSelector:@selector(convertSizeToBacking:)])
size = [self convertSizeToBacking:size];
-#endif
vo_screenwidth = size.width;
vo_screenheight = size.height;
xinerama_x = screen_frame.origin.x;
@@ -225,10 +222,7 @@
Also flip vo_dy since the screen origin is in the bottom left on OSX.
[self update_screen_info];
NSPoint topleft = NSMakePoint(vo_dx, 2*xinerama_y + vo_screenheight - vo_dy);
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
- if ([self respondsToSelector:@selector(convertPointFromBacking:)])
topleft = [self convertPointFromBacking:topleft];
-#endif
[window setFrameTopLeftPoint:topleft];
vo_fs = flags & VOFLAG_FULLSCREEN;
@@ -255,10 +249,7 @@
[super reshape];
NSRect frame = [self frame];
NSSize size = frame.size;
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
- if ([self respondsToSelector:@selector(convertSizeToBacking:)])
size = [self convertSizeToBacking:size];
-#endif
vo_dwidth = size.width;
vo_dheight = size.height;
event_flags |= VO_EVENT_RESIZE;
@@ -415,10 +406,7 @@
[self update_screen_info];
NSSize size = { vo_screenwidth, vo_screenheight };
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
- if ([self respondsToSelector:@selector(convertSizeFromBacking:)])
size = [self convertSizeFromBacking:size];
-#endif
[window setFrame:NSMakeRect(xinerama_x, xinerama_y, size.width, size.height) display:YES animate:animate]; zoom-in window with nice useless sfx
old_view_frame = [self bounds];
comment:11 by , 3 years ago
Thanks you so much, reimar,
this seem to have fixed the problem!
However, the if clause I had to remove were not
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
but rather
#ifndef POWER
But if they were in the same placesI figured that are the clauses to remove.
I also checked it with different video formats, it all seems to work now!
Thanks a lot again!!
comment:12 by , 3 years ago
Ok, that's real annoying/embarassing, it seems I forgot to merge the (last-minute) fix for that to the release branch (or maybe I didn't do it on purpose because it was last-minute).
Then the real problem is that the #ifndef is POWER which for some silly reason ends up defined on x86.
comment:13 by , 3 years ago
Should we cherry pick the fix onto the 1.5 branch and make a new point release?
This should be fixed in 1.5, are you absolutely sure it is 1.5 or newer you are running?
Also which vo is this using (provide a log file if you don't know).
Lastly, this should not depend on OS version, it should depend on whether you are using a retina display or not.