Projects
Staging
vlc-beta
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 386
View file
vlc-beta.patch
Changed
@@ -73,17 +73,29 @@ #else // _WIN32 --- a/modules/gui/qt/maininterface/compositor.cpp +++ b/modules/gui/qt/maininterface/compositor.cpp -@@ -215,8 +215,10 @@ void CompositorVideo::windowDestroy() +@@ -212,11 +212,11 @@ void CompositorVideo::commonSetupVoutWindow(vlc_window_t* p_wnd, VoutDestroyCb d + + void CompositorVideo::windowDestroy() + { ++disconnect(m_videoSurfaceProvider.get(), &VideoSurfaceProvider::surfacePositionChanged, this, &CompositorVideo::onSurfacePositionChanged); ++disconnect(m_videoSurfaceProvider.get(), &VideoSurfaceProvider::surfaceSizeChanged, this, &CompositorVideo::onSurfaceSizeChanged); if (m_destroyCb) m_destroyCb(m_wnd); -+QMetaObject::invokeMethod(this, this() { - m_videoSurfaceProvider.reset(); - m_videoWindowHandler.reset(); -+}, Qt::QueuedConnection); +- m_videoSurfaceProvider.reset(); +- m_videoWindowHandler.reset(); } void CompositorVideo::windowResize(unsigned width, unsigned height) +@@ -323,6 +323,8 @@ void CompositorVideo::commonGUIDestroy() + + void CompositorVideo::commonIntfDestroy() + { ++ m_videoSurfaceProvider.reset(); ++ m_videoWindowHandler.reset(); + unloadGUI(); + } + --- a/src/Makefile.am +++ b/src/Makefile.am @@ -568,7 +568,7 @@ libvlccore_la_LDFLAGS = \
View file
_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
@@ -48,19 +48,8 @@ endif endif ifdef HAVE_DARWIN_OS -ifeq ($(ARCH),x86_64) GCRYPT_CONF += ac_cv_sys_symbol_underscore=yes endif -endif -ifdef HAVE_MACOSX -GCRYPT_CONF += --disable-aesni-support -ifeq ($(ARCH),aarch64) -GCRYPT_CONF += --disable-asm --disable-arm-crypto-support -endif -endif -ifdef HAVE_BSD -GCRYPT_CONF += --disable-asm --disable-aesni-support -endif ifdef HAVE_ANDROID ifeq ($(ANDROID_ABI), x86) GCRYPT_CONF += ac_cv_sys_symbol_underscore=no
View file
_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
@@ -124,6 +124,7 @@ VLC_API int input_item_WriteMeta(vlc_object_t *, input_item_t *); #define vlc_meta_Set( meta, meta_type, b ) vlc_meta_SetWithPriority( meta, meta_type, b, VLC_META_PRIORITY_BASIC ) +#define vlc_meta_SetWithPlaylistPriority( meta, meta_type, b ) vlc_meta_SetWithPriority( meta, meta_type, b, VLC_META_PRIORITY_PLAYLIST ) #define vlc_meta_SetExtra( meta, psz_name, psz_value ) vlc_meta_SetExtraWithPriority( meta, psz_name, psz_value, VLC_META_PRIORITY_BASIC ) /* Setters for meta.
View file
_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
@@ -74,8 +74,10 @@ int64_t _ptsSamples; vlc_tick_t _firstPts; + vlc_tick_t _lastDate; unsigned _sampleRate; BOOL _stopped; + BOOL _dateReached; } @end @@ -98,6 +100,26 @@ _outChain = NULL; _outChainLast = &_outChain; + /* The first call to CMAudioFormatDescriptionCreate() might take some time + * (between 200 and 600ms) as it is initializing some static context/libs. + * Therefore, call it from the Open() callback with dummy params. Indeed, + * the playback is not yet started and a longer Open() call won't mess with + * playback timings. */ + static const AudioStreamBasicDescription dummyDesc = { + .mSampleRate = 48000, + .mFormatID = kAudioFormatLinearPCM, + .mFormatFlags = kAudioFormatFlagsNativeFloatPacked, + .mChannelsPerFrame = 2, + .mFramesPerPacket = 1, + .mBitsPerChannel = 32, + }; + CMAudioFormatDescriptionRef dummyFmtDesc; + OSStatus status = + CMAudioFormatDescriptionCreate(kCFAllocatorDefault, &dummyDesc, 0, nil, + 0, nil, nil, &dummyFmtDesc); + if (status == noErr) + CFRelease(dummyFmtDesc); + self = super init; if (self == nil) return nil; @@ -209,7 +231,9 @@ self stopSyncRenderer; _ptsSamples = -1; + _dateReached = NO; _firstPts = VLC_TICK_INVALID; + _lastDate = VLC_TICK_INVALID; } - (void)pause:(BOOL)pause date:(vlc_tick_t)date @@ -232,12 +256,65 @@ aout_TimingReport(_aout, system_now, pos_ticks); } +- (void)startNow:(vlc_tick_t)delta +{ + assert(!_dateReached); + + _dateReached = YES; + CMTime time = CMTimeMake(0, _sampleRate); + _sync setRate:1.0f time:time; + + const CMTime interval = CMTimeMake(CLOCK_FREQ, CLOCK_FREQ); + __weak typeof(self) weakSelf = self; + _observer = _sync addPeriodicTimeObserverForInterval:interval + queue:_timeQueue + usingBlock:^ (CMTime time){ + weakSelf whenTimeObserved:time; + }; +} + - (void)whenDataReady { vlc_mutex_lock(&_bufferLock); - while (_renderer.readyForMoreMediaData) + while (_renderer.readyForMoreMediaData || !_dateReached) { + if (!_dateReached) + { + /* Start playback at the requested date */ + + CMTime writtenTime = CMTimeMake(_ptsSamples, _sampleRate); + vlc_tick_t writtenTicks = VLCAVSample CMTimeTotick:writtenTime; + vlc_tick_t now = vlc_tick_now(); + vlc_tick_t deadline = _lastDate - writtenTicks; + vlc_tick_t delta = deadline - now; + + if (delta <= 0) + { + msg_Dbg(_aout, "starting late (%"PRId64" us)", delta); + self startNow:delta; + } + else + { + msg_Dbg(_aout, "deferring start (%"PRId64" us)", delta); + + int timeout = 0; + /* Wait for the start date if there are no buffers to enqueue */ + while (!_stopped && _outChain == NULL && timeout == 0) + { + timeout = vlc_cond_timedwait(&_bufferWait, &_bufferLock, + deadline); + deadline = _lastDate - writtenTicks; + } + + if (timeout != 0) + { + msg_Dbg(_aout, "started"); + self startNow:0; + } + } + } + while (!_stopped && _outChain == NULL) vlc_cond_wait(&_bufferWait, &_bufferLock); @@ -276,29 +353,15 @@ if (_ptsSamples == -1) { _stopped = NO; + _firstPts = block->i_pts; + _ptsSamples = 0; __weak typeof(self) weakSelf = self; _renderer requestMediaDataWhenReadyOnQueue:_dataQueue usingBlock:^{ weakSelf whenDataReady; }; - - _firstPts = block->i_pts; - const CMTime interval = CMTimeMake(CLOCK_FREQ, CLOCK_FREQ); - _observer = _sync addPeriodicTimeObserverForInterval:interval - queue:_timeQueue - usingBlock:^ (CMTime time){ - weakSelf whenTimeObserved:time; - }; - - _ptsSamples = 0; - vlc_tick_t delta = date - vlc_tick_now(); - CMTime hostTime = CMTimeAdd(CMClockGetTime(CMClockGetHostTimeClock()), - CMTimeMake(delta, CLOCK_FREQ)); - CMTime time = CMTimeMake(_ptsSamples, _sampleRate); - - _sync.delaysRateChangeUntilHasSufficientMediaData = NO; - _sync setRate:1.0f time:time atHostTime:hostTime; } + _lastDate = date; block_ChainLastAppend(&_outChainLast, block); @@ -316,12 +379,13 @@ { _sync.rate = 0.0f; - _sync removeTimeObserver:_observer; - _renderer stopRequestingMediaData; _renderer flush; vlc_mutex_lock(&_bufferLock); + if (_dateReached) + _sync removeTimeObserver:_observer; + _stopped = YES; block_ChainRelease(_outChain); @@ -445,10 +509,15 @@ goto error; } + _sync.delaysRateChangeUntilHasSufficientMediaData = NO; _sync addRenderer:_renderer; + _stopped = NO; + _dateReached = NO; + _ptsSamples = -1; _firstPts = VLC_TICK_INVALID; + _lastDate = VLC_TICK_INVALID; _sampleRate = fmt->i_rate; _bytesPerFrame = desc.mBytesPerFrame;
View file
_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
@@ -43,6 +43,10 @@ # error bogus libavcodec DXVA support #endif +#ifndef FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO +# define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 // moved to libavcodec/dxva2_internal.h :/ +#endif + #include "directx_va.h" #include <vlc_codecs.h> // GUID_FMT/GUID_PRINT
View file
_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
@@ -231,18 +231,20 @@ input_item_AddOptions( p_input, meta->i_options, meta->ppsz_options, 0 ); + vlc_mutex_lock( &p_input->lock ); if( meta->psz_artist ) - input_item_SetArtist( p_input, meta->psz_artist ); + vlc_meta_SetWithPlaylistPriority( p_input->p_meta, vlc_meta_Artist, meta->psz_artist ); if( meta->psz_name ) - input_item_SetTitle( p_input, meta->psz_name ); + vlc_meta_SetWithPlaylistPriority( p_input->p_meta, vlc_meta_Title, meta->psz_name ); if( meta->psz_album_art ) - input_item_SetArtURL( p_input, meta->psz_album_art ); + vlc_meta_SetWithPlaylistPriority( p_input->p_meta, vlc_meta_ArtworkURL, meta->psz_album_art ); if( meta->psz_language ) - input_item_SetLanguage( p_input, meta->psz_language ); + vlc_meta_SetWithPlaylistPriority( p_input->p_meta, vlc_meta_Language, meta->psz_language ); + if( meta->psz_grouptitle ) + vlc_meta_SetWithPlaylistPriority( p_input->p_meta, vlc_meta_Publisher, meta->psz_grouptitle ); + vlc_mutex_unlock( &p_input->lock ); if( meta->psz_tvgid ) input_item_AddInfo( p_input, "XMLTV", "tvg-id", "%s", meta->psz_tvgid ); - if( meta->psz_grouptitle ) - input_item_SetPublisher( p_input, meta->psz_grouptitle ); input_item_node_AppendItem( p_node, p_input ); input_item_Release( p_input );
View file
_service:obs_scm:vlc-beta.obsinfo
Changed
@@ -1,4 +1,4 @@ name: vlc-beta -version: 20240812.9b737741e3 -mtime: 1723476025 -commit: 9b737741e3afa3cd58e6804e7a33283839276fb8 +version: 20240815.0362563244 +mtime: 1723706179 +commit: 03625632442e029760f6ada5dde28f7a85087f03
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.