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 {