Mercurial > libavformat.hg
comparison mxfenc.c @ 4279:2402eb8c37ff libavformat
write essence container data
author | bcoudurier |
---|---|
date | Fri, 23 Jan 2009 20:57:12 +0000 |
parents | 5bf611a311b9 |
children | 385b2fdccbbb |
comparison
equal
deleted
inserted
replaced
4278:5bf611a311b9 | 4279:2402eb8c37ff |
---|---|
118 { 0x3C04, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x05,0x20,0x07,0x01,0x05,0x01,0x00,0x00}}, /* Version String */ | 118 { 0x3C04, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x05,0x20,0x07,0x01,0x05,0x01,0x00,0x00}}, /* Version String */ |
119 { 0x3C05, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x05,0x20,0x07,0x01,0x07,0x00,0x00,0x00}}, /* Product ID */ | 119 { 0x3C05, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x05,0x20,0x07,0x01,0x07,0x00,0x00,0x00}}, /* Product ID */ |
120 { 0x3C06, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x07,0x02,0x01,0x10,0x02,0x03,0x00,0x00}}, /* Modification Date */ | 120 { 0x3C06, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x07,0x02,0x01,0x10,0x02,0x03,0x00,0x00}}, /* Modification Date */ |
121 // Content Storage | 121 // Content Storage |
122 { 0x1901, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x04,0x05,0x01,0x00,0x00}}, /* Package strong reference batch */ | 122 { 0x1901, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x04,0x05,0x01,0x00,0x00}}, /* Package strong reference batch */ |
123 { 0x1902, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x04,0x05,0x02,0x00,0x00}}, /* Package strong reference batch */ | |
123 // Essence Container Data | 124 // Essence Container Data |
124 { 0x2701, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x06,0x01,0x00,0x00,0x00}}, /* Linked Package UID */ | 125 { 0x2701, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x06,0x01,0x00,0x00,0x00}}, /* Linked Package UID */ |
125 { 0x3F07, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x04,0x01,0x03,0x04,0x04,0x00,0x00,0x00,0x00}}, /* BodySID */ | 126 { 0x3F07, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x04,0x01,0x03,0x04,0x04,0x00,0x00,0x00,0x00}}, /* BodySID */ |
126 // Package | 127 // Package |
127 { 0x4401, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x01,0x01,0x15,0x10,0x00,0x00,0x00,0x00}}, /* Package UID */ | 128 { 0x4401, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x01,0x01,0x15,0x10,0x00,0x00,0x00,0x00}}, /* Package UID */ |
374 { | 375 { |
375 ByteIOContext *pb = s->pb; | 376 ByteIOContext *pb = s->pb; |
376 | 377 |
377 mxf_write_metadata_key(pb, 0x011800); | 378 mxf_write_metadata_key(pb, 0x011800); |
378 PRINT_KEY(s, "content storage key", pb->buf_ptr - 16); | 379 PRINT_KEY(s, "content storage key", pb->buf_ptr - 16); |
379 klv_encode_ber_length(pb, 64); | 380 klv_encode_ber_length(pb, 92); |
380 | 381 |
381 // write uid | 382 // write uid |
382 mxf_write_local_tag(pb, 16, 0x3C0A); | 383 mxf_write_local_tag(pb, 16, 0x3C0A); |
383 mxf_write_uuid(pb, ContentStorage, 0); | 384 mxf_write_uuid(pb, ContentStorage, 0); |
384 PRINT_KEY(s, "content storage uid", pb->buf_ptr - 16); | 385 PRINT_KEY(s, "content storage uid", pb->buf_ptr - 16); |
386 // write package reference | 387 // write package reference |
387 mxf_write_local_tag(pb, 16 * 2 + 8, 0x1901); | 388 mxf_write_local_tag(pb, 16 * 2 + 8, 0x1901); |
388 mxf_write_refs_count(pb, 2); | 389 mxf_write_refs_count(pb, 2); |
389 mxf_write_uuid(pb, MaterialPackage, 0); | 390 mxf_write_uuid(pb, MaterialPackage, 0); |
390 mxf_write_uuid(pb, SourcePackage, 0); | 391 mxf_write_uuid(pb, SourcePackage, 0); |
392 | |
393 // write essence container data | |
394 mxf_write_local_tag(pb, 8 + 16, 0x1902); | |
395 mxf_write_refs_count(pb, 1); | |
396 mxf_write_uuid(pb, EssenceContainerData, 0); | |
391 } | 397 } |
392 | 398 |
393 static void mxf_write_track(AVFormatContext *s, AVStream *st, enum MXFMetadataSetType type) | 399 static void mxf_write_track(AVFormatContext *s, AVStream *st, enum MXFMetadataSetType type) |
394 { | 400 { |
395 ByteIOContext *pb = s->pb; | 401 ByteIOContext *pb = s->pb; |
657 mxf_essence_container_uls[sc->index].write_desc(s, st); | 663 mxf_essence_container_uls[sc->index].write_desc(s, st); |
658 } | 664 } |
659 } | 665 } |
660 } | 666 } |
661 | 667 |
668 static int mxf_write_essence_container_data(AVFormatContext *s) | |
669 { | |
670 ByteIOContext *pb = s->pb; | |
671 | |
672 mxf_write_metadata_key(pb, 0x012300); | |
673 klv_encode_ber_length(pb, 64); | |
674 | |
675 mxf_write_local_tag(pb, 16, 0x3C0A); // Instance UID | |
676 mxf_write_uuid(pb, EssenceContainerData, 0); | |
677 | |
678 mxf_write_local_tag(pb, 32, 0x2701); // Linked Package UID | |
679 mxf_write_umid(pb, SourcePackage, 0); | |
680 | |
681 mxf_write_local_tag(pb, 4, 0x3F07); // BodySID | |
682 put_be32(pb, 1); | |
683 | |
684 return 0; | |
685 } | |
686 | |
662 static int mxf_write_header_metadata_sets(AVFormatContext *s) | 687 static int mxf_write_header_metadata_sets(AVFormatContext *s) |
663 { | 688 { |
664 mxf_write_preface(s); | 689 mxf_write_preface(s); |
665 mxf_write_identification(s); | 690 mxf_write_identification(s); |
666 mxf_write_content_storage(s); | 691 mxf_write_content_storage(s); |
667 mxf_write_package(s, MaterialPackage); | 692 mxf_write_package(s, MaterialPackage); |
668 mxf_write_package(s, SourcePackage); | 693 mxf_write_package(s, SourcePackage); |
694 mxf_write_essence_container_data(s); | |
669 return 0; | 695 return 0; |
670 } | 696 } |
671 | 697 |
672 static void mxf_write_partition(AVFormatContext *s, int bodysid, const uint8_t *key, int write_metadata) | 698 static void mxf_write_partition(AVFormatContext *s, int bodysid, const uint8_t *key, int write_metadata) |
673 { | 699 { |