Lines Matching refs:s1

95 static int rtp_write_header(AVFormatContext *s1)
97 RTPMuxContext *s = s1->priv_data;
101 if (s1->nb_streams != 1) {
102 av_log(s1, AV_LOG_ERROR, "Only one stream supported in the RTP muxer\n");
105 st = s1->streams[0];
107 av_log(s1, AV_LOG_ERROR, "Unsupported codec %s\n", avcodec_get_name(st->codecpar->codec_id));
115 st->id = ff_rtp_get_payload_type(s1, st->codecpar, -1);
130 if (s1->start_time_realtime != 0 && s1->start_time_realtime != AV_NOPTS_VALUE)
132 s->first_rtcp_ntp_time = (s1->start_time_realtime / 1000) * 1000 +
138 if (s1->flags & AVFMT_FLAG_BITEXACT) {
145 if (s1->packet_size) {
146 if (s1->pb->max_packet_size)
147 s1->packet_size = FFMIN(s1->packet_size,
148 s1->pb->max_packet_size);
150 s1->packet_size = s1->pb->max_packet_size;
151 if (s1->packet_size <= 12) {
152 av_log(s1, AV_LOG_ERROR, "Max packet size %u too low\n", s1->packet_size);
155 s->buf = av_malloc(s1->packet_size);
159 s->max_payload_size = s1->packet_size - 12;
183 if (s1->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) {
194 if (s1->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) {
220 if (s1->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) {
240 av_log(s1, AV_LOG_ERROR, "Multistream opus not supported in RTP\n");
250 av_log(s1, AV_LOG_ERROR, "Incorrect iLBC block size specified\n");
264 av_log(s1, AV_LOG_ERROR, "RTP max payload size too small for AMR\n");
268 av_log(s1, AV_LOG_ERROR, "Only mono is supported\n");
287 static void rtcp_send_sr(AVFormatContext *s1, int64_t ntp_time, int bye)
289 RTPMuxContext *s = s1->priv_data;
292 av_log(s1, AV_LOG_TRACE, "RTCP: %02x %"PRIx64" %"PRIx32"\n", s->payload_type, ntp_time, s->timestamp);
296 s1->streams[0]->time_base) + s->base_timestamp;
297 avio_w8(s1->pb, RTP_VERSION << 6);
298 avio_w8(s1->pb, RTCP_SR);
299 avio_wb16(s1->pb, 6); /* length in words - 1 */
300 avio_wb32(s1->pb, s->ssrc);
301 avio_wb32(s1->pb, ntp_time / 1000000);
302 avio_wb32(s1->pb, ((ntp_time % 1000000) << 32) / 1000000);
303 avio_wb32(s1->pb, rtp_ts);
304 avio_wb32(s1->pb, s->packet_count);
305 avio_wb32(s1->pb, s->octet_count);
309 avio_w8(s1->pb, (RTP_VERSION << 6) + 1);
310 avio_w8(s1->pb, RTCP_SDES);
311 avio_wb16(s1->pb, (7 + len + 3) / 4); /* length in words - 1 */
313 avio_wb32(s1->pb, s->ssrc);
314 avio_w8(s1->pb, 0x01); /* CNAME */
315 avio_w8(s1->pb, len);
316 avio_write(s1->pb, s->cname, len);
317 avio_w8(s1->pb, 0); /* END */
319 avio_w8(s1->pb, 0);
323 avio_w8(s1->pb, (RTP_VERSION << 6) | 1);
324 avio_w8(s1->pb, RTCP_BYE);
325 avio_wb16(s1->pb, 1); /* length in words - 1 */
326 avio_wb32(s1->pb, s->ssrc);
329 avio_flush(s1->pb);
334 void ff_rtp_send_data(AVFormatContext *s1, const uint8_t *buf1, int len, int m)
336 RTPMuxContext *s = s1->priv_data;
338 av_log(s1, AV_LOG_TRACE, "rtp_send_data size=%d\n", len);
341 avio_w8(s1->pb, RTP_VERSION << 6);
342 avio_w8(s1->pb, (s->payload_type & 0x7f) | ((m & 0x01) << 7));
343 avio_wb16(s1->pb, s->seq);
344 avio_wb32(s1->pb, s->timestamp);
345 avio_wb32(s1->pb, s->ssrc);
347 avio_write(s1->pb, buf1, len);
348 avio_flush(s1->pb);
357 static int rtp_send_samples(AVFormatContext *s1,
360 RTPMuxContext *s = s1->priv_data;
380 ff_rtp_send_data(s1, s->buf, s->buf_ptr - s->buf, 0);
386 static void rtp_send_mpegaudio(AVFormatContext *s1,
389 RTPMuxContext *s = s1->priv_data;
398 ff_rtp_send_data(s1, s->buf, s->buf_ptr - s->buf, 0);
420 ff_rtp_send_data(s1, s->buf, len + 4, 0);
438 static void rtp_send_raw(AVFormatContext *s1,
441 RTPMuxContext *s = s1->priv_data;
452 ff_rtp_send_data(s1, buf1, len, (len == size));
460 static void rtp_send_mpegts_raw(AVFormatContext *s1,
463 RTPMuxContext *s = s1->priv_data;
478 ff_rtp_send_data(s1, s->buf, out_len, 0);
484 static int rtp_send_ilbc(AVFormatContext *s1, const uint8_t *buf, int size)
486 RTPMuxContext *s = s1->priv_data;
487 AVStream *st = s1->streams[0];
495 s1->max_delay, AV_TIME_BASE_Q) >= 0) {
496 ff_rtp_send_data(s1, s->buf, s->buf_ptr - s->buf, 1);
512 ff_rtp_send_data(s1, s->buf, s->buf_ptr - s->buf, 1);
519 static int rtp_write_packet(AVFormatContext *s1, AVPacket *pkt)
521 RTPMuxContext *s = s1->priv_data;
522 AVStream *st = s1->streams[0];
526 av_log(s1, AV_LOG_TRACE, "%d: write len=%d\n", pkt->stream_index, size);
533 rtcp_send_sr(s1, ff_ntp_time(), 0);
544 return rtp_send_samples(s1, pkt->data, size, 8 * st->codecpar->ch_layout.nb_channels);
549 return rtp_send_samples(s1, pkt->data, size, 16 * st->codecpar->ch_layout.nb_channels);
551 return rtp_send_samples(s1, pkt->data, size, 24 * st->codecpar->ch_layout.nb_channels);
557 return rtp_send_samples(s1, pkt->data, size, 8 * st->codecpar->ch_layout.nb_channels);
560 return rtp_send_samples(s1, pkt->data, size,
564 rtp_send_mpegaudio(s1, pkt->data, size);
568 ff_rtp_send_mpegvideo(s1, pkt->data, size);
572 ff_rtp_send_latm(s1, pkt->data, size);
574 ff_rtp_send_aac(s1, pkt->data, size);
578 ff_rtp_send_amr(s1, pkt->data, size);
581 rtp_send_mpegts_raw(s1, pkt->data, size);
584 ff_rtp_send_vc2hq(s1, pkt->data, size, st->codecpar->field_order != AV_FIELD_PROGRESSIVE ? 1 : 0);
587 ff_rtp_send_h264_hevc(s1, pkt->data, size);
590 ff_rtp_send_h261(s1, pkt->data, size);
598 ff_rtp_send_h263_rfc2190(s1, pkt->data, size, mb_info, mb_info_size);
603 ff_rtp_send_h263(s1, pkt->data, size);
606 ff_rtp_send_h264_hevc(s1, pkt->data, size);
610 ff_rtp_send_xiph(s1, pkt->data, size);
613 ff_rtp_send_vp8(s1, pkt->data, size);
616 ff_rtp_send_vp9(s1, pkt->data, size);
619 rtp_send_ilbc(s1, pkt->data, size);
622 ff_rtp_send_jpeg(s1, pkt->data, size);
628 ff_rtp_send_raw_rfc4175(s1, pkt->data, size, interlaced, 0);
630 ff_rtp_send_raw_rfc4175(s1, pkt->data, size, interlaced, 1);
635 av_log(s1, AV_LOG_ERROR,
643 rtp_send_raw(s1, pkt->data, size);
649 static int rtp_write_trailer(AVFormatContext *s1)
651 RTPMuxContext *s = s1->priv_data;
655 if (s1->pb && (s->flags & FF_RTP_FLAG_SEND_BYE))
656 rtcp_send_sr(s1, ff_ntp_time(), 1);