rtpdec: Identify incorrectly signalled H263
H263 in RTP can be packetized in two formats (RFC 2190, RFC 2429/4629). The former normally uses the static payload type 34, while the latter normally uses dynamic payload types with the SDP format names H263-1998 or H263-2000. Look for packets that don't look like proper RFC 2190 packets and switch to depacketizing them according to the new format if they match some heuristic criteria. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
@@ -23,13 +23,9 @@
|
||||
#include "rtpdec_formats.h"
|
||||
#include "libavutil/intreadwrite.h"
|
||||
|
||||
static int h263_handle_packet(AVFormatContext *ctx,
|
||||
PayloadContext *data,
|
||||
AVStream *st,
|
||||
AVPacket * pkt,
|
||||
uint32_t * timestamp,
|
||||
const uint8_t * buf,
|
||||
int len, int flags)
|
||||
int ff_h263_handle_packet(AVFormatContext *ctx, PayloadContext *data,
|
||||
AVStream *st, AVPacket *pkt, uint32_t *timestamp,
|
||||
const uint8_t *buf, int len, int flags)
|
||||
{
|
||||
uint8_t *ptr;
|
||||
uint16_t header;
|
||||
@@ -96,12 +92,12 @@ RTPDynamicProtocolHandler ff_h263_1998_dynamic_handler = {
|
||||
.enc_name = "H263-1998",
|
||||
.codec_type = AVMEDIA_TYPE_VIDEO,
|
||||
.codec_id = CODEC_ID_H263,
|
||||
.parse_packet = h263_handle_packet,
|
||||
.parse_packet = ff_h263_handle_packet,
|
||||
};
|
||||
|
||||
RTPDynamicProtocolHandler ff_h263_2000_dynamic_handler = {
|
||||
.enc_name = "H263-2000",
|
||||
.codec_type = AVMEDIA_TYPE_VIDEO,
|
||||
.codec_id = CODEC_ID_H263,
|
||||
.parse_packet = h263_handle_packet,
|
||||
.parse_packet = ff_h263_handle_packet,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user