[vlc-commits] [Git][videolan/vlc][master] 13 commits: macosx: Add starter classic-style video playback view

Felix Paul Kühne (@fkuehne) gitlab at videolan.org
Wed Sep 17 12:40:55 UTC 2025



Felix Paul Kühne pushed to branch master at VideoLAN / VLC


Commits:
bd0918a5 by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Add starter classic-style video playback view

- - - - -
175d52f7 by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Do not instantiate the video view controller twice

- - - - -
9ef9a3bc by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Add fake titlebar to classic main video view

- - - - -
c754bd18 by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Add settings option to switch between new and classic video player layout

- - - - -
981fa2e2 by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Fix time fields in classic main video view

- - - - -
1623981d by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Add separator line to top of classic main video view bottom bar

- - - - -
4fbbc9e1 by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Fix positioning and showing/hiding of important elements in classic main video view

- - - - -
b7070cfe by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Fix reopening video view not applying constraints as expected in classic mode

- - - - -
623117a7 by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Adjust video view bottom constraints when showing or hiding the controls bar in the classic video view

- - - - -
1800879f by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Add visual effect view background to classic main video view bottom controls bar

- - - - -
37c5330c by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Perform classic main video view constraint change outside animation blocks

- - - - -
29bf33e9 by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Ensure the constraint to the bottom bar top in classic main video view is valid after returning the video view

- - - - -
4f9f2690 by Claudio Cambra at 2025-09-17T11:44:43+00:00
macosx: Do not perform show/hide control procedures when vout view was taken

- - - - -


10 changed files:

- extras/package/macosx/VLC.xcodeproj/project.pbxproj
- modules/gui/macosx/Makefile.am
- modules/gui/macosx/UI/SimplePreferences.xib
- + modules/gui/macosx/UI/VLCClassicMainVideoView.xib
- modules/gui/macosx/main/VLCMain.m
- modules/gui/macosx/preferences/VLCSimplePrefsController.h
- modules/gui/macosx/preferences/VLCSimplePrefsController.m
- modules/gui/macosx/windows/video/VLCMainVideoViewController.h
- modules/gui/macosx/windows/video/VLCMainVideoViewController.m
- modules/gui/macosx/windows/video/VLCVideoWindowCommon.m


Changes:

=====================================
extras/package/macosx/VLC.xcodeproj/project.pbxproj
=====================================
@@ -937,6 +937,7 @@
 		8ED6C28203E2EB1C0059A3A7 /* VLCOpenWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCOpenWindowController.m; sourceTree = "<group>"; };
 		8ED6C28503E2EB1C0059A3A7 /* prefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prefs.h; sourceTree = "<group>"; };
 		8ED6C28603E2EB1C0059A3A7 /* prefs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = prefs.m; sourceTree = "<group>"; };
+		CAA639942E6C914000C9A71D /* VLCClassicMainVideoView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VLCClassicMainVideoView.xib; sourceTree = "<group>"; };
 		CC0663341566C34C003A411C /* VLCConvertAndSaveWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = VLCConvertAndSaveWindowController.h; sourceTree = "<group>"; };
 		CC0663351566C34C003A411C /* VLCConvertAndSaveWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = VLCConvertAndSaveWindowController.m; sourceTree = "<group>"; };
 		CC1941240B9C1F8400635F6B /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = /System/Library/Frameworks/QTKit.framework; sourceTree = "<absolute>"; };
@@ -2188,6 +2189,7 @@
 				536283FA2911476A00640C15 /* VLCLibrarySongTableCellView.xib */,
 				7DE2F0482282D7980040DD0A /* VLCLibraryTableCellView.xib */,
 				534E8E3729A04F95009503F8 /* VLCMainVideoView.xib */,
+				CAA639942E6C914000C9A71D /* VLCClassicMainVideoView.xib */,
 				7D67318322C8F3F60000AD40 /* VLCMediaSourceCollectionViewItem.xib */,
 				7DF14FBC2270CB1C0008ABE4 /* VLCMediaSourceDeviceCollectionViewItem.xib */,
 				530429942DD1ED66004BB598 /* VLCPlaybackEndView.xib */,


=====================================
modules/gui/macosx/Makefile.am
=====================================
@@ -562,6 +562,7 @@ libmacosx_plugin_la_XIB_SOURCES = \
 	gui/macosx/UI/VLCLibraryHeroView.xib \
 	gui/macosx/UI/VLCLibraryHomeViewActionsView.xib \
 	gui/macosx/UI/VLCLibrarySongTableCellView.xib \
+	gui/macosx/UI/VLCClassicMainVideoView.xib \
 	gui/macosx/UI/VLCMainVideoView.xib \
 	gui/macosx/UI/VLCMainVideoViewAudioMediaDecorativeView.xib \
 	gui/macosx/UI/VLCMediaSourceCollectionViewItem.xib \


=====================================
modules/gui/macosx/UI/SimplePreferences.xib
=====================================
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23504" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23727" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23504"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23727"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -157,6 +157,7 @@
                 <outlet property="video_snap_prefixTextField" destination="2474" id="O5Q-MK-Cz3"/>
                 <outlet property="video_snap_seqnumCheckbox" destination="2476" id="Fa0-ZE-QW9"/>
                 <outlet property="video_startInFullscreenCheckbox" destination="5Db-fa-Ffw" id="eK9-Wr-Nym"/>
+                <outlet property="video_useClassicLayoutCheckbox" destination="6yQ-ig-eP0" id="2Yd-Dh-NMh"/>
                 <outlet property="video_videoBox" destination="3722" id="bRq-1u-kBT"/>
                 <outlet property="video_videodecoCheckbox" destination="3728" id="yE0-ry-RZA"/>
                 <outlet property="window" destination="2265" id="mGG-NZ-eoi"/>
@@ -167,7 +168,7 @@
             <windowStyleMask key="styleMask" titled="YES" resizable="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
             <rect key="contentRect" x="105" y="903" width="580" height="620"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1025"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1800" height="1125"/>
             <view key="contentView" id="2266">
                 <rect key="frame" x="0.0" y="0.0" width="580" height="620"/>
                 <autoresizingMask key="autoresizingMask"/>
@@ -176,7 +177,7 @@
                         <rect key="frame" x="0.0" y="44" width="580" height="576"/>
                         <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="ecH-Hh-jJF" customClass="VLCSimplePrefsClipView">
                             <rect key="frame" x="1" y="1" width="578" height="574"/>
-                            <autoresizingMask key="autoresizingMask"/>
+                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                             <subviews>
                                 <view translatesAutoresizingMaskIntoConstraints="NO" id="HOX-DS-Fgr" userLabel="content view">
                                     <rect key="frame" x="0.0" y="0.0" width="578" height="574"/>
@@ -286,10 +287,10 @@ Gw
         </window>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView translatesAutoresizingMaskIntoConstraints="NO" id="2311" userLabel="Interface">
-            <rect key="frame" x="0.0" y="-19" width="597" height="549"/>
+            <rect key="frame" x="0.0" y="0.0" width="597" height="573"/>
             <subviews>
                 <box borderType="line" title="General Settings" translatesAutoresizingMaskIntoConstraints="NO" id="kup-aY-Wqq">
