Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
34af7813
F
Ffmpeg
项目概览
小白菜888
/
Ffmpeg
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Ffmpeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
34af7813
编写于
11月 24, 2015
作者:
L
Luca Barbato
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
udp: Use the logging context
上级
98063bcf
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
28 addition
and
14 deletion
+28
-14
libavformat/udp.c
libavformat/udp.c
+28
-14
未找到文件。
libavformat/udp.c
浏览文件 @
34af7813
...
...
@@ -171,7 +171,8 @@ static int udp_leave_multicast_group(int sockfd, struct sockaddr *addr)
return
0
;
}
static
struct
addrinfo
*
udp_resolve_host
(
const
char
*
hostname
,
int
port
,
static
struct
addrinfo
*
udp_resolve_host
(
URLContext
*
h
,
const
char
*
hostname
,
int
port
,
int
type
,
int
family
,
int
flags
)
{
struct
addrinfo
hints
=
{
0
},
*
res
=
0
;
...
...
@@ -191,13 +192,15 @@ static struct addrinfo* udp_resolve_host(const char *hostname, int port,
hints
.
ai_flags
=
flags
;
if
((
error
=
getaddrinfo
(
node
,
service
,
&
hints
,
&
res
)))
{
res
=
NULL
;
av_log
(
NULL
,
AV_LOG_ERROR
,
"udp_resolve_host: %s
\n
"
,
gai_strerror
(
error
));
av_log
(
h
,
AV_LOG_ERROR
,
"udp_resolve_host: %s
\n
"
,
gai_strerror
(
error
));
}
return
res
;
}
static
int
udp_set_multicast_sources
(
int
sockfd
,
struct
sockaddr
*
addr
,
static
int
udp_set_multicast_sources
(
URLContext
*
h
,
int
sockfd
,
struct
sockaddr
*
addr
,
int
addr_len
,
char
**
sources
,
int
nb_sources
,
int
include
)
{
...
...
@@ -208,7 +211,7 @@ static int udp_set_multicast_sources(int sockfd, struct sockaddr *addr,
for
(
i
=
0
;
i
<
nb_sources
;
i
++
)
{
struct
group_source_req
mreqs
;
int
level
=
addr
->
sa_family
==
AF_INET
?
IPPROTO_IP
:
IPPROTO_IPV6
;
struct
addrinfo
*
sourceaddr
=
udp_resolve_host
(
sources
[
i
],
0
,
struct
addrinfo
*
sourceaddr
=
udp_resolve_host
(
h
,
sources
[
i
],
0
,
SOCK_DGRAM
,
AF_UNSPEC
,
0
);
if
(
!
sourceaddr
)
...
...
@@ -238,7 +241,7 @@ static int udp_set_multicast_sources(int sockfd, struct sockaddr *addr,
}
for
(
i
=
0
;
i
<
nb_sources
;
i
++
)
{
struct
ip_mreq_source
mreqs
;
struct
addrinfo
*
sourceaddr
=
udp_resolve_host
(
sources
[
i
],
0
,
struct
addrinfo
*
sourceaddr
=
udp_resolve_host
(
h
,
sources
[
i
],
0
,
SOCK_DGRAM
,
AF_UNSPEC
,
0
);
if
(
!
sourceaddr
)
...
...
@@ -270,13 +273,14 @@ static int udp_set_multicast_sources(int sockfd, struct sockaddr *addr,
#endif
return
0
;
}
static
int
udp_set_url
(
struct
sockaddr_storage
*
addr
,
static
int
udp_set_url
(
URLContext
*
h
,
struct
sockaddr_storage
*
addr
,
const
char
*
hostname
,
int
port
)
{
struct
addrinfo
*
res0
;
int
addr_len
;
res0
=
udp_resolve_host
(
hostname
,
port
,
SOCK_DGRAM
,
AF_UNSPEC
,
0
);
res0
=
udp_resolve_host
(
h
,
h
ostname
,
port
,
SOCK_DGRAM
,
AF_UNSPEC
,
0
);
if
(
res0
==
0
)
return
AVERROR
(
EIO
);
memcpy
(
addr
,
res0
->
ai_addr
,
res0
->
ai_addrlen
);
addr_len
=
res0
->
ai_addrlen
;
...
...
@@ -285,16 +289,18 @@ static int udp_set_url(struct sockaddr_storage *addr,
return
addr_len
;
}
static
int
udp_socket_create
(
U
DPContext
*
s
,
struct
sockaddr_storage
*
addr
,
static
int
udp_socket_create
(
U
RLContext
*
h
,
struct
sockaddr_storage
*
addr
,
socklen_t
*
addr_len
,
const
char
*
localaddr
)
{
UDPContext
*
s
=
h
->
priv_data
;
int
udp_fd
=
-
1
;
struct
addrinfo
*
res0
=
NULL
,
*
res
=
NULL
;
int
family
=
AF_UNSPEC
;
if
(((
struct
sockaddr
*
)
&
s
->
dest_addr
)
->
sa_family
)
family
=
((
struct
sockaddr
*
)
&
s
->
dest_addr
)
->
sa_family
;
res0
=
udp_resolve_host
((
localaddr
&&
localaddr
[
0
])
?
localaddr
:
NULL
,
s
->
local_port
,
res0
=
udp_resolve_host
(
h
,
(
localaddr
&&
localaddr
[
0
])
?
localaddr
:
NULL
,
s
->
local_port
,
SOCK_DGRAM
,
family
,
AI_PASSIVE
);
if
(
res0
==
0
)
goto
fail
;
...
...
@@ -361,7 +367,7 @@ int ff_udp_set_remote_url(URLContext *h, const char *uri)
av_url_split
(
NULL
,
0
,
NULL
,
0
,
hostname
,
sizeof
(
hostname
),
&
port
,
NULL
,
0
,
uri
);
/* set the destination address */
s
->
dest_addr_len
=
udp_set_url
(
&
s
->
dest_addr
,
hostname
,
port
);
s
->
dest_addr_len
=
udp_set_url
(
h
,
&
s
->
dest_addr
,
hostname
,
port
);
if
(
s
->
dest_addr_len
<
0
)
{
return
AVERROR
(
EIO
);
}
...
...
@@ -523,9 +529,9 @@ static int udp_open(URLContext *h, const char *uri, int flags)
s
->
local_port
=
port
;
if
(
localaddr
[
0
])
udp_fd
=
udp_socket_create
(
s
,
&
my_addr
,
&
len
,
localaddr
);
udp_fd
=
udp_socket_create
(
h
,
&
my_addr
,
&
len
,
localaddr
);
else
udp_fd
=
udp_socket_create
(
s
,
&
my_addr
,
&
len
,
s
->
localaddr
);
udp_fd
=
udp_socket_create
(
h
,
&
my_addr
,
&
len
,
s
->
localaddr
);
if
(
udp_fd
<
0
)
goto
fail
;
...
...
@@ -570,14 +576,22 @@ static int udp_open(URLContext *h, const char *uri, int flags)
goto
fail
;
}
if
(
num_include_sources
)
{
if
(
udp_set_multicast_sources
(
udp_fd
,
(
struct
sockaddr
*
)
&
s
->
dest_addr
,
s
->
dest_addr_len
,
include_sources
,
num_include_sources
,
1
)
<
0
)
if
(
udp_set_multicast_sources
(
h
,
udp_fd
,
(
struct
sockaddr
*
)
&
s
->
dest_addr
,
s
->
dest_addr_len
,
include_sources
,
num_include_sources
,
1
)
<
0
)
goto
fail
;
}
else
{
if
(
udp_join_multicast_group
(
udp_fd
,
(
struct
sockaddr
*
)
&
s
->
dest_addr
)
<
0
)
goto
fail
;
}
if
(
num_exclude_sources
)
{
if
(
udp_set_multicast_sources
(
udp_fd
,
(
struct
sockaddr
*
)
&
s
->
dest_addr
,
s
->
dest_addr_len
,
exclude_sources
,
num_exclude_sources
,
0
)
<
0
)
if
(
udp_set_multicast_sources
(
h
,
udp_fd
,
(
struct
sockaddr
*
)
&
s
->
dest_addr
,
s
->
dest_addr_len
,
exclude_sources
,
num_exclude_sources
,
0
)
<
0
)
goto
fail
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录