Changes of Revision 169
_service:obs_scm:vlc-beta-20220122.32b3f47bf0.obscpio/contrib/src/ffmpeg/rules.mak -> _service:obs_scm:vlc-beta-20220123.99f3721426.obscpio/contrib/src/ffmpeg/rules.mak
Changed
x
1
2
FFMPEGCONF += --arch=mips64
3
endif
4
5
+# RISC-V stuff
6
+ifneq ($(findstring $(ARCH),riscv32 riscv64),)
7
+FFMPEGCONF += --arch=riscv
8
+endif
9
+
10
# x86 stuff
11
ifeq ($(ARCH),i386)
12
ifndef HAVE_DARWIN_OS
13
_service:obs_scm:vlc-beta-20220122.32b3f47bf0.obscpio/contrib/src/gnutls/rules.mak -> _service:obs_scm:vlc-beta-20220123.99f3721426.obscpio/contrib/src/gnutls/rules.mak
Changed
17
1
2
# fix i686 UWP builds as they were using CertEnumCRLsInStore via invalid LoadLibrary
3
$(APPLY) $(SRC)/gnutls/0001-fix-mingw64-detection.patch
4
5
- $(call pkg_static,"lib/gnutls.pc.in")
6
$(UPDATE_AUTOCONFIG)
7
$(MOVE)
8
9
10
11
.gnutls: gnutls
12
cd $< && $(GNUTLS_ENV) ./configure $(GNUTLS_CONF)
13
+ $(call pkg_static,"lib/gnutls.pc")
14
cd $< && $(MAKE) -C gl install
15
cd $< && $(MAKE) -C lib install
16
touch $@
17
_service:obs_scm:vlc-beta-20220122.32b3f47bf0.obscpio/contrib/src/main-rust.mak -> _service:obs_scm:vlc-beta-20220123.99f3721426.obscpio/contrib/src/main-rust.mak
Changed
14
1
2
ifeq ($(HOST),arm-linux-gnueabihf)
3
RUST_TARGET = arm-unknown-linux-gnueabihf #add eabihf
4
else
5
+ifeq ($(HOST),riscv64-linux-gnu)
6
+RUST_TARGET = riscv64gc-unknown-linux-gnu
7
+else
8
RUST_TARGET = $(ARCH)-unknown-linux-gnu
9
endif
10
+endif
11
else ifdef HAVE_BSD
12
RUST_TARGET = $(HOST)
13
endif
14
_service:obs_scm:vlc-beta-20220122.32b3f47bf0.obscpio/contrib/src/postproc/rules.mak -> _service:obs_scm:vlc-beta-20220123.99f3721426.obscpio/contrib/src/postproc/rules.mak
Changed
13
1
2
POSTPROCCONF += --arch=mips64
3
endif
4
5
+# RISC-V stuff
6
+ifneq ($(findstring $(ARCH),riscv32 riscv64),)
7
+POSTPROCCONF += --arch=riscv
8
+endif
9
+
10
# x86 stuff
11
ifeq ($(ARCH),i386)
12
POSTPROCCONF += --arch=x86
13
_service:obs_scm:vlc-beta-20220122.32b3f47bf0.obscpio/modules/codec/vorbis.c -> _service:obs_scm:vlc-beta-20220123.99f3721426.obscpio/modules/codec/vorbis.c
Changed
16
1
2
}
3
4
/* Date management */
5
- if( p_block->i_pts != VLC_TICK_INVALID &&
6
- p_block->i_pts != date_Get( &p_sys->end_date ) )
7
+ vlc_tick_t pts = p_block->i_pts != VLC_TICK_INVALID ? p_block->i_pts : p_block->i_dts;
8
+ if( pts != VLC_TICK_INVALID &&
9
+ pts != date_Get( &p_sys->end_date ) )
10
{
11
- date_Set( &p_sys->end_date, p_block->i_pts );
12
+ date_Set( &p_sys->end_date, pts );
13
}
14
15
if( date_Get( &p_sys->end_date ) == VLC_TICK_INVALID )
16
_service:obs_scm:vlc-beta-20220122.32b3f47bf0.obscpio/modules/demux/ogg.c -> _service:obs_scm:vlc-beta-20220123.99f3721426.obscpio/modules/demux/ogg.c
Changed
193
1
2
3
/* Bitstream manipulation */
4
static int Ogg_ReadPage ( demux_t *, ogg_page * );
5
-static void Ogg_DecodePacket ( demux_t *, logical_stream_t *, ogg_packet * );
6
+static void Ogg_DecodePacket ( demux_t *, logical_stream_t *, ogg_packet *, bool );
7
static unsigned Ogg_OpusPacketDuration( ogg_packet * );
8
-static void Ogg_QueueBlocks( demux_t *, logical_stream_t *, block_t * );
9
+static void Ogg_QueueBlocks( demux_t *, logical_stream_t *, block_t *, vlc_tick_t, bool );
10
static void Ogg_SendQueuedBlock( demux_t *, logical_stream_t * );
11
12
static inline bool Ogg_HasQueuedBlocks( const logical_stream_t *p_stream )
13
14
}
15
}
16
17
- Ogg_DecodePacket( p_demux, p_stream, &oggpacket );
18
+ Ogg_DecodePacket( p_demux, p_stream, &oggpacket, ogg_page_eos( &p_sys->current_page ) );
19
}
20
21
22
23
}
24
}
25
26
-static vlc_tick_t Ogg_FixupOutputQueue( demux_t *p_demux, logical_stream_t *p_stream )
27
+static vlc_tick_t Ogg_FixupOutputQueue( demux_t *p_demux, logical_stream_t *p_stream,
28
+ vlc_tick_t i_enddts, bool b_eos )
29
{
30
- vlc_tick_t i_enddts = VLC_TICK_INVALID;
31
+ demux_sys_t *p_sys = p_demux->p_sys;
32
33
-#ifdef HAVE_LIBVORBIS
34
- long i_prev_blocksize = 0;
35
-#else
36
- VLC_UNUSED(p_demux);
37
-#endif
38
// PASS 1, set number of samples
39
unsigned i_total_samples = 0;
40
for( block_t *p_block = p_stream->queue.p_blocks; p_block; p_block = p_block->p_next )
41
{
42
- if( p_block->i_dts != VLC_TICK_INVALID )
43
- {
44
- i_enddts = p_block->i_dts;
45
- break;
46
- }
47
-
48
if( p_block->i_flags & BLOCK_FLAG_HEADER )
49
continue;
50
51
ogg_packet dumb_packet;
52
- dumb_packet.bytes = p_block->i_buffer;
53
- dumb_packet.packet = p_block->p_buffer;
54
55
switch( p_stream->fmt.i_codec )
56
{
57
58
p_stream->special.speex.i_framesperpacket;
59
break;
60
case VLC_CODEC_OPUS:
61
+ dumb_packet.bytes = p_block->i_buffer;
62
+ dumb_packet.packet = p_block->p_buffer;
63
+ /* Less complicated than Vorbis case below as packets samples count
64
+ * is known for every packet */
65
p_block->i_nb_samples = Ogg_OpusPacketDuration( &dumb_packet );
66
break;
67
#ifdef HAVE_LIBVORBIS
68
69
msg_Err( p_demux, "missing vorbis headers, can't compute block size" );
70
break;
71
}
72
+
73
+ if( p_block->p_next == NULL )
74
+ break;
75
+
76
+ /* Vorbis Hell
77
+ Samples are computed from N..N+1 window
78
+ We can set samples for packets up to N-1
79
+ Last packet is granule pos - total... but
80
+ that would be too easy without truncation
81
+ and beginning of stream cases.
82
+ If that's BOS, we need to truncate on start (negative samples)
83
+ If that's EOS, we need to truncate the end to match granule.
84
+ If that's both single page and not starting zero.. we're ***** */
85
+ dumb_packet.bytes = p_block->i_buffer;
86
+ dumb_packet.packet = p_block->p_buffer;
87
long i_blocksize = vorbis_packet_blocksize( p_stream->special.vorbis.p_info,
88
&dumb_packet );
89
- if ( i_prev_blocksize )
90
- p_block->i_nb_samples = ( i_blocksize + i_prev_blocksize ) / 4;
91
- else
92
- p_block->i_nb_samples = i_blocksize / 2;
93
- i_prev_blocksize = i_blocksize;
94
+ dumb_packet.bytes = p_block->p_next->i_buffer;
95
+ dumb_packet.packet = p_block->p_next->p_buffer;
96
+ long i_nextblocksize = vorbis_packet_blocksize( p_stream->special.vorbis.p_info,
97
+ &dumb_packet );
98
+ /* The spec has 3 specific cases depending on long/short prev/next blocksizes
99
+ ranging weights from 1/4 to 3/4... but everyone does A/4 + B/4 */
100
+ p_block->i_nb_samples = (i_blocksize + i_nextblocksize) / 4;
101
break;
102
}
103
#endif
104
105
{
106
date_t d = p_stream->dts;
107
date_Set( &d, i_enddts );
108
- i_enddts = date_Decrement( &d, i_total_samples );
109
+ date_Decrement( &d, i_total_samples );
110
+
111
+ /* truncate end */
112
+ if( b_eos && date_Get( &d ) < VLC_TICK_0 )
113
+ date_Set( &d, VLC_TICK_0 );
114
+
115
for( block_t *p_block = p_stream->queue.p_blocks; p_block; p_block = p_block->p_next )
116
{
117
- if( p_block->i_dts != VLC_TICK_INVALID )
118
- break;
119
if( p_block->i_flags & BLOCK_FLAG_HEADER )
120
continue;
121
p_block->i_dts = date_Get( &d );
122
- if( p_block->i_dts < VLC_TICK_0 )
123
+
124
+ /* truncate start */
125
+ if( !b_eos && p_block->i_dts < VLC_TICK_0 )
126
p_block->i_dts = VLC_TICK_0;
127
+
128
+ /* Last page in the stream case, truncate end */
129
+ if( b_eos && p_block->p_next == NULL )
130
+ p_block->i_dts = __MIN(p_block->i_dts, i_enddts);
131
+
132
+ if( p_sys->i_nzpcr_offset )
133
+ p_block->i_dts += p_sys->i_nzpcr_offset;
134
+
135
+ if( p_stream->fmt.i_cat == AUDIO_ES )
136
+ p_block->i_pts = p_block->i_dts;
137
date_Increment( &d, p_block->i_nb_samples );
138
}
139
+
140
} /* else can't do anything, no timestamped blocks in stream */
141
142
return i_enddts;
143
}
144
145
-static void Ogg_QueueBlocks( demux_t *p_demux, logical_stream_t *p_stream, block_t *p_block )
146
+static void Ogg_QueueBlocks( demux_t *p_demux, logical_stream_t *p_stream,
147
+ block_t *p_block, vlc_tick_t i_enddts, bool b_eos )
148
{
149
demux_sys_t *p_sys = p_demux->p_sys;
150
VLC_UNUSED(p_sys);
151
152
153
block_ChainLastAppend( &p_stream->queue.pp_append, p_block );
154
155
- if( p_stream->i_pcr == VLC_TICK_INVALID && p_block->i_dts != VLC_TICK_INVALID )
156
+ /* If we can have or compute block start from granule, it is set.
157
+ * Otherwise the end dts will be used for reverse calculation */
158
+ if( p_stream->i_pcr == VLC_TICK_INVALID && i_enddts != VLC_TICK_INVALID )
159
{
160
/* fixup queue */
161
- p_stream->i_pcr = Ogg_FixupOutputQueue( p_demux, p_stream );
162
+ p_stream->i_pcr = Ogg_FixupOutputQueue( p_demux, p_stream, i_enddts, b_eos );
163
}
164
165
DemuxDebug( msg_Dbg( p_demux, "%4.4s block queued > dts %"PRId64" spcr %"PRId64" pcr %"PRId64,
166
167
****************************************************************************/
168
static void Ogg_DecodePacket( demux_t *p_demux,
169
logical_stream_t *p_stream,
170
- ogg_packet *p_oggpacket )
171
+ ogg_packet *p_oggpacket, bool b_eos )
172
{
173
demux_sys_t *p_sys = p_demux->p_sys;
174
block_t *p_block;
175
176
}
177
178
vlc_tick_t i_dts = Ogg_GranuleToTime( p_stream, p_oggpacket->granulepos, true, false );
179
+ vlc_tick_t i_enddts = (i_dts == VLC_TICK_INVALID) ? Ogg_GranuleToTime( p_stream, p_oggpacket->granulepos, false, false )
180
+ : VLC_TICK_INVALID;
181
vlc_tick_t i_expected_dts = p_stream->b_interpolation_failed ? VLC_TICK_INVALID :
182
date_Get( &p_stream->dts ); /* Interpolated or previous end time */
183
if( i_dts == VLC_TICK_INVALID )
184
185
memcpy( p_block->p_buffer, p_oggpacket->packet + i_header_len,
186
p_oggpacket->bytes - i_header_len );
187
188
- Ogg_QueueBlocks( p_demux, p_stream, p_block );
189
+ Ogg_QueueBlocks( p_demux, p_stream, p_block, i_enddts, b_eos );
190
}
191
192
static unsigned Ogg_OpusPacketDuration( ogg_packet *p_oggpacket )
193
_service:obs_scm:vlc-beta-20220122.32b3f47bf0.obscpio/modules/gui/qt/dialogs/preferences/complete_preferences.cpp -> _service:obs_scm:vlc-beta-20220123.99f3721426.obscpio/modules/gui/qt/dialogs/preferences/complete_preferences.cpp
Changed
46
1
2
3
/* Create base cat/subcat tree from core config set */
4
unsigned confsize;
5
- module_t *p_module = module_get_main();
6
+ module_t *p_module = main_module;
7
module_config_t *const p_config = module_config_get (p_module, &confsize);
8
for( size_t i = 0; i < confsize; i++ )
9
{
10
11
i_module++ )
12
{
13
PrefsTreeItem *mod_item = subcat_item->child( i_module );
14
- mod_item->panel->apply();
15
+ if( mod_item->panel )
16
+ mod_item->panel->apply();
17
}
18
- subcat_item->panel->apply();
19
+ if( subcat_item->panel )
20
+ subcat_item->panel->apply();
21
}
22
- cat_item->panel->apply();
23
+ if( cat_item->panel )
24
+ cat_item->panel->apply();
25
}
26
}
27
28
29
{
30
bool is_core = this->node_type != PrefsTreeItem::PLUGIN_NODE;
31
enum vlc_config_subcat id = this->subcat_id;
32
-
33
- /* find our module */
34
- module_t *p_module;
35
- if( !is_core )
36
- p_module = this->p_module;
37
- else
38
- {
39
- p_module = module_get_main();
40
- assert( p_module );
41
- }
42
+ module_t *p_module = this->p_module;
43
44
/* check the node itself (its name/longname/helptext) */
45
46
_service:obs_scm:vlc-beta-20220122.32b3f47bf0.obscpio/modules/gui/qt/maininterface/qml/BannerSources.qml -> _service:obs_scm:vlc-beta-20220123.99f3721426.obscpio/modules/gui/qt/maininterface/qml/BannerSources.qml
Changed
16
1
2
anchors.fill: parent
3
}
4
5
+
6
+ MouseArea {
7
+ // don't tranfer mouse to underlying components (#26274)
8
+ anchors.fill: parent
9
+ hoverEnabled: true
10
+ preventStealing: true
11
+ }
12
+
13
Item {
14
id: pLBannerSources
15
16
_service:obs_scm:vlc-beta-20220122.32b3f47bf0.obscpio/modules/video_output/opengl/Makefile.am -> _service:obs_scm:vlc-beta-20220123.99f3721426.obscpio/modules/video_output/opengl/Makefile.am
Changed
12
1
2
libegl_display_gbm_plugin_la_SOURCES = video_output/opengl/egl_display_gbm.c
3
libegl_display_gbm_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) $(EGL_FLAGS) $(GBM_CFLAGS)
4
libegl_display_gbm_plugin_la_LIBADD = $(EGL_LIBS) $(GBM_LIBS)
5
+if HAVE_KMS
6
+# DRM headers are bringing defines useful for opening DRM devices
7
+libegl_display_gbm_plugin_la_CPPFLAGS += $(KMS_CFLAGS) -DHAVE_KMS=1
8
+endif
9
if HAVE_EGL
10
if HAVE_GBM
11
vout_LTLIBRARIES += libegl_display_gbm_plugin.la
12
_service:obs_scm:vlc-beta-20220122.32b3f47bf0.obscpio/modules/video_output/opengl/egl_display_gbm.c -> _service:obs_scm:vlc-beta-20220123.99f3721426.obscpio/modules/video_output/opengl/egl_display_gbm.c
Changed
38
1
2
3
#include <EGL/egl.h>
4
#include <EGL/eglext.h>
5
+
6
#include <gbm.h>
7
8
+#ifdef HAVE_KMS
9
+#include <xf86drm.h>
10
+#endif
11
+
12
#include "egl_display.h"
13
14
struct sys
15
16
static int
17
OpenDeviceFd(const char **out_path)
18
{
19
+ /* Usually, /dev/dri/renderD* or /dev/dri/card* on Linux */
20
static const char *default_drm_device_paths[] = {
21
+#if defined(HAVE_KMS)
22
+ /* OpenBSD has moved to Linux file path for DRM. libdrm defines will
23
+ * provide the correct path, but otherwise we'll always fallback to
24
+ * the standard path for Linux. */
25
+ DRM_DIR_NAME "/" DRM_RENDER_MINOR_NAME "128",
26
+ DRM_DIR_NAME "/" DRM_PRIMARY_MINOR_NAME "0",
27
+ DRM_DIR_NAME "/" DRM_RENDER_MINOR_NAME "129",
28
+ DRM_DIR_NAME "/" DRM_PRIMARY_MINOR_NAME "1",
29
+#else
30
"/dev/dri/renderD128",
31
"/dev/dri/card0",
32
"/dev/dri/renderD129",
33
"/dev/dri/card1",
34
+#endif
35
};
36
37
for (size_t i = 0; i < ARRAY_SIZE(default_drm_device_paths); ++i)
38
_service:obs_scm:vlc-beta.obsinfo
Changed
10
1
2
name: vlc-beta
3
-version: 20220122.32b3f47bf0
4
-mtime: 1642839851
5
-commit: 32b3f47bf09b915d2f9f0ff9c58b71bf33834e2e
6
+version: 20220123.99f3721426
7
+mtime: 1642929893
8
+commit: 99f37214269e1737429ced10be92ec5cdf74ea64
9
10