Lines Matching defs:caf

39 #include "caf.h"
64 CafContext *caf = s->priv_data;
78 caf->bytes_per_packet = avio_rb32(pb);
79 st->codecpar->block_align = caf->bytes_per_packet;
80 caf->frames_per_packet = avio_rb32(pb);
84 if (caf->bytes_per_packet < 0 || caf->frames_per_packet < 0 || st->codecpar->ch_layout.nb_channels < 0)
88 if (caf->frames_per_packet > 0 && caf->bytes_per_packet > 0) {
89 st->codecpar->bit_rate = (uint64_t)st->codecpar->sample_rate * (uint64_t)caf->bytes_per_packet * 8
90 / (uint64_t)caf->frames_per_packet;
237 CafContext *caf = s->priv_data;
252 if (caf->bytes_per_packet > 0 && caf->frames_per_packet > 0) {
253 st->duration = caf->frames_per_packet * num_packets;
254 pos = caf-> bytes_per_packet * num_packets;
263 pos += caf->bytes_per_packet ? caf->bytes_per_packet : ff_mp4_read_descr_len(pb);
264 st->duration += caf->frames_per_packet ? caf->frames_per_packet : ff_mp4_read_descr_len(pb);
274 caf->num_bytes = pos;
298 CafContext *caf = s->priv_data;
326 if (found_data && (caf->data_size < 0 || !(pb->seekable & AVIO_SEEKABLE_NORMAL)))
338 caf->data_start = avio_tell(pb);
339 caf->data_size = size < 0 ? -1 : size - 4;
340 if (caf->data_size > 0 && (pb->seekable & AVIO_SEEKABLE_NORMAL))
341 avio_skip(pb, caf->data_size);
389 if (caf->bytes_per_packet > 0 && caf->frames_per_packet > 0) {
390 if (caf->data_size > 0 && caf->data_size / caf->bytes_per_packet < INT64_MAX / caf->frames_per_packet)
391 st->nb_frames = (caf->data_size / caf->bytes_per_packet) * caf->frames_per_packet;
393 if (st->codecpar->sample_rate && caf->data_size / st->duration > INT64_MAX / st->codecpar->sample_rate / 8) {
395 st->codecpar->sample_rate, caf->data_size / st->duration);
399 (caf->data_size / st->duration);
410 if (caf->data_size >= 0)
411 avio_seek(pb, caf->data_start, SEEK_SET);
423 CafContext *caf = s->priv_data;
431 if (caf->data_size > 0) {
432 left = (caf->data_start + caf->data_size) - avio_tell(pb);
439 pkt_frames = caf->frames_per_packet;
440 pkt_size = caf->bytes_per_packet;
445 pkt_frames = pkt_size / caf->bytes_per_packet;
447 if (caf->packet_cnt < sti->nb_index_entries - 1) {
448 pkt_size = sti->index_entries[caf->packet_cnt + 1].pos - sti->index_entries[caf->packet_cnt].pos;
449 pkt_frames = sti->index_entries[caf->packet_cnt + 1].timestamp - sti->index_entries[caf->packet_cnt].timestamp;
450 } else if (caf->packet_cnt == sti->nb_index_entries - 1) {
451 pkt_size = caf->num_bytes - sti->index_entries[caf->packet_cnt].pos;
452 pkt_frames = st->duration - sti->index_entries[caf->packet_cnt].timestamp;
467 pkt->dts = pkt->pts = caf->frame_cnt;
469 caf->packet_cnt++;
470 caf->frame_cnt += pkt_frames;
480 CafContext *caf = s->priv_data;
485 if (caf->frames_per_packet > 0 && caf->bytes_per_packet > 0) {
487 pos = caf->bytes_per_packet * (timestamp / caf->frames_per_packet);
488 if (caf->data_size > 0)
489 pos = FFMIN(pos, caf->data_size);
490 packet_cnt = pos / caf->bytes_per_packet;
491 frame_cnt = caf->frames_per_packet * packet_cnt;
500 if (avio_seek(s->pb, pos + caf->data_start, SEEK_SET) < 0)
503 caf->packet_cnt = packet_cnt;
504 caf->frame_cnt = frame_cnt;
510 .name = "caf",