avformat/rtsp: parse lang attribute in SDP
Reviewed-by: Thomas Volkert <silvo@gmx.net> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		
							parent
							
								
									af940e6cb1
								
							
						
					
					
						commit
						c7ad1f562b
					
				| @ -477,6 +477,8 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1, | |||||||
|                     handler->init(s, st->index, |                     handler->init(s, st->index, | ||||||
|                                   rtsp_st->dynamic_protocol_context); |                                   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 */ |         /* put a default control url */ | ||||||
|         av_strlcpy(rtsp_st->control_url, rt->control_uri, |         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) */ |             /* AV_NOPTS_VALUE means live broadcast (and can't seek) */ | ||||||
|             s->duration   = (end == AV_NOPTS_VALUE) ? |             s->duration   = (end == AV_NOPTS_VALUE) ? | ||||||
|                             AV_NOPTS_VALUE : end - start; |                             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)) { |         } else if (av_strstart(p, "IsRealDataType:integer;",&p)) { | ||||||
|             if (atoi(p) == 1) |             if (atoi(p) == 1) | ||||||
|                 rt->transport = RTSP_TRANSPORT_RDT; |                 rt->transport = RTSP_TRANSPORT_RDT; | ||||||
|  | |||||||
| @ -405,6 +405,8 @@ typedef struct RTSPState { | |||||||
|      * User-Agent string |      * User-Agent string | ||||||
|      */ |      */ | ||||||
|     char *user_agent; |     char *user_agent; | ||||||
|  | 
 | ||||||
|  |     char default_lang[4]; | ||||||
| } RTSPState; | } RTSPState; | ||||||
| 
 | 
 | ||||||
| #define RTSP_FLAG_FILTER_SRC  0x1    /**< Filter incoming UDP packets - | #define RTSP_FLAG_FILTER_SRC  0x1    /**< Filter incoming UDP packets - | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user