-                    <rect key="frame" x="18" y="397" width="563" height="131"/>
+                    <rect key="frame" x="18" y="421" width="563" height="131"/>
                     <view key="contentView" id="wFl-aV-3Hn">
                         <rect key="frame" x="4" y="5" width="555" height="111"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -352,13 +353,13 @@ Gw
                     </view>
                 </box>
                 <box borderType="line" title="Playback control" translatesAutoresizingMaskIntoConstraints="NO" id="CZP-ZN-k6p">
-                    <rect key="frame" x="18" y="328" width="563" height="65"/>
+                    <rect key="frame" x="18" y="328" width="563" height="89"/>
                     <view key="contentView" id="gj4-zO-E26">
-                        <rect key="frame" x="4" y="5" width="555" height="45"/>
+                        <rect key="frame" x="4" y="5" width="555" height="69"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3919">
-                                <rect key="frame" x="15" y="17" width="117" height="16"/>
+                                <rect key="frame" x="15" y="41" width="117" height="16"/>
                                 <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Continue playback" usesSingleLineMode="YES" id="3923">
                                     <font key="font" metaFont="system"/>
                                     <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -366,7 +367,7 @@ Gw
                                 </textFieldCell>
                             </textField>
                             <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3920">
-                                <rect key="frame" x="144" y="11" width="398" height="25"/>
+                                <rect key="frame" x="144" y="35" width="398" height="25"/>
                                 <popUpButtonCell key="cell" type="push" bezelStyle="rounded" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" id="3921">
                                     <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
                                     <font key="font" metaFont="message"/>
@@ -848,10 +849,10 @@ Gw
             <point key="canvasLocation" x="265.5" y="1003"/>
         </customView>
         <customView translatesAutoresizingMaskIntoConstraints="NO" id="2440" userLabel="Video">
-            <rect key="frame" x="0.0" y="-20" width="582" height="543"/>
+            <rect key="frame" x="0.0" y="0.0" width="582" height="572"/>
             <subviews>
                 <button mirrorLayoutDirectionWhenInternationalizing="always" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2448">
-                    <rect key="frame" x="18" y="506" width="106" height="18"/>
+                    <rect key="frame" x="18" y="535" width="106" height="18"/>
                     <buttonCell key="cell" type="check" title="Enable Video" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="3477">
                         <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
                         <font key="font" metaFont="system"/>
@@ -861,13 +862,13 @@ Gw
                     </connections>
                 </button>
                 <box verticalHuggingPriority="249" title="Display" translatesAutoresizingMaskIntoConstraints="NO" id="2449">
-                    <rect key="frame" x="17" y="358" width="548" height="141"/>
+                    <rect key="frame" x="17" y="358" width="548" height="170"/>
                     <view key="contentView" id="eGM-I9-pBb">
-                        <rect key="frame" x="4" y="5" width="540" height="121"/>
+                        <rect key="frame" x="4" y="5" width="540" height="150"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <button mirrorLayoutDirectionWhenInternationalizing="always" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2452">
-                                <rect key="frame" x="15" y="94" width="218" height="18"/>
+                                <rect key="frame" x="15" y="123" width="218" height="18"/>
                                 <buttonCell key="cell" type="check" title="Show video within main window" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="3479">
                                     <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
                                     <font key="font" metaFont="system"/>
@@ -876,6 +877,16 @@ Gw
                                     <action selector="videoSettingChanged:" target="-2" id="jdL-pA-9Ed"/>
                                 </connections>
                             </button>
+                            <button mirrorLayoutDirectionWhenInternationalizing="always" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6yQ-ig-eP0">
+                                <rect key="frame" x="15" y="95" width="212" height="18"/>
+                                <buttonCell key="cell" type="check" title="Use classic video player layout" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="hMN-gu-1VU">
+                                    <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+                                    <font key="font" metaFont="system"/>
+                                </buttonCell>
+                                <connections>
+                                    <action selector="videoSettingChanged:" target="-2" id="qef-S5-w02"/>
+                                </connections>
+                            </button>
                             <button mirrorLayoutDirectionWhenInternationalizing="always" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2451">
                                 <rect key="frame" x="15" y="11" width="111" height="18"/>
                                 <buttonCell key="cell" type="check" title="Always on top" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="3478">
@@ -923,13 +934,15 @@ Gw
                             <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="rpy-5O-tek" secondAttribute="trailing" constant="17" id="B4h-FQ-7aL"/>
                             <constraint firstItem="2451" firstAttribute="top" secondItem="4a1-oW-HKH" secondAttribute="bottom" constant="12" id="DId-Tv-O07"/>
                             <constraint firstItem="rpy-5O-tek" firstAttribute="leading" secondItem="2452" secondAttribute="leading" id="KNc-3N-uYy"/>
+                            <constraint firstItem="6yQ-ig-eP0" firstAttribute="leading" secondItem="2452" secondAttribute="leading" id="MpH-Rx-aFH"/>
                             <constraint firstItem="2451" firstAttribute="leading" secondItem="rpy-5O-tek" secondAttribute="leading" id="O89-st-t01"/>
+                            <constraint firstItem="6yQ-ig-eP0" firstAttribute="top" secondItem="2452" secondAttribute="bottom" constant="12" id="YMn-dn-aKz"/>
                             <constraint firstItem="2452" firstAttribute="top" secondItem="eGM-I9-pBb" secondAttribute="top" constant="10" id="Zf8-Vt-ftS"/>
                             <constraint firstItem="2452" firstAttribute="leading" secondItem="eGM-I9-pBb" secondAttribute="leading" constant="17" id="dxV-cD-quf"/>
                             <constraint firstAttribute="bottom" secondItem="3728" secondAttribute="bottom" constant="12" id="eDu-6Y-ggq"/>
+                            <constraint firstItem="rpy-5O-tek" firstAttribute="top" secondItem="6yQ-ig-eP0" secondAttribute="bottom" constant="12" id="mON-fs-ju4"/>
                             <constraint firstItem="3728" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="2451" secondAttribute="trailing" constant="17" id="qd2-aN-XVK"/>
                             <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="3728" secondAttribute="trailing" constant="17" id="rDL-Im-FxZ"/>
-                            <constraint firstItem="rpy-5O-tek" firstAttribute="top" secondItem="2452" secondAttribute="bottom" constant="11" id="rH1-SK-emj"/>
                             <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="2452" secondAttribute="trailing" constant="17" id="tZx-bu-85x"/>
                             <constraint firstItem="4a1-oW-HKH" firstAttribute="leading" secondItem="rpy-5O-tek" secondAttribute="leading" id="vPv-oH-IkT"/>
                         </constraints>
@@ -1212,7 +1225,7 @@ Gw
                     </view>
                 </box>
                 <customView hidden="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Hrj-mH-eqd" userLabel="half size helper view">
-                    <rect key="frame" x="291" y="503" width="271" height="23"/>
+                    <rect key="frame" x="291" y="532" width="271" height="23"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="23" id="5d3-4W-bXj"/>
                     </constraints>
@@ -1874,7 +1887,7 @@ Gw
                                 <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
                                 <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
                                 <tableColumns>
-                                    <tableColumn identifier="action" editable="NO" width="297" minWidth="40" maxWidth="1000" id="2671">
+                                    <tableColumn identifier="action" editable="NO" width="282.5" minWidth="40" maxWidth="1000" id="2671">
                                         <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Action">
                                             <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
                                             <color key="backgroundColor" white="0.33333299" alpha="1" colorSpace="calibratedWhite"/>
