Skip to content

Commit

Permalink
renderer: add vlc_renderer_item_type
Browse files Browse the repository at this point in the history
  • Loading branch information
tguillem committed Sep 20, 2016
1 parent 832c749 commit 4fbe397
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 7 deletions.
14 changes: 11 additions & 3 deletions include/vlc_renderer_discovery.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
/**
* Create a new renderer item
*
* @param psz_type type of the item
* @param psz_name name of the item
* @param psz_uri uri of the renderer item, must contains a valid protocol and
* a valid host
Expand All @@ -52,9 +53,9 @@
* @return a renderer item or NULL in case of error
*/
VLC_API vlc_renderer_item_t *
vlc_renderer_item_new(const char *psz_name, const char *psz_uri,
const char *psz_extra_sout, const char *psz_icon_uri,
int i_flags) VLC_USED;
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;

/**
* Hold a renderer item, i.e. creates a new reference
Expand All @@ -74,6 +75,13 @@ vlc_renderer_item_release(vlc_renderer_item_t *p_item);
VLC_API const char *
vlc_renderer_item_name(const vlc_renderer_item_t *p_item);

/**
* Get the type (not translated) of a renderer item. For now, the type can only
* be "chromecast" ("upnp", "airplay" may come later).
*/
VLC_API const char *
vlc_renderer_item_type(const vlc_renderer_item_t *p_item);

/**
* Get the sout command of a renderer item
*/
Expand Down
3 changes: 2 additions & 1 deletion modules/services_discovery/microdns.c
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,8 @@ items_add_renderer( struct discovery_sys *p_sys, vlc_renderer_discovery_t *p_rd,
const char *psz_extra_uri = i_flags & VLC_RENDERER_CAN_VIDEO ? NULL : "video=0";

vlc_renderer_item_t *p_renderer_item =
vlc_renderer_item_new( psz_name, psz_uri, psz_extra_uri, psz_icon_uri, i_flags );
vlc_renderer_item_new( "chromecast", psz_name, psz_uri, psz_extra_uri,
psz_icon_uri, i_flags );
if( p_renderer_item == NULL )
{
free( psz_uri );
Expand Down
1 change: 1 addition & 0 deletions src/libvlccore.sym
Original file line number Diff line number Diff line change
Expand Up @@ -764,6 +764,7 @@ vlc_renderer_item_new
vlc_renderer_item_hold
vlc_renderer_item_release
vlc_renderer_item_name
vlc_renderer_item_type
vlc_renderer_item_sout
vlc_renderer_item_icon_uri
vlc_renderer_item_flags
Expand Down
19 changes: 16 additions & 3 deletions src/misc/renderer_discovery.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
struct vlc_renderer_item_t
{
char *psz_name;
char *psz_type;
char *psz_sout;
char *psz_icon_uri;
int i_flags;
Expand All @@ -45,15 +46,16 @@ static void
item_free(vlc_renderer_item_t *p_item)
{
free(p_item->psz_name);
free(p_item->psz_type);
free(p_item->psz_sout);
free(p_item->psz_icon_uri);
free(p_item);
}

vlc_renderer_item_t *
vlc_renderer_item_new(const char *psz_name, const char *psz_uri,
const char *psz_extra_sout, const char *psz_icon_uri,
int i_flags)
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)
{
assert(psz_uri != NULL);
vlc_renderer_item_t *p_item = NULL;
Expand All @@ -67,6 +69,9 @@ vlc_renderer_item_new(const char *psz_name, const char *psz_uri,
if (unlikely(p_item == NULL))
goto error;

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

if (psz_name != NULL)
p_item->psz_name = strdup(psz_name);
else if (asprintf(&p_item->psz_name, "%s (%s)", url.psz_protocol,
Expand Down Expand Up @@ -104,6 +109,14 @@ vlc_renderer_item_name(const vlc_renderer_item_t *p_item)
return p_item->psz_name;
}

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

return p_item->psz_type;
}

const char *
vlc_renderer_item_sout(const vlc_renderer_item_t *p_item)
{
Expand Down

0 comments on commit 4fbe397

Please sign in to comment.