[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