@@ -1886,7 +1899,7 @@ Gw
                                         </textFieldCell>
                                         <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
                                     </tableColumn>
-                                    <tableColumn identifier="shortcut" editable="NO" width="216" minWidth="8" maxWidth="1000" id="2672">
+                                    <tableColumn identifier="shortcut" editable="NO" width="201.5" minWidth="8" maxWidth="1000" id="2672">
                                         <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Shortcut">
                                             <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
                                             <color key="backgroundColor" white="0.33333299" alpha="1" colorSpace="calibratedWhite"/>
@@ -1958,7 +1971,7 @@ Gw
             <windowStyleMask key="styleMask" titled="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
             <rect key="contentRect" x="433" y="441" width="440" height="170"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1025"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1800" height="1125"/>
             <view key="contentView" id="2678">
                 <rect key="frame" x="0.0" y="0.0" width="440" height="170"/>
                 <autoresizingMask key="autoresizingMask"/>
@@ -2049,7 +2062,7 @@ Gw
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
             <rect key="contentRect" x="340" y="383" width="485" height="254"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1025"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1800" height="1125"/>
             <view key="contentView" id="3746">
                 <rect key="frame" x="0.0" y="0.0" width="485" height="254"/>
                 <autoresizingMask key="autoresizingMask"/>
@@ -2384,7 +2397,7 @@ Gw
                                         </textFieldCell>
                                         <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
                                     </tableColumn>
-                                    <tableColumn editable="NO" width="200" minWidth="40" maxWidth="1000" id="QBg-HT-Vvb">
+                                    <tableColumn editable="NO" width="171" minWidth="40" maxWidth="1000" id="QBg-HT-Vvb">
                                         <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
                                             <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
                                             <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>


