RPi-Distro / vlc

GNU General Public License v2.0
41 stars 4 forks source link

VLC fails to rotate vertical video from smartphone #106

Open Botspot opened 6 months ago

Botspot commented 6 months ago

This is a standard vertical video taken from a smartphone. https://drive.google.com/file/d/1Czpn4BOzt3GpAwljFzMN83GO2elWYce_/view?usp=sharing I am fairly sure that these used to play correctly on VLC. It uses the right dimensions of a vertical video, but the video itself was not rotated to match, causing it to be stretched.

Expected playback result: (Playing the same video after converting it to MP4) 20240323_19h36m02s_grim Actual playback result: 20240323_19h34m05s_grim

Command line output:

pi@raspberrypi:~ $ vlc /home/pi/Downloads/IMG_3964.MOV
VLC media player 3.0.20 Vetinari (revision 3.0.20-0-g6f0d0ab126b)
[000000558102e560] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[h264_v4l2m2m @ 0x7f68c4d120] Could not find a valid device
[h264_v4l2m2m @ 0x7f68c4d120] can't configure decoder
[0000007f68c23870] avcodec decoder error: cannot start codec (h264_v4l2m2m)
[0000007f500013f0] wl_dmabuf vout display: <<< Open: I420 1920x1090(1920x1080 @ 0,0 0/0), cfg.display: 1080x1920, source: 1920x1090(1920x1080 @ 0,0 1/1)

To reproduce: Download the file from the Google Drive link. Open it in VLC on PiOS Bookworm. Not sure how long ago this issue has existed. It may have predated the release of Bookworm.

Botspot commented 5 months ago

This now appears to be working. It may have been an update that fixed this, or as a result of my switching from Wayfire to LabWC.

jc-kynesim commented 5 months ago

Possibly both. I did fix various scaling & rotation issues in the last patch, but they did also require the underlying systems to support the rotation.

ykharuzhy commented 2 months ago

Does drm_vout video driver support rotation? I have met the same issue when playing video without of X Window and it still exists at last VLC.

popcornmix commented 2 months ago

DRM does not have rotation support.

jc-kynesim commented 2 months ago

Or to be slightly more accurate (though no more useful), DRM (the API) does support rotation and so does drm_vout however our HVS DRM kernel driver doesn't support 90 or 270 degree rotation (it will do 180). This is due to the HVS not supporting it directly. MMAL/OMX did support 90 degree rotation but the extra h/w block required to do that isn't available to the HVS DRM driver.

ykharuzhy commented 2 months ago

As I remember, ffplay plays video in correct orientation. It rotates it by software?

jc-kynesim commented 2 months ago

Yes

Geektoolkit commented 3 days ago

If I understand this correctly, if I'm using VLC then I can't rotate video 90 or 270 after the Bullseye update? I'm running into video rotation issues when using VLC fullscreen after rotating the video in x11 using xrandr (OS is at 90, video plays at orientation 0 as if it is ignoring the rotation). I saw this in Bullseye and thought it was just bugs being worked out, but now still seeing it on Bookworm. We built a digital photo frame on top of a raspberry pi and have been stuck on Raspbian Buster due to this.

jekhor commented 3 days ago

@Geektoolkit rotation works in X11/Wayland session in bookworm.

Geektoolkit commented 3 days ago

That's not what I'm seeing since Bullseye. If you rotate the screen in x11 using xrandr so the Operating system operates in portrait, then launch a video in vlc in a window, it orients ok. But if you full screen it...it breaks rotation and the video plays at whatever would be 'normal' according to xrandr. I just did sudo apt upgrade/update and sudo apt upgrade vlc. It says I'm on the latest

vlc is already the newest version (1:3.0.21-0+rpt2+deb12u1).

Am I using it wrong, or is there a setting or something I can change there?

Botspot commented 3 days ago

Try arandr instead of xranrdr.

jekhor commented 3 days ago

That's not what I'm seeing since Bullseye. If you rotate the screen in x11 using xrandr so the Operating system operates in portrait, then launch a video in vlc in a window, it orients ok. But if you full screen it...it breaks rotation and the video plays at whatever would be 'normal' according to xrandr. I just did sudo apt upgrade/update and sudo apt upgrade vlc. It says I'm on the latest

vlc is already the newest version (1:3.0.21-0+rpt2+deb12u1).

Am I using it wrong, or is there a setting or something I can change there?

I use VLC to play videos in fullscreen mode but without of rotating entire screen by xrandr. I didn't try to set rotation explicitly but vertical-recorded videos from phone are played normally (they encoded as horizontal but have rotation set in the metadata).