mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-12-04 17:46:45 +00:00
rtsp/rtpdec: Allow rtp_parse_packet to take ownership of the packet buffer
Do the same change for ff_rdt_parse_packet, too, to keep the interfaces similar. Originally committed as revision 25289 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
96a7c9753e
commit
ad4ad27fb6
@ -337,8 +337,9 @@ get_cache:
|
|||||||
|
|
||||||
int
|
int
|
||||||
ff_rdt_parse_packet(RDTDemuxContext *s, AVPacket *pkt,
|
ff_rdt_parse_packet(RDTDemuxContext *s, AVPacket *pkt,
|
||||||
const uint8_t *buf, int len)
|
uint8_t **bufptr, int len)
|
||||||
{
|
{
|
||||||
|
uint8_t *buf = bufptr ? *bufptr : NULL;
|
||||||
int seq_no, flags = 0, stream_id, set_id, is_keyframe;
|
int seq_no, flags = 0, stream_id, set_id, is_keyframe;
|
||||||
uint32_t timestamp;
|
uint32_t timestamp;
|
||||||
int rv= 0;
|
int rv= 0;
|
||||||
|
@ -96,7 +96,7 @@ int ff_rdt_parse_header(const uint8_t *buf, int len,
|
|||||||
* Usage similar to rtp_parse_packet().
|
* Usage similar to rtp_parse_packet().
|
||||||
*/
|
*/
|
||||||
int ff_rdt_parse_packet(RDTDemuxContext *s, AVPacket *pkt,
|
int ff_rdt_parse_packet(RDTDemuxContext *s, AVPacket *pkt,
|
||||||
const uint8_t *buf, int len);
|
uint8_t **buf, int len);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse a server-related SDP line.
|
* Parse a server-related SDP line.
|
||||||
|
@ -414,14 +414,15 @@ static void finalize_packet(RTPDemuxContext *s, AVPacket *pkt, uint32_t timestam
|
|||||||
* Parse an RTP or RTCP packet directly sent as a buffer.
|
* Parse an RTP or RTCP packet directly sent as a buffer.
|
||||||
* @param s RTP parse context.
|
* @param s RTP parse context.
|
||||||
* @param pkt returned packet
|
* @param pkt returned packet
|
||||||
* @param buf input buffer or NULL to read the next packets
|
* @param bufptr pointer to the input buffer or NULL to read the next packets
|
||||||
* @param len buffer len
|
* @param len buffer len
|
||||||
* @return 0 if a packet is returned, 1 if a packet is returned and more can follow
|
* @return 0 if a packet is returned, 1 if a packet is returned and more can follow
|
||||||
* (use buf as NULL to read the next). -1 if no packet (error or no more packet).
|
* (use buf as NULL to read the next). -1 if no packet (error or no more packet).
|
||||||
*/
|
*/
|
||||||
int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
|
int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
|
||||||
const uint8_t *buf, int len)
|
uint8_t **bufptr, int len)
|
||||||
{
|
{
|
||||||
|
uint8_t* buf = bufptr ? *bufptr : NULL;
|
||||||
unsigned int ssrc, h;
|
unsigned int ssrc, h;
|
||||||
int payload_type, seq, ret, flags = 0;
|
int payload_type, seq, ret, flags = 0;
|
||||||
AVStream *st;
|
AVStream *st;
|
||||||
|
@ -39,7 +39,7 @@ RTPDemuxContext *rtp_parse_open(AVFormatContext *s1, AVStream *st, URLContext *r
|
|||||||
void rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx,
|
void rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx,
|
||||||
RTPDynamicProtocolHandler *handler);
|
RTPDynamicProtocolHandler *handler);
|
||||||
int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
|
int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
|
||||||
const uint8_t *buf, int len);
|
uint8_t **buf, int len);
|
||||||
void rtp_parse_close(RTPDemuxContext *s);
|
void rtp_parse_close(RTPDemuxContext *s);
|
||||||
#if (LIBAVFORMAT_VERSION_MAJOR <= 53)
|
#if (LIBAVFORMAT_VERSION_MAJOR <= 53)
|
||||||
int rtp_get_local_port(URLContext *h);
|
int rtp_get_local_port(URLContext *h);
|
||||||
|
@ -1843,9 +1843,9 @@ static int rtsp_fetch_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
if (len == 0)
|
if (len == 0)
|
||||||
return AVERROR_EOF;
|
return AVERROR_EOF;
|
||||||
if (rt->transport == RTSP_TRANSPORT_RDT) {
|
if (rt->transport == RTSP_TRANSPORT_RDT) {
|
||||||
ret = ff_rdt_parse_packet(rtsp_st->transport_priv, pkt, rt->recvbuf, len);
|
ret = ff_rdt_parse_packet(rtsp_st->transport_priv, pkt, &rt->recvbuf, len);
|
||||||
} else {
|
} else {
|
||||||
ret = rtp_parse_packet(rtsp_st->transport_priv, pkt, rt->recvbuf, len);
|
ret = rtp_parse_packet(rtsp_st->transport_priv, pkt, &rt->recvbuf, len);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
/* Either bad packet, or a RTCP packet. Check if the
|
/* Either bad packet, or a RTCP packet. Check if the
|
||||||
* first_rtcp_ntp_time field was initialized. */
|
* first_rtcp_ntp_time field was initialized. */
|
||||||
|
Loading…
Reference in New Issue
Block a user