Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2014-03-08 14:13:31 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
e40be6e89dc9c702e36dcb7d173a87dedeb82ece
e40be6e8
1 parent
4a0023ae
amf0 utest: boolean to any
隐藏空白字符变更
内嵌
并排对比
正在显示
5 个修改的文件
包含
113 行增加
和
75 行删除
trunk/src/rtmp/srs_protocol_amf0.cpp
trunk/src/rtmp/srs_protocol_amf0.hpp
trunk/src/rtmp/srs_protocol_rtmp.cpp
trunk/src/rtmp/srs_protocol_rtmp_stack.cpp
trunk/src/utest/srs_utest_amf0.cpp
trunk/src/rtmp/srs_protocol_amf0.cpp
查看文件 @
e40be6e
...
...
@@ -105,12 +105,18 @@ bool SrsAmf0Any::is_ecma_array()
return
marker
==
RTMP_AMF0_EcmaArray
;
}
st
d
::
st
ring
SrsAmf0Any
::
to_str
()
string
SrsAmf0Any
::
to_str
()
{
__SrsAmf0String
*
o
=
srs_amf0_convert
<
__SrsAmf0String
>
(
this
);
return
o
->
value
;
}
bool
SrsAmf0Any
::
to_boolean
()
{
__SrsAmf0Boolean
*
o
=
srs_amf0_convert
<
__SrsAmf0Boolean
>
(
this
);
return
o
->
value
;
}
bool
SrsAmf0Any
::
is_object_eof
()
{
return
marker
==
RTMP_AMF0_ObjectEnd
;
...
...
@@ -121,36 +127,9 @@ SrsAmf0Any* SrsAmf0Any::str(const char* value)
return
new
__SrsAmf0String
(
value
);
}
__SrsAmf0String
::
__SrsAmf0String
(
const
char
*
_value
)
{
marker
=
RTMP_AMF0_String
;
if
(
_value
)
{
value
=
_value
;
}
}
__SrsAmf0String
::~
__SrsAmf0String
()
{
}
int
__SrsAmf0String
::
size
()
{
return
SrsAmf0Size
::
str
(
value
);
}
SrsAmf0Boolean
::
SrsAmf0Boolean
(
bool
_value
)
SrsAmf0Any
*
SrsAmf0Any
::
boolean
(
bool
value
)
{
marker
=
RTMP_AMF0_Boolean
;
value
=
_value
;
}
SrsAmf0Boolean
::~
SrsAmf0Boolean
()
{
}
int
SrsAmf0Boolean
::
size
()
{
return
SrsAmf0Size
::
boolean
();
return
new
__SrsAmf0Boolean
(
value
);
}
SrsAmf0Number
::
SrsAmf0Number
(
double
_value
)
...
...
@@ -698,6 +677,38 @@ int SrsAmf0Size::any(SrsAmf0Any* o)
return
o
->
size
();
}
__SrsAmf0String
::
__SrsAmf0String
(
const
char
*
_value
)
{
marker
=
RTMP_AMF0_String
;
if
(
_value
)
{
value
=
_value
;
}
}
__SrsAmf0String
::~
__SrsAmf0String
()
{
}
int
__SrsAmf0String
::
size
()
{
return
SrsAmf0Size
::
str
(
value
);
}
__SrsAmf0Boolean
::
__SrsAmf0Boolean
(
bool
_value
)
{
marker
=
RTMP_AMF0_Boolean
;
value
=
_value
;
}
__SrsAmf0Boolean
::~
__SrsAmf0Boolean
()
{
}
int
__SrsAmf0Boolean
::
size
()
{
return
SrsAmf0Size
::
boolean
();
}
int
srs_amf0_read_utf8
(
SrsStream
*
stream
,
std
::
string
&
value
)
{
int
ret
=
ERROR_SUCCESS
;
...
...
@@ -1046,8 +1057,7 @@ int srs_amf0_read_any(SrsStream* stream, SrsAmf0Any*& value)
if
((
ret
=
srs_amf0_read_string
(
stream
,
data
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
value
=
SrsAmf0Any
::
str
();
srs_amf0_convert
<
__SrsAmf0String
>
(
value
)
->
value
=
data
;
value
=
SrsAmf0Any
::
str
(
data
.
c_str
());
return
ret
;
}
case
RTMP_AMF0_Boolean
:
{
...
...
@@ -1055,8 +1065,7 @@ int srs_amf0_read_any(SrsStream* stream, SrsAmf0Any*& value)
if
((
ret
=
srs_amf0_read_boolean
(
stream
,
data
))
!=
ERROR_SUCCESS
)
{
return
ret
;
}
value
=
new
SrsAmf0Boolean
();
srs_amf0_convert
<
SrsAmf0Boolean
>
(
value
)
->
value
=
data
;
value
=
SrsAmf0Any
::
boolean
(
data
);
return
ret
;
}
case
RTMP_AMF0_Number
:
{
...
...
@@ -1124,7 +1133,7 @@ int srs_amf0_write_any(SrsStream* stream, SrsAmf0Any* value)
return
srs_amf0_write_string
(
stream
,
data
);
}
case
RTMP_AMF0_Boolean
:
{
bool
data
=
srs_amf0_convert
<
SrsAmf0Boolean
>
(
value
)
->
value
;
bool
data
=
srs_amf0_convert
<
__
SrsAmf0Boolean
>
(
value
)
->
value
;
return
srs_amf0_write_boolean
(
stream
,
data
);
}
case
RTMP_AMF0_Number
:
{
...
...
trunk/src/rtmp/srs_protocol_amf0.hpp
查看文件 @
e40be6e
...
...
@@ -65,46 +65,16 @@ public:
* user must ensure the type is a string, or assert failed.
*/
virtual
std
::
string
to_str
();
/**
* get the boolean of any when is_boolean() indicates true.
* user must ensure the type is a is_boolean, or assert failed.
*/
virtual
bool
to_boolean
();
public
:
virtual
int
size
()
=
0
;
public
:
static
SrsAmf0Any
*
str
(
const
char
*
value
=
NULL
);
};
/**
* read amf0 string from stream.
* 2.4 String Type
* string-type = string-marker UTF-8
* @return default value is empty string.
* @remark: use SrsAmf0Any::str() to create it.
*/
class
__SrsAmf0String
:
public
SrsAmf0Any
{
public
:
std
::
string
value
;
__SrsAmf0String
(
const
char
*
_value
);
virtual
~
__SrsAmf0String
();
virtual
int
size
();
};
/**
* read amf0 boolean from stream.
* 2.4 String Type
* boolean-type = boolean-marker U8
* 0 is false, <> 0 is true
* @return default value is false.
*/
class
SrsAmf0Boolean
:
public
SrsAmf0Any
{
public
:
bool
value
;
SrsAmf0Boolean
(
bool
_value
=
false
);
virtual
~
SrsAmf0Boolean
();
virtual
int
size
();
static
SrsAmf0Any
*
boolean
(
bool
value
=
false
);
};
/**
...
...
@@ -271,6 +241,42 @@ public:
};
/**
* read amf0 string from stream.
* 2.4 String Type
* string-type = string-marker UTF-8
* @return default value is empty string.
* @remark: use SrsAmf0Any::str() to create it.
*/
class
__SrsAmf0String
:
public
SrsAmf0Any
{
public
:
std
::
string
value
;
__SrsAmf0String
(
const
char
*
_value
);
virtual
~
__SrsAmf0String
();
virtual
int
size
();
};
/**
* read amf0 boolean from stream.
* 2.4 String Type
* boolean-type = boolean-marker U8
* 0 is false, <> 0 is true
* @return default value is false.
*/
class
__SrsAmf0Boolean
:
public
SrsAmf0Any
{
public
:
bool
value
;
__SrsAmf0Boolean
(
bool
_value
);
virtual
~
__SrsAmf0Boolean
();
virtual
int
size
();
};
/**
* read amf0 utf8 string from stream.
* 1.3.1 Strings and UTF-8
* UTF-8 = U16 *(UTF8-char)
...
...
trunk/src/rtmp/srs_protocol_rtmp.cpp
查看文件 @
e40be6e
...
...
@@ -283,7 +283,7 @@ int SrsRtmpClient::connect_app(string app, string tc_url)
pkt
->
command_object
->
set
(
"app"
,
SrsAmf0Any
::
str
(
app
.
c_str
()));
pkt
->
command_object
->
set
(
"swfUrl"
,
SrsAmf0Any
::
str
());
pkt
->
command_object
->
set
(
"tcUrl"
,
SrsAmf0Any
::
str
(
tc_url
.
c_str
()));
pkt
->
command_object
->
set
(
"fpad"
,
new
SrsAmf0B
oolean
(
false
));
pkt
->
command_object
->
set
(
"fpad"
,
SrsAmf0Any
::
b
oolean
(
false
));
pkt
->
command_object
->
set
(
"capabilities"
,
new
SrsAmf0Number
(
239
));
pkt
->
command_object
->
set
(
"audioCodecs"
,
new
SrsAmf0Number
(
3575
));
pkt
->
command_object
->
set
(
"videoCodecs"
,
new
SrsAmf0Number
(
252
));
...
...
trunk/src/rtmp/srs_protocol_rtmp_stack.cpp
查看文件 @
e40be6e
...
...
@@ -2628,7 +2628,7 @@ int SrsPlayPacket::decode(SrsStream* stream)
// An optional Boolean value or number that specifies whether
// to flush any previous playlist
if
(
reset_value
->
is_boolean
())
{
reset
=
srs_amf0_convert
<
SrsAmf0Boolean
>
(
reset_value
)
->
value
;
reset
=
reset_value
->
to_boolean
()
;
}
else
if
(
reset_value
->
is_number
())
{
reset
=
(
srs_amf0_convert
<
SrsAmf0Number
>
(
reset_value
)
->
value
==
0
?
false
:
true
);
}
else
{
...
...
trunk/src/utest/srs_utest_amf0.cpp
查看文件 @
e40be6e
...
...
@@ -90,7 +90,7 @@ VOID TEST(AMF0Test, Size)
SrsAmf0Object
o
;
size
+=
SrsAmf0Size
::
utf8
(
"sex"
)
+
SrsAmf0Size
::
boolean
();
o
.
set
(
"sex"
,
new
SrsAmf0B
oolean
(
true
));
o
.
set
(
"sex"
,
SrsAmf0Any
::
b
oolean
(
true
));
EXPECT_EQ
(
size
,
SrsAmf0Size
::
object
(
&
o
));
}
...
...
@@ -144,7 +144,7 @@ VOID TEST(AMF0Test, Size)
SrsAmf0EcmaArray
o
;
size
+=
SrsAmf0Size
::
utf8
(
"sex"
)
+
SrsAmf0Size
::
boolean
();
o
.
set
(
"sex"
,
new
SrsAmf0B
oolean
(
true
));
o
.
set
(
"sex"
,
SrsAmf0Any
::
b
oolean
(
true
));
EXPECT_EQ
(
size
,
SrsAmf0Size
::
array
(
&
o
));
}
...
...
@@ -281,4 +281,27 @@ VOID TEST(AMF0Test, AnyElem)
EXPECT_TRUE
(
o
->
is_string
());
EXPECT_STREQ
(
"winlin"
,
o
->
to_str
().
c_str
());
}
// bool
if
(
true
)
{
o
=
SrsAmf0Any
::
boolean
();
SrsAutoFree
(
SrsAmf0Any
,
o
,
false
);
EXPECT_TRUE
(
NULL
!=
o
);
EXPECT_TRUE
(
o
->
is_boolean
());
EXPECT_FALSE
(
o
->
to_boolean
());
}
if
(
true
)
{
o
=
SrsAmf0Any
::
boolean
(
false
);
SrsAutoFree
(
SrsAmf0Any
,
o
,
false
);
EXPECT_TRUE
(
NULL
!=
o
);
EXPECT_TRUE
(
o
->
is_boolean
());
EXPECT_FALSE
(
o
->
to_boolean
());
}
if
(
true
)
{
o
=
SrsAmf0Any
::
boolean
(
true
);
SrsAutoFree
(
SrsAmf0Any
,
o
,
false
);
EXPECT_TRUE
(
NULL
!=
o
);
EXPECT_TRUE
(
o
->
is_boolean
());
EXPECT_TRUE
(
o
->
to_boolean
());
}
}
...
...
请
注册
或
登录
后发表评论