You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
rtsp: Lazily allocate the pollfd array
And use av_malloc_array.
This commit is contained in:
@@ -662,7 +662,6 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
|
|||||||
|
|
||||||
int ff_sdp_parse(AVFormatContext *s, const char *content)
|
int ff_sdp_parse(AVFormatContext *s, const char *content)
|
||||||
{
|
{
|
||||||
RTSPState *rt = s->priv_data;
|
|
||||||
const char *p;
|
const char *p;
|
||||||
int letter, i;
|
int letter, i;
|
||||||
/* Some SDP lines, particularly for Realmedia or ASF RTSP streams,
|
/* Some SDP lines, particularly for Realmedia or ASF RTSP streams,
|
||||||
@@ -709,8 +708,6 @@ int ff_sdp_parse(AVFormatContext *s, const char *content)
|
|||||||
av_free(s1->default_exclude_source_addrs[i]);
|
av_free(s1->default_exclude_source_addrs[i]);
|
||||||
av_freep(&s1->default_exclude_source_addrs);
|
av_freep(&s1->default_exclude_source_addrs);
|
||||||
|
|
||||||
rt->p = av_malloc(sizeof(struct pollfd)*2*(rt->nb_rtsp_streams+1));
|
|
||||||
if (!rt->p) return AVERROR(ENOMEM);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_RTPDEC */
|
#endif /* CONFIG_RTPDEC */
|
||||||
@@ -1920,6 +1917,12 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st,
|
|||||||
struct pollfd *p = rt->p;
|
struct pollfd *p = rt->p;
|
||||||
int *fds = NULL, fdsnum, fdsidx;
|
int *fds = NULL, fdsnum, fdsidx;
|
||||||
|
|
||||||
|
if (!p) {
|
||||||
|
p = rt->p = av_malloc_array(2 * (rt->nb_rtsp_streams + 1), sizeof(struct pollfd));
|
||||||
|
if (!p)
|
||||||
|
return AVERROR(ENOMEM);
|
||||||
|
}
|
||||||
|
|
||||||
if (rt->rtsp_hd) {
|
if (rt->rtsp_hd) {
|
||||||
tcp_fd = ffurl_get_file_handle(rt->rtsp_hd);
|
tcp_fd = ffurl_get_file_handle(rt->rtsp_hd);
|
||||||
p[max_p].fd = tcp_fd;
|
p[max_p].fd = tcp_fd;
|
||||||
|
Reference in New Issue
Block a user