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
ba5393a6
Commit
ba5393a6
authored
Aug 08, 2013
by
Luca Barbato
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rtmp: rename data_size to size
parent
4ebc7d65
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
73 additions
and
73 deletions
+73
-73
rtmppkt.c
libavformat/rtmppkt.c
+37
-37
rtmppkt.h
libavformat/rtmppkt.h
+1
-1
rtmpproto.c
libavformat/rtmpproto.c
+35
-35
No files found.
libavformat/rtmppkt.c
View file @
ba5393a6
...
@@ -145,25 +145,25 @@ int ff_rtmp_packet_read_internal(URLContext *h, RTMPPacket *p, int chunk_size,
...
@@ -145,25 +145,25 @@ int ff_rtmp_packet_read_internal(URLContext *h, RTMPPacket *p, int chunk_size,
{
{
uint8_t
t
,
buf
[
16
];
uint8_t
t
,
buf
[
16
];
int
channel_id
,
timestamp
,
data_
size
,
offset
=
0
;
int
channel_id
,
timestamp
,
size
,
offset
=
0
;
uint32_t
extra
=
0
;
uint32_t
extra
=
0
;
enum
RTMPPacketType
type
;
enum
RTMPPacketType
type
;
int
size
=
0
;
int
written
=
0
;
int
ret
;
int
ret
;
size
++
;
written
++
;
channel_id
=
hdr
&
0x3F
;
channel_id
=
hdr
&
0x3F
;
if
(
channel_id
<
2
)
{
//special case for channel number >= 64
if
(
channel_id
<
2
)
{
//special case for channel number >= 64
buf
[
1
]
=
0
;
buf
[
1
]
=
0
;
if
(
ffurl_read_complete
(
h
,
buf
,
channel_id
+
1
)
!=
channel_id
+
1
)
if
(
ffurl_read_complete
(
h
,
buf
,
channel_id
+
1
)
!=
channel_id
+
1
)
return
AVERROR
(
EIO
);
return
AVERROR
(
EIO
);
size
+=
channel_id
+
1
;
written
+=
channel_id
+
1
;
channel_id
=
AV_RL16
(
buf
)
+
64
;
channel_id
=
AV_RL16
(
buf
)
+
64
;
}
}
data_size
=
prev_pkt
[
channel_id
].
data_
size
;
size
=
prev_pkt
[
channel_id
].
size
;
type
=
prev_pkt
[
channel_id
].
type
;
type
=
prev_pkt
[
channel_id
].
type
;
extra
=
prev_pkt
[
channel_id
].
extra
;
extra
=
prev_pkt
[
channel_id
].
extra
;
hdr
>>=
6
;
hdr
>>=
6
;
if
(
hdr
==
RTMP_PS_ONEBYTE
)
{
if
(
hdr
==
RTMP_PS_ONEBYTE
)
{
...
@@ -171,21 +171,21 @@ int ff_rtmp_packet_read_internal(URLContext *h, RTMPPacket *p, int chunk_size,
...
@@ -171,21 +171,21 @@ int ff_rtmp_packet_read_internal(URLContext *h, RTMPPacket *p, int chunk_size,
}
else
{
}
else
{
if
(
ffurl_read_complete
(
h
,
buf
,
3
)
!=
3
)
if
(
ffurl_read_complete
(
h
,
buf
,
3
)
!=
3
)
return
AVERROR
(
EIO
);
return
AVERROR
(
EIO
);
size
+=
3
;
written
+=
3
;
timestamp
=
AV_RB24
(
buf
);
timestamp
=
AV_RB24
(
buf
);
if
(
hdr
!=
RTMP_PS_FOURBYTES
)
{
if
(
hdr
!=
RTMP_PS_FOURBYTES
)
{
if
(
ffurl_read_complete
(
h
,
buf
,
3
)
!=
3
)
if
(
ffurl_read_complete
(
h
,
buf
,
3
)
!=
3
)
return
AVERROR
(
EIO
);
return
AVERROR
(
EIO
);
size
+=
3
;
written
+=
3
;
data_
size
=
AV_RB24
(
buf
);
size
=
AV_RB24
(
buf
);
if
(
ffurl_read_complete
(
h
,
buf
,
1
)
!=
1
)
if
(
ffurl_read_complete
(
h
,
buf
,
1
)
!=
1
)
return
AVERROR
(
EIO
);
return
AVERROR
(
EIO
);
size
++
;
written
++
;
type
=
buf
[
0
];
type
=
buf
[
0
];
if
(
hdr
==
RTMP_PS_TWELVEBYTES
)
{
if
(
hdr
==
RTMP_PS_TWELVEBYTES
)
{
if
(
ffurl_read_complete
(
h
,
buf
,
4
)
!=
4
)
if
(
ffurl_read_complete
(
h
,
buf
,
4
)
!=
4
)
return
AVERROR
(
EIO
);
return
AVERROR
(
EIO
);
size
+=
4
;
written
+=
4
;
extra
=
AV_RL32
(
buf
);
extra
=
AV_RL32
(
buf
);
}
}
}
}
...
@@ -199,36 +199,36 @@ int ff_rtmp_packet_read_internal(URLContext *h, RTMPPacket *p, int chunk_size,
...
@@ -199,36 +199,36 @@ int ff_rtmp_packet_read_internal(URLContext *h, RTMPPacket *p, int chunk_size,
timestamp
+=
prev_pkt
[
channel_id
].
timestamp
;
timestamp
+=
prev_pkt
[
channel_id
].
timestamp
;
if
((
ret
=
ff_rtmp_packet_create
(
p
,
channel_id
,
type
,
timestamp
,
if
((
ret
=
ff_rtmp_packet_create
(
p
,
channel_id
,
type
,
timestamp
,
data_
size
))
<
0
)
size
))
<
0
)
return
ret
;
return
ret
;
p
->
extra
=
extra
;
p
->
extra
=
extra
;
// save history
// save history
prev_pkt
[
channel_id
].
channel_id
=
channel_id
;
prev_pkt
[
channel_id
].
channel_id
=
channel_id
;
prev_pkt
[
channel_id
].
type
=
type
;
prev_pkt
[
channel_id
].
type
=
type
;
prev_pkt
[
channel_id
].
data_size
=
data_
size
;
prev_pkt
[
channel_id
].
size
=
size
;
prev_pkt
[
channel_id
].
ts_delta
=
timestamp
-
prev_pkt
[
channel_id
].
timestamp
;
prev_pkt
[
channel_id
].
ts_delta
=
timestamp
-
prev_pkt
[
channel_id
].
timestamp
;
prev_pkt
[
channel_id
].
timestamp
=
timestamp
;
prev_pkt
[
channel_id
].
timestamp
=
timestamp
;
prev_pkt
[
channel_id
].
extra
=
extra
;
prev_pkt
[
channel_id
].
extra
=
extra
;
while
(
data_
size
>
0
)
{
while
(
size
>
0
)
{
int
toread
=
FFMIN
(
data_
size
,
chunk_size
);
int
toread
=
FFMIN
(
size
,
chunk_size
);
if
(
ffurl_read_complete
(
h
,
p
->
data
+
offset
,
toread
)
!=
toread
)
{
if
(
ffurl_read_complete
(
h
,
p
->
data
+
offset
,
toread
)
!=
toread
)
{
ff_rtmp_packet_destroy
(
p
);
ff_rtmp_packet_destroy
(
p
);
return
AVERROR
(
EIO
);
return
AVERROR
(
EIO
);
}
}
data_size
-=
chunk_size
;
size
-=
chunk_size
;
offset
+=
chunk_size
;
offset
+=
chunk_size
;
size
+=
chunk_size
;
written
+=
chunk_size
;
if
(
data_
size
>
0
)
{
if
(
size
>
0
)
{
if
((
ret
=
ffurl_read_complete
(
h
,
&
t
,
1
))
<
0
)
{
// marker
if
((
ret
=
ffurl_read_complete
(
h
,
&
t
,
1
))
<
0
)
{
// marker
ff_rtmp_packet_destroy
(
p
);
ff_rtmp_packet_destroy
(
p
);
return
ret
;
return
ret
;
}
}
size
++
;
written
++
;
if
(
t
!=
(
0xC0
+
channel_id
))
if
(
t
!=
(
0xC0
+
channel_id
))
return
-
1
;
return
-
1
;
}
}
}
}
return
size
;
return
written
;
}
}
int
ff_rtmp_packet_write
(
URLContext
*
h
,
RTMPPacket
*
pkt
,
int
ff_rtmp_packet_write
(
URLContext
*
h
,
RTMPPacket
*
pkt
,
...
@@ -237,7 +237,7 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
...
@@ -237,7 +237,7 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
uint8_t
pkt_hdr
[
16
],
*
p
=
pkt_hdr
;
uint8_t
pkt_hdr
[
16
],
*
p
=
pkt_hdr
;
int
mode
=
RTMP_PS_TWELVEBYTES
;
int
mode
=
RTMP_PS_TWELVEBYTES
;
int
off
=
0
;
int
off
=
0
;
int
size
=
0
;
int
written
=
0
;
int
ret
;
int
ret
;
pkt
->
ts_delta
=
pkt
->
timestamp
-
prev_pkt
[
pkt
->
channel_id
].
timestamp
;
pkt
->
ts_delta
=
pkt
->
timestamp
-
prev_pkt
[
pkt
->
channel_id
].
timestamp
;
...
@@ -246,7 +246,7 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
...
@@ -246,7 +246,7 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
if
(
prev_pkt
[
pkt
->
channel_id
].
channel_id
&&
if
(
prev_pkt
[
pkt
->
channel_id
].
channel_id
&&
pkt
->
extra
==
prev_pkt
[
pkt
->
channel_id
].
extra
)
{
pkt
->
extra
==
prev_pkt
[
pkt
->
channel_id
].
extra
)
{
if
(
pkt
->
type
==
prev_pkt
[
pkt
->
channel_id
].
type
&&
if
(
pkt
->
type
==
prev_pkt
[
pkt
->
channel_id
].
type
&&
pkt
->
data_size
==
prev_pkt
[
pkt
->
channel_id
].
data_
size
)
{
pkt
->
size
==
prev_pkt
[
pkt
->
channel_id
].
size
)
{
mode
=
RTMP_PS_FOURBYTES
;
mode
=
RTMP_PS_FOURBYTES
;
if
(
pkt
->
ts_delta
==
prev_pkt
[
pkt
->
channel_id
].
ts_delta
)
if
(
pkt
->
ts_delta
==
prev_pkt
[
pkt
->
channel_id
].
ts_delta
)
mode
=
RTMP_PS_ONEBYTE
;
mode
=
RTMP_PS_ONEBYTE
;
...
@@ -270,7 +270,7 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
...
@@ -270,7 +270,7 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
timestamp
=
pkt
->
ts_delta
;
timestamp
=
pkt
->
ts_delta
;
bytestream_put_be24
(
&
p
,
timestamp
>=
0xFFFFFF
?
0xFFFFFF
:
timestamp
);
bytestream_put_be24
(
&
p
,
timestamp
>=
0xFFFFFF
?
0xFFFFFF
:
timestamp
);
if
(
mode
!=
RTMP_PS_FOURBYTES
)
{
if
(
mode
!=
RTMP_PS_FOURBYTES
)
{
bytestream_put_be24
(
&
p
,
pkt
->
data_
size
);
bytestream_put_be24
(
&
p
,
pkt
->
size
);
bytestream_put_byte
(
&
p
,
pkt
->
type
);
bytestream_put_byte
(
&
p
,
pkt
->
type
);
if
(
mode
==
RTMP_PS_TWELVEBYTES
)
if
(
mode
==
RTMP_PS_TWELVEBYTES
)
bytestream_put_le32
(
&
p
,
pkt
->
extra
);
bytestream_put_le32
(
&
p
,
pkt
->
extra
);
...
@@ -281,7 +281,7 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
...
@@ -281,7 +281,7 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
// save history
// save history
prev_pkt
[
pkt
->
channel_id
].
channel_id
=
pkt
->
channel_id
;
prev_pkt
[
pkt
->
channel_id
].
channel_id
=
pkt
->
channel_id
;
prev_pkt
[
pkt
->
channel_id
].
type
=
pkt
->
type
;
prev_pkt
[
pkt
->
channel_id
].
type
=
pkt
->
type
;
prev_pkt
[
pkt
->
channel_id
].
data_size
=
pkt
->
data_
size
;
prev_pkt
[
pkt
->
channel_id
].
size
=
pkt
->
size
;
prev_pkt
[
pkt
->
channel_id
].
timestamp
=
pkt
->
timestamp
;
prev_pkt
[
pkt
->
channel_id
].
timestamp
=
pkt
->
timestamp
;
if
(
mode
!=
RTMP_PS_TWELVEBYTES
)
{
if
(
mode
!=
RTMP_PS_TWELVEBYTES
)
{
prev_pkt
[
pkt
->
channel_id
].
ts_delta
=
pkt
->
ts_delta
;
prev_pkt
[
pkt
->
channel_id
].
ts_delta
=
pkt
->
ts_delta
;
...
@@ -292,20 +292,20 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
...
@@ -292,20 +292,20 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
if
((
ret
=
ffurl_write
(
h
,
pkt_hdr
,
p
-
pkt_hdr
))
<
0
)
if
((
ret
=
ffurl_write
(
h
,
pkt_hdr
,
p
-
pkt_hdr
))
<
0
)
return
ret
;
return
ret
;
size
=
p
-
pkt_hdr
+
pkt
->
data_
size
;
written
=
p
-
pkt_hdr
+
pkt
->
size
;
while
(
off
<
pkt
->
data_
size
)
{
while
(
off
<
pkt
->
size
)
{
int
towrite
=
FFMIN
(
chunk_size
,
pkt
->
data_
size
-
off
);
int
towrite
=
FFMIN
(
chunk_size
,
pkt
->
size
-
off
);
if
((
ret
=
ffurl_write
(
h
,
pkt
->
data
+
off
,
towrite
))
<
0
)
if
((
ret
=
ffurl_write
(
h
,
pkt
->
data
+
off
,
towrite
))
<
0
)
return
ret
;
return
ret
;
off
+=
towrite
;
off
+=
towrite
;
if
(
off
<
pkt
->
data_
size
)
{
if
(
off
<
pkt
->
size
)
{
uint8_t
marker
=
0xC0
|
pkt
->
channel_id
;
uint8_t
marker
=
0xC0
|
pkt
->
channel_id
;
if
((
ret
=
ffurl_write
(
h
,
&
marker
,
1
))
<
0
)
if
((
ret
=
ffurl_write
(
h
,
&
marker
,
1
))
<
0
)
return
ret
;
return
ret
;
size
++
;
written
++
;
}
}
}
}
return
size
;
return
written
;
}
}
int
ff_rtmp_packet_create
(
RTMPPacket
*
pkt
,
int
channel_id
,
RTMPPacketType
type
,
int
ff_rtmp_packet_create
(
RTMPPacket
*
pkt
,
int
channel_id
,
RTMPPacketType
type
,
...
@@ -316,7 +316,7 @@ int ff_rtmp_packet_create(RTMPPacket *pkt, int channel_id, RTMPPacketType type,
...
@@ -316,7 +316,7 @@ int ff_rtmp_packet_create(RTMPPacket *pkt, int channel_id, RTMPPacketType type,
if
(
!
pkt
->
data
)
if
(
!
pkt
->
data
)
return
AVERROR
(
ENOMEM
);
return
AVERROR
(
ENOMEM
);
}
}
pkt
->
data_size
=
size
;
pkt
->
size
=
size
;
pkt
->
channel_id
=
channel_id
;
pkt
->
channel_id
=
channel_id
;
pkt
->
type
=
type
;
pkt
->
type
=
type
;
pkt
->
timestamp
=
timestamp
;
pkt
->
timestamp
=
timestamp
;
...
@@ -331,7 +331,7 @@ void ff_rtmp_packet_destroy(RTMPPacket *pkt)
...
@@ -331,7 +331,7 @@ void ff_rtmp_packet_destroy(RTMPPacket *pkt)
if
(
!
pkt
)
if
(
!
pkt
)
return
;
return
;
av_freep
(
&
pkt
->
data
);
av_freep
(
&
pkt
->
data
);
pkt
->
data_
size
=
0
;
pkt
->
size
=
0
;
}
}
int
ff_amf_tag_size
(
const
uint8_t
*
data
,
const
uint8_t
*
data_end
)
int
ff_amf_tag_size
(
const
uint8_t
*
data
,
const
uint8_t
*
data_end
)
...
@@ -503,9 +503,9 @@ static void amf_tag_contents(void *ctx, const uint8_t *data,
...
@@ -503,9 +503,9 @@ static void amf_tag_contents(void *ctx, const uint8_t *data,
void
ff_rtmp_packet_dump
(
void
*
ctx
,
RTMPPacket
*
p
)
void
ff_rtmp_packet_dump
(
void
*
ctx
,
RTMPPacket
*
p
)
{
{
av_log
(
ctx
,
AV_LOG_DEBUG
,
"RTMP packet type '%s'(%d) for channel %d, timestamp %d, extra field %d size %d
\n
"
,
av_log
(
ctx
,
AV_LOG_DEBUG
,
"RTMP packet type '%s'(%d) for channel %d, timestamp %d, extra field %d size %d
\n
"
,
rtmp_packet_type
(
p
->
type
),
p
->
type
,
p
->
channel_id
,
p
->
timestamp
,
p
->
extra
,
p
->
data_
size
);
rtmp_packet_type
(
p
->
type
),
p
->
type
,
p
->
channel_id
,
p
->
timestamp
,
p
->
extra
,
p
->
size
);
if
(
p
->
type
==
RTMP_PT_INVOKE
||
p
->
type
==
RTMP_PT_NOTIFY
)
{
if
(
p
->
type
==
RTMP_PT_INVOKE
||
p
->
type
==
RTMP_PT_NOTIFY
)
{
uint8_t
*
src
=
p
->
data
,
*
src_end
=
p
->
data
+
p
->
data_
size
;
uint8_t
*
src
=
p
->
data
,
*
src_end
=
p
->
data
+
p
->
size
;
while
(
src
<
src_end
)
{
while
(
src
<
src_end
)
{
int
sz
;
int
sz
;
amf_tag_contents
(
ctx
,
src
,
src_end
);
amf_tag_contents
(
ctx
,
src
,
src_end
);
...
@@ -520,7 +520,7 @@ void ff_rtmp_packet_dump(void *ctx, RTMPPacket *p)
...
@@ -520,7 +520,7 @@ void ff_rtmp_packet_dump(void *ctx, RTMPPacket *p)
av_log
(
ctx
,
AV_LOG_DEBUG
,
"Client BW = %d
\n
"
,
AV_RB32
(
p
->
data
));
av_log
(
ctx
,
AV_LOG_DEBUG
,
"Client BW = %d
\n
"
,
AV_RB32
(
p
->
data
));
}
else
if
(
p
->
type
!=
RTMP_PT_AUDIO
&&
p
->
type
!=
RTMP_PT_VIDEO
&&
p
->
type
!=
RTMP_PT_METADATA
)
{
}
else
if
(
p
->
type
!=
RTMP_PT_AUDIO
&&
p
->
type
!=
RTMP_PT_VIDEO
&&
p
->
type
!=
RTMP_PT_METADATA
)
{
int
i
;
int
i
;
for
(
i
=
0
;
i
<
p
->
data_
size
;
i
++
)
for
(
i
=
0
;
i
<
p
->
size
;
i
++
)
av_log
(
ctx
,
AV_LOG_DEBUG
,
" %02X"
,
p
->
data
[
i
]);
av_log
(
ctx
,
AV_LOG_DEBUG
,
" %02X"
,
p
->
data
[
i
]);
av_log
(
ctx
,
AV_LOG_DEBUG
,
"
\n
"
);
av_log
(
ctx
,
AV_LOG_DEBUG
,
"
\n
"
);
}
}
...
...
libavformat/rtmppkt.h
View file @
ba5393a6
...
@@ -81,7 +81,7 @@ typedef struct RTMPPacket {
...
@@ -81,7 +81,7 @@ typedef struct RTMPPacket {
uint32_t
ts_delta
;
///< timestamp increment to the previous one in milliseconds (latter only for media packets)
uint32_t
ts_delta
;
///< timestamp increment to the previous one in milliseconds (latter only for media packets)
uint32_t
extra
;
///< probably an additional channel ID used during streaming data
uint32_t
extra
;
///< probably an additional channel ID used during streaming data
uint8_t
*
data
;
///< packet payload
uint8_t
*
data
;
///< packet payload
int
data_size
;
///< packet payload size
int
size
;
///< packet payload size
}
RTMPPacket
;
}
RTMPPacket
;
/**
/**
...
...
libavformat/rtmpproto.c
View file @
ba5393a6
This diff is collapsed.
Click to expand it.
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