static int rtp_write_header(AVFormatContext *s1)
{
RTPMuxContext *s = s1->priv_data;
- int n;
+ int n, ret = AVERROR(EINVAL);
AVStream *st;
if (s1->nb_streams != 1) {
s->max_payload_size = n * TS_PACKET_SIZE;
s->buf_ptr = s->buf;
break;
+ case AV_CODEC_ID_H261:
+ if (s1->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) {
+ av_log(s, AV_LOG_ERROR,
+ "Packetizing H261 is experimental and produces incorrect "
+ "packetization for cases where GOBs don't fit into packets "
+ "(even though most receivers may handle it just fine). "
+ "Please set -f_strict experimental in order to enable it.\n");
+ ret = AVERROR_EXPERIMENTAL;
+ goto fail;
+ }
+ break;
case AV_CODEC_ID_H264:
/* check for H.264 MP4 syntax */
if (st->codec->extradata_size > 4 && st->codec->extradata[0] == 1) {
av_log(s1, AV_LOG_ERROR, "Only mono is supported\n");
goto fail;
}
+ s->num_frames = 0;
+ goto defaultcase;
case AV_CODEC_ID_AAC:
s->num_frames = 0;
+ goto defaultcase;
default:
defaultcase:
if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
fail:
av_freep(&s->buf);
- return AVERROR(EINVAL);
+ return ret;
}
/* send an rtcp sender report packet */
RTPMuxContext *s = s1->priv_data;
int len, out_len;
+ s->timestamp = s->cur_timestamp;
while (size >= TS_PACKET_SIZE) {
len = s->max_payload_size - (s->buf_ptr - s->buf);
if (len > size)
.write_packet = rtp_write_packet,
.write_trailer = rtp_write_trailer,
.priv_class = &rtp_muxer_class,
+ .flags = AVFMT_TS_NONSTRICT,
};