[FFmpeg-devel] [PATCH 7/7] avformat/rtsp: parse lang attribute in SDP

Thomas Volkert silvo at gmx.net
Thu Feb 12 22:52:27 CET 2015


On 02/08/2015 10:22 PM, Gilles Chanteperdrix wrote:
> ---
>   libavformat/rtsp.c | 12 ++++++++++++
>   libavformat/rtsp.h |  2 ++
>   2 files changed, 14 insertions(+)
>
> diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
> index 77407dd..3a68020 100644
> --- a/libavformat/rtsp.c
> +++ b/libavformat/rtsp.c
> @@ -477,6 +477,8 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
>                       handler->init(s, st->index,
>                                     rtsp_st->dynamic_protocol_context);
>               }
> +            if (rt->default_lang[0])
> +                av_dict_set(&st->metadata, "language", rt->default_lang, 0);
>           }
>           /* put a default control url */
>           av_strlcpy(rtsp_st->control_url, rt->control_uri,
> @@ -540,6 +542,16 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
>               /* AV_NOPTS_VALUE means live broadcast (and can't seek) */
>               s->duration   = (end == AV_NOPTS_VALUE) ?
>                               AV_NOPTS_VALUE : end - start;
> +        } else if (av_strstart(p, "lang:", &p)) {
> +            if (s->nb_streams > 0) {
> +                get_word(buf1, sizeof(buf1), &p);
> +                rtsp_st = rt->rtsp_streams[rt->nb_rtsp_streams - 1];
> +                if (rtsp_st->stream_index >= 0) {
> +                    st = s->streams[rtsp_st->stream_index];
> +                    av_dict_set(&st->metadata, "language", buf1, 0);
> +                }
> +            } else
> +                get_word(rt->default_lang, sizeof(rt->default_lang), &p);
>           } else if (av_strstart(p, "IsRealDataType:integer;",&p)) {
>               if (atoi(p) == 1)
>                   rt->transport = RTSP_TRANSPORT_RDT;
> diff --git a/libavformat/rtsp.h b/libavformat/rtsp.h
> index a9f2f1e..3cfcfb6 100644
> --- a/libavformat/rtsp.h
> +++ b/libavformat/rtsp.h
> @@ -405,6 +405,8 @@ typedef struct RTSPState {
>        * User-Agent string
>        */
>       char *user_agent;
> +
> +    char default_lang[4];
>   } RTSPState;
>   
>   #define RTSP_FLAG_FILTER_SRC  0x1    /**< Filter incoming UDP packets -

LGTM.

Best regards,
Thomas.




More information about the ffmpeg-devel mailing list