You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2026-05-21 16:47:28 +02:00
Merge remote-tracking branch 'qatar/master'
* qatar/master: (35 commits) fix space type in Changelog ZeroCodec Decoder RealAudio Lossless decoder rtpenc: Use AVFormatContext.packet_size instead of a private option url: Document the expected behaviour of url_read libavformat: Use AVFormatContext.probesize in init_input docs: Fix a stray reference to tags in the generic doxy on dicts cosmetics: Align some AVInput/OutputFormat declarations zmbv: check decompress result zmbv: correct indentation adpcm: convert adpcm_thp to bytestream2. adpcm: convert adpcm_yamaha to bytestream2. adpcm: convert adpcm_swf to bytestream2. adpcm: convert adpcm_sbpro to bytestream2. adpcm: convert adpcm_ct to bytestream2. adpcm: convert adpcm_ima_amv/smjpeg to bytestream2. adpcm: convert adpcm_ea_xas to bytestream2. adpcm: convert adpcm_ea_r1/2/3 to bytestream2. adpcm: convert ea_maxis_xa to bytestream2. adpcm: convert adpcm_ea to bytestream2. ... Conflicts: Changelog libavcodec/Makefile libavcodec/adpcm.c libavcodec/allcodecs.c libavcodec/avcodec.h libavcodec/version.h libavcodec/zerocodec.c libavcodec/zmbv.c libavformat/riff.c libavformat/url.h tests/ref/fate/truemotion1-15 tests/ref/fate/truemotion1-24 Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -42,5 +42,6 @@ const AVCodecTag ff_rm_codec_tags[] = {
|
||||
{ CODEC_ID_SIPR, MKTAG('s','i','p','r') },
|
||||
{ CODEC_ID_AAC, MKTAG('r','a','a','c') },
|
||||
{ CODEC_ID_AAC, MKTAG('r','a','c','p') },
|
||||
{ CODEC_ID_RALF, MKTAG('L','S','D',':') },
|
||||
{ CODEC_ID_NONE },
|
||||
};
|
||||
|
||||
@@ -311,6 +311,15 @@ ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVIOContext *pb,
|
||||
/* ra type header */
|
||||
if (rm_read_audio_stream_info(s, pb, st, rst, 0))
|
||||
return -1;
|
||||
} else if (v == MKBETAG('L', 'S', 'D', ':')) {
|
||||
avio_seek(pb, -4, SEEK_CUR);
|
||||
if ((ret = rm_read_extradata(pb, st->codec, codec_data_size)) < 0)
|
||||
return ret;
|
||||
|
||||
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
|
||||
st->codec->codec_tag = AV_RL32(st->codec->extradata);
|
||||
st->codec->codec_id = ff_codec_get_id(ff_rm_codec_tags,
|
||||
st->codec->codec_tag);
|
||||
} else {
|
||||
int fps;
|
||||
if (avio_rl32(pb) != MKTAG('V', 'I', 'D', 'O')) {
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
static const AVOption options[] = {
|
||||
FF_RTP_FLAG_OPTS(RTPMuxContext, flags)
|
||||
{ "payload_type", "Specify RTP payload type", offsetof(RTPMuxContext, payload_type), AV_OPT_TYPE_INT, {.dbl = -1 }, -1, 127, AV_OPT_FLAG_ENCODING_PARAM },
|
||||
{ "max_packet_size", "Max packet size", offsetof(RTPMuxContext, max_packet_size), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM },
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
@@ -110,21 +109,21 @@ static int rtp_write_header(AVFormatContext *s1)
|
||||
s->first_rtcp_ntp_time = (s1->start_time_realtime / 1000) * 1000 +
|
||||
NTP_OFFSET_US;
|
||||
|
||||
if (s->max_packet_size) {
|
||||
if (s1->packet_size) {
|
||||
if (s1->pb->max_packet_size)
|
||||
s->max_packet_size = FFMIN(s->max_packet_size,
|
||||
s1->pb->max_packet_size);
|
||||
s1->packet_size = FFMIN(s1->packet_size,
|
||||
s1->pb->max_packet_size);
|
||||
} else
|
||||
s->max_packet_size = s1->pb->max_packet_size;
|
||||
if (s->max_packet_size <= 12) {
|
||||
av_log(s1, AV_LOG_ERROR, "Max packet size %d too low\n", s->max_packet_size);
|
||||
s1->packet_size = s1->pb->max_packet_size;
|
||||
if (s1->packet_size <= 12) {
|
||||
av_log(s1, AV_LOG_ERROR, "Max packet size %d too low\n", s1->packet_size);
|
||||
return AVERROR(EIO);
|
||||
}
|
||||
s->buf = av_malloc(s->max_packet_size);
|
||||
s->buf = av_malloc(s1->packet_size);
|
||||
if (s->buf == NULL) {
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
s->max_payload_size = s->max_packet_size - 12;
|
||||
s->max_payload_size = s1->packet_size - 12;
|
||||
|
||||
s->max_frames_per_packet = 0;
|
||||
if (s1->max_delay) {
|
||||
|
||||
@@ -34,7 +34,6 @@ struct RTPMuxContext {
|
||||
uint32_t timestamp;
|
||||
uint32_t base_timestamp;
|
||||
uint32_t cur_timestamp;
|
||||
int max_packet_size;
|
||||
int max_payload_size;
|
||||
int num_frames;
|
||||
|
||||
|
||||
+3
-3
@@ -1924,7 +1924,7 @@ AVInputFormat ff_sdp_demuxer = {
|
||||
.read_header = sdp_read_header,
|
||||
.read_packet = ff_rtsp_fetch_packet,
|
||||
.read_close = sdp_read_close,
|
||||
.priv_class = &sdp_demuxer_class
|
||||
.priv_class = &sdp_demuxer_class,
|
||||
};
|
||||
#endif /* CONFIG_SDP_DEMUXER */
|
||||
|
||||
@@ -2042,7 +2042,7 @@ AVInputFormat ff_rtp_demuxer = {
|
||||
.read_header = rtp_read_header,
|
||||
.read_packet = ff_rtsp_fetch_packet,
|
||||
.read_close = sdp_read_close,
|
||||
.flags = AVFMT_NOFILE,
|
||||
.priv_class = &rtp_demuxer_class
|
||||
.flags = AVFMT_NOFILE,
|
||||
.priv_class = &rtp_demuxer_class,
|
||||
};
|
||||
#endif /* CONFIG_RTP_DEMUXER */
|
||||
|
||||
@@ -409,8 +409,8 @@ AVInputFormat ff_rtsp_demuxer = {
|
||||
.read_packet = rtsp_read_packet,
|
||||
.read_close = rtsp_read_close,
|
||||
.read_seek = rtsp_read_seek,
|
||||
.flags = AVFMT_NOFILE,
|
||||
.read_play = rtsp_read_play,
|
||||
.read_pause = rtsp_read_pause,
|
||||
.priv_class = &rtsp_demuxer_class,
|
||||
.flags = AVFMT_NOFILE,
|
||||
.read_play = rtsp_read_play,
|
||||
.read_pause = rtsp_read_pause,
|
||||
.priv_class = &rtsp_demuxer_class,
|
||||
};
|
||||
|
||||
@@ -242,6 +242,6 @@ AVOutputFormat ff_rtsp_muxer = {
|
||||
.write_header = rtsp_write_header,
|
||||
.write_packet = rtsp_write_packet,
|
||||
.write_trailer = rtsp_write_close,
|
||||
.flags = AVFMT_NOFILE | AVFMT_GLOBALHEADER,
|
||||
.priv_class = &rtsp_muxer_class,
|
||||
.flags = AVFMT_NOFILE | AVFMT_GLOBALHEADER,
|
||||
.priv_class = &rtsp_muxer_class,
|
||||
};
|
||||
|
||||
+1
-1
@@ -63,7 +63,7 @@ typedef struct URLProtocol {
|
||||
/**
|
||||
* Read data from the protocol.
|
||||
* If data is immediately available (even less than size), EOF is
|
||||
* reached or an error occurs (including EINTR), return immediately,
|
||||
* reached or an error occurs (including EINTR), return immediately.
|
||||
* Otherwise:
|
||||
* In non-blocking mode, return AVERROR(EAGAIN) immediately.
|
||||
* In blocking mode, wait for data/EOF/error with a short timeout (0.1s),
|
||||
|
||||
+2
-2
@@ -532,7 +532,7 @@ static int init_input(AVFormatContext *s, const char *filename, AVDictionary **o
|
||||
if (s->pb) {
|
||||
s->flags |= AVFMT_FLAG_CUSTOM_IO;
|
||||
if (!s->iformat)
|
||||
return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, 0);
|
||||
return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, s->probesize);
|
||||
else if (s->iformat->flags & AVFMT_NOFILE)
|
||||
av_log(s, AV_LOG_WARNING, "Custom AVIOContext makes no sense and "
|
||||
"will be ignored with AVFMT_NOFILE format.\n");
|
||||
@@ -548,7 +548,7 @@ static int init_input(AVFormatContext *s, const char *filename, AVDictionary **o
|
||||
return ret;
|
||||
if (s->iformat)
|
||||
return 0;
|
||||
return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, 0);
|
||||
return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, s->probesize);
|
||||
}
|
||||
|
||||
static AVPacket *add_to_pktbuf(AVPacketList **packet_buffer, AVPacket *pkt,
|
||||
|
||||
Reference in New Issue
Block a user