47 #define RTCP_SR_SIZE 28
161 if (frame_size == 0) {
183 switch(st->codec->codec_id) {
186 s->buf_ptr =
s->buf + 4;
200 if (st->codec->extradata_size > 4 && st->codec->extradata[0] == 1) {
201 s->nal_length_size = (st->codec->extradata[4] & 0x03) + 1;
209 if (st->codec->extradata_size > 21 && st->codec->extradata[0] == 1) {
210 s->nal_length_size = (st->codec->extradata[21] & 0x03) + 1;
215 if (!
s->max_frames_per_packet)
s->max_frames_per_packet = 15;
216 s->max_frames_per_packet = av_clip(
s->max_frames_per_packet, 1, 15);
217 s->max_payload_size -= 6;
226 if (st->codec->channels > 2) {
236 if (st->codec->block_align != 38 && st->codec->block_align != 50) {
240 if (!
s->max_frames_per_packet)
241 s->max_frames_per_packet = 1;
242 s->max_frames_per_packet =
FFMIN(
s->max_frames_per_packet,
243 s->max_payload_size / st->codec->block_align);
247 if (!
s->max_frames_per_packet)
248 s->max_frames_per_packet = 12;
254 if (1 +
s->max_frames_per_packet +
n >
s->max_payload_size) {
258 if (st->codec->channels != 1) {
290 s1->streams[0]->time_base) +
s->base_timestamp;
311 for (len = (7 + len) % 4; len % 4; len++)
331 av_dlog(s1,
"rtp_send_data size=%d\n", len);
343 s->
seq = (s->
seq + 1) & 0xffff;
351 const uint8_t *buf1,
int size,
int sample_size_bits)
354 int len, max_packet_size,
n;
356 int aligned_samples_size = sample_size_bits/
av_gcd(sample_size_bits, 8);
358 max_packet_size = (s->
max_payload_size / aligned_samples_size) * aligned_samples_size;
360 if ((sample_size_bits % 8) == 0 && ((8 *
size) % sample_size_bits) != 0)
365 len =
FFMIN(max_packet_size, size);
389 if ((len + size) > max_packet_size) {
400 if (size > max_packet_size) {
404 len = max_packet_size - 4;
410 s->
buf[2] = count >> 8;
412 memcpy(s->
buf + 4, buf1, len);
426 memcpy(s->
buf_ptr, buf1, size);
435 int len, max_packet_size;
440 len = max_packet_size;
459 while (size >= TS_PACKET_SIZE) {
491 memcpy(s->
buf_ptr, buf, n * frame_size);
575 int mb_info_size = 0;
609 "Packet size %d too large for max RTP payload size %d\n",
644 .priv_class = &rtp_muxer_class,