• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/ap/gpl/minidlna/ffmpeg-0.5.1/libavformat/

Lines Matching defs:mxf

42 #include "mxf.h"
437 MXFContext *mxf = s->priv_data;
442 klv_encode_ber_length(pb, 130 + 16 * mxf->essence_container_count);
451 put_be64(pb, mxf->timestamp);
471 mxf_write_local_tag(pb, 8 + 16 * mxf->essence_container_count, 0x3B0A);
492 MXFContext *mxf = s->priv_data;
526 put_be64(pb, mxf->timestamp);
556 MXFContext *mxf = s->priv_data;
581 put_be32(pb, mxf->time_base.den);
582 put_be32(pb, mxf->time_base.num);
597 MXFContext *mxf = s->priv_data;
602 if (st == mxf->timecode_track)
611 put_be64(pb, mxf->duration);
616 MXFContext *mxf = s->priv_data;
633 if (st == mxf->timecode_track)
644 MXFContext *mxf = s->priv_data;
659 put_be64(pb, mxf->timecode_start);
663 put_be16(pb, mxf->timecode_base);
667 put_byte(pb, mxf->timecode_drop_frame);
708 MXFContext *mxf = s->priv_data;
723 put_be32(pb, mxf->time_base.den);
724 put_be32(pb, mxf->time_base.num);
728 if (mxf->essence_container_count > 1)
745 MXFContext *mxf = s->priv_data;
759 put_be32(pb, mxf->time_base.den);
760 put_be32(pb, mxf->time_base.num);
913 MXFContext *mxf = s->priv_data;
940 put_be64(pb, mxf->timestamp);
944 put_be64(pb, mxf->timestamp);
965 mxf_write_track(s, mxf->timecode_track, type);
966 mxf_write_sequence(s, mxf->timecode_track, type);
967 mxf_write_timecode_component(s, mxf->timecode_track, type);
1026 MXFContext *mxf = s->priv_data;
1030 int key_index = mxf->last_key_index;
1032 av_log(s, AV_LOG_DEBUG, "edit units count %d\n", mxf->edit_units_count);
1034 if (!mxf->edit_units_count && !mxf->edit_unit_byte_count)
1039 if (mxf->edit_unit_byte_count) {
1043 12+mxf->edit_units_count*(11+mxf->slice_count*4));
1052 put_be32(pb, mxf->time_base.den);
1053 put_be32(pb, mxf->time_base.num);
1057 put_be64(pb, mxf->last_indexed_edit_unit);
1061 put_be64(pb, mxf->edit_units_count);
1065 put_be32(pb, mxf->edit_unit_byte_count);
1075 if (!mxf->edit_unit_byte_count) {
1078 put_byte(pb, mxf->slice_count);
1105 mxf_write_local_tag(pb, 8 + mxf->edit_units_count*(11+mxf->slice_count*4), 0x3F0A);
1106 put_be32(pb, mxf->edit_units_count); // num of entries
1107 put_be32(pb, 11+mxf->slice_count*4); // size of one entry
1108 for (i = 0; i < mxf->edit_units_count; i++) {
1111 for (j = i+1; j < mxf->edit_units_count; j++) {
1113 if (mxf->index_entries[j].flags & 0x10) { // backward prediction
1115 if (!(mxf->index_entries[i+1].flags & 0x10)) {
1116 if ((mxf->index_entries[i].flags & 0x11) == 0) // i frame
1127 if (!(mxf->index_entries[i].flags & 0x33)) { // I frame
1128 mxf->last_key_index = key_index;
1131 if (mxf->index_entries[i].flags & 0x10 && // backward prediction
1132 !(mxf->index_entries[key_index].flags & 0x80)) { // open gop
1133 put_byte(pb, mxf->last_key_index - i);
1136 if ((mxf->index_entries[i].flags & 0x20) == 0x20) // only forward
1137 mxf->last_key_index = key_index;
1139 put_byte(pb, mxf->index_entries[i].flags);
1141 put_be64(pb, mxf->index_entries[i].offset);
1143 put_be32(pb, mxf->index_entries[i].slice_offset);
1146 mxf->last_key_index = key_index - mxf->edit_units_count;
1147 mxf->last_indexed_edit_unit += mxf->edit_units_count;
1148 mxf->edit_units_count = 0;
1169 MXFContext *mxf = s->priv_data;
1175 if (!mxf->edit_unit_byte_count && mxf->edit_units_count)
1177 12+mxf->edit_units_count*(11+mxf->slice_count*4);
1178 else if (mxf->edit_unit_byte_count && indexsid)
1188 mxf->body_partition_offset =
1189 av_realloc(mxf->body_partition_offset,
1190 (mxf->body_partitions_count+1)*
1191 sizeof(*mxf->body_partition_offset));
1192 mxf->body_partition_offset[mxf->body_partitions_count++] = partition_offset;
1197 klv_encode_ber_length(pb, 88 + 16 * mxf->essence_container_count);
1206 if (!memcmp(key, body_partition_key, 16) && mxf->body_partitions_count > 1)
1207 put_be64(pb, mxf->body_partition_offset[mxf->body_partitions_count-2]); // PreviousPartition
1208 else if (!memcmp(key, footer_partition_key, 16) && mxf->body_partitions_count)
1209 put_be64(pb, mxf->body_partition_offset[mxf->body_partitions_count-1]); // PreviousPartition
1213 put_be64(pb, mxf->footer_partition_offset); // footerPartition
1224 if (bodysid && mxf->edit_units_count && mxf->body_partitions_count) {
1225 put_be64(pb, mxf->body_offset);
1296 MXFContext *mxf = s->priv_data;
1316 if (!mxf->header_written) {
1321 mxf->timecode_drop_frame = !!(pkt->data[i+1] & 0x80);
1322 mxf->timecode_start = (hours*3600 + minutes*60 + seconds) *
1323 mxf->timecode_base + frames;
1324 if (mxf->timecode_drop_frame) {
1326 mxf->timecode_start -= 2 * (tminutes - tminutes / 10);
1328 av_log(s, AV_LOG_DEBUG, "frame %d %d:%d:%d%c%d\n", mxf->timecode_start,
1329 hours, minutes, seconds, mxf->timecode_drop_frame ? ';':':', frames);
1376 MXFContext *mxf = s->priv_data;
1395 mxf->time_base = (AVRational){ 1, 25 };
1396 mxf->timecode_base = 25;
1399 mxf->time_base = (AVRational){ 1001, 30000 };
1400 mxf->timecode_base = 30;
1405 av_set_pts_info(st, 64, mxf->time_base.num, mxf->time_base.den);
1408 if (mxf->time_base.den == 25) sc->index = 3;
1411 if (mxf->time_base.den == 25) sc->index = 7;
1414 if (mxf->time_base.den == 25) sc->index = 11;
1421 mxf->edit_unit_byte_count = KAG_SIZE; // system element
1422 mxf->edit_unit_byte_count += 16 + 4 + (uint64_t)st->codec->bit_rate *
1423 mxf->time_base.num / (8*mxf->time_base.den);
1424 mxf->edit_unit_byte_count += klv_fill_size(mxf->edit_unit_byte_count);
1425 mxf->edit_unit_byte_count += 16 + 4 + 4 + samples_per_frame[0]*8*4;
1426 mxf->edit_unit_byte_count += klv_fill_size(mxf->edit_unit_byte_count);
1445 mxf->slice_count = 1;
1464 mxf->essence_container_count++;
1469 mxf->essence_container_count = 1;
1479 mxf->timestamp = mxf_parse_timestamp(s->timestamp);
1480 mxf->duration = -1;
1482 mxf->timecode_track = av_mallocz(sizeof(*mxf->timecode_track));
1483 if (!mxf->timecode_track)
1485 mxf->timecode_track->priv_data = av_mallocz(sizeof(MXFStreamContext));
1486 if (!mxf->timecode_track->priv_data)
1488 mxf->timecode_track->index = -1;
1493 if (ff_audio_interleave_init(s, samples_per_frame, mxf->time_base) < 0)
1522 MXFContext *mxf = s->priv_data;
1527 frame = mxf->timecode_start + mxf->last_indexed_edit_unit + mxf->edit_units_count;
1537 if (mxf->essence_container_count > 1)
1548 time_code = ff_framenum_to_12m_time_code(frame, mxf->timecode_drop_frame, mxf->timecode_base);
1563 MXFContext *mxf = s->priv_data;
1565 int packet_size = (uint64_t)st->codec->bit_rate*mxf->time_base.num /
1566 (8*mxf->time_base.den); // frame size
1593 MXFContext *mxf = s->priv_data;
1602 put_byte(pb, (frame_size == 1920 ? 0 : (mxf->edit_units_count-1) % 5 + 1));
1625 MXFContext *mxf = s->priv_data;
1631 if (!mxf->edit_unit_byte_count && !(mxf->edit_units_count % EDIT_UNITS_PER_BODY)) {
1632 mxf->index_entries = av_realloc(mxf->index_entries,
1633 (mxf->edit_units_count + EDIT_UNITS_PER_BODY)*sizeof(*mxf->index_entries));
1634 if (!mxf->index_entries) {
1647 if (!mxf->header_written) {
1648 if (mxf->edit_unit_byte_count) {
1655 mxf->header_written = 1;
1659 if (!mxf->edit_unit_byte_count &&
1660 (!mxf->edit_units_count || mxf->edit_units_count > EDIT_UNITS_PER_BODY) &&
1672 if (!mxf->edit_unit_byte_count) {
1673 mxf->index_entries[mxf->edit_units_count].offset = mxf->body_offset;
1674 mxf->index_entries[mxf->edit_units_count].flags = flags;
1675 mxf->body_offset += KAG_SIZE; // size of system element
1677 mxf->edit_units_count++;
1678 } else if (!mxf->edit_unit_byte_count && st->index == 1) {
1679 mxf->index_entries[mxf->edit_units_count-1].slice_offset =
1680 mxf->body_offset - mxf->index_entries[mxf->edit_units_count-1].offset;
1693 mxf->body_offset += 16+4+pkt->size + klv_fill_size(16+4+pkt->size);
1703 MXFContext *mxf = s->priv_data;
1709 klv_encode_ber_length(pb, 28 + 12*mxf->body_partitions_count);
1711 if (mxf->edit_unit_byte_count)
1717 for (i = 0; i < mxf->body_partitions_count; i++) {
1719 put_be64(pb, mxf->body_partition_offset[i]);
1723 put_be64(pb, mxf->footer_partition_offset);
1730 MXFContext *mxf = s->priv_data;
1733 mxf->duration = mxf->last_indexed_edit_unit + mxf->edit_units_count;
1736 mxf->footer_partition_offset = url_ftell(pb);
1737 if (mxf->edit_unit_byte_count) { // no need to repeat index
1751 if (mxf->edit_unit_byte_count) {
1764 av_freep(&mxf->index_entries);
1765 av_freep(&mxf->body_partition_offset);
1766 av_freep(&mxf->timecode_track->priv_data);
1767 av_freep(&mxf->timecode_track);
1846 "mxf",
1848 "application/mxf",
1849 "mxf",
1864 "application/mxf",