Lines Matching refs:bc
318 static void put_v(AVIOContext *bc, uint64_t val)
323 avio_w8(bc, 128 | (uint8_t)(val >> (7*i)));
325 avio_w8(bc, val & 127);
328 static void put_tt(NUTContext *nut, AVRational *time_base, AVIOContext *bc, uint64_t val)
332 put_v(bc, val);
337 static void put_str(AVIOContext *bc, const char *string)
341 put_v(bc, len);
342 avio_write(bc, string, len);
345 static void put_s(AVIOContext *bc, int64_t val)
347 put_v(bc, 2 * FFABS(val) - (val > 0));
350 static void put_packet(NUTContext *nut, AVIOContext *bc, AVIOContext *dyn_bc,
358 ffio_init_checksum(bc, ff_crc04C11DB7_update, 0);
359 avio_wb64(bc, startcode);
360 put_v(bc, forw_ptr);
362 avio_wl32(bc, ffio_get_checksum(bc));
364 ffio_init_checksum(bc, ff_crc04C11DB7_update, 0);
365 avio_write(bc, dyn_buf, dyn_size);
366 avio_wl32(bc, ffio_get_checksum(bc));
371 static void write_mainheader(NUTContext *nut, AVIOContext *bc)
377 put_v(bc, nut->version);
379 put_v(bc, nut->minor_version = 1);
380 put_v(bc, nut->avf->nb_streams);
381 put_v(bc, nut->max_distance);
382 put_v(bc, nut->time_base_count);
385 put_v(bc, nut->time_base[i].num);
386 put_v(bc, nut->time_base[i].den);
430 put_v(bc, tmp_flags);
431 put_v(bc, tmp_fields);
432 if (tmp_fields > 0) put_s(bc, tmp_pts);
433 if (tmp_fields > 1) put_v(bc, tmp_mul);
434 if (tmp_fields > 2) put_v(bc, tmp_stream);
435 if (tmp_fields > 3) put_v(bc, tmp_size);
436 if (tmp_fields > 4) put_v(bc, 0 /*tmp_res*/);
437 if (tmp_fields > 5) put_v(bc, j);
438 if (tmp_fields > 6) put_v(bc, tmp_match);
439 if (tmp_fields > 7) put_v(bc, tmp_head_idx);
441 put_v(bc, nut->header_count - 1);
443 put_v(bc, nut->header_len[i]);
444 avio_write(bc, nut->header[i], nut->header_len[i]);
448 put_v(bc, nut->flags);
451 static int write_streamheader(AVFormatContext *avctx, AVIOContext *bc,
457 put_v(bc, i);
459 case AVMEDIA_TYPE_VIDEO: put_v(bc, 0); break;
460 case AVMEDIA_TYPE_AUDIO: put_v(bc, 1); break;
461 case AVMEDIA_TYPE_SUBTITLE: put_v(bc, 2); break;
462 default: put_v(bc, 3); break;
464 put_v(bc, 4);
467 avio_wl32(bc, par->codec_tag);
473 put_v(bc, nut->stream[i].time_base - nut->time_base);
474 put_v(bc, nut->stream[i].msb_pts_shift);
475 put_v(bc, nut->stream[i].max_pts_distance);
476 put_v(bc, par->video_delay);
477 avio_w8(bc, 0); /* flags: 0x1 - fixed_fps, 0x2 - index_present */
479 put_v(bc, par->extradata_size);
480 avio_write(bc, par->extradata, par->extradata_size);
484 put_v(bc, par->sample_rate);
485 put_v(bc, 1);
486 put_v(bc, par->ch_layout.nb_channels);
489 put_v(bc, par->width);
490 put_v(bc, par->height);
494 put_v(bc, 0);
495 put_v(bc, 0);
497 put_v(bc, st->sample_aspect_ratio.num);
498 put_v(bc, st->sample_aspect_ratio.den);
500 put_v(bc, 0); /* csp type -- unknown */
508 static int add_info(AVIOContext *bc, const char *type, const char *value)
510 put_str(bc, type);
511 put_s(bc, -1);
512 put_str(bc, value);
516 static int write_globalinfo(NUTContext *nut, AVIOContext *bc)
531 put_v(bc, 0); //stream_if_plus1
532 put_v(bc, 0); //chapter_id
533 put_v(bc, 0); //timestamp_start
534 put_v(bc, 0); //length
536 put_v(bc, count);
539 avio_write(bc, dyn_buf, dyn_size);
544 static int write_streaminfo(NUTContext *nut, AVIOContext *bc, int stream_id) {
572 put_v(bc, stream_id + 1); //stream_id_plus1
573 put_v(bc, 0); //chapter_id
574 put_v(bc, 0); //timestamp_start
575 put_v(bc, 0); //length
577 put_v(bc, count);
579 avio_write(bc, dyn_buf, dyn_size);
586 static int write_chapter(NUTContext *nut, AVIOContext *bc, int id)
598 put_v(bc, 0); // stream_id_plus1
599 put_s(bc, id + 1); // chapter_id
600 put_tt(nut, nut->chapter[id].time_base, bc, ch->start); // chapter_start
601 put_v(bc, ch->end - ch->start); // chapter_len
606 put_v(bc, count);
609 avio_write(bc, dyn_buf, dyn_size);
614 static int write_index(NUTContext *nut, AVIOContext *bc) {
618 int64_t startpos = avio_tell(bc);
621 put_tt(nut, nut->max_pts_tb, bc, nut->max_pts);
623 put_v(bc, nut->sp_count);
627 put_v(bc, (next_node[1]->pos >> 4) - (dummy.pos>>4));
648 put_v(bc, 1 + 2 * flag + 4 * n);
653 put_v(bc, nus->keyframe_pts[k] - last_pts);
659 payload_size = avio_tell(bc) - startpos + 8 + 4;
661 avio_wb64(bc, 8 + payload_size + av_log2(payload_size) / 7 + 1 + 4*(payload_size > 4096));
666 static int write_headers(AVFormatContext *avctx, AVIOContext *bc)
678 put_packet(nut, bc, dyn_bc, MAIN_STARTCODE);
685 put_packet(nut, bc, dyn_bc, STREAM_STARTCODE);
689 put_packet(nut, bc, dyn_bc, INFO_STARTCODE);
694 put_packet(nut, bc, dyn_bc, INFO_STARTCODE);
705 put_packet(nut, bc, dyn_bc, INFO_STARTCODE);
721 AVIOContext *bc = s->pb;
792 avio_write(bc, ID_STRING, strlen(ID_STRING));
793 avio_w8(bc, 0);
795 if ((ret = write_headers(s, bc)) < 0)
852 static int write_sm_data(AVFormatContext *s, AVIOContext *bc, AVPacket *pkt, int is_meta)
969 put_v(bc, sm_data_count);
971 avio_write(bc, dyn_buf, dyn_size);
981 AVIOContext *bc = s->pb, *dyn_bc, *sm_bc = NULL;
1015 if (1LL << (20 + 3 * nut->header_count) <= avio_tell(bc))
1016 write_headers(s, bc);
1021 if (data_size + 30 /*FIXME check*/ + avio_tell(bc) >= nut->last_syncpoint_pos + nut->max_distance)
1051 nut->last_syncpoint_pos = avio_tell(bc);
1062 put_packet(nut, bc, dyn_bc, SYNCPOINT_STARTCODE);
1154 ffio_init_checksum(bc, ff_crc04C11DB7_update, 0);
1155 avio_w8(bc, frame_code);
1157 put_v(bc, (flags ^ needed_flags) & ~(FLAG_CODED));
1160 if (flags & FLAG_STREAM_ID) put_v(bc, pkt->stream_index);
1161 if (flags & FLAG_CODED_PTS) put_v(bc, coded_pts);
1162 if (flags & FLAG_SIZE_MSB ) put_v(bc, data_size / fc->size_mul);
1163 if (flags & FLAG_HEADER_IDX) put_v(bc, header_idx = best_header_idx);
1165 if (flags & FLAG_CHECKSUM) avio_wl32(bc, ffio_get_checksum(bc));
1166 else ffio_get_checksum(bc);
1169 avio_write(bc, sm_buf, sm_size);
1171 avio_write(bc, pkt->data + nut->header_len[header_idx], pkt->size - nut->header_len[header_idx]);
1203 AVIOContext *bc = s->pb, *dyn_bc;
1207 write_headers(s, bc);
1216 put_packet(nut, bc, dyn_bc, INDEX_STARTCODE);