Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
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