=====================================
modules/gui/macosx/UI/VLCClassicMainVideoView.xib
=====================================
@@ -0,0 +1,421 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="23727" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment version="101000" identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="23727"/>
+        <capability name="Image references" minToolsVersion="12.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="VLCMainVideoViewController">
+            <connections>
+                <outlet property="bottomBarView" destination="5hr-Af-mP0" id="btm-bar-view"/>
+                <outlet property="controlsBar" destination="3" id="Mfq-2w-2uR"/>
+                <outlet property="fakeTitleBar" destination="VIa-0w-fl8" id="EvT-Rx-xF4"/>
+                <outlet property="fakeTitleBarHeightConstraint" destination="amB-S5-eDf" id="NFm-6D-mkF"/>
+                <outlet property="floatOnTopIndicatorImageView" destination="CrW-mq-gge" id="hqR-4Z-a18"/>
+                <outlet property="loadingIndicator" destination="xOQ-YR-iAc" id="CtX-Yo-UX2"/>
+                <outlet property="mainControlsView" destination="main-controls-container" id="yal-ql-KOV"/>
+                <outlet property="playQueueButton" destination="Drq-if-dw4" id="BZe-Cr-mzZ"/>
+                <outlet property="playQueueButtonTopConstraint" destination="queue-btn-top" id="93W-Yu-w5Z"/>
+                <outlet property="playQueueButtonTrailingConstraint" destination="queue-btn-trailing" id="NxJ-O5-Qu5"/>
+                <outlet property="returnButton" destination="UoQ-34-Pox" id="nyY-OF-9zj"/>
+                <outlet property="returnButtonLeadingConstraint" destination="return-btn-leading" id="Ax9-Sl-Imd"/>
+                <outlet property="returnButtonTopConstraint" destination="return-btn-top" id="cHZ-kY-t4E"/>
+                <outlet property="videoViewBottomConstraint" destination="video-to-controls" id="video-bottom-constraint"/>
+                <outlet property="view" destination="WRu-Ic-lQK" id="B9p-x5-Kd8"/>
+                <outlet property="voutContainingView" destination="MTR-ds-I8o" id="cim-tb-1lO"/>
+                <outlet property="voutView" destination="mAS-4a-RS8" id="GeX-XO-HYC"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customObject id="3" userLabel="Main Video View Controls Bar" customClass="VLCMainVideoViewControlsBar">
+            <connections>
+                <outlet property="backwardButton" destination="V9d-hX-iyg" id="ZFn-jn-7OB"/>
+                <outlet property="floatOnTopButton" destination="8jZ-hd-YVq" id="x53-4o-LsM"/>
+                <outlet property="forwardButton" destination="sF5-Z0-bef" id="H6w-Le-NAK"/>
+                <outlet property="fullscreenButton" destination="dYZ-ri-Kra" id="Cw2-BS-QG9"/>
+                <outlet property="jumpBackwardButton" destination="AXA-01-AU8" id="gfa-Yt-ezI"/>
+                <outlet property="jumpForwardButton" destination="aAq-uE-mLW" id="M7n-mW-tNe"/>
+                <outlet property="muteVolumeButton" destination="afi-4d-rQk" id="y6R-6o-2OM"/>
+                <outlet property="pipButton" destination="yEi-SZ-SIS" id="vFi-Ln-9lT"/>
+                <outlet property="playButton" destination="PCC-8a-sVF" id="ddT-ZM-Jhz"/>
+                <outlet property="timeField" destination="f4v-2z-dQ1" id="7kP-c4-1Rv"/>
+                <outlet property="timeSlider" destination="qNZ-Fh-W8i" id="Fkk-fj-s5Q"/>
+                <outlet property="trailingTimeField" destination="3ri-8b-8mw" id="vrZ-ps-Gkf"/>
+                <outlet property="volumeSlider" destination="fKc-2d-Uu6" id="2pU-fH-Afo"/>
+            </connections>
+        </customObject>
+        <customView appearanceType="darkAqua" translatesAutoresizingMaskIntoConstraints="NO" id="WRu-Ic-lQK">
+            <rect key="frame" x="0.0" y="0.0" width="1027" height="480"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="MTR-ds-I8o" userLabel="Vout Containing View">
+                    <rect key="frame" x="0.0" y="38" width="1027" height="442"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="mAS-4a-RS8" customClass="VLCVoutView">
+                            <rect key="frame" x="0.0" y="0.0" width="1027" height="442"/>
+                            <constraints>
+                                <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="288" id="BvW-zM-Gro"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="mAS-4a-RS8" firstAttribute="leading" secondItem="MTR-ds-I8o" secondAttribute="leading" id="2Ha-xU-Dz8"/>
+                        <constraint firstAttribute="trailing" secondItem="mAS-4a-RS8" secondAttribute="trailing" id="3hD-hq-Q3C"/>
+                        <constraint firstItem="mAS-4a-RS8" firstAttribute="top" secondItem="MTR-ds-I8o" secondAttribute="top" id="NhJ-5W-ZqG"/>
+                        <constraint firstAttribute="bottom" secondItem="mAS-4a-RS8" secondAttribute="bottom" id="xjG-dc-nlA"/>
+                    </constraints>
+                </customView>
+                <box boxType="custom" borderType="none" borderWidth="0.0" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="main-controls-container">
+                    <rect key="frame" x="0.0" y="0.0" width="1027" height="480"/>
+                    <view key="contentView" id="main-controls-content">
+                        <rect key="frame" x="0.0" y="0.0" width="1027" height="480"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <visualEffectView blendingMode="withinWindow" material="titlebar" state="followsWindowActiveState" translatesAutoresizingMaskIntoConstraints="NO" id="VIa-0w-fl8">
+                                <rect key="frame" x="0.0" y="480" width="1027" height="0.0"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" id="amB-S5-eDf"/>
+                                </constraints>
+                            </visualEffectView>
+                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="UoQ-34-Pox">
+                                <rect key="frame" x="20" y="431" width="22" height="29"/>
+                                <shadow key="shadow" blurRadius="2">
+                                    <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                </shadow>
+                                <buttonCell key="cell" type="recessed" bezelStyle="recessed" imagePosition="only" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="CU4-UE-tsW">
+                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                    <font key="font" metaFont="system"/>
+                                    <imageReference key="image" image="NSLeftFacingTriangleTemplate" symbolScale="large"/>
+                                </buttonCell>
+                                <color key="contentTintColor" red="0.99999600649999998" green="1" blue="1" alpha="0.85338267140000001" colorSpace="custom" customColorSpace="sRGB"/>
+                                <connections>
+                                    <action selector="returnToLibrary:" target="-2" id="rnL-S1-zSR"/>
+                                </connections>
+                            </button>
+                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Drq-if-dw4">
+                                <rect key="frame" x="976" y="431" width="31" height="29"/>
+                                <shadow key="shadow" blurRadius="2">
+                                    <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                </shadow>
+                                <buttonCell key="cell" type="recessed" bezelStyle="recessed" imagePosition="only" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="VDP-ql-lW8">
+                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
+                                    <font key="font" metaFont="system"/>
+                                    <imageReference key="image" image="NSListViewTemplate" symbolScale="large"/>
+                                </buttonCell>
+                                <color key="contentTintColor" red="0.99999600649999998" green="1" blue="1" alpha="0.85338267140000001" colorSpace="custom" customColorSpace="sRGB"/>
+                                <connections>
+                                    <action selector="togglePlayQueue:" target="-2" id="WrP-vg-etw"/>
+                                </connections>
+                            </button>
+                            <stackView distribution="fill" orientation="horizontal" alignment="top" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="CjJ-z0-ITu">
+                                <rect key="frame" x="478" y="224" width="72" height="32"/>
+                                <subviews>
+                                    <progressIndicator maxValue="100" indeterminate="YES" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="xOQ-YR-iAc">
+                                        <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
+                                    </progressIndicator>
+                                    <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="CrW-mq-gge">
+                                        <rect key="frame" x="40" y="-6.5" width="32.5" height="45"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="32" id="wyi-7y-I1n"/>
+                                            <constraint firstAttribute="height" constant="32" id="yeS-Wi-3sX"/>
+                                        </constraints>
+                                        <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" id="OcH-tO-P80">
+                                            <imageReference key="image" image="pin.fill" catalog="system" symbolScale="large"/>
+                                        </imageCell>
+                                    </imageView>
+                                </subviews>
+                                <visibilityPriorities>
+                                    <integer value="1000"/>
+                                    <integer value="1000"/>
+                                </visibilityPriorities>
+                                <customSpacing>
+                                    <real value="3.4028234663852886e+38"/>
+                                    <real value="3.4028234663852886e+38"/>
+                                </customSpacing>
+                            </stackView>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="5hr-Af-mP0">
+                                <rect key="frame" x="0.0" y="0.0" width="1027" height="38"/>
+                                <subviews>
+                                    <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="sep-line-top">
+                                        <rect key="frame" x="0.0" y="35" width="1027" height="5"/>
+                                    </box>
+                                    <button verticalHuggingPriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="AXA-01-AU8" customClass="VLCImageButton">
+                                        <rect key="frame" x="-1" y="-1" width="48" height="40"/>
+                                        <shadow key="shadow" blurRadius="20">
+                                            <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        </shadow>
+                                        <buttonCell key="cell" type="push" bezelStyle="rounded" image="arrow.trianglehead.counterclockwise" catalog="system" imagePosition="only" alignment="center" controlSize="large" continuous="YES" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="BGU-Ew-pvq">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                        <color key="contentTintColor" red="0.99999600649999998" green="1" blue="1" alpha="0.85338267140000001" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <connections>
+                                            <action selector="jumpBackward:" target="3" id="Kkq-12-jbm"/>
+                                        </connections>
+                                    </button>
+                                    <button verticalHuggingPriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="V9d-hX-iyg" customClass="VLCImageButton">
+                                        <rect key="frame" x="40" y="-1" width="48" height="40"/>
+                                        <shadow key="shadow" blurRadius="20">
+                                            <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        </shadow>
+                                        <buttonCell key="cell" type="push" bezelStyle="rounded" image="backward.fill" catalog="system" imagePosition="only" alignment="center" controlSize="large" continuous="YES" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="fFm-ZG-R1p">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                        <color key="contentTintColor" red="0.99999600649999998" green="1" blue="1" alpha="0.85338267140000001" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <connections>
+                                            <action selector="bwd:" target="3" id="nDS-qm-Htv"/>
+                                        </connections>
+                                    </button>
+                                    <button verticalHuggingPriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="PCC-8a-sVF" customClass="VLCImageButton">
+                                        <rect key="frame" x="81" y="-1" width="48" height="40"/>
+                                        <shadow key="shadow" blurRadius="30">
+                                            <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        </shadow>
+                                        <buttonCell key="cell" type="push" bezelStyle="rounded" image="play.fill" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Jk0-sw-EOp">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                        <color key="contentTintColor" red="0.99999600649999998" green="1" blue="1" alpha="0.85338267136324741" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <userDefinedRuntimeAttributes>
+                                            <userDefinedRuntimeAttribute type="boolean" keyPath="toggle" value="YES"/>
+                                        </userDefinedRuntimeAttributes>
+                                        <connections>
+                                            <action selector="play:" target="3" id="owy-mi-Djp"/>
+                                        </connections>
+                                    </button>
+                                    <button verticalHuggingPriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="sF5-Z0-bef" customClass="VLCImageButton">
+                                        <rect key="frame" x="122" y="-1" width="48" height="40"/>
+                                        <shadow key="shadow" blurRadius="20">
+                                            <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        </shadow>
+                                        <buttonCell key="cell" type="push" bezelStyle="rounded" image="forward.fill" catalog="system" imagePosition="only" alignment="center" controlSize="large" continuous="YES" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="I4n-VO-oYa">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                        <color key="contentTintColor" red="0.99999600649999998" green="1" blue="1" alpha="0.85338267140000001" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <connections>
+                                            <action selector="fwd:" target="3" id="uPX-Xa-CwO"/>
+                                        </connections>
+                                    </button>
+                                    <button verticalHuggingPriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="aAq-uE-mLW" customClass="VLCImageButton">
+                                        <rect key="frame" x="163" y="-1" width="48" height="40"/>
+                                        <shadow key="shadow" blurRadius="20">
+                                            <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        </shadow>
+                                        <buttonCell key="cell" type="push" bezelStyle="rounded" image="arrow.trianglehead.clockwise" catalog="system" imagePosition="only" alignment="center" controlSize="large" continuous="YES" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="V5z-Pf-hj2">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                        <color key="contentTintColor" red="0.99999600649999998" green="1" blue="1" alpha="0.85338267140000001" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <connections>
+                                            <action selector="jumpForward:" target="3" id="5yg-na-tAR"/>
+                                        </connections>
+                                    </button>
+                                    <stackView distribution="fill" orientation="horizontal" alignment="centerY" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LIP-09-gHL">
+                                        <rect key="frame" x="210" y="11" width="561" height="16"/>
+                                        <subviews>
+                                            <textField wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="1000" verticalHuggingPriority="1000" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="f4v-2z-dQ1" customClass="VLCTimeField">
+                                                <rect key="frame" x="-2" y="1" width="79" height="14"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="75" id="8Zz-X6-yY1"/>
+                                                </constraints>
+                                                <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="right" placeholderString="0:00" id="FlV-4J-8Jc">
+                                                    <font key="font" metaFont="smallSystem"/>
+                                                    <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
+                                                    <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                                </textFieldCell>
+                                            </textField>
+                                            <slider verticalHuggingPriority="1000" horizontalCompressionResistancePriority="250" verticalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="qNZ-Fh-W8i" customClass="VLCPlaybackProgressSlider">
+                                                <rect key="frame" x="81" y="-2" width="399" height="20"/>
+                                                <sliderCell key="cell" controlSize="small" continuous="YES" state="on" alignment="left" maxValue="1" tickMarkPosition="above" sliderType="linear" id="dZM-dm-qvL" customClass="VLCPlaybackProgressSliderCell"/>
+                                                <connections>
+                                                    <action selector="timeSliderAction:" target="3" id="W32-wA-rN9"/>
+                                                </connections>
+                                            </slider>
+                                            <textField wantsLayer="YES" focusRingType="none" horizontalHuggingPriority="1000" verticalHuggingPriority="1000" horizontalCompressionResistancePriority="751" translatesAutoresizingMaskIntoConstraints="NO" id="3ri-8b-8mw" customClass="VLCTimeField">
+                                                <rect key="frame" x="484" y="1" width="79" height="14"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="75" id="S9v-aM-nfL"/>
+                                                </constraints>
+                                                <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" placeholderString="0:00" usesSingleLineMode="YES" id="0ya-Dd-ecT">
+                                                    <font key="font" metaFont="smallSystem"/>
+                                                    <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
+                                                    <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                                </textFieldCell>
+                                            </textField>
+                                        </subviews>
+                                        <visibilityPriorities>
+                                            <integer value="1000"/>
+                                            <integer value="1000"/>
+                                            <integer value="1000"/>
+                                        </visibilityPriorities>
+                                        <customSpacing>
+                                            <real value="3.4028234663852886e+38"/>
+                                            <real value="3.4028234663852886e+38"/>
+                                            <real value="3.4028234663852886e+38"/>
+                                        </customSpacing>
+                                    </stackView>
+                                    <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zyp-45-IgR">
+                                        <rect key="frame" x="776" y="5" width="128" height="28"/>
+                                        <subviews>
+                                            <button wantsLayer="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="afi-4d-rQk" customClass="VLCImageButton">
+                                                <rect key="frame" x="-6" y="-6" width="50" height="40"/>
+                                                <buttonCell key="cell" type="push" bezelStyle="rounded" image="speaker.wave.3.fill" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="POe-ne-XtP">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="volumeAction:" target="3" id="GOu-6c-pg9"/>
+                                                </connections>
+                                            </button>
+                                            <slider verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="fKc-2d-Uu6" customClass="VLCVolumeSlider">
+                                                <rect key="frame" x="41" y="6" width="89" height="17"/>
+                                                <sliderCell key="cell" controlSize="mini" continuous="YES" state="on" alignment="left" maxValue="512" doubleValue="50" tickMarkPosition="above" sliderType="linear" id="Gp6-7o-lvj" customClass="VLCVolumeSliderCell"/>
+                                                <connections>
+                                                    <action selector="volumeAction:" target="3" id="soW-Fc-H3Y"/>
+                                                </connections>
+                                            </slider>
+                                        </subviews>
+                                        <constraints>
+                                            <constraint firstAttribute="trailing" secondItem="fKc-2d-Uu6" secondAttribute="trailing" id="85r-h1-eFH"/>
+                                            <constraint firstItem="fKc-2d-Uu6" firstAttribute="centerY" secondItem="zyp-45-IgR" secondAttribute="centerY" id="IYy-2l-SZD"/>
+                                            <constraint firstAttribute="width" constant="128" id="jNA-Wq-ASr"/>
+                                        </constraints>
+                                        <visibilityPriorities>
+                                            <integer value="1000"/>
+                                            <integer value="1000"/>
+                                        </visibilityPriorities>
+                                        <customSpacing>
+                                            <real value="3.4028234663852886e+38"/>
+                                            <real value="3.4028234663852886e+38"/>
+                                        </customSpacing>
+                                    </stackView>
+                                    <stackView distribution="fillEqually" orientation="horizontal" alignment="centerY" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kb6-da-vSR">
+                                        <rect key="frame" x="909" y="5" width="113" height="28"/>
+                                        <subviews>
+                                            <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="yEi-SZ-SIS" customClass="VLCImageButton">
+                                                <rect key="frame" x="-6" y="-6" width="48" height="40"/>
+                                                <buttonCell key="cell" type="push" bezelStyle="rounded" image="pip.enter" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Q7p-GS-7p0">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="onPipButtonClick:" target="3" id="2Yi-Jo-2No"/>
+                                                </connections>
+                                            </button>
+                                            <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="dYZ-ri-Kra" customClass="VLCImageButton">
+                                                <rect key="frame" x="35" y="-6" width="44" height="40"/>
+                                                <buttonCell key="cell" type="push" bezelStyle="rounded" image="arrow.up.left.and.arrow.down.right" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Z8g-js-0W6">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="fullscreen:" target="3" id="0Kk-UV-WtF"/>
+                                                </connections>
+                                            </button>
+                                            <button wantsLayer="YES" horizontalHuggingPriority="1000" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="8jZ-hd-YVq" customClass="VLCImageButton">
+                                                <rect key="frame" x="72" y="-6" width="47" height="40"/>
+                                                <buttonCell key="cell" type="push" bezelStyle="rounded" image="play.rectangle.on.rectangle" catalog="system" imagePosition="only" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="fyV-F5-ogO">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="toggleFloatOnTop:" target="3" id="BvH-qi-jx1"/>
+                                                </connections>
+                                            </button>
+                                        </subviews>
+                                        <visibilityPriorities>
+                                            <integer value="1000"/>
+                                            <integer value="1000"/>
+                                            <integer value="1000"/>
+                                        </visibilityPriorities>
+                                        <customSpacing>
+                                            <real value="3.4028234663852886e+38"/>
+                                            <real value="3.4028234663852886e+38"/>
+                                            <real value="3.4028234663852886e+38"/>
+                                        </customSpacing>
+                                    </stackView>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="sep-line-top" firstAttribute="leading" secondItem="5hr-Af-mP0" secondAttribute="leading" id="2qs-Oc-0iQ"/>
+                                    <constraint firstItem="AXA-01-AU8" firstAttribute="width" secondItem="V9d-hX-iyg" secondAttribute="width" id="6Xb-Cr-4s3"/>
+                                    <constraint firstItem="V9d-hX-iyg" firstAttribute="centerY" secondItem="5hr-Af-mP0" secondAttribute="centerY" id="72N-YC-W4S"/>
+                                    <constraint firstItem="AXA-01-AU8" firstAttribute="leading" secondItem="5hr-Af-mP0" secondAttribute="leading" constant="5" id="Ajh-Cy-gox"/>
+                                    <constraint firstItem="sep-line-top" firstAttribute="top" secondItem="5hr-Af-mP0" secondAttribute="top" id="Btm-xc-Fxd"/>
+                                    <constraint firstItem="Kb6-da-vSR" firstAttribute="centerY" secondItem="5hr-Af-mP0" secondAttribute="centerY" id="EdK-qC-e0V"/>
+                                    <constraint firstItem="AXA-01-AU8" firstAttribute="centerY" secondItem="5hr-Af-mP0" secondAttribute="centerY" id="EnE-2L-wBh"/>
+                                    <constraint firstItem="sF5-Z0-bef" firstAttribute="leading" secondItem="PCC-8a-sVF" secondAttribute="trailing" constant="5" id="G3J-50-BR7"/>
+                                    <constraint firstAttribute="height" constant="38" id="GLX-Xa-lVf"/>
+                                    <constraint firstItem="sF5-Z0-bef" firstAttribute="centerY" secondItem="5hr-Af-mP0" secondAttribute="centerY" id="Gu3-uc-Ear"/>
+                                    <constraint firstItem="sF5-Z0-bef" firstAttribute="height" secondItem="aAq-uE-mLW" secondAttribute="height" id="HFU-a4-Do0"/>
+                                    <constraint firstItem="aAq-uE-mLW" firstAttribute="width" secondItem="sF5-Z0-bef" secondAttribute="width" id="J39-m1-Vs4"/>
+                                    <constraint firstItem="AXA-01-AU8" firstAttribute="height" secondItem="V9d-hX-iyg" secondAttribute="height" id="Lay-ui-iBJ"/>
+                                    <constraint firstAttribute="bottom" secondItem="AXA-01-AU8" secondAttribute="bottom" constant="5" id="QaD-Pf-ZpA"/>
+                                    <constraint firstAttribute="trailing" secondItem="Kb6-da-vSR" secondAttribute="trailing" constant="5" id="SKZ-79-jNZ"/>
+                                    <constraint firstItem="AXA-01-AU8" firstAttribute="top" secondItem="5hr-Af-mP0" secondAttribute="top" constant="5" id="WqJ-h6-EHV"/>
+                                    <constraint firstItem="LIP-09-gHL" firstAttribute="leading" secondItem="aAq-uE-mLW" secondAttribute="trailing" constant="5" id="WwI-tp-LCr"/>
+                                    <constraint firstItem="zyp-45-IgR" firstAttribute="leading" secondItem="LIP-09-gHL" secondAttribute="trailing" constant="5" id="Za4-qe-3M8"/>
+                                    <constraint firstItem="Kb6-da-vSR" firstAttribute="leading" secondItem="zyp-45-IgR" secondAttribute="trailing" constant="5" id="d6K-IH-npl"/>
+                                    <constraint firstItem="PCC-8a-sVF" firstAttribute="height" secondItem="sF5-Z0-bef" secondAttribute="height" id="dLj-aI-TU9"/>
+                                    <constraint firstItem="PCC-8a-sVF" firstAttribute="width" secondItem="sF5-Z0-bef" secondAttribute="width" id="dXF-sz-z4c"/>
+                                    <constraint firstItem="aAq-uE-mLW" firstAttribute="leading" secondItem="sF5-Z0-bef" secondAttribute="trailing" constant="5" id="eyX-7z-y6N"/>
+                                    <constraint firstItem="LIP-09-gHL" firstAttribute="centerY" secondItem="5hr-Af-mP0" secondAttribute="centerY" id="kvw-CD-5dD"/>
+                                    <constraint firstAttribute="trailing" secondItem="sep-line-top" secondAttribute="trailing" id="oTf-sL-MFV"/>
+                                    <constraint firstItem="aAq-uE-mLW" firstAttribute="centerY" secondItem="5hr-Af-mP0" secondAttribute="centerY" id="pmy-FH-xIH"/>
+                                    <constraint firstItem="V9d-hX-iyg" firstAttribute="leading" secondItem="AXA-01-AU8" secondAttribute="trailing" constant="5" id="qTY-xe-IHm"/>
+                                    <constraint firstItem="zyp-45-IgR" firstAttribute="centerY" secondItem="5hr-Af-mP0" secondAttribute="centerY" id="qyN-Rp-Zah"/>
+                                    <constraint firstItem="PCC-8a-sVF" firstAttribute="centerY" secondItem="5hr-Af-mP0" secondAttribute="centerY" id="u1m-dp-AeX"/>
+                                    <constraint firstItem="PCC-8a-sVF" firstAttribute="leading" secondItem="V9d-hX-iyg" secondAttribute="trailing" constant="5" id="vBD-yc-Pxq"/>
+                                    <constraint firstItem="V9d-hX-iyg" firstAttribute="height" secondItem="PCC-8a-sVF" secondAttribute="height" id="x5g-pr-HFq"/>
+                                    <constraint firstItem="PCC-8a-sVF" firstAttribute="width" secondItem="V9d-hX-iyg" secondAttribute="width" id="xld-dk-rQY"/>
+                                </constraints>
+                            </customView>
+                        </subviews>
+                        <constraints>
+                            <constraint firstAttribute="bottom" secondItem="5hr-Af-mP0" secondAttribute="bottom" id="controls-bar-bottom"/>
+                            <constraint firstItem="5hr-Af-mP0" firstAttribute="leading" secondItem="main-controls-content" secondAttribute="leading" id="controls-bar-leading"/>
+                            <constraint firstItem="5hr-Af-mP0" firstAttribute="trailing" secondItem="main-controls-content" secondAttribute="trailing" id="controls-bar-trailing"/>
+                            <constraint firstItem="CjJ-z0-ITu" firstAttribute="centerX" secondItem="main-controls-content" secondAttribute="centerX" id="loading-center-x"/>
+                            <constraint firstItem="CjJ-z0-ITu" firstAttribute="centerY" secondItem="main-controls-content" secondAttribute="centerY" id="loading-center-y"/>
+                            <constraint firstItem="Drq-if-dw4" firstAttribute="top" secondItem="VIa-0w-fl8" secondAttribute="top" constant="20" id="queue-btn-top"/>
+                            <constraint firstItem="VIa-0w-fl8" firstAttribute="trailing" secondItem="Drq-if-dw4" secondAttribute="trailing" constant="20" id="queue-btn-trailing"/>
+                            <constraint firstItem="UoQ-34-Pox" firstAttribute="leading" secondItem="VIa-0w-fl8" secondAttribute="leading" constant="20" id="return-btn-leading"/>
+                            <constraint firstItem="UoQ-34-Pox" firstAttribute="top" secondItem="VIa-0w-fl8" secondAttribute="top" constant="20" id="return-btn-top"/>
+                            <constraint firstItem="VIa-0w-fl8" firstAttribute="leading" secondItem="main-controls-content" secondAttribute="leading" id="title-bar-leading"/>
+                            <constraint firstItem="VIa-0w-fl8" firstAttribute="top" secondItem="main-controls-content" secondAttribute="top" id="title-bar-top"/>
+                            <constraint firstItem="VIa-0w-fl8" firstAttribute="trailing" secondItem="main-controls-content" secondAttribute="trailing" id="title-bar-trailing"/>
+                        </constraints>
+                    </view>
+                </box>
+            </subviews>
+            <constraints>
+                <constraint firstItem="MTR-ds-I8o" firstAttribute="top" secondItem="WRu-Ic-lQK" secondAttribute="top" id="2cq-kJ-XAR"/>
+                <constraint firstAttribute="trailing" secondItem="MTR-ds-I8o" secondAttribute="trailing" id="E2t-0S-hdB"/>
+                <constraint firstItem="MTR-ds-I8o" firstAttribute="leading" secondItem="WRu-Ic-lQK" secondAttribute="leading" id="TJ3-v0-eiw"/>
+                <constraint firstAttribute="bottom" secondItem="main-controls-container" secondAttribute="bottom" id="main-controls-bottom"/>
+                <constraint firstItem="main-controls-container" firstAttribute="leading" secondItem="WRu-Ic-lQK" secondAttribute="leading" id="main-controls-leading"/>
+                <constraint firstItem="main-controls-container" firstAttribute="top" secondItem="WRu-Ic-lQK" secondAttribute="top" id="main-controls-top"/>
+                <constraint firstItem="main-controls-container" firstAttribute="trailing" secondItem="WRu-Ic-lQK" secondAttribute="trailing" id="main-controls-trailing"/>
+                <constraint firstItem="5hr-Af-mP0" firstAttribute="top" secondItem="MTR-ds-I8o" secondAttribute="bottom" id="video-to-controls"/>
+            </constraints>
+            <point key="canvasLocation" x="-507.5" y="-232"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="NSLeftFacingTriangleTemplate" width="12" height="17"/>
+        <image name="NSListViewTemplate" width="21" height="15"/>
+        <image name="arrow.trianglehead.clockwise" catalog="system" width="15" height="17"/>
+        <image name="arrow.trianglehead.counterclockwise" catalog="system" width="15" height="17"/>
+        <image name="arrow.up.left.and.arrow.down.right" catalog="system" width="16" height="15"/>
+        <image name="backward.fill" catalog="system" width="20" height="12"/>
+        <image name="forward.fill" catalog="system" width="20" height="12"/>
+        <image name="pin.fill" catalog="system" width="19" height="22"/>
+        <image name="pip.enter" catalog="system" width="20" height="16"/>
+        <image name="play.fill" catalog="system" width="12" height="13"/>
+        <image name="play.rectangle.on.rectangle" catalog="system" width="19" height="15"/>
+        <image name="speaker.wave.3.fill" catalog="system" width="22" height="15"/>
+    </resources>
+</document>


