Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "avformat.h"
00023 #include "rtpenc.h"
00024
00025 void ff_rtp_send_latm(AVFormatContext *s1, const uint8_t *buff, int size)
00026 {
00027
00028
00029
00030
00031 RTPMuxContext *s = s1->priv_data;
00032 int header_size;
00033 int offset = 0;
00034 int len = 0;
00035
00036
00037 if ((s1->streams[0]->codec->extradata_size) == 0) {
00038 size -= 7;
00039 buff += 7;
00040 }
00041
00042
00043 header_size = size/0xFF + 1;
00044 memset(s->buf, 0xFF, header_size - 1);
00045 s->buf[header_size - 1] = size % 0xFF;
00046
00047 s->timestamp = s->cur_timestamp;
00048
00049
00050 while (size > 0) {
00051 len = FFMIN(size, s->max_payload_size - (!offset ? header_size : 0));
00052 size -= len;
00053 if (!offset) {
00054 memcpy(s->buf + header_size, buff, len);
00055 ff_rtp_send_data(s1, s->buf, header_size + len, !size);
00056 } else {
00057 ff_rtp_send_data(s1, buff + offset, len, !size);
00058 }
00059 offset += len;
00060 }
00061 }