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
179a5c37
Commit
179a5c37
authored
Nov 01, 2012
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rtpdec: factorize identical code used in several handlers
parent
f70381ab
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
34 additions
and
42 deletions
+34
-42
rtpdec.c
libavformat/rtpdec.c
+11
-0
rtpdec.h
libavformat/rtpdec.h
+5
-0
rtpdec_h263_rfc2190.c
libavformat/rtpdec_h263_rfc2190.c
+5
-7
rtpdec_jpeg.c
libavformat/rtpdec_jpeg.c
+3
-10
rtpdec_svq3.c
libavformat/rtpdec_svq3.c
+4
-5
rtpdec_vp8.c
libavformat/rtpdec_vp8.c
+3
-10
rtpdec_xiph.c
libavformat/rtpdec_xiph.c
+3
-10
No files found.
libavformat/rtpdec.c
View file @
179a5c37
...
...
@@ -803,3 +803,14 @@ int ff_parse_fmtp(AVStream *stream, PayloadContext *data, const char *p,
av_free
(
value
);
return
0
;
}
int
ff_rtp_finalize_packet
(
AVPacket
*
pkt
,
AVIOContext
**
dyn_buf
,
int
stream_idx
)
{
av_init_packet
(
pkt
);
pkt
->
size
=
avio_close_dyn_buf
(
*
dyn_buf
,
&
pkt
->
data
);
pkt
->
stream_index
=
stream_idx
;
pkt
->
destruct
=
av_destruct_packet
;
*
dyn_buf
=
NULL
;
return
pkt
->
size
;
}
libavformat/rtpdec.h
View file @
179a5c37
...
...
@@ -202,4 +202,9 @@ int ff_parse_fmtp(AVStream *stream, PayloadContext *data, const char *p,
void
av_register_rtp_dynamic_payload_handlers
(
void
);
/**
* Close the dynamic buffer and make a packet from it.
*/
int
ff_rtp_finalize_packet
(
AVPacket
*
pkt
,
AVIOContext
**
dyn_buf
,
int
stream_idx
);
#endif
/* AVFORMAT_RTPDEC_H */
libavformat/rtpdec_h263_rfc2190.c
View file @
179a5c37
...
...
@@ -61,7 +61,7 @@ static int h263_handle_packet(AVFormatContext *ctx, PayloadContext *data,
{
/* Corresponding to header fields in the RFC */
int
f
,
p
,
i
,
sbit
,
ebit
,
src
,
r
;
int
header_size
;
int
header_size
,
ret
;
if
(
data
->
newformat
)
return
ff_h263_handle_packet
(
ctx
,
data
,
st
,
pkt
,
timestamp
,
buf
,
len
,
...
...
@@ -133,7 +133,7 @@ static int h263_handle_packet(AVFormatContext *ctx, PayloadContext *data,
/* Check the picture start code, only start buffering a new frame
* if this is correct */
if
(
len
>
4
&&
AV_RB32
(
buf
)
>>
10
==
0x20
)
{
int
ret
=
avio_open_dyn_buf
(
&
data
->
buf
);
ret
=
avio_open_dyn_buf
(
&
data
->
buf
);
if
(
ret
<
0
)
return
ret
;
data
->
timestamp
=
*
timestamp
;
...
...
@@ -185,13 +185,11 @@ static int h263_handle_packet(AVFormatContext *ctx, PayloadContext *data,
avio_w8
(
data
->
buf
,
data
->
endbyte
);
data
->
endbyte_bits
=
0
;
av_init_packet
(
pkt
);
pkt
->
size
=
avio_close_dyn_buf
(
data
->
buf
,
&
pkt
->
data
);
pkt
->
destruct
=
av_destruct_packet
;
pkt
->
stream_index
=
st
->
index
;
ret
=
ff_rtp_finalize_packet
(
pkt
,
&
data
->
buf
,
st
->
index
);
if
(
ret
<
0
)
return
ret
;
if
(
!
i
)
pkt
->
flags
|=
AV_PKT_FLAG_KEY
;
data
->
buf
=
NULL
;
return
0
;
}
...
...
libavformat/rtpdec_jpeg.c
View file @
179a5c37
...
...
@@ -20,6 +20,7 @@
*/
#include "avformat.h"
#include "rtpdec.h"
#include "rtpdec_formats.h"
#include "libavutil/intreadwrite.h"
#include "libavcodec/mjpeg.h"
...
...
@@ -367,19 +368,11 @@ static int jpeg_parse_packet(AVFormatContext *ctx, PayloadContext *jpeg,
avio_write
(
jpeg
->
frame
,
buf
,
sizeof
(
buf
));
/* Prepare the JPEG packet. */
av_init_packet
(
pkt
);
pkt
->
size
=
avio_close_dyn_buf
(
jpeg
->
frame
,
&
pkt
->
data
);
if
(
pkt
->
size
<
0
)
{
if
((
ret
=
ff_rtp_finalize_packet
(
pkt
,
&
jpeg
->
frame
,
st
->
index
))
<
0
)
{
av_log
(
ctx
,
AV_LOG_ERROR
,
"Error occured when getting frame buffer.
\n
"
);
jpeg
->
frame
=
NULL
;
return
pkt
->
size
;
return
ret
;
}
pkt
->
stream_index
=
st
->
index
;
pkt
->
destruct
=
av_destruct_packet
;
/* Re-init the frame buffer. */
jpeg
->
frame
=
NULL
;
return
0
;
}
...
...
libavformat/rtpdec_svq3.c
View file @
179a5c37
...
...
@@ -97,12 +97,11 @@ static int svq3_parse_packet (AVFormatContext *s, PayloadContext *sv,
avio_write
(
sv
->
pktbuf
,
buf
,
len
);
if
(
end_packet
)
{
av_init_packet
(
pkt
);
pkt
->
stream_index
=
st
->
index
;
int
ret
=
ff_rtp_finalize_packet
(
pkt
,
&
sv
->
pktbuf
,
st
->
index
);
if
(
ret
<
0
)
return
ret
;
*
timestamp
=
sv
->
timestamp
;
pkt
->
size
=
avio_close_dyn_buf
(
sv
->
pktbuf
,
&
pkt
->
data
);
pkt
->
destruct
=
av_destruct_packet
;
sv
->
pktbuf
=
NULL
;
return
0
;
}
...
...
libavformat/rtpdec_vp8.c
View file @
179a5c37
...
...
@@ -36,15 +36,6 @@ struct PayloadContext {
uint32_t
timestamp
;
};
static
void
prepare_packet
(
AVPacket
*
pkt
,
PayloadContext
*
vp8
,
int
stream
)
{
av_init_packet
(
pkt
);
pkt
->
stream_index
=
stream
;
pkt
->
size
=
avio_close_dyn_buf
(
vp8
->
data
,
&
pkt
->
data
);
pkt
->
destruct
=
av_destruct_packet
;
vp8
->
data
=
NULL
;
}
static
int
vp8_handle_packet
(
AVFormatContext
*
ctx
,
PayloadContext
*
vp8
,
AVStream
*
st
,
...
...
@@ -133,7 +124,9 @@ static int vp8_handle_packet(AVFormatContext *ctx,
avio_write
(
vp8
->
data
,
buf
,
len
);
if
(
end_packet
)
{
prepare_packet
(
pkt
,
vp8
,
st
->
index
);
int
ret
=
ff_rtp_finalize_packet
(
pkt
,
&
vp8
->
data
,
st
->
index
);
if
(
ret
<
0
)
return
ret
;
return
0
;
}
...
...
libavformat/rtpdec_xiph.c
View file @
179a5c37
...
...
@@ -202,20 +202,13 @@ static int xiph_handle_packet(AVFormatContext * ctx,
if
(
fragmented
==
3
)
{
// end of xiph data packet
av_init_packet
(
pkt
);
pkt
->
size
=
avio_close_dyn_buf
(
data
->
fragment
,
&
pkt
->
data
);
if
(
pkt
->
size
<
0
)
{
int
ret
=
ff_rtp_finalize_packet
(
pkt
,
&
data
->
fragment
,
st
->
index
);
if
(
ret
<
0
)
{
av_log
(
ctx
,
AV_LOG_ERROR
,
"Error occurred when getting fragment buffer."
);
return
pkt
->
size
;
return
ret
;
}
pkt
->
stream_index
=
st
->
index
;
pkt
->
destruct
=
av_destruct_packet
;
data
->
fragment
=
NULL
;
return
0
;
}
}
...
...
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