Skip to content

Commit

Permalink
renderer: tell when a demux-filter should be used with a renderer
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Guillem <[email protected]>
  • Loading branch information
robUx4 authored and tguillem committed Sep 20, 2016
1 parent 4fbe397 commit 99e1b21
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 5 deletions.
10 changes: 9 additions & 1 deletion include/vlc_renderer_discovery.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,16 @@
* @param psz_uri uri of the renderer item, must contains a valid protocol and
* a valid host
* @param psz_extra_sout extra sout options
* @param psz_demux_filter demux filter to use with the renderer
* @param psz_icon_uri icon uri of the renderer item
* @param i_flags flags for the item
* @return a renderer item or NULL in case of error
*/
VLC_API vlc_renderer_item_t *
vlc_renderer_item_new(const char *psz_type, const char *psz_name,
const char *psz_uri, const char *psz_extra_sout,
const char *psz_icon_uri, int i_flags) VLC_USED;
const char *psz_demux_filter, const char *psz_icon_uri,
int i_flags) VLC_USED;

/**
* Hold a renderer item, i.e. creates a new reference
Expand All @@ -82,6 +84,12 @@ vlc_renderer_item_name(const vlc_renderer_item_t *p_item);
VLC_API const char *
vlc_renderer_item_type(const vlc_renderer_item_t *p_item);

/**
* Get the demux filter to use with a renderer item
*/
VLC_API const char *
vlc_renderer_item_demux_filter(const vlc_renderer_item_t *p_item);

/**
* Get the sout command of a renderer item
*/
Expand Down
9 changes: 6 additions & 3 deletions modules/services_discovery/microdns.c
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,8 @@ items_add_input( struct discovery_sys *p_sys, services_discovery_t *p_sd,
static int
items_add_renderer( struct discovery_sys *p_sys, vlc_renderer_discovery_t *p_rd,
const char *psz_name, char *psz_uri,
const char *psz_icon_uri, int i_flags )
const char *psz_demux_filter, const char *psz_icon_uri,
int i_flags )
{
struct item *p_item = malloc( sizeof(struct item) );
if( p_item == NULL )
Expand All @@ -193,7 +194,7 @@ items_add_renderer( struct discovery_sys *p_sys, vlc_renderer_discovery_t *p_rd,

vlc_renderer_item_t *p_renderer_item =
vlc_renderer_item_new( "chromecast", psz_name, psz_uri, psz_extra_uri,
psz_icon_uri, i_flags );
psz_demux_filter, psz_icon_uri, i_flags );
if( p_renderer_item == NULL )
{
free( psz_uri );
Expand Down Expand Up @@ -484,6 +485,7 @@ new_entries_rd_cb( void *p_this, int i_status, const struct rr_entry *p_entries
char *psz_icon_uri = NULL;
char *psz_uri = create_uri( p_srv->psz_protocol, psz_ip, b_ipv6,
p_srv->i_port );
const char *psz_demux_filter = NULL;

if( psz_uri == NULL )
break;
Expand All @@ -508,7 +510,8 @@ new_entries_rd_cb( void *p_this, int i_status, const struct rr_entry *p_entries
p_srv->i_renderer_flags |= VLC_RENDERER_CAN_VIDEO;

items_add_renderer( p_sys, p_rd, p_srv->psz_device_name, psz_uri,
psz_icon_uri, p_srv->i_renderer_flags );
psz_demux_filter, psz_icon_uri,
p_srv->i_renderer_flags );
free(psz_icon_uri);
}

Expand Down
1 change: 1 addition & 0 deletions src/libvlccore.sym
Original file line number Diff line number Diff line change
Expand Up @@ -767,6 +767,7 @@ vlc_renderer_item_name
vlc_renderer_item_type
vlc_renderer_item_sout
vlc_renderer_item_icon_uri
vlc_renderer_item_demux_filter
vlc_renderer_item_flags
vlc_rd_get_names
vlc_rd_new
Expand Down
16 changes: 15 additions & 1 deletion src/misc/renderer_discovery.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ struct vlc_renderer_item_t
char *psz_type;
char *psz_sout;
char *psz_icon_uri;
char *psz_demux_filter;
int i_flags;
atomic_uint refs;
};
Expand All @@ -49,13 +50,15 @@ item_free(vlc_renderer_item_t *p_item)
free(p_item->psz_type);
free(p_item->psz_sout);
free(p_item->psz_icon_uri);
free(p_item->psz_demux_filter);
free(p_item);
}

vlc_renderer_item_t *
vlc_renderer_item_new(const char *psz_type, const char *psz_name,
const char *psz_uri, const char *psz_extra_sout,
const char *psz_icon_uri, int i_flags)
const char *psz_demux_filter, const char *psz_icon_uri,
int i_flags)
{
assert(psz_uri != NULL);
vlc_renderer_item_t *p_item = NULL;
Expand Down Expand Up @@ -89,6 +92,9 @@ vlc_renderer_item_new(const char *psz_type, const char *psz_name,
if ((p_item->psz_icon_uri = strdup(psz_icon_uri)) == NULL)
goto error;

if ((p_item->psz_demux_filter = strdup(psz_demux_filter)) == NULL)
goto error;

p_item->i_flags = i_flags;
atomic_init(&p_item->refs, 1);
vlc_UrlClean(&url);
Expand Down Expand Up @@ -133,6 +139,14 @@ vlc_renderer_item_icon_uri(const vlc_renderer_item_t *p_item)
return p_item->psz_icon_uri;
}

const char *
vlc_renderer_item_demux_filter(const vlc_renderer_item_t *p_item)
{
assert(p_item != NULL);

return p_item->psz_demux_filter;
}

int
vlc_renderer_item_flags(const vlc_renderer_item_t *p_item)
{
Expand Down

0 comments on commit 99e1b21

Please sign in to comment.