=====================================
modules/gui/macosx/main/VLCMain.m
=====================================
@@ -86,6 +86,7 @@
 #import "windows/logging/VLCLogWindowController.h"
 #import "windows/video/VLCVoutView.h"
 #import "windows/video/VLCVideoOutputProvider.h"
+#import "windows/video/VLCMainVideoViewController.h"
 
 #ifdef HAVE_SPARKLE
 #import <Sparkle/Sparkle.h>                 /* we're the update delegate */
@@ -348,6 +349,7 @@ static VLCMain *sharedInstance = nil;
     if ([defaults integerForKey:kVLCPreferencesVersion] != 4) {
         [defaults setBool:YES forKey:VLCPlaybackEndViewEnabledKey];
         [defaults setBool:NO forKey:VLCDisplayTrackNumberPlayQueueKey];
+        [defaults setBool:YES forKey:VLCUseClassicVideoPlayerLayoutKey];
         [self migrateOldPreferences];
     }
 


=====================================
modules/gui/macosx/preferences/VLCSimplePrefsController.h
=====================================
@@ -177,6 +177,7 @@
 @property (readwrite, weak) IBOutlet NSButton *video_onTopCheckbox;
 @property (readwrite, weak) IBOutlet NSButton *video_videodecoCheckbox;
 @property (readwrite, weak) IBOutlet NSButton *video_resizeToNativeSizeCheckbox;
