Updating link to change in openSUSE:Factory/vlc revision 105.0
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/vlc?expand=0&rev=5b5740013fff125826c044a8a30b6a08
This commit is contained in:
parent
a45fd810b9
commit
4cf24b8157
@ -1,55 +0,0 @@
|
||||
From 5ae7c3aa2847b44f188704049724424b5eb3cdaf Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
|
||||
Date: Tue, 25 Dec 2018 03:46:59 +0100
|
||||
Subject: [PATCH 1/2] Fix leaking AvahiServiceResolver in the error paths
|
||||
|
||||
---
|
||||
modules/services_discovery/avahi.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/modules/services_discovery/avahi.c b/modules/services_discovery/avahi.c
|
||||
index 1d71cc82d3..aa58c7f673 100644
|
||||
--- a/modules/services_discovery/avahi.c
|
||||
+++ b/modules/services_discovery/avahi.c
|
||||
@@ -148,7 +148,10 @@ static void resolve_callback(
|
||||
avahi_address_snprint(a, (sizeof(a)/sizeof(a[0]))-1, address);
|
||||
if( protocol == AVAHI_PROTO_INET6 )
|
||||
if( asprintf( &psz_addr, "[%s]", a ) == -1 )
|
||||
+ {
|
||||
+ avahi_service_resolver_free( r );
|
||||
return;
|
||||
+ }
|
||||
|
||||
const char *psz_protocol = NULL;
|
||||
for( unsigned int i = 0; i < NB_PROTOCOLS; i++ )
|
||||
@@ -157,7 +160,11 @@ static void resolve_callback(
|
||||
psz_protocol = protocols[i].psz_protocol;
|
||||
}
|
||||
if( psz_protocol == NULL )
|
||||
+ {
|
||||
+ free( psz_addr );
|
||||
+ avahi_service_resolver_free( r );
|
||||
return;
|
||||
+ }
|
||||
|
||||
if( txt != NULL )
|
||||
asl = avahi_string_list_find( txt, "path" );
|
||||
@@ -175,6 +182,7 @@ static void resolve_callback(
|
||||
port, value ) == -1 )
|
||||
{
|
||||
free( psz_addr );
|
||||
+ avahi_service_resolver_free( r );
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -190,6 +198,7 @@ static void resolve_callback(
|
||||
psz_addr != NULL ? psz_addr : a, port ) == -1 )
|
||||
{
|
||||
free( psz_addr );
|
||||
+ avahi_service_resolver_free( r );
|
||||
return;
|
||||
}
|
||||
}
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,430 +0,0 @@
|
||||
From c3e38bce3b30c6e0974ec5da47e22260ed5b7ea8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
|
||||
Date: Tue, 25 Dec 2018 03:48:15 +0100
|
||||
Subject: [PATCH 2/2] Add Avahi implementation for chromecast renderer
|
||||
discovery
|
||||
|
||||
---
|
||||
modules/services_discovery/avahi.c | 246 ++++++++++++++++++++++++-----
|
||||
1 file changed, 209 insertions(+), 37 deletions(-)
|
||||
|
||||
Index: vlc-3.0.7.1/modules/services_discovery/avahi.c
|
||||
===================================================================
|
||||
--- vlc-3.0.7.1.orig/modules/services_discovery/avahi.c
|
||||
+++ vlc-3.0.7.1/modules/services_discovery/avahi.c
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <vlc_common.h>
|
||||
#include <vlc_plugin.h>
|
||||
#include <vlc_services_discovery.h>
|
||||
+#include <vlc_renderer_discovery.h>
|
||||
|
||||
#include <avahi-client/client.h>
|
||||
#include <avahi-client/publish.h>
|
||||
@@ -48,8 +49,11 @@
|
||||
/* Callbacks */
|
||||
static int Open ( vlc_object_t * );
|
||||
static void Close( vlc_object_t * );
|
||||
+static int OpenRD ( vlc_object_t * );
|
||||
+static void CloseRD( vlc_object_t * );
|
||||
|
||||
VLC_SD_PROBE_HELPER("avahi", N_("Zeroconf network services"), SD_CAT_LAN)
|
||||
+VLC_RD_PROBE_HELPER( "avahi_renderer", "Avahi Zeroconf renderer Discovery" )
|
||||
|
||||
vlc_module_begin ()
|
||||
set_shortname( "Avahi" )
|
||||
@@ -61,45 +65,153 @@ vlc_module_begin ()
|
||||
add_shortcut( "mdns", "avahi" )
|
||||
|
||||
VLC_SD_PROBE_SUBMODULE
|
||||
+ add_submodule() \
|
||||
+ set_description( N_( "Avahi Renderer Discovery" ) )
|
||||
+ set_category( CAT_SOUT )
|
||||
+ set_subcategory( SUBCAT_SOUT_RENDERER )
|
||||
+ set_capability( "renderer_discovery", 0 )
|
||||
+ set_callbacks( OpenRD, CloseRD )
|
||||
+ add_shortcut( "mdns_renderer", "avahi_renderer" )
|
||||
+ VLC_RD_PROBE_SUBMODULE
|
||||
vlc_module_end ()
|
||||
|
||||
/*****************************************************************************
|
||||
* Local structures
|
||||
*****************************************************************************/
|
||||
|
||||
-struct services_discovery_sys_t
|
||||
+typedef
|
||||
+struct
|
||||
{
|
||||
AvahiThreadedPoll *poll;
|
||||
AvahiClient *client;
|
||||
vlc_dictionary_t services_name_to_input_item;
|
||||
+ vlc_object_t *parent;
|
||||
+ bool renderer;
|
||||
+} discovery_sys_t;
|
||||
+
|
||||
+struct vlc_renderer_discovery_sys
|
||||
+{
|
||||
+ discovery_sys_t s;
|
||||
+};
|
||||
+
|
||||
+struct services_discovery_sys_t
|
||||
+{
|
||||
+ discovery_sys_t s;
|
||||
};
|
||||
|
||||
static const struct
|
||||
{
|
||||
const char *psz_protocol;
|
||||
const char *psz_service_name;
|
||||
+ bool b_renderer;
|
||||
} protocols[] = {
|
||||
- { "ftp", "_ftp._tcp" },
|
||||
- { "smb", "_smb._tcp" },
|
||||
- { "nfs", "_nfs._tcp" },
|
||||
- { "sftp", "_sftp-ssh._tcp" },
|
||||
- { "rtsp", "_rtsp._tcp" },
|
||||
+ { "ftp", "_ftp._tcp", false },
|
||||
+ { "smb", "_smb._tcp", false },
|
||||
+ { "nfs", "_nfs._tcp", false },
|
||||
+ { "sftp", "_sftp-ssh._tcp", false },
|
||||
+ { "rtsp", "_rtsp._tcp", false },
|
||||
+ { "chromecast", "_googlecast._tcp", true },
|
||||
};
|
||||
#define NB_PROTOCOLS (sizeof(protocols) / sizeof(*protocols))
|
||||
|
||||
/*****************************************************************************
|
||||
+ * helpers
|
||||
+ *****************************************************************************/
|
||||
+static void add_renderer( const char *psz_protocol, const char *psz_name,
|
||||
+ const char *psz_addr, uint16_t i_port,
|
||||
+ AvahiStringList *txt, discovery_sys_t *p_sys )
|
||||
+{
|
||||
+ vlc_renderer_discovery_t *p_rd = ( vlc_renderer_discovery_t* )(p_sys->parent);
|
||||
+ AvahiStringList *asl = NULL;
|
||||
+ if ( !strcmp( "chromecast", psz_protocol ) ) {
|
||||
+ int renderer_flags = 0;
|
||||
+
|
||||
+ /* Friendly name */
|
||||
+ asl = avahi_string_list_find( txt, "fn" );
|
||||
+ if( asl != NULL )
|
||||
+ {
|
||||
+ char *key = NULL;
|
||||
+ char *value = NULL;
|
||||
+ if( avahi_string_list_get_pair( asl, &key, &value, NULL ) == 0 &&
|
||||
+ value != NULL )
|
||||
+ {
|
||||
+
|
||||
+ }
|
||||
+ msg_Info( p_rd, "key: '%s' value: '%s'", key, value );
|
||||
+
|
||||
+ if( key != NULL )
|
||||
+ avahi_free( (void *)key );
|
||||
+ if( value != NULL )
|
||||
+ avahi_free( (void *)value );
|
||||
+ }
|
||||
+
|
||||
+ /* capabilities */
|
||||
+ asl = avahi_string_list_find( txt, "ca" );
|
||||
+ if( asl != NULL ) {
|
||||
+ char *key = NULL;
|
||||
+ char *value = NULL;
|
||||
+ if( avahi_string_list_get_pair( asl, &key, &value, NULL ) == 0 &&
|
||||
+ value != NULL )
|
||||
+ {
|
||||
+ int ca = atoi( value );
|
||||
+
|
||||
+ if ( ( ca & 0x01 ) != 0 )
|
||||
+ renderer_flags |= VLC_RENDERER_CAN_VIDEO;
|
||||
+ if ( ( ca & 0x04 ) != 0 )
|
||||
+ renderer_flags |= VLC_RENDERER_CAN_AUDIO;
|
||||
+ }
|
||||
+ msg_Info( p_rd, "key: '%s' value: '%s'", key, value );
|
||||
+
|
||||
+ if( key != NULL )
|
||||
+ avahi_free( (void *)key );
|
||||
+ if( value != NULL )
|
||||
+ avahi_free( (void *)value );
|
||||
+ }
|
||||
+ /*
|
||||
+ * "md": model
|
||||
+ * "id": uuid
|
||||
+ * "ic": icon URL, relative to http://<ip>:8008/
|
||||
+ */
|
||||
+
|
||||
+ const char *extra_uri = renderer_flags & VLC_RENDERER_CAN_VIDEO ? NULL : "no-video";
|
||||
+ char *uri = NULL;
|
||||
+ char *icon_uri = NULL;
|
||||
+ if( asprintf( &uri, "%s://%s:%u", psz_protocol, psz_addr, i_port ) < 0 )
|
||||
+ return;
|
||||
+ if( asprintf( &icon_uri, "http://%s:8008/setup/icon.png", psz_addr) < 0 )
|
||||
+ {
|
||||
+ free( uri );
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ vlc_renderer_item_t *p_renderer_item =
|
||||
+ vlc_renderer_item_new( "chromecast", psz_name, uri, extra_uri,
|
||||
+ "cc_demux", icon_uri, renderer_flags );
|
||||
+ if( p_renderer_item == NULL ) {
|
||||
+ free( uri );
|
||||
+ free( icon_uri );
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ vlc_dictionary_insert( &p_sys->services_name_to_input_item,
|
||||
+ psz_name, p_renderer_item);
|
||||
+ vlc_rd_add_item( p_rd, p_renderer_item );
|
||||
+ vlc_renderer_item_release( p_renderer_item );
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/*****************************************************************************
|
||||
* client_callback
|
||||
*****************************************************************************/
|
||||
static void client_callback( AvahiClient *c, AvahiClientState state,
|
||||
void * userdata )
|
||||
{
|
||||
- services_discovery_t *p_sd = ( services_discovery_t* )userdata;
|
||||
- services_discovery_sys_t *p_sys = p_sd->p_sys;
|
||||
+ discovery_sys_t *p_sys = userdata;
|
||||
|
||||
if( state == AVAHI_CLIENT_FAILURE &&
|
||||
(avahi_client_errno(c) == AVAHI_ERR_DISCONNECTED) )
|
||||
{
|
||||
- msg_Err( p_sd, "avahi client disconnected" );
|
||||
+ msg_Err( p_sys->parent, "avahi client disconnected" );
|
||||
avahi_threaded_poll_quit( p_sys->poll );
|
||||
}
|
||||
}
|
||||
@@ -122,15 +234,14 @@ static void resolve_callback(
|
||||
AvahiLookupResultFlags flags,
|
||||
void* userdata )
|
||||
{
|
||||
- services_discovery_t *p_sd = ( services_discovery_t* )userdata;
|
||||
- services_discovery_sys_t *p_sys = p_sd->p_sys;
|
||||
+ discovery_sys_t *p_sys = userdata;
|
||||
|
||||
VLC_UNUSED(interface); VLC_UNUSED(host_name);
|
||||
VLC_UNUSED(flags);
|
||||
|
||||
if( event == AVAHI_RESOLVER_FAILURE )
|
||||
{
|
||||
- msg_Err( p_sd,
|
||||
+ msg_Err( p_sys->parent,
|
||||
"failed to resolve service '%s' of type '%s' in domain '%s'",
|
||||
name, type, domain );
|
||||
}
|
||||
@@ -142,7 +253,7 @@ static void resolve_callback(
|
||||
AvahiStringList *asl = NULL;
|
||||
input_item_t *p_input = NULL;
|
||||
|
||||
- msg_Info( p_sd, "service '%s' of type '%s' in domain '%s' port %i",
|
||||
+ msg_Info( p_sys->parent, "service '%s' of type '%s' in domain '%s' port %i",
|
||||
name, type, domain, port );
|
||||
|
||||
avahi_address_snprint(a, (sizeof(a)/sizeof(a[0]))-1, address);
|
||||
@@ -154,10 +265,15 @@ static void resolve_callback(
|
||||
}
|
||||
|
||||
const char *psz_protocol = NULL;
|
||||
+ bool is_renderer = false;
|
||||
for( unsigned int i = 0; i < NB_PROTOCOLS; i++ )
|
||||
{
|
||||
if( !strcmp(type, protocols[i].psz_service_name) )
|
||||
+ {
|
||||
psz_protocol = protocols[i].psz_protocol;
|
||||
+ is_renderer = protocols[i].b_renderer;
|
||||
+ break;
|
||||
+ }
|
||||
}
|
||||
if( psz_protocol == NULL )
|
||||
{
|
||||
@@ -166,6 +282,15 @@ static void resolve_callback(
|
||||
return;
|
||||
}
|
||||
|
||||
+ if( txt != NULL && is_renderer )
|
||||
+ {
|
||||
+ const char* addr_v4v6 = psz_addr != NULL ? psz_addr : a;
|
||||
+ add_renderer( psz_protocol, name, addr_v4v6, port, txt, p_sys );
|
||||
+ free( psz_addr );
|
||||
+ avahi_service_resolver_free( r );
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if( txt != NULL )
|
||||
asl = avahi_string_list_find( txt, "path" );
|
||||
if( asl != NULL )
|
||||
@@ -212,6 +337,7 @@ static void resolve_callback(
|
||||
}
|
||||
if( p_input != NULL )
|
||||
{
|
||||
+ services_discovery_t *p_sd = ( services_discovery_t* )(p_sys->parent);
|
||||
vlc_dictionary_insert( &p_sys->services_name_to_input_item,
|
||||
name, p_input );
|
||||
services_discovery_AddItem( p_sd, p_input );
|
||||
@@ -237,8 +363,8 @@ static void browse_callback(
|
||||
{
|
||||
VLC_UNUSED(b);
|
||||
VLC_UNUSED(flags);
|
||||
- services_discovery_t *p_sd = ( services_discovery_t* )userdata;
|
||||
- services_discovery_sys_t *p_sys = p_sd->p_sys;
|
||||
+ discovery_sys_t *p_sys = userdata;
|
||||
+ msg_Info( p_sys->parent, "browse_callback - event: %d, name: %s, type: %s", event, name, type);
|
||||
if( event == AVAHI_BROWSER_NEW )
|
||||
{
|
||||
if( avahi_service_resolver_new( p_sys->client, interface, protocol,
|
||||
@@ -246,22 +372,32 @@ static void browse_callback(
|
||||
0,
|
||||
resolve_callback, userdata ) == NULL )
|
||||
{
|
||||
- msg_Err( p_sd, "failed to resolve service '%s': %s", name,
|
||||
+ msg_Err( p_sys->parent, "failed to resolve service '%s': %s", name,
|
||||
avahi_strerror( avahi_client_errno( p_sys->client ) ) );
|
||||
}
|
||||
}
|
||||
else if( name )
|
||||
{
|
||||
/** \todo Store the input id and search it, rather than searching the items */
|
||||
- input_item_t *p_item;
|
||||
+ void *p_item;
|
||||
p_item = vlc_dictionary_value_for_key(
|
||||
&p_sys->services_name_to_input_item,
|
||||
name );
|
||||
if( !p_item )
|
||||
- msg_Err( p_sd, "failed to find service '%s' in playlist", name );
|
||||
+ msg_Err( p_sys->parent, "failed to find service '%s' in playlist", name );
|
||||
else
|
||||
{
|
||||
- services_discovery_RemoveItem( p_sd, p_item );
|
||||
+ if( p_sys->renderer )
|
||||
+ {
|
||||
+ vlc_renderer_discovery_t *p_rd = ( vlc_renderer_discovery_t* )(p_sys->parent);
|
||||
+ vlc_rd_remove_item( p_rd, p_item );
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ //input_item_t *p_item;
|
||||
+ services_discovery_t *p_sd = ( services_discovery_t* )(p_sys->parent);
|
||||
+ services_discovery_RemoveItem( p_sd, p_item );
|
||||
+ }
|
||||
vlc_dictionary_remove_value_for_key(
|
||||
&p_sys->services_name_to_input_item,
|
||||
name, NULL, NULL );
|
||||
@@ -279,46 +415,41 @@ static void clear_item( void* p_item, vo
|
||||
/*****************************************************************************
|
||||
* Open: initialize and create stuff
|
||||
*****************************************************************************/
|
||||
-static int Open( vlc_object_t *p_this )
|
||||
+static int OpenCommon( discovery_sys_t *p_sys )
|
||||
{
|
||||
- services_discovery_t *p_sd = ( services_discovery_t* )p_this;
|
||||
- services_discovery_sys_t *p_sys;
|
||||
int err;
|
||||
|
||||
- p_sd->p_sys = p_sys = calloc( 1, sizeof( services_discovery_sys_t ) );
|
||||
- if( !p_sys )
|
||||
- return VLC_ENOMEM;
|
||||
-
|
||||
- p_sd->description = _("Zeroconf network services");
|
||||
-
|
||||
vlc_dictionary_init( &p_sys->services_name_to_input_item, 1 );
|
||||
|
||||
p_sys->poll = avahi_threaded_poll_new();
|
||||
if( p_sys->poll == NULL )
|
||||
{
|
||||
- msg_Err( p_sd, "failed to create Avahi threaded poll" );
|
||||
+ msg_Err( p_sys->parent, "failed to create Avahi threaded poll" );
|
||||
goto error;
|
||||
}
|
||||
|
||||
p_sys->client = avahi_client_new( avahi_threaded_poll_get(p_sys->poll),
|
||||
- 0, client_callback, p_sd, &err );
|
||||
+ 0, client_callback, p_sys, &err );
|
||||
if( p_sys->client == NULL )
|
||||
{
|
||||
- msg_Err( p_sd, "failed to create avahi client: %s",
|
||||
+ msg_Err( p_sys->parent, "failed to create avahi client: %s",
|
||||
avahi_strerror( err ) );
|
||||
goto error;
|
||||
}
|
||||
|
||||
for( unsigned i = 0; i < NB_PROTOCOLS; i++ )
|
||||
{
|
||||
+ if ( protocols[i].b_renderer != p_sys->renderer )
|
||||
+ continue;
|
||||
+
|
||||
AvahiServiceBrowser *sb;
|
||||
sb = avahi_service_browser_new( p_sys->client, AVAHI_IF_UNSPEC,
|
||||
AVAHI_PROTO_UNSPEC,
|
||||
protocols[i].psz_service_name, NULL,
|
||||
- 0, browse_callback, p_sd );
|
||||
+ 0, browse_callback, p_sys );
|
||||
if( sb == NULL )
|
||||
{
|
||||
- msg_Err( p_sd, "failed to create avahi service browser %s", avahi_strerror( avahi_client_errno(p_sys->client) ) );
|
||||
+ msg_Err( p_sys->parent, "failed to create avahi service browser %s", avahi_strerror( avahi_client_errno(p_sys->client) ) );
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
@@ -339,13 +470,39 @@ error:
|
||||
return VLC_EGENERIC;
|
||||
}
|
||||
|
||||
+static int Open( vlc_object_t *p_this )
|
||||
+{
|
||||
+ services_discovery_t *p_sd = ( services_discovery_t* )p_this;
|
||||
+ p_sd->description = _("Zeroconf network services");
|
||||
+
|
||||
+ p_sd->p_sys = calloc( 1, sizeof( services_discovery_sys_t ) );
|
||||
+ if( !p_sd->p_sys )
|
||||
+ return VLC_ENOMEM;
|
||||
+ p_sd->p_sys->s.parent = p_this;
|
||||
+ p_sd->p_sys->s.renderer = false;
|
||||
+
|
||||
+ return OpenCommon( &p_sd->p_sys->s );
|
||||
+}
|
||||
+
|
||||
+static int OpenRD( vlc_object_t *p_this )
|
||||
+{
|
||||
+ vlc_renderer_discovery_t *p_rd = (vlc_renderer_discovery_t *)p_this;
|
||||
+
|
||||
+ p_rd->p_sys = calloc( 1, sizeof( vlc_renderer_discovery_sys ) );
|
||||
+ if( !p_rd->p_sys )
|
||||
+ return VLC_ENOMEM;
|
||||
+ p_rd->p_sys->s.parent = p_this;
|
||||
+ p_rd->p_sys->s.renderer = true;
|
||||
+
|
||||
+ msg_Info( p_this, "Opening Avahi Renderer SD");
|
||||
+ return OpenCommon( &p_rd->p_sys->s );
|
||||
+}
|
||||
+
|
||||
/*****************************************************************************
|
||||
* Close: cleanup
|
||||
*****************************************************************************/
|
||||
-static void Close( vlc_object_t *p_this )
|
||||
+static void CloseCommon( discovery_sys_t *p_sys )
|
||||
{
|
||||
- services_discovery_t *p_sd = ( services_discovery_t* )p_this;
|
||||
- services_discovery_sys_t *p_sys = p_sd->p_sys;
|
||||
avahi_threaded_poll_stop( p_sys->poll );
|
||||
|
||||
avahi_client_free( p_sys->client );
|
||||
@@ -354,3 +511,18 @@ static void Close( vlc_object_t *p_this
|
||||
vlc_dictionary_clear( &p_sys->services_name_to_input_item, clear_item, NULL );
|
||||
free( p_sys );
|
||||
}
|
||||
+
|
||||
+static void Close( vlc_object_t *p_this )
|
||||
+{
|
||||
+ services_discovery_t *p_sd = ( services_discovery_t* )p_this;
|
||||
+ services_discovery_sys_t *p_sys = p_sd->p_sys;
|
||||
+ CloseCommon( &p_sys->s );
|
||||
+}
|
||||
+
|
||||
+static void CloseRD( vlc_object_t *p_this )
|
||||
+{
|
||||
+ msg_Info( p_this, "Closing Avahi Renderer SD");
|
||||
+ vlc_renderer_discovery_t *p_rd = (vlc_renderer_discovery_t *)p_this;
|
||||
+ vlc_renderer_discovery_sys *p_sys = p_rd->p_sys;
|
||||
+ CloseCommon( &p_sys->s );
|
||||
+}
|
@ -1,35 +0,0 @@
|
||||
https://mailman.videolan.org/pipermail/vlc-devel/2019-October/128188.html
|
||||
|
||||
commit d5e7205f0a4c5dbd55b1b56487f3044a5b01be16
|
||||
Author: Bernhard M. Wiedemann <bwiedemann@suse.de>
|
||||
Date: Fri Oct 4 12:55:46 2019 +0200
|
||||
|
||||
Sort tar file list
|
||||
|
||||
if available (in GNU tar >= 1.28)
|
||||
and use ustar format to not have pax headers add nondetermistic bits
|
||||
to make skins2/default.vlt reproducible.
|
||||
|
||||
See https://reproducible-builds.org/ for why this is good.
|
||||
|
||||
This patch was done while working on reproducible builds for openSUSE.
|
||||
|
||||
Signed-off-by: Bernhard M. Wiedemann <bwiedemann@suse.de>
|
||||
|
||||
diff --git a/share/Makefile.am b/share/Makefile.am
|
||||
index e5b801a5be..327d36a64d 100644
|
||||
--- a/share/Makefile.am
|
||||
+++ b/share/Makefile.am
|
||||
@@ -92,8 +92,11 @@ skins2_default_vlt_FILES = \
|
||||
skins2/default.vlt: $(skins2_default_vlt_FILES)
|
||||
$(AM_V_at)mkdir -p skins2
|
||||
$(AM_V_at)rm -f -- skins2/default.vlt.tmp
|
||||
- $(AM_V_GEN)GZIP=--no-name \
|
||||
+ $(AM_V_GEN)tarsort= ; \
|
||||
+ tar --help|grep -q sort=ORDER && tarsort=--sort=name ; \
|
||||
+ GZIP=--no-name \
|
||||
tar cvvzf skins2/default.vlt.tmp \
|
||||
+ --format=ustar $$tarsort \
|
||||
--owner=root --group=root --directory="$(srcdir)/skins2" \
|
||||
default/
|
||||
$(AM_V_at)mv -f -- skins2/default.vlt.tmp skins2/default.vlt
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e0149ef4a20a19b9ecd87309c2d27787ee3f47dfd47c6639644bc1f6fd95bdf6
|
||||
size 26041520
|
3
vlc-3.0.9.2.tar.xz
Normal file
3
vlc-3.0.9.2.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a9bdad293d81cd48516abad8d490d8ab4012964ae541ff19e00021e071e47601
|
||||
size 25895876
|
6
vlc-3.0.9.2.tar.xz.asc
Normal file
6
vlc-3.0.9.2.tar.xz.asc
Normal file
@ -0,0 +1,6 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iF0EABECAB0WIQRl98a0IGvQV6frc3hxgHE75Y0a3AUCXo8OUQAKCRBxgHE75Y0a
|
||||
3MRuAJ9rw6YHNmAbLW1wHcAWVg+RDSDmLwCcCEXAfYzhkebOUtLNvf93QPWVd1s=
|
||||
=SUQV
|
||||
-----END PGP SIGNATURE-----
|
123
vlc.changes
123
vlc.changes
@ -1,3 +1,76 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 16 16:10:19 UTC 2020 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||
|
||||
- Update to version 3.0.9.2:
|
||||
+ Misc: Properly bump the version in configure.ac.
|
||||
- Changes from version 3.0.9.1:
|
||||
+ Misc: Fix VLSub returning 401 for earch request.
|
||||
- Changes from version 3.0.9:
|
||||
+ Core: Work around busy looping when playing an invalid item
|
||||
through VLM.
|
||||
+ Access:
|
||||
* Multiple dvdread and dvdnav crashs fixes
|
||||
* Fixed DVD glitches on clip change
|
||||
* Fixed dvdread commands/data sequence inversion in some cases causing
|
||||
unwanted glitches
|
||||
* Better handling of authored as corrupted DVD
|
||||
* Added libsmb2 support for SMB2/3 shares
|
||||
+ Demux:
|
||||
* Fix TTML entities not passed to decoder
|
||||
* Fixed some WebVTT styling tags being not applied
|
||||
* Misc raw H264/HEVC frame rate fixes
|
||||
* Fix adaptive regression on TS format change (mostly HLS)
|
||||
* Fixed MP4 regression with twos/sowt PCM audio
|
||||
* Fixed some MP4 raw quicktime and ms-PCM audio
|
||||
* Fixed MP4 interlacing handling
|
||||
* Multiple adaptive stack (DASH/HLS/Smooth) fixes
|
||||
* Enabled Live seeking for HLS
|
||||
* Fixed seeking in some cases for HLS
|
||||
* Improved Live playback for Smooth and DASH
|
||||
* Fixed adaptive unwanted end of stream in some cases
|
||||
* Faster adaptive start and new buffering control options
|
||||
+ Packetizers:
|
||||
* Fixes H264/HEVC incomplete draining in some cases
|
||||
* packetizer_helper: Fix potential trailing junk on last packet
|
||||
* Added missing drain in packetizers that was causing missing
|
||||
last frame or audio
|
||||
* Improved check to prevent fLAC synchronization drops
|
||||
+ Decoder:
|
||||
* avcodec: revector video decoder to fix incomplete drain
|
||||
* spudec: implemented palette updates, fixing missing subtitles
|
||||
on some DVD
|
||||
* Fixed WebVTT CSS styling not being applied on Windows/macOS
|
||||
* Fixed Hebrew teletext pages support in zvbi
|
||||
* Fixed Dav1d aborting decoding on corrupted picture
|
||||
* Extract and display of all CEA708 subtitles
|
||||
* Update libfaad to 2.9.1
|
||||
* Add DXVA support for VP9 Profile 2 (10 bits)
|
||||
* Mediacodec aspect ratio with Amazon devices
|
||||
+ Audio output:
|
||||
* Added support for iOS audiounit audio above 48KHz
|
||||
* Added support for amem audio up to 384KHz
|
||||
+ Video output:
|
||||
* Fix for opengl glitches in some drivers
|
||||
* Fix GMA950 opengl support on macOS
|
||||
* YUV to RGB StretchRect fixes with NVIDIA drivers
|
||||
* Use libpacebo new tone mapping desaturation algorithm
|
||||
+ Text renderer:
|
||||
* Fix crashes on macOS with SSA/ASS subtitles containing emoji
|
||||
* Fixed unwanted growing background in Freetype rendering and Y padding
|
||||
+ Mux: Fixed some YUV mappings
|
||||
+ Service Discovery: Update libmicrodns to 0.1.2.
|
||||
+ Misc:
|
||||
* Update YouTube, SoundCloud and Vocaroo scripts: this restores
|
||||
playback of YouTube URLs.
|
||||
* Add missing .wpl & .zpl file associations on Windows
|
||||
* Improved chromecast audio quality
|
||||
+ Updated translations.
|
||||
- Drop patches that have been merged upstream:
|
||||
D 0001-Fix-leaking-AvahiServiceResolver-in-the-error-paths.patch
|
||||
D 0002-Add-Avahi-implementation-for-chromecast-renderer-dis.patch
|
||||
D reproducible.patch
|
||||
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 31 08:58:04 UTC 2020 - Bernhard Wiedemann <bwiedemann@suse.com>
|
||||
|
||||
@ -74,6 +147,56 @@ Tue Aug 20 07:55:46 UTC 2019 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||
- Disbale mod-plug for the time being: libmodplug 0.8.9 is not yet
|
||||
available.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 20 07:55:46 UTC 2019 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||
|
||||
- Update to version 3.0.8 'vetinari':
|
||||
+ Fix stuttering for low framerate videos
|
||||
+ Improve adaptive streaming
|
||||
+ Improve audio output for external audio devices on macOS/iOS
|
||||
+ Fix hardware acceleration with Direct3D11 for some AMD drivers
|
||||
+ Fix WebVTT subtitles rendering
|
||||
+ Vetinari is a major release changing a lot in the media engine of VLC.
|
||||
It is one of the largest release we've ever done.
|
||||
Notably, it:
|
||||
- activates hardware decoding on all platforms, of H.264 & H.265, 8 & 10bits,
|
||||
allowing 4K60 or even 8K decoding with little CPU consumption,
|
||||
- merges all the code from the mobile ports into the same codebase with
|
||||
common numbering and releases,
|
||||
- supports 360 video and 3D audio, and prepares for VR content,
|
||||
- supports direct HDR and HDR tone-mapping,
|
||||
- updates the audio passthrough for HD Audio codecs,
|
||||
- allows browsing of local network drives like SMB, FTP, SFTP, NFS...
|
||||
- stores the passwords securely,
|
||||
- brings a new subtitle rendering engine, supporting ComplexTextLayout
|
||||
and font fallback to support multiple languages and fonts,
|
||||
- supports ChromeCast with the new renderer framework,
|
||||
- adds support for numerous new formats and codecs, including WebVTT,
|
||||
AV1, TTML, HQX, 708, Cineform, and many more,
|
||||
- improves Bluray support with Java menus, aka BD-J,
|
||||
- updates the macOS interface with major cleaning and improvements,
|
||||
- support HiDPI UI on Windows, with the switch to Qt5,
|
||||
- prepares the experimental support for Wayland on Linux, and
|
||||
switches to OpenGL by default on Linux.
|
||||
+ Security fixes included:
|
||||
* Fix a buffer overflow in the MKV demuxer (CVE-2019-14970)
|
||||
* Fix a read buffer overflow in the avcodec decoder (CVE-2019-13962)
|
||||
* Fix a read buffer overflow in the FAAD decoder
|
||||
* Fix a read buffer overflow in the OGG demuxer (CVE-2019-14437, CVE-2019-14438)
|
||||
* Fix a read buffer overflow in the ASF demuxer (CVE-2019-14776)
|
||||
* Fix a use after free in the MKV demuxer (CVE-2019-14777, CVE-2019-14778)
|
||||
* Fix a use after free in the ASF demuxer (CVE-2019-14533)
|
||||
* Fix a couple of integer underflows in the MP4 demuxer (CVE-2019-13602)
|
||||
* Fix a null dereference in the dvdnav demuxer
|
||||
* Fix a null dereference in the ASF demuxer (CVE-2019-14534)
|
||||
* Fix a null dereference in the AVI demuxer
|
||||
* Fix a division by zero in the CAF demuxer (CVE-2019-14498)
|
||||
* Fix a division by zero in the ASF demuxer (CVE-2019-14535)
|
||||
- Drop vlc-CVE-2019-13962.patch, vlc-CVE-2019-13602_1.patch and
|
||||
vlc-CVE-2019-13602_2.patch: fixed upstream.
|
||||
- Disbale mod-plug for the time being: libmodplug 0.8.9 is not yet
|
||||
available.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Aug 4 01:44:44 UTC 2019 - Stefan Brüns <stefan.bruens@rwth-aachen.de>
|
||||
|
||||
|
28
vlc.keyring
Normal file
28
vlc.keyring
Normal file
@ -0,0 +1,28 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQGiBFD9w2QRBACoEzH9KKirWE4wgiuPPynNnxks+p+t5i1z3CG+1XhagmTHoOf3
|
||||
v8i19kKHV6WnVMn2CKJFgwTTLYXOJTrBM/4ABVtu11cHeeueeo+pCSkdoLzYJ5QF
|
||||
HbByB6j33QUbwKF0frEs+ge4LxzvYyCDAmNAW560QtOAR9Lk1Fo5B1GXzwCg1kDk
|
||||
RkSe7EOZNm1U2rYAQ2VPrfsEAIHr4ooOyUByPR7XpoDOKoaXEG0hjpgh46lbgse+
|
||||
dQx8YrxS9vXQLwYokfWLrs55avx9Ys0iVv2TMv7X4Tn5sTVaK5K+NbKhxhLORxGI
|
||||
sgKqRn7W5SG5xoO0w/dmQj756ppjITGbxjFuhYE0X5S6NeMhUuFci7sJ42R7F1Ko
|
||||
6sYuA/wOMUxCk4XOXeQF16ApyyenjE/UWbBNEhBmjEsZkYAFNc89pAEnEFSnIxK8
|
||||
fcuCQioM6ojjaW+aEs/q3/klI0nat9LMLhNSCebjriMHwJDU70NeCn4nPWsfItT1
|
||||
eKvbHNcX+3bq3D/i2Wa3PZ5YFFF01C61dHmVC9YGh4sAOXO09LQjVmlkZW9MQU4g
|
||||
UmVsZWFzZSBTaWduaW5nIEtleSAoMjAxMymIaAQTEQIAKAIbAwYLCQgHAwIGFQgC
|
||||
CQoLBBYCAwECHgECF4AFAlk3/bQFCQobbdAACgkQcYBxO+WNGtzKtgCgr8e+eznK
|
||||
XeYnZYnSKz2pxvbetsQAn36gLn30dOINLPzDmWMc4lfIA2wGtCNWaWRlb0xBTiBS
|
||||
ZWxlYXNlIFNpZ25pbmcgS2V5ICgyMDE0KYhpBBMRAgApAhsDBwsJCAcDAgEGFQgC
|
||||
CQoLBBYCAwECHgECF4AFAlk3/bQFCQobbdAACgkQcYBxO+WNGty1xgCfci7vVRoG
|
||||
FfDEccO417/OdsZ4l7MAnitkQtN+Lq+3rjgDZAWlNaF45i7TtCNWaWRlb0xBTiBS
|
||||
ZWxlYXNlIFNpZ25pbmcgS2V5ICgyMDE1KYhqBBMRAgAqAhsDBQsJCAcCBhUICQoL
|
||||
AgQWAgMBAh4BAheAAhkBBQJZN/20BQkKG23QAAoJEHGAcTvljRrcwscAn0CQBVCl
|
||||
ArPMtbaybLn0TSsAehjkAKCQcHSfvkDxxYsY13x2Xk7ONqp2GbQjVmlkZW9MQU4g
|
||||
UmVsZWFzZSBTaWduaW5nIEtleSAoMjAxNimIaAQTEQIAKAIbAwYLCQgHAwIGFQgC
|
||||
CQoLBBYCAwECHgECF4AFAlk3/bQFCQobbdAACgkQcYBxO+WNGtzITACgmUpWpNGn
|
||||
QKo+Rcap86RA0ptdWLkAn3/VU5ao7m0kWLWks5Nxj/Snx3+StCNWaWRlb0xBTiBS
|
||||
ZWxlYXNlIFNpZ25pbmcgS2V5ICgyMDE3KYhnBBMRAgAnAhsDBQsJCAcCBhUICQoL
|
||||
AgQWAgMBAh4BAheABQJZN/20BQkKG23QAAoJEHGAcTvljRrcX08AoIRlpqSSaWmw
|
||||
Kd+PCQO5VNjtSWmOAKDQoyHd6QzL3BAkOajdEg3G98fM/Q==
|
||||
=k6/6
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
13
vlc.spec
13
vlc.spec
@ -33,7 +33,7 @@
|
||||
%bcond_with faad
|
||||
%bcond_with fdk_aac
|
||||
Name: vlc
|
||||
Version: 3.0.8
|
||||
Version: 3.0.9.2
|
||||
Release: 0
|
||||
Summary: Graphical media player
|
||||
License: GPL-2.0-or-later AND LGPL-2.1-or-later
|
||||
@ -41,6 +41,8 @@ Group: Productivity/Multimedia/Video/Players
|
||||
URL: http://www.videolan.org
|
||||
Source: http://download.videolan.org/%{name}/%{version}/%{name}-%{version}.tar.xz
|
||||
Source2: %{name}-rpmlintrc
|
||||
Source98: http://download.videolan.org/%{name}/%{version}/%{name}-%{version}.tar.xz.asc
|
||||
Source99: vlc.keyring
|
||||
# PATCH-FIX-UPSTREAM vlc.a52.patch https://trac.videolan.org/vlc/ticket/3731 dimstar@opensuse.org -- Support new version of liba52
|
||||
Patch0: vlc.a52.patch
|
||||
# PATCH-FIX-UPSTREAM vlc-allow-deprecated-fribidi.patch dimstar@opensuse.org -- Allow usage of deprecated fribidi functions
|
||||
@ -51,16 +53,10 @@ Patch2: vlc-lua-5.3.patch
|
||||
Patch3: fix-build-with-fdk-2.0.patch
|
||||
# PATCH-FEATURE-OPENSUSE vlc-projectM-qt5.patch -- Build against projectM-qt5; openSUSE provides projectM as -qt and -qt5 variant
|
||||
Patch100: vlc-projectM-qt5.patch
|
||||
# PATCH-FIX-UPSTREAM 0001-Fix-leaking-AvahiServiceResolver-in-the-error-paths.patch -- Fix some memleaks
|
||||
Patch101: 0001-Fix-leaking-AvahiServiceResolver-in-the-error-paths.patch
|
||||
# PATCH-FIX-UPSTREAM 0002-Add-Avahi-implementation-for-chromecast-renderer-dis.patch -- Use Avahi for discovery, microdns is not available
|
||||
Patch102: 0002-Add-Avahi-implementation-for-chromecast-renderer-dis.patch
|
||||
# PATCH-FIX-UPSTREAM -- Use OpenCV C++ API
|
||||
Patch103: 0001-Port-OpenCV-facedetect-example-to-C-API.patch
|
||||
# PATCH-FIX-UPSTREAM -- Fix building with Qt 5.15 by adding a missing include
|
||||
Patch104: fix-missing-includes-with-qt-5.15.patch
|
||||
# PATCH-FIX-UPSTREAM reproducible.patch -- make tar reproducible -- 87ea3c0dfb7367b434f688d657f931c074bb34f4
|
||||
Patch105: reproducible.patch
|
||||
BuildRequires: Mesa-devel
|
||||
BuildRequires: aalib-devel
|
||||
BuildRequires: alsa-devel >= 1.0.24
|
||||
@ -405,11 +401,8 @@ OpenCV based video filters and a face detection example.
|
||||
%if 0%{?suse_version} > 1320 && 0%{?suse_version} < 1550
|
||||
%patch100 -p1
|
||||
%endif
|
||||
%patch101 -p1
|
||||
%patch102 -p1
|
||||
%patch103 -p1
|
||||
%patch104 -p1
|
||||
%patch105 -p1
|
||||
|
||||
### And LUA 5.3.1 has some more API changes
|
||||
if pkg-config --atleast-version 5.3.1 lua; then
|
||||
|
Loading…
x
Reference in New Issue
Block a user