[vlc-devel] commit: rtmp: add an option to let the user set swfUrl and pageUrl. ( Rémi Duraffort )

git version control git at videolan.org
Wed Jul 8 09:26:28 CEST 2009


vlc | branch: master | Rémi Duraffort <ivoire at videolan.org> | Wed Jul  8 09:20:12 2009 +0200| [f78545dda5791b7c0f10f342f45bc9ec05420c76] | committer: Rémi Duraffort 

rtmp: add an option to let the user set swfUrl and pageUrl.

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

 modules/access/rtmp/access.c       |   21 +++++++++++++++++++++
 modules/access/rtmp/rtmp_amf_flv.c |    8 ++++----
 modules/access/rtmp/rtmp_amf_flv.h |    7 +++++--
 3 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/modules/access/rtmp/access.c b/modules/access/rtmp/access.c
index 53647ba..e5b6c05 100644
--- a/modules/access/rtmp/access.c
+++ b/modules/access/rtmp/access.c
@@ -45,6 +45,16 @@
     "Caching value for RTMP streams. This " \
     "value should be set in milliseconds." )
 
+#define SWFURL_TEXT N_("Default SWF Referrer URL")
+#define SWFURL_LONGTEXT N_("The SFW URL to use as referrer when connecting to"\
+                           "the server. This is the SWF file that contained"  \
+                           "the stream.")
+
+#define PAGEURL_TEXT N_("Page Referrer URL")
+#define PAGEURL_LONGTEXT N_("Page URL to use as referrer when connecting to"  \
+                            "the server. This is the page housing the SWF"    \
+                            "file.")
+
 static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
@@ -56,6 +66,10 @@ vlc_module_begin ()
 
     add_integer( "rtmp-caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT,
                  CACHING_LONGTEXT, true )
+    add_string( "rtmp-swfurl", "file:///mac.flv", NULL, SWFURL_TEXT,
+                SWFURL_LONGTEXT, true )
+    add_string( "rtmp-pageurl", "file:///mac.html", NULL, PAGEURL_TEXT,
+                PAGEURL_LONGTEXT, true )
 
     set_capability( "access", 0 )
     set_callbacks( Open, Close )
@@ -123,6 +137,9 @@ static int Open( vlc_object_t *p_this )
     p_sys->p_thread->psz_application = strndup( p_sys->p_thread->url.psz_path + 1, length_path - length_media_name - 2 );
     p_sys->p_thread->psz_media = strdup( p_sys->p_thread->url.psz_path + ( length_path - length_media_name ) );
 
+    p_sys->p_thread->psz_swf_url = var_CreateGetString( p_access, "rtmp-swfurl" );
+    p_sys->p_thread->psz_page_url = var_CreateGetString( p_access, "rtmp-pageurl" );
+
     msg_Dbg( p_access, "rtmp: host='%s' port=%d path='%s'",
              p_sys->p_thread->url.psz_host, p_sys->p_thread->url.i_port, p_sys->p_thread->url.psz_path );
 
@@ -248,6 +265,8 @@ error2:
 
     free( p_sys->p_thread->psz_application );
     free( p_sys->p_thread->psz_media );
+    free( p_sys->p_thread->psz_swf_url );
+    free( p_sys->p_thread->psz_page_url );
 
     net_Close( p_sys->p_thread->fd );
 error:
@@ -298,6 +317,8 @@ static void Close( vlc_object_t * p_this )
     vlc_UrlClean( &p_sys->p_thread->url );
     free( p_sys->p_thread->psz_application );
     free( p_sys->p_thread->psz_media );
+    free( p_sys->p_thread->psz_swf_url );
+    free( p_sys->p_thread->psz_page_url );
 
     vlc_object_detach( p_sys->p_thread );
     vlc_object_release( p_sys->p_thread );
diff --git a/modules/access/rtmp/rtmp_amf_flv.c b/modules/access/rtmp/rtmp_amf_flv.c
index ed3bd56..df3fc1b 100644
--- a/modules/access/rtmp/rtmp_amf_flv.c
+++ b/modules/access/rtmp/rtmp_amf_flv.c
@@ -430,10 +430,10 @@ rtmp_connect_active( rtmp_control_thread_t *p_thread )
     free( tmp_buffer );
 
     tmp_buffer = amf_encode_object_variable( "swfUrl",
-         AMF_DATATYPE_STRING, "file:///mac.flv" );
+         AMF_DATATYPE_STRING, p_thread->psz_swf_url );
     rtmp_body_append( rtmp_body, tmp_buffer,
         AMF_DATATYPE_SIZE_OBJECT_VARIABLE + strlen( "swfUrl" ) +
-        AMF_DATATYPE_SIZE_STRING + strlen( "file:///mac.flv" ) );
+        AMF_DATATYPE_SIZE_STRING + strlen( p_thread->psz_swf_url ) );
     free( tmp_buffer );
 
     if( asprintf( &tmp_url, "rtmp://%s", p_thread->url.psz_buffer ) == -1 )
@@ -479,10 +479,10 @@ rtmp_connect_active( rtmp_control_thread_t *p_thread )
     free( tmp_buffer );
 
     tmp_buffer = amf_encode_object_variable( "pageUrl",
-        AMF_DATATYPE_STRING, "file:///mac.html" );
+        AMF_DATATYPE_STRING, p_thread->psz_page_url );
     rtmp_body_append( rtmp_body, tmp_buffer,
         AMF_DATATYPE_SIZE_OBJECT_VARIABLE + strlen( "pageUrl" ) +
-        AMF_DATATYPE_SIZE_STRING + strlen( "file:///mac.html" ) );
+        AMF_DATATYPE_SIZE_STRING + strlen( p_thread->psz_page_url ) );
     free( tmp_buffer );
 
     tmp_buffer = amf_encode_object_variable( "objectEncoding",
diff --git a/modules/access/rtmp/rtmp_amf_flv.h b/modules/access/rtmp/rtmp_amf_flv.h
index 27b6dba..6f5b19b 100644
--- a/modules/access/rtmp/rtmp_amf_flv.h
+++ b/modules/access/rtmp/rtmp_amf_flv.h
@@ -58,6 +58,9 @@ struct rtmp_control_thread_t
     char *psz_application;
     char *psz_media;
 
+    char *psz_swf_url;
+    char *psz_page_url;
+
     block_fifo_t *p_fifo_input;
     block_fifo_t *p_empty_blocks;
 
@@ -65,9 +68,9 @@ struct rtmp_control_thread_t
     vlc_cond_t  wait;
 
     int result_connect;
-	int result_publish;
+    int result_publish;
     int result_play;
-	int result_stop;
+    int result_stop;
 
     double stream_client_id;
     double stream_server_id;




More information about the vlc-devel mailing list