[vlc-commits] SAP: show session info as stream description

Tillmann Karras git at videolan.org
Mon Jan 7 11:29:10 CET 2013


vlc | branch: master | Tillmann Karras <tillmann at selfnet.de> | Wed Jan  2 18:35:12 2013 +0100| [56d427bda0d30ecdc2302699e51fc0bff5b66bef] | committer: Jean-Baptiste Kempf

SAP: show session info as stream description

This adds the SDP i= line (session information) as the description field
in the metadata of the SAP stream.

Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=56d427bda0d30ecdc2302699e51fc0bff5b66bef
---

 modules/services_discovery/sap.c |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/modules/services_discovery/sap.c b/modules/services_discovery/sap.c
index 38775e0..a328596 100644
--- a/modules/services_discovery/sap.c
+++ b/modules/services_discovery/sap.c
@@ -172,6 +172,9 @@ struct  sdp_t
     /* s= field */
     char *psz_sessionname;
 
+    /* i= field */
+    char *psz_sessioninfo;
+
     /* old cruft */
     /* "computed" URI */
     char *psz_uri;
@@ -849,6 +852,9 @@ sap_announce_t *CreateAnnounce( services_discovery_t *p_sd, uint32_t *i_source,
     p_input = input_item_NewWithType( p_sap->p_sdp->psz_uri,
                                       p_sdp->psz_sessionname,
                                       0, NULL, 0, -1, ITEM_TYPE_NET );
+    vlc_meta_t *p_meta = vlc_meta_New();
+    vlc_meta_Set( p_meta, vlc_meta_Description, p_sdp->psz_sessioninfo );
+    p_input->p_meta = p_meta;
     p_sap->p_item = p_input;
     if( !p_input )
     {
@@ -1269,9 +1275,20 @@ static sdp_t *ParseSDP (vlc_object_t *p_obj, const char *psz_sdp)
             }
 
             case 'I':
+            {
                 expect = 'U';
+                /* optional (and may be empty) */
                 if (cat == 'i')
+                {
+                    assert (p_sdp->psz_sessioninfo == NULL);
+                    p_sdp->psz_sessioninfo = strdup (data);
+                    if (p_sdp->psz_sessioninfo == NULL)
+                        goto error;
+                    EnsureUTF8 (p_sdp->psz_sessioninfo);
                     break;
+                }
+            }
+
             case 'U':
                 expect = 'E';
                 if (cat == 'u')
@@ -1509,6 +1526,7 @@ static int Decompress( const unsigned char *psz_src, unsigned char **_dst, int i
 static void FreeSDP( sdp_t *p_sdp )
 {
     free( p_sdp->psz_sessionname );
+    free( p_sdp->psz_sessioninfo );
     free( p_sdp->psz_uri );
 
     for (unsigned j = 0; j < p_sdp->mediac; j++)



More information about the vlc-commits mailing list