Go to the documentation of this file.
39 if (
s->buf_ptr !=
s->buf) {
42 if (
s->buffered_nals == 1) {
43 enum AVCodecID codec =
s1->streams[0]->codecpar->codec_id;
58 enum AVCodecID codec =
s1->streams[0]->codecpar->codec_id;
61 if (size <= s->max_payload_size) {
62 int buffered_size =
s->buf_ptr -
s->buf;
64 int skip_aggregate = 0;
74 if (buffered_size + 2 +
size >
s->max_payload_size) {
82 if (buffered_size + 2 + header_size + size <= s->max_payload_size &&
84 if (buffered_size == 0) {
88 *
s->buf_ptr++ = 48 << 1;
94 memcpy(
s->buf_ptr, buf,
size);
102 int flag_byte, header_size;
106 "NAL size %d > %d, try -slice-max-size %d\n",
size,
107 s->max_payload_size,
s->max_payload_size);
125 uint8_t nal_type = (buf[0] >> 1) & 0x3F;
155 s->buf[2] = nal_type;
167 while (
size + header_size >
s->max_payload_size) {
168 memcpy(&
s->buf[header_size], buf,
s->max_payload_size - header_size);
170 buf +=
s->max_payload_size - header_size;
171 size -=
s->max_payload_size - header_size;
172 s->buf[flag_byte] &= ~(1 << 7);
174 s->buf[flag_byte] |= 1 << 6;
175 memcpy(&
s->buf[header_size], buf,
size);
185 s->timestamp =
s->cur_timestamp;
187 if (
s->nal_length_size)
194 if (
s->nal_length_size) {
198 r +=
s->nal_length_size;
void ff_rtp_send_h264_hevc(AVFormatContext *s1, const uint8_t *buf1, int size)
void ff_rtp_send_data(AVFormatContext *s1, const uint8_t *buf1, int len, int m)
#define FF_RTP_FLAG_H264_MODE0
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
AVCodecID
Identify the syntax and semantics of the bitstream.
static void nal_send(AVFormatContext *s1, const uint8_t *buf, int size, int last)
static void flush_buffered(AVFormatContext *s1, int last)
const uint8_t * ff_avc_mp4_find_startcode(const uint8_t *start, const uint8_t *end, int nal_length_size)
const uint8_t * ff_avc_find_startcode(const uint8_t *p, const uint8_t *end)