+ at property (readwrite, weak) IBOutlet NSButton *video_useClassicLayoutCheckbox;
 
 // video pane - fullscreen box
 @property (readwrite, weak) IBOutlet NSBox *video_fullscreenBox;


=====================================
modules/gui/macosx/preferences/VLCSimplePrefsController.m
=====================================
@@ -52,6 +52,7 @@
 #import "library/VLCLibraryDataTypes.h"
 #import "playqueue/VLCPlayQueueTableCellView.h"
 #import "views/VLCPlaybackEndViewController.h"
+#import "windows/video/VLCMainVideoViewController.h"
 
 static struct {
     const char iso[6];
@@ -716,6 +717,8 @@ create_toolbar_item(NSString *itemIdent, NSString *name, NSString *desc, NSStrin
     [self setupButton:_video_videodecoCheckbox forBoolValue: "video-deco"];
     [self setupButton:_video_pauseWhenMinimizedCheckbox forBoolValue: "macosx-pause-minimized"];
     [self setupButton:_video_resizeToNativeSizeCheckbox forBoolValue: "macosx-video-autoresize"];
+    
+    self.video_useClassicLayoutCheckbox.state = [defaults boolForKey:VLCUseClassicVideoPlayerLayoutKey] ? NSControlStateValueOn : NSControlStateValueOff;
 
     [_video_devicePopup removeAllItems];
     i = 0;
@@ -1027,6 +1030,9 @@ static inline void save_string_list(intf_thread_t * p_intf, id object, const cha
 
         config_PutInt("macosx-pause-minimized", [_video_pauseWhenMinimizedCheckbox state]);
         config_PutInt("macosx-video-autoresize", [_video_resizeToNativeSizeCheckbox state]);
+        
+        [NSUserDefaults.standardUserDefaults setBool:self.video_useClassicLayoutCheckbox.state == NSControlStateValueOn
+                                              forKey:VLCUseClassicVideoPlayerLayoutKey];
 
         config_PutInt("embedded-video", [_video_embeddedCheckbox state]);
         config_PutInt("macosx-nativefullscreenmode", [_video_nativeFullscreenCheckbox state]);


=====================================
modules/gui/macosx/windows/video/VLCMainVideoViewController.h
=====================================
@@ -31,6 +31,8 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
+extern NSString * const VLCUseClassicVideoPlayerLayoutKey;
+
 @interface VLCMainVideoViewController : NSViewController
 
 @property (readwrite, strong) IBOutlet NSView *voutContainingView;
@@ -47,6 +49,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (readwrite, strong) IBOutlet NSLayoutConstraint *returnButtonLeadingConstraint;
 @property (readwrite, strong) IBOutlet NSLayoutConstraint *playQueueButtonTopConstraint;
 @property (readwrite, strong) IBOutlet NSLayoutConstraint *playQueueButtonTrailingConstraint;
+ at property (readwrite, strong) IBOutlet NSLayoutConstraint *videoViewBottomConstraint;
 @property (readwrite, strong) IBOutlet NSVisualEffectView *fakeTitleBar;
 @property (readwrite, strong) IBOutlet NSLayoutConstraint *fakeTitleBarHeightConstraint;
 @property (readwrite, strong) IBOutlet NSProgressIndicator *loadingIndicator;
@@ -58,6 +61,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (readwrite, strong) IBOutlet NSLayoutConstraint *centerButtonStackInViewConstraint;
 @property (readonly) NSLayoutConstraint *bottomButtonStackViewConstraint;
+ at property (readonly) NSLayoutConstraint *videoViewBottomToViewConstraint;
 
 @property (readonly, strong) VLCMainVideoViewAudioMediaDecorativeView *audioDecorativeView;
 @property (readwrite, nonatomic) BOOL autohideControls;


=====================================
modules/gui/macosx/windows/video/VLCMainVideoViewController.m
=====================================
@@ -52,6 +52,8 @@
 
 #import "private/PIPSPI.h"
 
+NSString * const VLCUseClassicVideoPlayerLayoutKey = @"VLCUseClassicVideoPlayerLayoutKey";
+
 @interface PIPVoutViewController : NSViewController
 @property (nonatomic) NSRect previousBounds;
 @property (nonatomic, copy) void (^boundsChangeHandler)(void);
@@ -110,15 +112,22 @@
 }
 
 @property NSWindow *retainedWindow;
+ at property (readonly) BOOL classic;
+ at property (readwrite) BOOL voutTaken;
+
 @end
 
 @implementation VLCMainVideoViewController
 
 - (instancetype)init
 {
-    self = [super initWithNibName:@"VLCMainVideoView" bundle:nil];
+    const BOOL classic = [NSUserDefaults.standardUserDefaults boolForKey:VLCUseClassicVideoPlayerLayoutKey];
+    NSString * const nibName = classic ? @"VLCClassicMainVideoView" : @"VLCMainVideoView";
+    self = [super initWithNibName:nibName bundle:nil];
     if (self) {
+        _classic = classic;
         _isFadingIn = NO;
+        _voutTaken = NO;
 
         NSNotificationCenter * const notificationCenter = NSNotificationCenter.defaultCenter;
         [notificationCenter addObserver:self
@@ -159,8 +168,11 @@
     _audioDecorativeView = [VLCMainVideoViewAudioMediaDecorativeView fromNibWithOwner:self];
     _audioDecorativeView.translatesAutoresizingMaskIntoConstraints = NO;
 
-    _bottomButtonStackViewConstraint =
-        [self.bottomBarView.topAnchor constraintEqualToAnchor:self.centralControlsStackView.bottomAnchor];
+    if (!self.classic) {
+        // Only set up button constraints for standard layout
+        _bottomButtonStackViewConstraint =
+            [self.bottomBarView.topAnchor constraintEqualToAnchor:self.centralControlsStackView.bottomAnchor];
+    }
 
     VLCPlayerController * const controller =
         VLCMain.sharedInstance.playQueueController.playerController;
@@ -207,6 +219,19 @@
     [self setupAudioDecorativeView];
     [self.controlsBar update];
     [self updateFloatOnTopIndicator];
+    
+    // For classic layout, create constraint for video view to fill main view when controls are hidden
+    if (self.classic) {
+        _videoViewBottomToViewConstraint = [self.voutContainingView.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor];
+        self.videoViewBottomToViewConstraint.active = NO;
+
+        NSVisualEffectView * const controlsBackgroundView = [[NSVisualEffectView alloc] initWithFrame:self.bottomBarView.frame];
+        controlsBackgroundView.translatesAutoresizingMaskIntoConstraints = NO;
+        controlsBackgroundView.blendingMode = NSVisualEffectBlendingModeWithinWindow;
+        controlsBackgroundView.material = NSVisualEffectMaterialTitlebar;
+        [self.bottomBarView addSubview:controlsBackgroundView positioned:NSWindowBelow relativeTo:self.bottomBarView.subviews.firstObject];
+        [controlsBackgroundView applyConstraintsToFillSuperview];
+    }
 }
 
 - (BOOL)isVisualizationActive
@@ -371,6 +396,10 @@
 
 - (void)hideControls
 {
+    if (self.voutTaken) {
+        return;
+    }
+
     [self stopAutohideTimer];
 
     NSPoint mousePos = [self.view.window mouseLocationOutsideOfEventStream];
@@ -380,6 +409,11 @@
         return;
     }
 
+    if (self.classic) {
+        self.videoViewBottomConstraint.active = NO;
+        self.videoViewBottomToViewConstraint.active = YES;
+    }
+
     [NSAnimationContext runAnimationGroup:^(NSAnimationContext * _Nonnull context) {
         [context setDuration:VLCLibraryUIUnits.controlsFadeAnimationDuration];
         [self->_mainControlsView.animator setAlphaValue:0.0f];
@@ -408,12 +442,21 @@
 
 - (void)showControls
 {
+    if (self.voutTaken) {
+        return;
+    }
+
     [self stopAutohideTimer];
     [self updatePlayQueueToggleState];
     [self updateLibraryControls];
 
+    if (self.classic) {
+        self.videoViewBottomToViewConstraint.active = NO;
+        self.videoViewBottomConstraint.active = YES;
+    }
+
     if (!_autohideControls) {
-        _mainControlsView.alphaValue = 1.0f;
+        _mainControlsView.alphaValue = 1.0f;        
         return;
     }
 
@@ -627,6 +670,10 @@
 
 - (nullable NSView *)acquireVideoView
 {
+    if (self.voutTaken) {
+        return nil;
+    }
+    self.voutTaken = YES;
     [self.voutContainingView removeFromSuperview];
     return self.voutContainingView;
 }
@@ -638,8 +685,29 @@
     [self.view addSubview:videoView
                positioned:NSWindowBelow
                relativeTo:self.mainControlsView];
-    [videoView applyConstraintsToFillSuperview];
+    
+    if (self.classic) {
+        videoView.translatesAutoresizingMaskIntoConstraints = NO;
+        [NSLayoutConstraint activateConstraints:@[
+            [videoView.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor],
+            [videoView.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor],
+            [videoView.topAnchor constraintEqualToAnchor:self.view.topAnchor]
+        ]];
+        
+        // Create constraint for video view bottom to main view bottom (for when controls are hidden)
+        _videoViewBottomToViewConstraint = [videoView.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor];
+        _videoViewBottomConstraint = [videoView.bottomAnchor constraintEqualToAnchor:self.bottomBarView.topAnchor];
+        
+        // The videoViewBottomConstraint outlet connects video bottom to controls top (for when controls are visible)
+        // Start with controls visible, so activate the XIB constraint
+        self.videoViewBottomConstraint.active = YES;
+        self.videoViewBottomToViewConstraint.active = NO;
+    } else {
+        [videoView applyConstraintsToFillSuperview];
+    }
+    
     [self applyAudioDecorativeViewForegroundCoverArtViewConstraints];
+    self.voutTaken = NO;
 }
 
 - (void)displayPlaybackEndView


=====================================
modules/gui/macosx/windows/video/VLCVideoWindowCommon.m
=====================================
@@ -130,7 +130,6 @@ NSString *VLCWindowShouldShowController = @"VLCWindowShouldShowController";
     [o_temp_view setAutoresizingMask:NSViewHeightSizable | NSViewWidthSizable];
 
     _playerController = VLCMain.sharedInstance.playQueueController.playerController;
-    _videoViewController = [[VLCMainVideoViewController alloc] init];
 
     [self mediaMetadataChanged:nil];
 



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/5bdb5a590476886a009e7b3657f7956e368230b9...4f9f26909c5efd32a0b8b08b8a45b16d60d234a7

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/5bdb5a590476886a009e7b3657f7956e368230b9...4f9f26909c5efd32a0b8b08b8a45b16d60d234a7
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list