Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
79331df3
Commit
79331df3
authored
Feb 20, 2017
by
Luca Barbato
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rtsp: Lazily set up the pollfd array once
parent
d8f36a6a
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
27 additions
and
27 deletions
+27
-27
rtsp.c
libavformat/rtsp.c
+26
-27
rtsp.h
libavformat/rtsp.h
+1
-0
No files found.
libavformat/rtsp.c
View file @
79331df3
...
...
@@ -1913,7 +1913,6 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st,
RTSPState
*
rt
=
s
->
priv_data
;
RTSPStream
*
rtsp_st
;
int
n
,
i
,
ret
,
tcp_fd
,
timeout_cnt
=
0
;
int
max_p
=
0
;
struct
pollfd
*
p
=
rt
->
p
;
int
*
fds
=
NULL
,
fdsnum
,
fdsidx
;
...
...
@@ -1921,33 +1920,33 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st,
p
=
rt
->
p
=
av_malloc_array
(
2
*
(
rt
->
nb_rtsp_streams
+
1
),
sizeof
(
struct
pollfd
));
if
(
!
p
)
return
AVERROR
(
ENOMEM
);
}
if
(
rt
->
rtsp_hd
)
{
tcp_fd
=
ffurl_get_file_handle
(
rt
->
rtsp_hd
);
p
[
max_p
].
fd
=
tcp_fd
;
p
[
max_p
++
].
events
=
POLLIN
;
}
else
{
tcp_fd
=
-
1
;
}
for
(
i
=
0
;
i
<
rt
->
nb_rtsp_streams
;
i
++
)
{
rtsp_st
=
rt
->
rtsp_streams
[
i
];
if
(
rtsp_st
->
rtp_handle
)
{
if
(
ret
=
ffurl_get_multi_file_handle
(
rtsp_st
->
rtp_handle
,
&
fds
,
&
fdsnum
))
{
av_log
(
s
,
AV_LOG_ERROR
,
"Unable to recover rtp ports
\n
"
);
return
ret
;
}
if
(
fdsnum
!=
2
)
{
av_log
(
s
,
AV_LOG_ERROR
,
"Number of fds %d not supported
\n
"
,
fdsnum
);
return
AVERROR_INVALIDDATA
;
}
for
(
fdsidx
=
0
;
fdsidx
<
fdsnum
;
fdsidx
++
)
{
p
[
max_p
].
fd
=
fds
[
fdsidx
];
p
[
max_p
++
].
events
=
POLLIN
;
if
(
rt
->
rtsp_hd
)
{
tcp_fd
=
ffurl_get_file_handle
(
rt
->
rtsp_hd
);
p
[
rt
->
max_p
].
fd
=
tcp_fd
;
p
[
rt
->
max_p
++
].
events
=
POLLIN
;
}
else
{
tcp_fd
=
-
1
;
}
for
(
i
=
0
;
i
<
rt
->
nb_rtsp_streams
;
i
++
)
{
rtsp_st
=
rt
->
rtsp_streams
[
i
];
if
(
rtsp_st
->
rtp_handle
)
{
if
(
ret
=
ffurl_get_multi_file_handle
(
rtsp_st
->
rtp_handle
,
&
fds
,
&
fdsnum
))
{
av_log
(
s
,
AV_LOG_ERROR
,
"Unable to recover rtp ports
\n
"
);
return
ret
;
}
if
(
fdsnum
!=
2
)
{
av_log
(
s
,
AV_LOG_ERROR
,
"Number of fds %d not supported
\n
"
,
fdsnum
);
return
AVERROR_INVALIDDATA
;
}
for
(
fdsidx
=
0
;
fdsidx
<
fdsnum
;
fdsidx
++
)
{
p
[
rt
->
max_p
].
fd
=
fds
[
fdsidx
];
p
[
rt
->
max_p
++
].
events
=
POLLIN
;
}
av_free
(
fds
);
}
av_free
(
fds
);
}
}
...
...
@@ -1956,7 +1955,7 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st,
return
AVERROR_EXIT
;
if
(
wait_end
&&
wait_end
-
av_gettime_relative
()
<
0
)
return
AVERROR
(
EAGAIN
);
n
=
poll
(
p
,
max_p
,
POLL_TIMEOUT_MS
);
n
=
poll
(
p
,
rt
->
max_p
,
POLL_TIMEOUT_MS
);
if
(
n
>
0
)
{
int
j
=
1
-
(
tcp_fd
==
-
1
);
timeout_cnt
=
0
;
...
...
libavformat/rtsp.h
View file @
79331df3
...
...
@@ -352,6 +352,7 @@ typedef struct RTSPState {
* Polling array for udp
*/
struct
pollfd
*
p
;
int
max_p
;
/**
* Whether the server supports the GET_PARAMETER method.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment