Changes of Revision 386
vlc-beta.patch
Changed
x
1
2
#else // _WIN32
3
--- a/modules/gui/qt/maininterface/compositor.cpp
4
+++ b/modules/gui/qt/maininterface/compositor.cpp
5
-@@ -215,8 +215,10 @@ void CompositorVideo::windowDestroy()
6
+@@ -212,11 +212,11 @@ void CompositorVideo::commonSetupVoutWindow(vlc_window_t* p_wnd, VoutDestroyCb d
7
+
8
+ void CompositorVideo::windowDestroy()
9
+ {
10
++disconnect(m_videoSurfaceProvider.get(), &VideoSurfaceProvider::surfacePositionChanged, this, &CompositorVideo::onSurfacePositionChanged);
11
++disconnect(m_videoSurfaceProvider.get(), &VideoSurfaceProvider::surfaceSizeChanged, this, &CompositorVideo::onSurfaceSizeChanged);
12
if (m_destroyCb)
13
m_destroyCb(m_wnd);
14
15
-+QMetaObject::invokeMethod(this, this() {
16
- m_videoSurfaceProvider.reset();
17
- m_videoWindowHandler.reset();
18
-+}, Qt::QueuedConnection);
19
+- m_videoSurfaceProvider.reset();
20
+- m_videoWindowHandler.reset();
21
}
22
23
void CompositorVideo::windowResize(unsigned width, unsigned height)
24
+@@ -323,6 +323,8 @@ void CompositorVideo::commonGUIDestroy()
25
+
26
+ void CompositorVideo::commonIntfDestroy()
27
+ {
28
++ m_videoSurfaceProvider.reset();
29
++ m_videoWindowHandler.reset();
30
+ unloadGUI();
31
+ }
32
+
33
--- a/src/Makefile.am
34
+++ b/src/Makefile.am
35
@@ -568,7 +568,7 @@ libvlccore_la_LDFLAGS = \
36
_service:obs_scm:vlc-beta-20240812.9b737741e3.obscpio/contrib/src/gcrypt/rules.mak -> _service:obs_scm:vlc-beta-20240815.0362563244.obscpio/contrib/src/gcrypt/rules.mak
Changed
21
1
2
endif
3
endif
4
ifdef HAVE_DARWIN_OS
5
-ifeq ($(ARCH),x86_64)
6
GCRYPT_CONF += ac_cv_sys_symbol_underscore=yes
7
endif
8
-endif
9
-ifdef HAVE_MACOSX
10
-GCRYPT_CONF += --disable-aesni-support
11
-ifeq ($(ARCH),aarch64)
12
-GCRYPT_CONF += --disable-asm --disable-arm-crypto-support
13
-endif
14
-endif
15
-ifdef HAVE_BSD
16
-GCRYPT_CONF += --disable-asm --disable-aesni-support
17
-endif
18
ifdef HAVE_ANDROID
19
ifeq ($(ANDROID_ABI), x86)
20
GCRYPT_CONF += ac_cv_sys_symbol_underscore=no
21
_service:obs_scm:vlc-beta-20240812.9b737741e3.obscpio/include/vlc_meta.h -> _service:obs_scm:vlc-beta-20240815.0362563244.obscpio/include/vlc_meta.h
Changed
9
1
2
VLC_API int input_item_WriteMeta(vlc_object_t *, input_item_t *);
3
4
#define vlc_meta_Set( meta, meta_type, b ) vlc_meta_SetWithPriority( meta, meta_type, b, VLC_META_PRIORITY_BASIC )
5
+#define vlc_meta_SetWithPlaylistPriority( meta, meta_type, b ) vlc_meta_SetWithPriority( meta, meta_type, b, VLC_META_PRIORITY_PLAYLIST )
6
#define vlc_meta_SetExtra( meta, psz_name, psz_value ) vlc_meta_SetExtraWithPriority( meta, psz_name, psz_value, VLC_META_PRIORITY_BASIC )
7
8
/* Setters for meta.
9
_service:obs_scm:vlc-beta-20240812.9b737741e3.obscpio/modules/audio_output/apple/avsamplebuffer.m -> _service:obs_scm:vlc-beta-20240815.0362563244.obscpio/modules/audio_output/apple/avsamplebuffer.m
Changed
181
1
2
3
int64_t _ptsSamples;
4
vlc_tick_t _firstPts;
5
+ vlc_tick_t _lastDate;
6
unsigned _sampleRate;
7
BOOL _stopped;
8
+ BOOL _dateReached;
9
}
10
@end
11
12
13
_outChain = NULL;
14
_outChainLast = &_outChain;
15
16
+ /* The first call to CMAudioFormatDescriptionCreate() might take some time
17
+ * (between 200 and 600ms) as it is initializing some static context/libs.
18
+ * Therefore, call it from the Open() callback with dummy params. Indeed,
19
+ * the playback is not yet started and a longer Open() call won't mess with
20
+ * playback timings. */
21
+ static const AudioStreamBasicDescription dummyDesc = {
22
+ .mSampleRate = 48000,
23
+ .mFormatID = kAudioFormatLinearPCM,
24
+ .mFormatFlags = kAudioFormatFlagsNativeFloatPacked,
25
+ .mChannelsPerFrame = 2,
26
+ .mFramesPerPacket = 1,
27
+ .mBitsPerChannel = 32,
28
+ };
29
+ CMAudioFormatDescriptionRef dummyFmtDesc;
30
+ OSStatus status =
31
+ CMAudioFormatDescriptionCreate(kCFAllocatorDefault, &dummyDesc, 0, nil,
32
+ 0, nil, nil, &dummyFmtDesc);
33
+ if (status == noErr)
34
+ CFRelease(dummyFmtDesc);
35
+
36
self = super init;
37
if (self == nil)
38
return nil;
39
40
self stopSyncRenderer;
41
42
_ptsSamples = -1;
43
+ _dateReached = NO;
44
_firstPts = VLC_TICK_INVALID;
45
+ _lastDate = VLC_TICK_INVALID;
46
}
47
48
- (void)pause:(BOOL)pause date:(vlc_tick_t)date
49
50
aout_TimingReport(_aout, system_now, pos_ticks);
51
}
52
53
+- (void)startNow:(vlc_tick_t)delta
54
+{
55
+ assert(!_dateReached);
56
+
57
+ _dateReached = YES;
58
+ CMTime time = CMTimeMake(0, _sampleRate);
59
+ _sync setRate:1.0f time:time;
60
+
61
+ const CMTime interval = CMTimeMake(CLOCK_FREQ, CLOCK_FREQ);
62
+ __weak typeof(self) weakSelf = self;
63
+ _observer = _sync addPeriodicTimeObserverForInterval:interval
64
+ queue:_timeQueue
65
+ usingBlock:^ (CMTime time){
66
+ weakSelf whenTimeObserved:time;
67
+ };
68
+}
69
+
70
- (void)whenDataReady
71
{
72
vlc_mutex_lock(&_bufferLock);
73
74
- while (_renderer.readyForMoreMediaData)
75
+ while (_renderer.readyForMoreMediaData || !_dateReached)
76
{
77
+ if (!_dateReached)
78
+ {
79
+ /* Start playback at the requested date */
80
+
81
+ CMTime writtenTime = CMTimeMake(_ptsSamples, _sampleRate);
82
+ vlc_tick_t writtenTicks = VLCAVSample CMTimeTotick:writtenTime;
83
+ vlc_tick_t now = vlc_tick_now();
84
+ vlc_tick_t deadline = _lastDate - writtenTicks;
85
+ vlc_tick_t delta = deadline - now;
86
+
87
+ if (delta <= 0)
88
+ {
89
+ msg_Dbg(_aout, "starting late (%"PRId64" us)", delta);
90
+ self startNow:delta;
91
+ }
92
+ else
93
+ {
94
+ msg_Dbg(_aout, "deferring start (%"PRId64" us)", delta);
95
+
96
+ int timeout = 0;
97
+ /* Wait for the start date if there are no buffers to enqueue */
98
+ while (!_stopped && _outChain == NULL && timeout == 0)
99
+ {
100
+ timeout = vlc_cond_timedwait(&_bufferWait, &_bufferLock,
101
+ deadline);
102
+ deadline = _lastDate - writtenTicks;
103
+ }
104
+
105
+ if (timeout != 0)
106
+ {
107
+ msg_Dbg(_aout, "started");
108
+ self startNow:0;
109
+ }
110
+ }
111
+ }
112
+
113
while (!_stopped && _outChain == NULL)
114
vlc_cond_wait(&_bufferWait, &_bufferLock);
115
116
117
if (_ptsSamples == -1)
118
{
119
_stopped = NO;
120
+ _firstPts = block->i_pts;
121
+ _ptsSamples = 0;
122
123
__weak typeof(self) weakSelf = self;
124
_renderer requestMediaDataWhenReadyOnQueue:_dataQueue usingBlock:^{
125
weakSelf whenDataReady;
126
};
127
-
128
- _firstPts = block->i_pts;
129
- const CMTime interval = CMTimeMake(CLOCK_FREQ, CLOCK_FREQ);
130
- _observer = _sync addPeriodicTimeObserverForInterval:interval
131
- queue:_timeQueue
132
- usingBlock:^ (CMTime time){
133
- weakSelf whenTimeObserved:time;
134
- };
135
-
136
- _ptsSamples = 0;
137
- vlc_tick_t delta = date - vlc_tick_now();
138
- CMTime hostTime = CMTimeAdd(CMClockGetTime(CMClockGetHostTimeClock()),
139
- CMTimeMake(delta, CLOCK_FREQ));
140
- CMTime time = CMTimeMake(_ptsSamples, _sampleRate);
141
-
142
- _sync.delaysRateChangeUntilHasSufficientMediaData = NO;
143
- _sync setRate:1.0f time:time atHostTime:hostTime;
144
}
145
+ _lastDate = date;
146
147
block_ChainLastAppend(&_outChainLast, block);
148
149
150
{
151
_sync.rate = 0.0f;
152
153
- _sync removeTimeObserver:_observer;
154
-
155
_renderer stopRequestingMediaData;
156
_renderer flush;
157
158
vlc_mutex_lock(&_bufferLock);
159
+ if (_dateReached)
160
+ _sync removeTimeObserver:_observer;
161
+
162
_stopped = YES;
163
164
block_ChainRelease(_outChain);
165
166
goto error;
167
}
168
169
+ _sync.delaysRateChangeUntilHasSufficientMediaData = NO;
170
_sync addRenderer:_renderer;
171
172
+ _stopped = NO;
173
+ _dateReached = NO;
174
+
175
_ptsSamples = -1;
176
_firstPts = VLC_TICK_INVALID;
177
+ _lastDate = VLC_TICK_INVALID;
178
_sampleRate = fmt->i_rate;
179
_bytesPerFrame = desc.mBytesPerFrame;
180
181
_service:obs_scm:vlc-beta-20240812.9b737741e3.obscpio/modules/codec/avcodec/directx_va.c -> _service:obs_scm:vlc-beta-20240815.0362563244.obscpio/modules/codec/avcodec/directx_va.c
Changed
12
1
2
# error bogus libavcodec DXVA support
3
#endif
4
5
+#ifndef FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO
6
+# define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 // moved to libavcodec/dxva2_internal.h :/
7
+#endif
8
+
9
#include "directx_va.h"
10
#include <vlc_codecs.h> // GUID_FMT/GUID_PRINT
11
12
_service:obs_scm:vlc-beta-20240812.9b737741e3.obscpio/modules/demux/playlist/m3u.c -> _service:obs_scm:vlc-beta-20240815.0362563244.obscpio/modules/demux/playlist/m3u.c
Changed
28
1
2
3
input_item_AddOptions( p_input, meta->i_options, meta->ppsz_options, 0 );
4
5
+ vlc_mutex_lock( &p_input->lock );
6
if( meta->psz_artist )
7
- input_item_SetArtist( p_input, meta->psz_artist );
8
+ vlc_meta_SetWithPlaylistPriority( p_input->p_meta, vlc_meta_Artist, meta->psz_artist );
9
if( meta->psz_name )
10
- input_item_SetTitle( p_input, meta->psz_name );
11
+ vlc_meta_SetWithPlaylistPriority( p_input->p_meta, vlc_meta_Title, meta->psz_name );
12
if( meta->psz_album_art )
13
- input_item_SetArtURL( p_input, meta->psz_album_art );
14
+ vlc_meta_SetWithPlaylistPriority( p_input->p_meta, vlc_meta_ArtworkURL, meta->psz_album_art );
15
if( meta->psz_language )
16
- input_item_SetLanguage( p_input, meta->psz_language );
17
+ vlc_meta_SetWithPlaylistPriority( p_input->p_meta, vlc_meta_Language, meta->psz_language );
18
+ if( meta->psz_grouptitle )
19
+ vlc_meta_SetWithPlaylistPriority( p_input->p_meta, vlc_meta_Publisher, meta->psz_grouptitle );
20
+ vlc_mutex_unlock( &p_input->lock );
21
if( meta->psz_tvgid )
22
input_item_AddInfo( p_input, "XMLTV", "tvg-id", "%s", meta->psz_tvgid );
23
- if( meta->psz_grouptitle )
24
- input_item_SetPublisher( p_input, meta->psz_grouptitle );
25
26
input_item_node_AppendItem( p_node, p_input );
27
input_item_Release( p_input );
28
_service:obs_scm:vlc-beta.obsinfo
Changed
9
1
2
name: vlc-beta
3
-version: 20240812.9b737741e3
4
-mtime: 1723476025
5
-commit: 9b737741e3afa3cd58e6804e7a33283839276fb8
6
+version: 20240815.0362563244
7
+mtime: 1723706179
8
+commit: 03625632442e029760f6ada5dde28f7a85087f03
9