Lines Matching refs:bc
42 static int get_str(AVIOContext *bc, char *string, unsigned int maxlen)
44 unsigned int len = ffio_read_varlen(bc);
47 avio_read(bc, string, FFMIN(len, maxlen));
49 avio_r8(bc);
51 if (bc->eof_reached)
58 if (bc->eof_reached)
66 static int64_t get_s(AVIOContext *bc)
68 int64_t v = ffio_read_varlen(bc) + 1;
76 static uint64_t get_fourcc(AVIOContext *bc)
78 unsigned int len = ffio_read_varlen(bc);
81 return avio_rl16(bc);
83 return avio_rl32(bc);
90 static int get_packetheader(NUTContext *nut, AVIOContext *bc,
98 ffio_init_checksum(bc, ff_crc04C11DB7_update, startcode);
99 size = ffio_read_varlen(bc);
101 avio_rb32(bc);
102 if (ffio_get_checksum(bc) && size > 4096)
105 ffio_init_checksum(bc, calculate_checksum ? ff_crc04C11DB7_update : NULL, 0);
110 static uint64_t find_any_startcode(AVIOContext *bc, int64_t pos)
117 avio_seek(bc, pos, SEEK_SET);
118 while (!avio_feof(bc)) {
119 state = (state << 8) | avio_r8(bc);
141 static int64_t find_startcode(AVIOContext *bc, uint64_t code, int64_t pos)
144 uint64_t startcode = find_any_startcode(bc, pos);
146 return avio_tell(bc) - 8;
168 tmp = ffio_read_varlen(bc); \
177 static int skip_reserved(AVIOContext *bc, int64_t pos)
179 pos -= avio_tell(bc);
181 avio_seek(bc, pos, SEEK_CUR);
185 if (bc->eof_reached)
187 avio_r8(bc);
196 AVIOContext *bc = s->pb;
202 length = get_packetheader(nut, bc, 1, MAIN_STARTCODE);
205 end = length + avio_tell(bc);
207 nut->version = ffio_read_varlen(bc);
215 nut->minor_version = ffio_read_varlen(bc);
219 nut->max_distance = ffio_read_varlen(bc);
246 int tmp_flags = ffio_read_varlen(bc);
247 int tmp_fields = ffio_read_varlen(bc);
255 tmp_pts = get_s(bc);
257 tmp_mul = ffio_read_varlen(bc);
259 tmp_stream = ffio_read_varlen(bc);
261 tmp_size = ffio_read_varlen(bc);
265 tmp_res = ffio_read_varlen(bc);
269 count = ffio_read_varlen(bc);
273 get_s(bc);
275 tmp_head_idx = ffio_read_varlen(bc);
278 if (bc->eof_reached) {
283 ffio_read_varlen(bc);
320 if (end > avio_tell(bc) + 4) {
340 avio_read(bc, hdr, nut->header_len[i]);
347 if (nut->version > 3 && end > avio_tell(bc) + 4) {
348 nut->flags = ffio_read_varlen(bc);
351 if (skip_reserved(bc, end) || ffio_get_checksum(bc)) {
382 AVIOContext *bc = s->pb;
388 end = get_packetheader(nut, bc, 1, STREAM_STARTCODE);
389 end += avio_tell(bc);
397 class = ffio_read_varlen(bc);
398 tmp = get_fourcc(bc);
440 stc->max_pts_distance = ffio_read_varlen(bc);
443 ffio_read_varlen(bc); // stream flags
447 ret = ff_get_extradata(s, st->codecpar, bc,
456 st->sample_aspect_ratio.num = ffio_read_varlen(bc);
457 st->sample_aspect_ratio.den = ffio_read_varlen(bc);
464 ffio_read_varlen(bc); /* csp type */
467 ffio_read_varlen(bc); // samplerate_den
470 if (skip_reserved(bc, end) || ffio_get_checksum(bc)) {
506 AVIOContext *bc = s->pb;
519 end = get_packetheader(nut, bc, 1, INFO_STARTCODE);
520 end += avio_tell(bc);
523 chapter_id = get_s(bc);
524 chapter_start = ffio_read_varlen(bc);
525 chapter_len = ffio_read_varlen(bc);
526 count = ffio_read_varlen(bc);
551 ret = get_str(bc, name, sizeof(name));
556 value = get_s(bc);
561 ret = get_str(bc, str_value, sizeof(str_value));
563 ret = get_str(bc, type_str, sizeof(type_str));
569 ret = get_str(bc, str_value, sizeof(str_value));
572 value = get_s(bc);
575 value = ffio_read_varlen(bc);
578 get_s(bc);
618 if (skip_reserved(bc, end) || ffio_get_checksum(bc)) {
629 AVIOContext *bc = s->pb;
634 nut->last_syncpoint_pos = avio_tell(bc) - 8;
636 end = get_packetheader(nut, bc, 1, SYNCPOINT_STARTCODE);
637 end += avio_tell(bc);
639 tmp = ffio_read_varlen(bc);
640 *back_ptr = nut->last_syncpoint_pos - 16 * ffio_read_varlen(bc);
648 tmp = ffio_read_varlen(bc);
655 if (skip_reserved(bc, end) || ffio_get_checksum(bc)) {
685 AVIOContext *bc = s->pb;
688 int64_t filesize = avio_size(bc);
697 avio_seek(bc, filesize - 12, SEEK_SET);
698 avio_seek(bc, filesize - avio_rb64(bc), SEEK_SET);
699 if (avio_rb64(bc) != INDEX_STARTCODE) {
707 end = get_packetheader(nut, bc, 1, INDEX_STARTCODE);
708 end += avio_tell(bc);
710 max_pts = ffio_read_varlen(bc);
724 syncpoints[i] = ffio_read_varlen(bc);
734 uint64_t x = ffio_read_varlen(bc);
769 uint64_t B, A = ffio_read_varlen(bc);
771 A = ffio_read_varlen(bc);
772 B = ffio_read_varlen(bc);
784 if (skip_reserved(bc, end) || ffio_get_checksum(bc)) {
813 AVIOContext *bc = s->pb;
826 pos = find_startcode(bc, MAIN_STARTCODE, pos) + 1;
836 pos = find_startcode(bc, STREAM_STARTCODE, pos) + 1;
848 uint64_t startcode = find_any_startcode(bc, pos);
849 pos = avio_tell(bc);
866 if (bc->seekable & AVIO_SEEKABLE_NORMAL) {
867 int64_t orig_pos = avio_tell(bc);
869 avio_seek(bc, orig_pos, SEEK_SET);
878 static int read_sm_data(AVFormatContext *s, AVIOContext *bc, AVPacket *pkt, int is_meta, int64_t maxpos)
880 int count = ffio_read_varlen(bc);
893 if (avio_tell(bc) >= maxpos)
895 ret = get_str(bc, name, sizeof(name));
900 value = get_s(bc);
903 ret = get_str(bc, str_value, sizeof(str_value));
913 ret = get_str(bc, type_str, sizeof(type_str));
918 value_len = ffio_read_varlen(bc);
919 if (value_len < 0 || value_len >= maxpos - avio_tell(bc))
932 channel_layout = avio_rl64(bc);
936 avio_skip(bc, value_len);
941 avio_read(bc, dst, value_len);
943 value = get_s(bc);
945 value = ffio_read_varlen(bc);
947 get_s(bc);
999 if (avio_tell(bc) >= maxpos)
1009 AVIOContext *bc = s->pb;
1015 avio_tell(bc) > nut->last_syncpoint_pos + nut->max_distance) {
1018 avio_tell(bc), nut->last_syncpoint_pos, nut->max_distance);
1033 flags ^= ffio_read_varlen(bc);
1039 int64_t coded_pts = ffio_read_varlen(bc);
1048 size += size_mul * ffio_read_varlen(bc);
1050 get_s(bc);
1052 *header_idx = ffio_read_varlen(bc);
1054 reserved_count = ffio_read_varlen(bc);
1056 if (bc->eof_reached) {
1060 ffio_read_varlen(bc);
1072 avio_rb32(bc); // FIXME check this
1091 AVIOContext *bc = s->pb;
1113 avio_skip(bc, size);
1122 pkt->pos = avio_tell(bc); // FIXME
1125 if (read_sm_data(s, bc, pkt, 0, pkt->pos + size) < 0) {
1129 if (read_sm_data(s, bc, pkt, 1, pkt->pos + size) < 0) {
1133 sm_size = avio_tell(bc) - pkt->pos;
1138 ret = avio_read(bc, pkt->data + nut->header_len[header_idx], size);
1159 AVIOContext *bc = s->pb;
1164 int64_t pos = avio_tell(bc);
1171 frame_code = avio_r8(bc);
1172 if (avio_feof(bc))
1177 tmp = (tmp << 8) + avio_r8(bc);
1184 skip = get_packetheader(nut, bc, 0, tmp);
1185 avio_skip(bc, skip);
1194 frame_code = avio_r8(bc);
1204 tmp = find_any_startcode(bc, FFMAX(nut->last_syncpoint_pos, nut->last_resync_pos) + 1);
1205 nut->last_resync_pos = avio_tell(bc);
1218 AVIOContext *bc = s->pb;
1225 pos = find_startcode(bc, SYNCPOINT_STARTCODE, pos) + 1;