[vlc-devel] [PATCH] Dynamic rtp configurable payload type
Rémi Denis-Courmont
remi at remlab.net
Mon Jan 13 12:08:05 CET 2020
Hi,
This looks like completely pointless code complexity. No thanks.
Le 13 janvier 2020 10:08:52 GMT+02:00, Alessandro Bietresato <alessandro.bietresato at telefin.it> a écrit :
>This patch allows to configure rtp payload type
>for dynamic rtp via the "dynamic-payload-type" parameter (defaults to
>96)
>---
> modules/stream_out/rtp.c | 18 +++++++++++++++++-
> modules/stream_out/rtp.h | 1 +
> modules/stream_out/rtpfmt.c | 2 +-
> 3 files changed, 19 insertions(+), 2 deletions(-)
>
>diff --git a/modules/stream_out/rtp.c b/modules/stream_out/rtp.c
>index d4c7460477..ad52b811f5 100644
>--- a/modules/stream_out/rtp.c
>+++ b/modules/stream_out/rtp.c
>@@ -177,6 +177,9 @@ static const char *const ppsz_protocols[] = {
> #define RTSP_PASS_LONGTEXT N_("Password that will be " \
> "requested to access the stream." )
>
>+#define DYNAMIC_PAYLOAD_TYPE_TEXT N_("Dynamic rtp payload type")
>+#define DYNAMIC_PAYLOAD_TYPE_LONGTEXT N_( \
>+ "Payload type for dynamic rtp, defaults to 96" )
> static int Open ( vlc_object_t * );
> static void Close( vlc_object_t * );
>
>@@ -227,6 +230,8 @@ vlc_module_begin ()
> RTCP_MUX_TEXT, RTCP_MUX_LONGTEXT, false )
>add_integer( SOUT_CFG_PREFIX "caching",
>MS_FROM_VLC_TICK(DEFAULT_PTS_DELAY),
> CACHING_TEXT, CACHING_LONGTEXT, true )
>+ add_integer( SOUT_CFG_PREFIX "dynamic-payload-type", 96,
>+ DYNAMIC_PAYLOAD_TYPE_TEXT,
>DYNAMIC_PAYLOAD_TYPE_LONGTEXT, true )
>
> #ifdef HAVE_SRTP
> add_string( SOUT_CFG_PREFIX "key", "",
>@@ -262,7 +267,7 @@ vlc_module_end ()
> static const char *const ppsz_sout_options[] = {
>"dst", "name", "cat", "port", "port-audio", "port-video", "*sdp",
>"ttl",
> "mux", "sap", "description", "url", "email",
>- "proto", "rtcp-mux", "caching",
>+ "proto", "rtcp-mux", "caching", "dynamic-payload-type",
> #ifdef HAVE_SRTP
> "key", "salt",
> #endif
>@@ -321,6 +326,7 @@ typedef struct
> uint16_t i_port;
> uint16_t i_port_audio;
> uint16_t i_port_video;
>+ uint16_t i_dynamic_payload_type;
> uint8_t proto;
> bool rtcp_mux;
> bool b_latm;
>@@ -408,6 +414,7 @@ static int Open( vlc_object_t *p_this )
>p_sys->i_port_audio = var_GetInteger( p_stream, SOUT_CFG_PREFIX
>"port-audio" );
>p_sys->i_port_video = var_GetInteger( p_stream, SOUT_CFG_PREFIX
>"port-video" );
>p_sys->rtcp_mux = var_GetBool( p_stream, SOUT_CFG_PREFIX "rtcp-mux"
>);
>+ p_sys->i_dynamic_payload_type = var_GetInteger( p_stream,
>SOUT_CFG_PREFIX "dynamic-payload-type" );
>
>if( p_sys->i_port_audio && p_sys->i_port_video == p_sys->i_port_audio )
> {
>@@ -1812,3 +1819,12 @@ void rtp_get_video_geometry(
>sout_stream_id_sys_t *id, int *width, int *height )
>int ret = sscanf( id->rtp_fmt.fmtp, "%*s width=%d; height=%d; ", width,
>height );
> assert( ret == 2 );
> }
>+
>+uint16_t rtp_get_dynamic_payload_type( vlc_object_t *obj )
>+{
>+ sout_stream_t *p_stream = (sout_stream_t*)obj;
>+ assert(p_stream != NULL);
>+ sout_stream_sys_t *p_sys = p_stream->p_sys;
>+ assert(p_sys != NULL);
>+ return p_sys->i_dynamic_payload_type;
>+}
>diff --git a/modules/stream_out/rtp.h b/modules/stream_out/rtp.h
>index 2b1838f679..650ee8b6fd 100644
>--- a/modules/stream_out/rtp.h
>+++ b/modules/stream_out/rtp.h
>@@ -92,6 +92,7 @@ int rtp_get_fmt( vlc_object_t *obj, const es_format_t
>*p_fmt, const char *mux,
> /* Only used by rtp_packetize_rawvideo */
>void rtp_get_video_geometry( sout_stream_id_sys_t *id, int *width, int
>*height );
> uint16_t rtp_get_extended_sequence( sout_stream_id_sys_t *id );
>+uint16_t rtp_get_dynamic_payload_type( vlc_object_t *obj );
>
> /* VoD */
> int OpenVoD ( vlc_object_t * );
>diff --git a/modules/stream_out/rtpfmt.c b/modules/stream_out/rtpfmt.c
>index 356abd4eb6..6e09305860 100644
>--- a/modules/stream_out/rtpfmt.c
>+++ b/modules/stream_out/rtpfmt.c
>@@ -173,7 +173,7 @@ int rtp_get_fmt( vlc_object_t *obj, const
>es_format_t *p_fmt, const char *mux,
> /* Dynamic payload type. Payload types are scoped to the RTP
> * session, and we put each ES in its own session, so no risk of
> * conflict. */
>- rtp_fmt->payload_type = 96;
>+ rtp_fmt->payload_type = rtp_get_dynamic_payload_type(obj);
> rtp_fmt->cat = mux != NULL ? VIDEO_ES : p_fmt->i_cat;
> if( rtp_fmt->cat == AUDIO_ES )
> {
>--
>2.24.1
>
>
>--
>
>_Ai sensi del Regolamento UE 679/2016 si precisa che le informazioni
>contenute in questo messaggio sono riservate e ad uso esclusivo del
>destinatario. Qualora il messaggio in parola Le fosse pervenuto per
>errore, La preghiamo di eliminarlo senza copiarlo e di non inoltrarlo
>a
>terzi, dandocene gentilmente comunicazione alla mail info at telefin.it
><mailto:info at telefin.it>. _
>_
>This message, for the Regulation UE 679/2016,
>may contain confidential and/or privileged information. If you are not
>the
>addressee or authorized to receive this for the addressee, you must
>not
>use, copy, disclose or take any action based on this message or any
>information herein. If you have received this message in error, please
>
>notify the sender immediately at the following e-mail address
>info at telefin.it <mailto:info at telefin.it> and delete this message._
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel
--
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20200113/924f28c7/attachment.html>
More information about the vlc-devel
mailing list