Lines Matching refs:data
106 static void close_context(PayloadContext *data)
108 av_freep(&data->au_headers);
109 av_freep(&data->mode);
123 static int rtp_parse_mp4_au(PayloadContext *data, const uint8_t *buf, int len)
139 data->au_headers_length_bytes = (au_headers_length + 7) / 8;
145 if (len < data->au_headers_length_bytes)
148 ret = init_get_bits(&getbitcontext, buf, data->au_headers_length_bytes * 8);
153 au_header_size = data->sizelength + data->indexlength;
157 data->nb_au_headers = au_headers_length / au_header_size;
158 if (!data->au_headers || data->au_headers_allocated < data->nb_au_headers) {
159 av_free(data->au_headers);
160 data->au_headers = av_malloc(sizeof(struct AUHeaders) * data->nb_au_headers);
161 if (!data->au_headers)
163 data->au_headers_allocated = data->nb_au_headers;
166 for (i = 0; i < data->nb_au_headers; ++i) {
167 data->au_headers[i].size = get_bits_long(&getbitcontext, data->sizelength);
168 data->au_headers[i].index = get_bits_long(&getbitcontext, data->indexlength);
176 static int aac_parse_packet(AVFormatContext *ctx, PayloadContext *data,
185 if (data->cur_au_index > data->nb_au_headers) {
189 if (data->buf_size - data->buf_pos < data->au_headers[data->cur_au_index].size) {
193 if ((ret = av_new_packet(pkt, data->au_headers[data->cur_au_index].size)) < 0) {
197 memcpy(pkt->data, &data->buf[data->buf_pos], data->au_headers[data->cur_au_index].size);
198 data->buf_pos += data->au_headers[data->cur_au_index].size;
200 data->cur_au_index++;
202 if (data->cur_au_index == data->nb_au_headers) {
203 data->buf_pos = 0;
210 if (rtp_parse_mp4_au(data, buf, len)) {
215 buf += data->au_headers_length_bytes + 2;
216 len -= data->au_headers_length_bytes + 2;
217 if (data->nb_au_headers == 1 && len < data->au_headers[0].size) {
220 if (!data->buf_pos) {
221 if (data->au_headers[0].size > MAX_AAC_HBR_FRAME_SIZE) {
226 data->buf_size = data->au_headers[0].size;
227 data->timestamp = *timestamp;
230 if (data->timestamp != *timestamp ||
231 data->au_headers[0].size != data->buf_size ||
232 data->buf_pos + len > MAX_AAC_HBR_FRAME_SIZE) {
233 data->buf_pos = 0;
234 data->buf_size = 0;
239 memcpy(&data->buf[data->buf_pos], buf, len);
240 data->buf_pos += len;
245 if (data->buf_pos != data->buf_size) {
246 data->buf_pos = 0;
251 data->buf_pos = 0;
252 ret = av_new_packet(pkt, data->buf_size);
259 memcpy(pkt->data, data->buf, data->buf_size);
264 if (len < data->au_headers[0].size) {
268 if ((ret = av_new_packet(pkt, data->au_headers[0].size)) < 0) {
272 memcpy(pkt->data, buf, data->au_headers[0].size);
273 len -= data->au_headers[0].size;
274 buf += data->au_headers[0].size;
277 if (len > 0 && data->nb_au_headers > 1) {
278 data->buf_size = FFMIN(len, sizeof(data->buf));
279 memcpy(data->buf, buf, data->buf_size);
280 data->cur_au_index = 1;
281 data->buf_pos = 0;
289 AVStream *stream, PayloadContext *data,
323 *(int *)((char *)data+
329 *(char **)((char *)data+
339 PayloadContext *data, const char *line)
347 return ff_parse_fmtp(s, s->streams[st_index], data, p, parse_fmtp);