Mercurial > libavformat.hg
comparison mxf.c @ 2948:787c0b2a2acb libavformat
cosmetics: read_metadata -> read
author | bcoudurier |
---|---|
date | Sat, 19 Jan 2008 16:20:06 +0000 |
parents | cdfb199be537 |
children | c433c2607194 |
comparison
equal
deleted
inserted
replaced
2947:cdfb199be537 | 2948:787c0b2a2acb |
---|---|
397 mxf->metadata_sets[mxf->metadata_sets_count] = metadata_set; | 397 mxf->metadata_sets[mxf->metadata_sets_count] = metadata_set; |
398 mxf->metadata_sets_count++; | 398 mxf->metadata_sets_count++; |
399 return 0; | 399 return 0; |
400 } | 400 } |
401 | 401 |
402 static int mxf_read_metadata_cryptographic_context(MXFCryptoContext *cryptocontext, ByteIOContext *pb, int tag, int size, UID uid) | 402 static int mxf_read_cryptographic_context(MXFCryptoContext *cryptocontext, ByteIOContext *pb, int tag, int size, UID uid) |
403 { | 403 { |
404 if (size != 16) | 404 if (size != 16) |
405 return -1; | 405 return -1; |
406 if (IS_KLV_KEY(uid, mxf_crypto_source_container_ul)) | 406 if (IS_KLV_KEY(uid, mxf_crypto_source_container_ul)) |
407 get_buffer(pb, cryptocontext->source_container_ul, 16); | 407 get_buffer(pb, cryptocontext->source_container_ul, 16); |
408 return 0; | 408 return 0; |
409 } | 409 } |
410 | 410 |
411 static int mxf_read_metadata_content_storage(MXFContext *mxf, ByteIOContext *pb, int tag) | 411 static int mxf_read_content_storage(MXFContext *mxf, ByteIOContext *pb, int tag) |
412 { | 412 { |
413 switch (tag) { | 413 switch (tag) { |
414 case 0x1901: | 414 case 0x1901: |
415 mxf->packages_count = get_be32(pb); | 415 mxf->packages_count = get_be32(pb); |
416 if (mxf->packages_count >= UINT_MAX / sizeof(UID)) | 416 if (mxf->packages_count >= UINT_MAX / sizeof(UID)) |
423 break; | 423 break; |
424 } | 424 } |
425 return 0; | 425 return 0; |
426 } | 426 } |
427 | 427 |
428 static int mxf_read_metadata_source_clip(MXFStructuralComponent *source_clip, ByteIOContext *pb, int tag) | 428 static int mxf_read_source_clip(MXFStructuralComponent *source_clip, ByteIOContext *pb, int tag) |
429 { | 429 { |
430 switch(tag) { | 430 switch(tag) { |
431 case 0x0202: | 431 case 0x0202: |
432 source_clip->duration = get_be64(pb); | 432 source_clip->duration = get_be64(pb); |
433 break; | 433 break; |
444 break; | 444 break; |
445 } | 445 } |
446 return 0; | 446 return 0; |
447 } | 447 } |
448 | 448 |
449 static int mxf_read_metadata_material_package(MXFPackage *package, ByteIOContext *pb, int tag) | 449 static int mxf_read_material_package(MXFPackage *package, ByteIOContext *pb, int tag) |
450 { | 450 { |
451 switch(tag) { | 451 switch(tag) { |
452 case 0x4403: | 452 case 0x4403: |
453 package->tracks_count = get_be32(pb); | 453 package->tracks_count = get_be32(pb); |
454 if (package->tracks_count >= UINT_MAX / sizeof(UID)) | 454 if (package->tracks_count >= UINT_MAX / sizeof(UID)) |
461 break; | 461 break; |
462 } | 462 } |
463 return 0; | 463 return 0; |
464 } | 464 } |
465 | 465 |
466 static int mxf_read_metadata_track(MXFTrack *track, ByteIOContext *pb, int tag) | 466 static int mxf_read_track(MXFTrack *track, ByteIOContext *pb, int tag) |
467 { | 467 { |
468 switch(tag) { | 468 switch(tag) { |
469 case 0x4801: | 469 case 0x4801: |
470 track->track_id = get_be32(pb); | 470 track->track_id = get_be32(pb); |
471 break; | 471 break; |
481 break; | 481 break; |
482 } | 482 } |
483 return 0; | 483 return 0; |
484 } | 484 } |
485 | 485 |
486 static int mxf_read_metadata_sequence(MXFSequence *sequence, ByteIOContext *pb, int tag) | 486 static int mxf_read_sequence(MXFSequence *sequence, ByteIOContext *pb, int tag) |
487 { | 487 { |
488 switch(tag) { | 488 switch(tag) { |
489 case 0x0202: | 489 case 0x0202: |
490 sequence->duration = get_be64(pb); | 490 sequence->duration = get_be64(pb); |
491 break; | 491 break; |
504 break; | 504 break; |
505 } | 505 } |
506 return 0; | 506 return 0; |
507 } | 507 } |
508 | 508 |
509 static int mxf_read_metadata_source_package(MXFPackage *package, ByteIOContext *pb, int tag) | 509 static int mxf_read_source_package(MXFPackage *package, ByteIOContext *pb, int tag) |
510 { | 510 { |
511 switch(tag) { | 511 switch(tag) { |
512 case 0x4403: | 512 case 0x4403: |
513 package->tracks_count = get_be32(pb); | 513 package->tracks_count = get_be32(pb); |
514 if (package->tracks_count >= UINT_MAX / sizeof(UID)) | 514 if (package->tracks_count >= UINT_MAX / sizeof(UID)) |
529 break; | 529 break; |
530 } | 530 } |
531 return 0; | 531 return 0; |
532 } | 532 } |
533 | 533 |
534 static void mxf_read_metadata_pixel_layout(ByteIOContext *pb, MXFDescriptor *descriptor) | 534 static void mxf_read_pixel_layout(ByteIOContext *pb, MXFDescriptor *descriptor) |
535 { | 535 { |
536 int code; | 536 int code; |
537 | 537 |
538 do { | 538 do { |
539 code = get_byte(pb); | 539 code = get_byte(pb); |
552 get_byte(pb); | 552 get_byte(pb); |
553 } | 553 } |
554 } while (code != 0); /* SMPTE 377M E.2.46 */ | 554 } while (code != 0); /* SMPTE 377M E.2.46 */ |
555 } | 555 } |
556 | 556 |
557 static int mxf_read_metadata_generic_descriptor(MXFDescriptor *descriptor, ByteIOContext *pb, int tag, int size) | 557 static int mxf_read_generic_descriptor(MXFDescriptor *descriptor, ByteIOContext *pb, int tag, int size) |
558 { | 558 { |
559 switch(tag) { | 559 switch(tag) { |
560 case 0x3F01: | 560 case 0x3F01: |
561 descriptor->sub_descriptors_count = get_be32(pb); | 561 descriptor->sub_descriptors_count = get_be32(pb); |
562 if (descriptor->sub_descriptors_count >= UINT_MAX / sizeof(UID)) | 562 if (descriptor->sub_descriptors_count >= UINT_MAX / sizeof(UID)) |
598 break; | 598 break; |
599 case 0x3D01: | 599 case 0x3D01: |
600 descriptor->bits_per_sample = get_be32(pb); | 600 descriptor->bits_per_sample = get_be32(pb); |
601 break; | 601 break; |
602 case 0x3401: | 602 case 0x3401: |
603 mxf_read_metadata_pixel_layout(pb, descriptor); | 603 mxf_read_pixel_layout(pb, descriptor); |
604 break; | 604 break; |
605 case 0x8201: /* Private tag used by SONY C0023S01.mxf */ | 605 case 0x8201: /* Private tag used by SONY C0023S01.mxf */ |
606 descriptor->extradata = av_malloc(size); | 606 descriptor->extradata = av_malloc(size); |
607 if (!descriptor->extradata) | 607 if (!descriptor->extradata) |
608 return -1; | 608 return -1; |
893 return 0; | 893 return 0; |
894 } | 894 } |
895 | 895 |
896 static const MXFMetadataReadTableEntry mxf_metadata_read_table[] = { | 896 static const MXFMetadataReadTableEntry mxf_metadata_read_table[] = { |
897 { { 0x06,0x0E,0x2B,0x34,0x02,0x05,0x01,0x01,0x0d,0x01,0x02,0x01,0x01,0x05,0x01,0x00 }, mxf_read_primer_pack }, | 897 { { 0x06,0x0E,0x2B,0x34,0x02,0x05,0x01,0x01,0x0d,0x01,0x02,0x01,0x01,0x05,0x01,0x00 }, mxf_read_primer_pack }, |
898 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x18,0x00 }, mxf_read_metadata_content_storage, 0, AnyType }, | 898 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x18,0x00 }, mxf_read_content_storage, 0, AnyType }, |
899 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x37,0x00 }, mxf_read_metadata_source_package, sizeof(MXFPackage), SourcePackage }, | 899 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x37,0x00 }, mxf_read_source_package, sizeof(MXFPackage), SourcePackage }, |
900 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x36,0x00 }, mxf_read_metadata_material_package, sizeof(MXFPackage), MaterialPackage }, | 900 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x36,0x00 }, mxf_read_material_package, sizeof(MXFPackage), MaterialPackage }, |
901 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x0F,0x00 }, mxf_read_metadata_sequence, sizeof(MXFSequence), Sequence }, | 901 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x0F,0x00 }, mxf_read_sequence, sizeof(MXFSequence), Sequence }, |
902 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x11,0x00 }, mxf_read_metadata_source_clip, sizeof(MXFStructuralComponent), SourceClip }, | 902 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x11,0x00 }, mxf_read_source_clip, sizeof(MXFStructuralComponent), SourceClip }, |
903 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x44,0x00 }, mxf_read_metadata_generic_descriptor, sizeof(MXFDescriptor), MultipleDescriptor }, | 903 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x44,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), MultipleDescriptor }, |
904 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x42,0x00 }, mxf_read_metadata_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* Generic Sound */ | 904 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x42,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* Generic Sound */ |
905 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x28,0x00 }, mxf_read_metadata_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* CDCI */ | 905 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x28,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* CDCI */ |
906 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x29,0x00 }, mxf_read_metadata_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* RGBA */ | 906 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x29,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* RGBA */ |
907 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x51,0x00 }, mxf_read_metadata_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* MPEG 2 Video */ | 907 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x51,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* MPEG 2 Video */ |
908 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x48,0x00 }, mxf_read_metadata_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* Wave */ | 908 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x48,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* Wave */ |
909 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x47,0x00 }, mxf_read_metadata_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* AES3 */ | 909 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x47,0x00 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /* AES3 */ |
910 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x3A,0x00 }, mxf_read_metadata_track, sizeof(MXFTrack), Track }, /* Static Track */ | 910 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x3A,0x00 }, mxf_read_track, sizeof(MXFTrack), Track }, /* Static Track */ |
911 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x3B,0x00 }, mxf_read_metadata_track, sizeof(MXFTrack), Track }, /* Generic Track */ | 911 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x3B,0x00 }, mxf_read_track, sizeof(MXFTrack), Track }, /* Generic Track */ |
912 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x04,0x01,0x02,0x02,0x00,0x00 }, mxf_read_metadata_cryptographic_context, sizeof(MXFCryptoContext), CryptoContext }, | 912 { { 0x06,0x0E,0x2B,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x04,0x01,0x02,0x02,0x00,0x00 }, mxf_read_cryptographic_context, sizeof(MXFCryptoContext), CryptoContext }, |
913 { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, NULL, 0, AnyType }, | 913 { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, NULL, 0, AnyType }, |
914 }; | 914 }; |
915 | 915 |
916 static int mxf_read_local_tags(MXFContext *mxf, KLVPacket *klv, int (*read_child)(), int ctx_size, enum MXFMetadataSetType type) | 916 static int mxf_read_local_tags(MXFContext *mxf, KLVPacket *klv, int (*read_child)(), int ctx_size, enum MXFMetadataSetType type) |
917 { | 917 { |