[vlc-devel] Re: Fix to make VoD work with HansunTech STBs
Damien Fouilleul
damien.fouilleul at laposte.net
Fri Jan 12 12:11:39 CET 2007
just my 2 eurocents worths:
in a lot of protocols (not just RSTP) timeout=0 is interpreted as 'no
timeout' by the client and can be useful to have as an option. Therefore
i would suggest that use you use -1 rather than 0 to indicate that the
timeout field should be removed from the session (which would usually
mean that the client should use use a hardcoded default)
therefore i suggest that you rework the option as follow:
-1 (Default timeout), meaning leave session field blank
0 (no timeout)
n (timeout value of n)
Damien
Sašo Kiselkov wrote:
> Thanks for the notes, that's a good idea.
>
> One more problem I've found (and already integrated into the patch) is
> that when muxing is enabled, then VLC doesn't read the remote port info
> properly - when it starts streaming it sends it all to port 0, since the
> i_port variable in the PLAY request isn't set up properly. I've added
> code into SETUP which intercepts the port supplied by the client and
> stores it in the vod_sys_t structure.
>
> --
> Saso
>
> Jean-Paul Saman wrote:
>
>> Sašo Kiselkov wrote:
>>
>>> Here's the exact patch.
>>>
>>> --
>>> Saso
>>>
>> Thanks for the patch. I have one more request ;-) could you make the
>> timeout value configurable. By making the rtsp-session-timeout accept a
>> value instead of being a boolean.
>>
>> 0 would mean disabled
>> 1 and greater would set the timeout in seconds
>>
>> and let the helptext reflect this.
>>
>> Thanks,
>> Jean-Paul Saman.
>>
>>> ------------------------------------------------------------------------
>>>
>>> --- vlc-0.8.6-old/modules/misc/rtsp.c 2006-12-09 02:12:16.000000000
>>> +0100
>>> +++ vlc-0.8.6/modules/misc/rtsp.c 2007-01-12 00:31:22.000000000 +0100
>>> @@ -58,4 +58,10 @@
>>> "that can connect to the RTSP VOD. 0 means no limit." )
>>>
>>> +#define SESSION_TIMEOUT_TEXT N_( "Add a timeout option to the RTSP
>>> session " \
>>> + "ID string" )
>>> +#define SESSION_TIMEOUT_LONGTEXT N_( "Adds a timeout option to RTSP
>>> session " \
>>> + "ID string. Needed by some STBs and confuses some other STBs
>>> (such as " \
>>> + "those made by HansunTech)." ) +
>>> vlc_module_begin();
>>> set_shortname( _("RTSP VoD" ) );
>>> @@ -69,4 +75,6 @@
>>> add_integer( "rtsp-throttle-users", 0, NULL, THROTLE_TEXT,
>>> THROTLE_LONGTEXT, VLC_TRUE );
>>> + add_bool( "rtsp-session-timeout", VLC_TRUE, NULL,
>>> SESSION_TIMEOUT_TEXT,
>>> + SESSION_TIMEOUT_LONGTEXT, VLC_TRUE );
>>> vlc_module_end();
>>>
>>> @@ -167,4 +175,6 @@
>>> int i_connections;
>>>
>>> + vlc_bool_t b_session_timeout;
>>> +
>>> /* List of media */
>>> int i_media;
>>> @@ -221,4 +231,6 @@
>>> p_sys->p_rtsp_host = 0;
>>>
>>> + p_sys->b_session_timeout = var_GetBool( p_this,
>>> "rtsp-session-timeout" );
>>> +
>>> var_Create( p_this, "rtsp-throttle-users", VLC_VAR_INTEGER |
>>> VLC_VAR_DOINHERIT );
>>> p_sys->i_throttle_users = var_GetInteger( p_this,
>>> "rtsp-throtle-users" );
>>> @@ -932,6 +944,9 @@
>>> if( psz_session )
>>> {
>>> - httpd_MsgAdd( answer, "Session", "%s;timeout=5", psz_session );
>>> - }
>>> + if( p_media->p_vod->p_sys->b_session_timeout )
>>> + httpd_MsgAdd( answer, "Session", "%s;timeout=5",
>>> psz_session );
>>> + else
>>> + httpd_MsgAdd( answer, "Session", "%s", psz_session );
>>> + }
>>> return VLC_SUCCESS;
>>>
>>
>
>
> ------------------------------------------------------------------------
>
> --- vlc-0.8.6-old/modules/misc/rtsp.c 2006-12-09 02:12:16.000000000 +0100
> +++ vlc-0.8.6/modules/misc/rtsp.c 2007-01-12 10:47:29.000000000 +0100
> @@ -58,4 +58,11 @@
> "that can connect to the RTSP VOD. 0 means no limit." )
>
> +#define SESSION_TIMEOUT_TEXT N_( "Sets the timeout option in the RTSP " \
> + "session string" )
> +#define SESSION_TIMEOUT_LONGTEXT N_( "Defines what timeout option to add " \
> + "to the RTSP session ID string. Setting it to 0 removes the timeout " \
> + "option entirely. This is needed by some IPTV STBs (such as those made " \
> + "by HansunTech) which get confused by it. The default is 5." )
> +
> vlc_module_begin();
> set_shortname( _("RTSP VoD" ) );
> @@ -69,4 +76,6 @@
> add_integer( "rtsp-throttle-users", 0, NULL, THROTLE_TEXT,
> THROTLE_LONGTEXT, VLC_TRUE );
> + add_integer( "rtsp-session-timeout", 5, NULL, SESSION_TIMEOUT_TEXT,
> + SESSION_TIMEOUT_LONGTEXT, VLC_TRUE );
> vlc_module_end();
>
> @@ -93,4 +102,6 @@
> vlc_bool_t b_paused; /* is it in "pause" state */
>
> + int i_port; /* port used with muxed output */
> +
> int i_es;
> rtsp_client_es_t **es;
> @@ -167,4 +178,6 @@
> int i_connections;
>
> + int i_session_timeout;
> +
> /* List of media */
> int i_media;
> @@ -221,4 +234,6 @@
> p_sys->p_rtsp_host = 0;
>
> + p_sys->i_session_timeout = config_GetInt( p_this, "rtsp-session-timeout" );
> +
> var_Create( p_this, "rtsp-throttle-users", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
> p_sys->i_throttle_users = var_GetInteger( p_this, "rtsp-throtle-users" );
> @@ -735,4 +750,6 @@
> }
>
> + p_rtsp->i_port = i_port;
> +
> answer->i_status = 200;
> answer->psz_status = strdup( "OK" );
> @@ -842,5 +859,5 @@
> {
> asprintf( &psz_output, "std{access=udp,dst=%s:%i,mux=%s}",
> - ip, i_port, p_media->psz_mux );
> + ip, p_rtsp->i_port, p_media->psz_mux );
> }
> else
> @@ -932,6 +949,10 @@
> if( psz_session )
> {
> - httpd_MsgAdd( answer, "Session", "%s;timeout=5", psz_session );
> - }
> + if( p_media->p_vod->p_sys->i_session_timeout )
> + httpd_MsgAdd( answer, "Session", "%s;timeout=%i", psz_session,
> + p_media->p_vod->p_sys->i_session_timeout );
> + else
> + httpd_MsgAdd( answer, "Session", "%s", psz_session );
> + }
>
> return VLC_SUCCESS;
>
--
This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://developers.videolan.org/lists.html
More information about the vlc-devel
mailing list