• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/minidlna/ffmpeg-2.3.4/libavformat/

Lines Matching refs:nut

33 #include "nut.h"
120 static int get_packetheader(NUTContext *nut, AVIOContext *bc,
220 static int decode_main_header(NUTContext *nut)
222 AVFormatContext *s = nut->avf;
229 end = get_packetheader(nut, bc, 1, MAIN_STARTCODE);
232 nut->version = ffio_read_varlen(bc);
233 if (nut->version < NUT_MIN_VERSION &&
234 nut->version > NUT_MAX_VERSION) {
236 nut->version);
239 if (nut->version > 3)
240 nut->minor_version = ffio_read_varlen(bc);
244 nut->max_distance = ffio_read_varlen(bc);
245 if (nut->max_distance > 65536) {
246 av_log(s, AV_LOG_DEBUG, "max_distance %d\n", nut->max_distance);
247 nut->max_distance = 65536;
250 GET_V(nut->time_base_count, tmp > 0 && tmp < INT_MAX / sizeof(AVRational));
251 nut->time_base = av_malloc(nut->time_base_count * sizeof(AVRational));
252 if (!nut->time_base)
255 for (i = 0; i < nut->time_base_count; i++) {
256 GET_V(nut->time_base[i].num, tmp > 0 && tmp < (1ULL << 31));
257 GET_V(nut->time_base[i].den, tmp > 0 && tmp < (1ULL << 31));
258 if (av_gcd(nut->time_base[i].num, nut->time_base[i].den) != 1) {
308 nut->frame_code[i].flags = FLAG_INVALID;
312 nut->frame_code[i].flags = tmp_flags;
313 nut->frame_code[i].pts_delta = tmp_pts;
314 nut->frame_code[i].stream_id = tmp_stream;
315 nut->frame_code[i].size_mul = tmp_mul;
316 nut->frame_code[i].size_lsb = tmp_size + j;
317 nut->frame_code[i].reserved_count = tmp_res;
318 nut->frame_code[i].header_idx = tmp_head_idx;
321 av_assert0(nut->frame_code['N'].flags == FLAG_INVALID);
325 GET_V(nut->header_count, tmp < 128U);
326 nut->header_count++;
327 for (i = 1; i < nut->header_count; i++) {
329 GET_V(nut->header_len[i], tmp > 0 && tmp < 256);
330 rem -= nut->header_len[i];
335 hdr = av_malloc(nut->header_len[i]);
338 avio_read(bc, hdr, nut->header_len[i]);
339 nut->header[i] = hdr;
341 av_assert0(nut->header_len[0] == 0);
345 if (nut->version > 3 && end > avio_tell(bc) + 4) {
346 nut->flags = ffio_read_varlen(bc);
354 nut->stream = av_calloc(stream_count, sizeof(StreamContext));
355 if (!nut->stream)
363 static int decode_stream_header(NUTContext *nut)
365 AVFormatContext *s = nut->avf;
372 end = get_packetheader(nut, bc, 1, STREAM_STARTCODE);
375 GET_V(stream_id, tmp < s->nb_streams && !nut->stream[tmp].time_base);
376 stc = &nut->stream[stream_id];
422 GET_V(stc->time_base_id, tmp < nut->time_base_count);
456 stc->time_base = &nut->time_base[stc->time_base_id];
477 static int decode_info_header(NUTContext *nut)
479 AVFormatContext *s = nut->avf;
491 end = get_packetheader(nut, bc, 1, INFO_STARTCODE);
501 int64_t start = chapter_start / nut->time_base_count;
503 nut->time_base[chapter_start %
504 nut->time_base_count],
567 static int decode_syncpoint(NUTContext *nut, int64_t *ts, int64_t *back_ptr)
569 AVFormatContext *s = nut->avf;
575 nut->last_syncpoint_pos = avio_tell(bc) - 8;
577 end = get_packetheader(nut, bc, 1, SYNCPOINT_STARTCODE);
581 *back_ptr = nut->last_syncpoint_pos - 16 * ffio_read_varlen(bc);
585 ff_nut_reset_ts(nut, nut->time_base[tmp % nut->time_base_count],
586 tmp / nut->time_base_count);
588 if (nut->flags & NUT_BROADCAST) {
591 av_rescale_q(tmp / nut->time_base_count,
592 nut->time_base[tmp % nut->time_base_count],
601 *ts = tmp / nut->time_base_count *
602 av_q2d(nut->time_base[tmp % nut->time_base_count]) * AV_TIME_BASE;
604 if ((ret = ff_nut_add_sp(nut, nut->last_syncpoint_pos, *back_ptr, *ts)) < 0)
611 static int64_t find_duration(NUTContext *nut, int64_t filesize)
613 AVFormatContext *s = nut->avf;
623 static int find_and_decode_index(NUTContext *nut)
625 AVFormatContext *s = nut->avf;
644 s->duration = find_duration(nut, filesize);
648 end = get_packetheader(nut, bc, 1, INDEX_STARTCODE);
652 s->duration = av_rescale_q(max_pts / nut->time_base_count,
653 nut->time_base[max_pts % nut->time_base_count],
735 NUTContext *nut = s->priv_data;
740 nut->avf = s;
750 } while (decode_main_header(nut) < 0);
760 if (decode_stream_header(nut) >= 0)
774 nut->next_startcode = startcode;
780 decode_info_header(nut);
787 find_and_decode_index(nut);
790 av_assert0(nut->next_startcode == SYNCPOINT_STARTCODE);
907 static int decode_frame_header(NUTContext *nut, int64_t *pts, int *stream_id,
910 AVFormatContext *s = nut->avf;
916 if (!(nut->flags & NUT_PIPE) &&
917 avio_tell(bc) > nut->last_syncpoint_pos + nut->max_distance) {
920 avio_tell(bc), nut->last_syncpoint_pos, nut->max_distance);
924 flags = nut->frame_code[frame_code].flags;
925 size_mul = nut->frame_code[frame_code].size_mul;
926 size = nut->frame_code[frame_code].size_lsb;
927 *stream_id = nut->frame_code[frame_code].stream_id;
928 pts_delta = nut->frame_code[frame_code].pts_delta;
929 reserved_count = nut->frame_code[frame_code].reserved_count;
930 *header_idx = nut->frame_code[frame_code].header_idx;
939 stc = &nut->stream[*stream_id];
960 if (*header_idx >= (unsigned)nut->header_count) {
966 size -= nut->header_len[*header_idx];
970 } else if (!(nut->flags & NUT_PIPE) &&
971 size > 2 * nut->max_distance ||
983 static int decode_frame(NUTContext *nut, AVPacket *pkt, int frame_code)
985 AVFormatContext *s = nut->avf;
993 size = decode_frame_header(nut, &pts, &stream_id, &header_idx, frame_code);
997 stc = &nut->stream[stream_id];
1013 if (av_new_packet(pkt, size + nut->header_len[header_idx]) < 0)
1015 memcpy(pkt->data, nut->header[header_idx], nut->header_len[header_idx]);
1028 ret = avio_read(bc, pkt->data + nut->header_len[header_idx], size);
1033 av_shrink_packet(pkt, nut->header_len[header_idx] + ret);
1045 NUTContext *nut = s->priv_data;
1052 uint64_t tmp = nut->next_startcode;
1053 nut->next_startcode = 0;
1071 skip = get_packetheader(nut, bc, 0, tmp);
1075 if (decode_info_header(nut) < 0)
1079 if (decode_syncpoint(nut, &ts, &back_ptr) < 0)
1083 ret = decode_frame(nut, pkt, frame_code);
1091 tmp = find_any_startcode(bc, nut->last_syncpoint_pos + 1);
1095 nut->next_startcode = tmp;
1103 NUTContext *nut = s->priv_data;
1116 } while (decode_syncpoint(nut, &pts, &back_ptr) < 0);
1118 av_assert0(nut->last_syncpoint_pos == *pos_arg);
1130 NUTContext *nut = s->priv_data;
1138 if (nut->flags & NUT_PIPE) {
1152 av_tree_find(nut->syncpoints, &dummy, (void *) ff_nut_sp_pts_cmp,
1165 av_tree_find(nut->syncpoints, &dummy, (void *) ff_nut_sp_pos_cmp,
1176 sp = av_tree_find(nut->syncpoints, &dummy, (void *) ff_nut_sp_pos_cmp,
1189 nut->stream[i].skip_until_key_frame = 1;
1196 NUTContext *nut = s->priv_data;
1199 av_freep(&nut->time_base);
1200 av_freep(&nut->stream);
1201 ff_nut_free_sp(nut);
1202 for (i = 1; i < nut->header_count; i++)
1203 av_freep(&nut->header[i]);
1209 .name = "nut",
1218 .extensions = "nut",