├── test ├── res │ ├── 1000hz.mp3 │ ├── 1000hz-18dbs16b44.1k.aiff │ └── 1000hz-18dbs16b44.1k.wav ├── aaf │ ├── DR_Empty.aaf │ ├── MC_Empty.aaf │ ├── MC_Fades.aaf │ ├── MC_TC_24.aaf │ ├── MC_TC_25.aaf │ ├── MC_TC_50.aaf │ ├── PR_Fades.aaf │ ├── PT_Fades.aaf │ ├── DR_Markers.aaf │ ├── MC_Markers.aaf │ ├── MC_Metadata.aaf │ ├── MC_TC_100.aaf │ ├── MC_TC_30_DF.aaf │ ├── MC_TC_60_DF.aaf │ ├── PT_Fades_A.aaf │ ├── PT_Fades_B.aaf │ ├── PT_lang_de.aaf │ ├── PT_lang_en.aaf │ ├── PT_lang_es.aaf │ ├── PT_lang_fr.aaf │ ├── PT_lang_ja.aaf │ ├── PT_lang_ko.aaf │ ├── MC_Audio_Pan.aaf │ ├── MC_Audio_Warp.aaf │ ├── MC_Clip_Mute.aaf │ ├── MC_TC_120_DF.aaf │ ├── MC_TC_120_NDF.aaf │ ├── MC_TC_23.976.aaf │ ├── MC_TC_30_NDF.aaf │ ├── MC_TC_60_NDF.aaf │ ├── PT_lang_zh_CN.aaf │ ├── PT_lang_zh_TW.aaf │ ├── DR_Audio_Levels.aaf │ ├── DR_MP3_External.aaf │ ├── MC_Audio_Levels.aaf │ ├── MC_TC_119.88_DF.aaf │ ├── MC_TC_119.88_NDF.aaf │ ├── MC_TC_29.97_DF.aaf │ ├── MC_TC_29.97_NDF.aaf │ ├── MC_TC_59.94_DF.aaf │ ├── MC_TC_59.94_NDF.aaf │ ├── PR_AIFF_Internal.aaf │ ├── PR_WAV_Internal.aaf │ ├── PT_AIFF_External.aaf │ ├── PT_MXF_External.aaf │ ├── PT_PCM_Internal.aaf │ ├── PT_WAV_External.aaf │ ├── MC_Track_Solo_Mute.aaf │ ├── PR_Audio_Pan-noBTM.aaf │ ├── PR_Audio_Levels-noBTM.aaf │ ├── PT_Fades_no_handles.aaf │ ├── PT_UTF8_EssencePath.aaf │ ├── DR_Mono_Clip_Positioning.aaf │ ├── DR_Stereo_Clip_Positioning.aaf │ ├── PR_Clip_length_beyond_EOF.aaf │ ├── PT_WAV_ExtehcrfPFTBxvdzJCBB.wav │ ├── PT_WAV_External_same_directory.aaf │ ├── PT_WAV_External_sub_directory.aaf │ ├── DR_Multichannel_5.1_single_source.aaf │ ├── DR_Multichannel_7.1_single_source.aaf │ ├── PT_Multichannel_5.1_multi_source.aaf │ ├── PT_Multichannel_7.1_multi_source.aaf │ ├── DR_Multichannel_stereo_single_source.aaf │ ├── PT_Multichannel_stereo_multi_source.aaf │ ├── الفوضى │ │ └── PT_UTF8_EsszxcxBYZCdpbxHBBB.wav │ ├── PR_WAV_External_sub_sub_directory_UTF8.aaf │ ├── Média AAF │ │ └── 花 │ │ │ └── bb6deb92-04b8-4b2a-9d6f-cd840000007c.wav │ ├── PT_Audio_Levels-noEMCC-noExpTracksAsMultiChannel.aaf │ └── PT_WAV_External_sub_directory │ │ └── PT_WAV_ExterqqqHXSBxbzcJCBB.wav ├── expected │ ├── MC_Empty.aaf.expected │ ├── DR_Empty.aaf.expected │ ├── PT_PCM_Internal.aaf.expected │ ├── DR_Markers.aaf.expected │ ├── DR_MP3_External.aaf.expected │ ├── PT_UTF8_EssencePath.aaf.expected │ ├── PT_WAV_External.aaf.expected │ ├── PT_WAV_External_same_directory.aaf.expected │ ├── PT_WAV_External_sub_directory.aaf.expected │ ├── PT_AIFF_External.aaf.expected │ ├── PT_MXF_External.aaf.expected │ ├── PR_AIFF_Internal.aaf.expected │ ├── PR_Clip_length_beyond_EOF.aaf.expected │ ├── PR_WAV_Internal.aaf.expected │ ├── PR_WAV_External_sub_sub_directory_UTF8.aaf.expected │ ├── DR_Multichannel_stereo_single_source.aaf.expected │ ├── MC_TC_24.aaf.expected │ ├── MC_TC_25.aaf.expected │ ├── MC_TC_50.aaf.expected │ ├── MC_TC_30_DF.aaf.expected │ ├── MC_TC_60_DF.aaf.expected │ ├── MC_TC_100.aaf.expected │ ├── MC_TC_30_NDF.aaf.expected │ ├── MC_TC_60_NDF.aaf.expected │ ├── MC_TC_120_DF.aaf.expected │ ├── MC_TC_120_NDF.aaf.expected │ ├── MC_Clip_Mute.aaf.expected │ ├── MC_TC_23.976.aaf.expected │ ├── MC_TC_29.97_DF.aaf.expected │ ├── MC_TC_59.94_DF.aaf.expected │ ├── MC_TC_119.88_DF.aaf.expected │ ├── MC_TC_119.88_NDF.aaf.expected │ ├── MC_TC_29.97_NDF.aaf.expected │ ├── MC_TC_59.94_NDF.aaf.expected │ ├── MC_Track_Solo_Mute.aaf.expected │ ├── PT_Multichannel_stereo_multi_source.aaf.expected │ ├── MC_Audio_Pan.aaf.expected │ ├── DR_Multichannel_5.1_single_source.aaf.expected │ ├── MC_Markers.aaf.expected │ ├── DR_Mono_Clip_Positioning.aaf.expected │ ├── PT_lang_zh_CN.aaf.expected │ ├── PT_lang_zh_TW.aaf.expected │ ├── PT_lang_ja.aaf.expected │ ├── PT_lang_ko.aaf.expected │ ├── PT_lang_en.aaf.expected │ ├── PT_lang_de.aaf.expected │ ├── MC_Metadata.aaf.expected │ ├── PT_lang_es.aaf.expected │ ├── PT_lang_fr.aaf.expected │ ├── DR_Multichannel_7.1_single_source.aaf.expected │ ├── PR_Audio_Pan-noBTM.aaf.expected │ ├── DR_Stereo_Clip_Positioning.aaf.expected │ ├── MC_Audio_Levels.aaf.expected │ └── MC_Audio_Warp.aaf.expected └── units │ └── common.h ├── libaaf.pc.in ├── standard └── README.txt ├── include ├── libaaf │ ├── AAFDefs │ │ ├── AAFOPDefs.h │ │ ├── AAFPluginDefs.h │ │ ├── AAFInterpolatorDefs.h │ │ ├── AAFDataDefs.h │ │ └── AAFExtEnum.h │ ├── Resolve.h │ ├── MediaComposer.h │ ├── ProTools.h │ ├── CFBDump.h │ ├── AAFDump.h │ ├── AAFIEssenceFile.h │ ├── log.h │ ├── AAFIParser.h │ ├── AAFToText.h │ └── utils.h └── libaaf.h ├── src ├── version.h.in ├── AAFIface │ ├── Resolve.c │ ├── MediaComposer.c │ ├── URIParser.h │ └── RIFFParser.h └── AAFCore │ └── AAFClass.h └── doc └── theme └── header.html /test/res/1000hz.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/res/1000hz.mp3 -------------------------------------------------------------------------------- /test/aaf/DR_Empty.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/DR_Empty.aaf -------------------------------------------------------------------------------- /test/aaf/MC_Empty.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_Empty.aaf -------------------------------------------------------------------------------- /test/aaf/MC_Fades.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_Fades.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_24.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_24.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_25.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_25.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_50.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_50.aaf -------------------------------------------------------------------------------- /test/aaf/PR_Fades.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PR_Fades.aaf -------------------------------------------------------------------------------- /test/aaf/PT_Fades.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_Fades.aaf -------------------------------------------------------------------------------- /test/aaf/DR_Markers.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/DR_Markers.aaf -------------------------------------------------------------------------------- /test/aaf/MC_Markers.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_Markers.aaf -------------------------------------------------------------------------------- /test/aaf/MC_Metadata.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_Metadata.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_100.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_100.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_30_DF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_30_DF.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_60_DF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_60_DF.aaf -------------------------------------------------------------------------------- /test/aaf/PT_Fades_A.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_Fades_A.aaf -------------------------------------------------------------------------------- /test/aaf/PT_Fades_B.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_Fades_B.aaf -------------------------------------------------------------------------------- /test/aaf/PT_lang_de.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_lang_de.aaf -------------------------------------------------------------------------------- /test/aaf/PT_lang_en.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_lang_en.aaf -------------------------------------------------------------------------------- /test/aaf/PT_lang_es.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_lang_es.aaf -------------------------------------------------------------------------------- /test/aaf/PT_lang_fr.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_lang_fr.aaf -------------------------------------------------------------------------------- /test/aaf/PT_lang_ja.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_lang_ja.aaf -------------------------------------------------------------------------------- /test/aaf/PT_lang_ko.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_lang_ko.aaf -------------------------------------------------------------------------------- /test/aaf/MC_Audio_Pan.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_Audio_Pan.aaf -------------------------------------------------------------------------------- /test/aaf/MC_Audio_Warp.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_Audio_Warp.aaf -------------------------------------------------------------------------------- /test/aaf/MC_Clip_Mute.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_Clip_Mute.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_120_DF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_120_DF.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_120_NDF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_120_NDF.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_23.976.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_23.976.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_30_NDF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_30_NDF.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_60_NDF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_60_NDF.aaf -------------------------------------------------------------------------------- /test/aaf/PT_lang_zh_CN.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_lang_zh_CN.aaf -------------------------------------------------------------------------------- /test/aaf/PT_lang_zh_TW.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_lang_zh_TW.aaf -------------------------------------------------------------------------------- /test/aaf/DR_Audio_Levels.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/DR_Audio_Levels.aaf -------------------------------------------------------------------------------- /test/aaf/DR_MP3_External.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/DR_MP3_External.aaf -------------------------------------------------------------------------------- /test/aaf/MC_Audio_Levels.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_Audio_Levels.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_119.88_DF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_119.88_DF.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_119.88_NDF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_119.88_NDF.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_29.97_DF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_29.97_DF.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_29.97_NDF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_29.97_NDF.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_59.94_DF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_59.94_DF.aaf -------------------------------------------------------------------------------- /test/aaf/MC_TC_59.94_NDF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_TC_59.94_NDF.aaf -------------------------------------------------------------------------------- /test/aaf/PR_AIFF_Internal.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PR_AIFF_Internal.aaf -------------------------------------------------------------------------------- /test/aaf/PR_WAV_Internal.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PR_WAV_Internal.aaf -------------------------------------------------------------------------------- /test/aaf/PT_AIFF_External.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_AIFF_External.aaf -------------------------------------------------------------------------------- /test/aaf/PT_MXF_External.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_MXF_External.aaf -------------------------------------------------------------------------------- /test/aaf/PT_PCM_Internal.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_PCM_Internal.aaf -------------------------------------------------------------------------------- /test/aaf/PT_WAV_External.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_WAV_External.aaf -------------------------------------------------------------------------------- /test/aaf/MC_Track_Solo_Mute.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/MC_Track_Solo_Mute.aaf -------------------------------------------------------------------------------- /test/aaf/PR_Audio_Pan-noBTM.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PR_Audio_Pan-noBTM.aaf -------------------------------------------------------------------------------- /test/aaf/PR_Audio_Levels-noBTM.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PR_Audio_Levels-noBTM.aaf -------------------------------------------------------------------------------- /test/aaf/PT_Fades_no_handles.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_Fades_no_handles.aaf -------------------------------------------------------------------------------- /test/aaf/PT_UTF8_EssencePath.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_UTF8_EssencePath.aaf -------------------------------------------------------------------------------- /test/res/1000hz-18dbs16b44.1k.aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/res/1000hz-18dbs16b44.1k.aiff -------------------------------------------------------------------------------- /test/res/1000hz-18dbs16b44.1k.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/res/1000hz-18dbs16b44.1k.wav -------------------------------------------------------------------------------- /test/aaf/DR_Mono_Clip_Positioning.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/DR_Mono_Clip_Positioning.aaf -------------------------------------------------------------------------------- /test/aaf/DR_Stereo_Clip_Positioning.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/DR_Stereo_Clip_Positioning.aaf -------------------------------------------------------------------------------- /test/aaf/PR_Clip_length_beyond_EOF.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PR_Clip_length_beyond_EOF.aaf -------------------------------------------------------------------------------- /test/aaf/PT_WAV_ExtehcrfPFTBxvdzJCBB.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_WAV_ExtehcrfPFTBxvdzJCBB.wav -------------------------------------------------------------------------------- /test/aaf/PT_WAV_External_same_directory.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_WAV_External_same_directory.aaf -------------------------------------------------------------------------------- /test/aaf/PT_WAV_External_sub_directory.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_WAV_External_sub_directory.aaf -------------------------------------------------------------------------------- /test/aaf/DR_Multichannel_5.1_single_source.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/DR_Multichannel_5.1_single_source.aaf -------------------------------------------------------------------------------- /test/aaf/DR_Multichannel_7.1_single_source.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/DR_Multichannel_7.1_single_source.aaf -------------------------------------------------------------------------------- /test/aaf/PT_Multichannel_5.1_multi_source.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_Multichannel_5.1_multi_source.aaf -------------------------------------------------------------------------------- /test/aaf/PT_Multichannel_7.1_multi_source.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_Multichannel_7.1_multi_source.aaf -------------------------------------------------------------------------------- /test/aaf/DR_Multichannel_stereo_single_source.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/DR_Multichannel_stereo_single_source.aaf -------------------------------------------------------------------------------- /test/aaf/PT_Multichannel_stereo_multi_source.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_Multichannel_stereo_multi_source.aaf -------------------------------------------------------------------------------- /test/aaf/الفوضى/PT_UTF8_EsszxcxBYZCdpbxHBBB.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/الفوضى/PT_UTF8_EsszxcxBYZCdpbxHBBB.wav -------------------------------------------------------------------------------- /test/aaf/PR_WAV_External_sub_sub_directory_UTF8.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PR_WAV_External_sub_sub_directory_UTF8.aaf -------------------------------------------------------------------------------- /test/aaf/Média AAF/花/bb6deb92-04b8-4b2a-9d6f-cd840000007c.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/Média AAF/花/bb6deb92-04b8-4b2a-9d6f-cd840000007c.wav -------------------------------------------------------------------------------- /test/aaf/PT_Audio_Levels-noEMCC-noExpTracksAsMultiChannel.aaf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_Audio_Levels-noEMCC-noExpTracksAsMultiChannel.aaf -------------------------------------------------------------------------------- /test/aaf/PT_WAV_External_sub_directory/PT_WAV_ExterqqqHXSBxbzcJCBB.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/agfline/LibAAF/HEAD/test/aaf/PT_WAV_External_sub_directory/PT_WAV_ExterqqqHXSBxbzcJCBB.wav -------------------------------------------------------------------------------- /libaaf.pc.in: -------------------------------------------------------------------------------- 1 | prefix="@CMAKE_INSTALL_PREFIX@" 2 | exec_prefix="${prefix}" 3 | libdir="${prefix}/lib" 4 | includedir="${prefix}/include" 5 | 6 | Name: @CMAKE_PROJECT_NAME@ 7 | Description: @CMAKE_PROJECT_DESCRIPTION@ 8 | URL: @CMAKE_PROJECT_HOMEPAGE_URL@ 9 | Version: @LIBAAF_VERSION@ 10 | Cflags: -I"${includedir}" 11 | Libs: -L"${libdir}" -l@LIBAAF_LIB_OUTPUT_NAME@ 12 | -------------------------------------------------------------------------------- /standard/README.txt: -------------------------------------------------------------------------------- 1 | 2 | * Compound File Binary : https://www.amwa.tv/projects/MS-03.shtml 3 | * Stored Format Spec : https://www.amwa.tv/projects/MS-02.shtml 4 | * AAF Object Model : https://www.amwa.tv/projects/MS-01.shtml 5 | 6 | * AAF Edit Protocol : https://www.amwa.tv/projects/AS-01.shtml 7 | * AAF Effects Protocol : https://www.amwa.tv/projects/AS-05.shtml 8 | -------------------------------------------------------------------------------- /include/libaaf/AAFDefs/AAFOPDefs.h: -------------------------------------------------------------------------------- 1 | #ifndef __OPDefinition_h__ 2 | #define __OPDefinition_h__ 3 | 4 | #include 5 | 6 | // AAF well-known OPDefinition instances 7 | // 8 | 9 | //{0d011201-0100-0000-060e-2b3404010105} 10 | static const aafUID_t AAFOPDef_EditProtocol = 11 | {0x0d011201, 0x0100, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x05}}; 12 | 13 | 14 | //{0d011201-0200-0000-060e-2b3404010109} 15 | static const aafUID_t AAFOPDef_Unconstrained = 16 | {0x0d011201, 0x0200, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x09}}; 17 | 18 | 19 | // AAF OPDefinition legacy aliases 20 | // 21 | 22 | 23 | #endif // ! __OPDefinition_h__ 24 | -------------------------------------------------------------------------------- /src/version.h.in: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017-2023 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef LIBAAF_VERSION_H_ 22 | #define LIBAAF_VERSION_H_ 23 | #define LIBAAF_VERSION "@LIBAAF_VERSION@" 24 | #endif /* LIBAAF_VERSION_H_ */ 25 | -------------------------------------------------------------------------------- /include/libaaf/Resolve.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2023-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef __Resolve_h__ 22 | #define __Resolve_h__ 23 | 24 | #include 25 | #include 26 | 27 | 28 | int resolve_AAF( struct AAF_Iface *aafi ); 29 | 30 | #endif // !__Resolve_h__ 31 | -------------------------------------------------------------------------------- /include/libaaf/MediaComposer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef __MediaComposer_h__ 22 | #define __MediaComposer_h__ 23 | 24 | #include 25 | #include 26 | 27 | 28 | #define AVID_MEDIA_COMPOSER_CURVE_TYPE_LINEAR 0 29 | #define AVID_MEDIA_COMPOSER_CURVE_TYPE_EQUAL_POWER 1 30 | 31 | 32 | int mediaComposer_AAF( struct AAF_Iface *aafi ); 33 | 34 | #endif // !__MediaComposer_h__ 35 | -------------------------------------------------------------------------------- /include/libaaf/AAFDefs/AAFPluginDefs.h: -------------------------------------------------------------------------------- 1 | #ifndef __PluginDefinition_h__ 2 | #define __PluginDefinition_h__ 3 | 4 | #include 5 | 6 | // AAF well-known PluginDefinition instances 7 | // 8 | 9 | //{3d1dd891-e793-11d2-809e-006008143e6f} 10 | static const aafUID_t kAAFPlatform_Independent = 11 | {0x3d1dd891, 0xe793, 0x11d2, {0x80, 0x9e, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f}}; 12 | 13 | 14 | //{9fdef8c1-e847-11d2-809e-006008143e6f} 15 | static const aafUID_t kAAFEngine_None = 16 | {0x9fdef8c1, 0xe847, 0x11d2, {0x80, 0x9e, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f}}; 17 | 18 | 19 | //{69c870a1-e793-11d2-809e-006008143e6f} 20 | static const aafUID_t kAAFPluginAPI_EssenceAccess = 21 | {0x69c870a1, 0xe793, 0x11d2, {0x80, 0x9e, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f}}; 22 | 23 | 24 | //{56905e0b-537d-11d4-a36c-009027dfca6a} 25 | static const aafUID_t kAAFPluginCategory_Codec = 26 | {0x56905e0b, 0x537d, 0x11d4, {0xa3, 0x6c, 0x00, 0x90, 0x27, 0xdf, 0xca, 0x6a}}; 27 | 28 | 29 | // AAF PluginDefinition legacy aliases 30 | // 31 | 32 | static const aafUID_t kAAFPlatformIndependant = kAAFPlatform_Independent; 33 | static const aafUID_t kAAFNoEngine = kAAFEngine_None; 34 | static const aafUID_t kAAFEssencePluginAPI = kAAFPluginAPI_EssenceAccess; 35 | static const aafUID_t kAAFPluginNoCategory = kAAFPluginCategory_Codec; 36 | 37 | #endif // ! __PluginDefinition_h__ 38 | -------------------------------------------------------------------------------- /include/libaaf.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef libaaf_h 22 | #define libaaf_h 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | #include 29 | 30 | #include 31 | #include 32 | #include 33 | #include 34 | 35 | #include 36 | #include 37 | 38 | #include 39 | #include 40 | #include 41 | 42 | #ifdef __cplusplus 43 | } 44 | #endif 45 | 46 | #endif // ! libaaf_h 47 | -------------------------------------------------------------------------------- /include/libaaf/ProTools.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef __ProTools_h__ 22 | #define __ProTools_h__ 23 | 24 | #include 25 | #include 26 | 27 | 28 | enum protools_options { 29 | AAFI_PROTOOLS_OPT_REMOVE_SAMPLE_ACCURATE_EDIT = 1<<0, 30 | AAFI_PROTOOLS_OPT_REPLACE_CLIP_FADES = 1<<1, 31 | }; 32 | 33 | #define PROTOOLS_ALL_OPT (AAFI_PROTOOLS_OPT_REMOVE_SAMPLE_ACCURATE_EDIT | AAFI_PROTOOLS_OPT_REPLACE_CLIP_FADES) 34 | 35 | 36 | int protools_AAF( struct AAF_Iface *aafi ); 37 | 38 | int protools_post_processing( AAF_Iface *aafi ); 39 | 40 | #endif // ! __ProTools_h__ 41 | -------------------------------------------------------------------------------- /test/expected/MC_Empty.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 20:56:25.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 20:56:25.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xc38cdb19 0xa46d 0x4bdc { 0xbc 0xec 0xb7 0xc3 0xd3 0xeb 0xf4 0x69 } } 19 | 20 | 21 | 22 | Composition Name : MC_Empty.Exporté.02 23 | 24 | TC EditRrate : 30000/1001 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 108000 28 | Composition Start (samples) : 0 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 108000 (EditRate: 0/0) 32 | Composition End (samples) : 108000 33 | Composition End : 01:00:00:00 34 | 35 | Dominant Sample Rate : 0 36 | Dominant Sample Size : 0 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | 43 | Tracks & Clips : 44 | ================ 45 | 46 | 47 | -------------------------------------------------------------------------------- /test/expected/DR_Empty.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-07 14:55:05.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Blackmagic Design 11 | ProductName : DaVinci Resolve 12 | ProductVersion : 18.5.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0x64a8d1aa 0x7ffd 0x0000 { 0xa9 0x03 0x3a 0x01 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-01-07 14:55:05.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win32) 18 | GenerationAUID : { 0x37bd9469 0x68a3 0x4427 { 0xb6 0x3b 0x90 0x8b 0xe7 0x42 0x2c 0x96 } } 19 | 20 | 21 | 22 | Composition Name : DR_Empty 23 | 24 | TC EditRrate : 24/1 25 | TC FPS : 24 NDF 26 | 27 | Composition Start (EU) : 86400 28 | Composition Start (samples) : 0 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 86400 (EditRate: 0/0) 32 | Composition End (samples) : 86400 33 | Composition End : 01:00:00:00 34 | 35 | Dominant Sample Rate : 0 36 | Dominant Sample Size : 0 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | 43 | Tracks & Clips : 44 | ================ 45 | 46 | VideoTrack[1] :: EditRate: 24/1 (24.00) 47 | 48 | 49 | AudioTrack[1] :: EditRate: 24/1 (24.00) Format: Unknwn Name: "Audio 1" 50 | 51 | -------------------------------------------------------------------------------- /include/libaaf/CFBDump.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef __CFBDump_h__ 22 | #define __CFBDump_h__ 23 | 24 | #include 25 | 26 | 27 | 28 | void cfb_dump_node( CFB_Data *cfbd, cfbNode *node, int print_stream, const char *padding ); 29 | 30 | void cfb_dump_nodePath( CFB_Data *cfbd, const char *path, int print_stream, const char *padding ); 31 | 32 | void cfb_dump_nodeStream( CFB_Data *cfbd, cfbNode *node, const char *padding ); 33 | 34 | void cfb_dump_nodePathStream( CFB_Data *cfbd, const char *path, const char *padding ); 35 | 36 | void cfb_dump_nodePaths( CFB_Data *cfbd, uint32_t prevPath, char *strArray[], uint32_t *str_i, cfbNode *node, const char *padding, int firstIteration ); 37 | 38 | void cfb_dump_header( CFB_Data *cfbd, const char *padding ); 39 | 40 | void cfb_dump_FAT( CFB_Data *cfbd, const char *padding ); 41 | 42 | void cfb_dump_MiniFAT( CFB_Data *cfbd, const char *padding ); 43 | 44 | void cfb_dump_DiFAT( CFB_Data *cfbd, const char *padding ); 45 | 46 | 47 | #endif // !__CFBDump_h__ 48 | -------------------------------------------------------------------------------- /include/libaaf/AAFDump.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef __AAFDump_h__ 22 | #define __AAFDump_h__ 23 | 24 | #include 25 | #include 26 | #include 27 | 28 | 29 | void aaf_dump_Header( AAF_Data *aafd, const char *padding ); 30 | 31 | void aaf_dump_Identification( AAF_Data *aafd, const char *padding ); 32 | 33 | void aaf_dump_rawProperties( AAF_Data *aafd, aafByte_t *propStream, const char *padding ); 34 | 35 | void aaf_dump_ObjectProperty( AAF_Data *aafd, aafProperty *Prop, const char *padding ); 36 | 37 | void aaf_dump_ObjectProperties( AAF_Data *aafd, aafObject *Obj, const char *padding ); 38 | 39 | void aaf_dump_TaggedValueSet( AAF_Data *aafd, aafObject *ObjCollection, const char *padding ); 40 | 41 | void aaf_dump_nodeStreamProperties( AAF_Data *aafd, cfbNode *node, const char *padding ); 42 | 43 | void aaf_dump_MetaDictionary( AAF_Data *aafd, const char *padding ); 44 | 45 | void aaf_dump_Classes( AAF_Data *aafd, const char *padding ); 46 | 47 | #endif // ! __AAFDump_h__ 48 | -------------------------------------------------------------------------------- /test/expected/PT_PCM_Internal.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 15:51:04.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 15:51:03.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x2031e762 0xf2d1 0x4c4c { 0xb7 0xbb 0xc7 0xd6 0x87 0x8e 0x32 0x5a } } 19 | 20 | 21 | 22 | Composition Name : PT_PCM_Internal 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 57632000 (EditRate: 16000/1) 32 | Composition End (samples) : 158848200 33 | Composition End : 01:00:02:00 34 | 35 | Dominant Sample Rate : 16000 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: PCM - 01 ch - 16000 Hz - 16 bits Length: 32000 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 46 | └── File: "EMBEDDED" 47 | 48 | 49 | Tracks & Clips : 50 | ================ 51 | 52 | 53 | AudioTrack[1] :: EditRate: 16000/1 (16000.00) Format: MONO Name: "Audio 1" 54 | └── Clip (1): Start: 158760000 Len: 88200 End: 158848200 SourceOffset: 0 Channels: 1 55 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 56 | 57 | 58 | -------------------------------------------------------------------------------- /test/expected/DR_Markers.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 18:59:38.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Blackmagic Design 11 | ProductName : DaVinci Resolve 12 | ProductVersion : 18.5.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0x00130a4e 0x0000 0x0000 { 0x4e 0x0a 0x13 0x00 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-01-09 18:59:38.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win32) 18 | GenerationAUID : { 0x333dac71 0x3b84 0x4104 { 0x84 0x83 0xb4 0x96 0x3f 0xac 0x83 0x03 } } 19 | 20 | 21 | 22 | Composition Name : DR_Markers 23 | 24 | TC EditRrate : 24/1 25 | TC FPS : 24 NDF 26 | 27 | Composition Start (EU) : 86400 28 | Composition Start (samples) : 0 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 86400 (EditRate: 0/0) 32 | Composition End (samples) : 86400 33 | Composition End : 01:00:00:00 34 | 35 | Dominant Sample Rate : 0 36 | Dominant Sample Size : 0 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | 43 | Tracks & Clips : 44 | ================ 45 | 46 | VideoTrack[1] :: EditRate: 24/1 (24.00) 47 | 48 | 49 | Markers : 50 | ========= 51 | 52 | Marker[0]: EditRate: 24/1 (24.00) Start: 0 Length: 0 Color: #e12401 Label: "Marker1Name" Comment: "This is a maker note. Marker is at position 01:01:00:00, last 1 frame and its color is red." 53 | Marker[1]: EditRate: 24/1 (24.00) Start: 0 Length: 0 Color: #9013fe Label: "Marker2Name" Comment: "This is a maker note. Marker is at position 01:01:30:00, last 10 frames and its color is purple." 54 | -------------------------------------------------------------------------------- /test/expected/DR_MP3_External.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-03 23:21:03.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Blackmagic Design 11 | ProductName : DaVinci Resolve 12 | ProductVersion : 18.5.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0x64a8d1aa 0x7ffd 0x0000 { 0x45 0x01 0xef 0x01 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-01-03 23:21:03.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win32) 18 | GenerationAUID : { 0xac94c5cd 0x6fe9 0x4b37 { 0x9e 0x6a 0x43 0x95 0xb0 0x3a 0x4a 0xd9 } } 19 | 20 | 21 | 22 | Composition Name : DR_MP3_External 23 | 24 | TC EditRrate : 24/1 25 | TC FPS : 24 NDF 26 | 27 | Composition Start (EU) : 86400 28 | Composition Start (samples) : 172800000 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 86472 (EditRate: 24/1) 32 | Composition End (samples) : 172944000 33 | Composition End : 01:00:03:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 144000 Name: "1000hz" UniqueName: "1000hz" 43 | └── File: "file:///C:/Users/user/Desktop/LibAAFTestFiles/res/1000hz.mp3" 44 | 45 | 46 | Tracks & Clips : 47 | ================ 48 | 49 | VideoTrack[1] :: EditRate: 24/1 (24.00) 50 | 51 | 52 | AudioTrack[1] :: EditRate: 24/1 (24.00) Format: MONO Name: "Audio 1" 53 | └── Clip (1): Start: 172800000 Len: 144000 End: 172944000 SourceOffset: 0 Channels: 1 54 | └── SourceFile [ch 1]: "1000hz" 55 | 56 | 57 | -------------------------------------------------------------------------------- /test/expected/PT_UTF8_EssencePath.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-02-11 22:04:52.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-02-11 22:04:47.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x79fa772d 0x0bc7 0x4c82 { 0xb4 0x94 0x10 0x51 0xa5 0x7b 0x57 0x43 } } 19 | 20 | 21 | 22 | Composition Name : PT_UTF8_EssencePath 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 2493952 (EditRate: 44100/1) 32 | Composition End (samples) : 2493952 33 | Composition End : 00:00:56:16 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 3444 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 46 | └── File: "./الفوضى/PT_UTF8_EsszxcxBYZCdpbxHBBB.wav" 47 | 48 | 49 | Tracks & Clips : 50 | ================ 51 | 52 | 53 | AudioTrack[1] :: EditRate: 44100/1 (44100.00) Format: MONO 54 | └── Clip (1): Start: 2490508 Len: 3444 End: 2493952 SourceOffset: 0 Channels: 1 55 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 56 | 57 | 58 | -------------------------------------------------------------------------------- /test/expected/PT_WAV_External.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-03 16:46:32.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-03 16:46:32.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x29084aad 0x2899 0x4d15 { 0xab 0xb7 0x27 0x85 0x59 0x26 0x9b 0xc9 } } 19 | 20 | 21 | 22 | Composition Name : PT_WAV_External 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 158848200 (EditRate: 44100/1) 32 | Composition End (samples) : 158848200 33 | Composition End : 01:00:01:29 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 132300 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 46 | └── File: "../res/1000hz-18dbs16b44.1k.wav" 47 | 48 | 49 | Tracks & Clips : 50 | ================ 51 | 52 | 53 | AudioTrack[1] :: EditRate: 44100/1 (44100.00) Format: MONO Name: "Audio 1" 54 | └── Clip (1): Start: 158804100 Len: 44100 End: 158848200 SourceOffset: 44100 Channels: 1 55 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 56 | 57 | 58 | -------------------------------------------------------------------------------- /test/expected/PT_WAV_External_same_directory.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 15:53:47.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 15:53:45.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x40652cba 0x5087 0x4950 { 0xb5 0x72 0x31 0x8f 0x46 0x6c 0xf5 0x41 } } 19 | 20 | 21 | 22 | Composition Name : PT_WAV_External_same_directory 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 108060 (EditRate: 30/1) 32 | Composition End (samples) : 158848200 33 | Composition End : 01:00:02:00 34 | 35 | Dominant Sample Rate : 32000 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 32000 Hz - 16 bits Length: 64001 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 46 | └── File: "./PT_WAV_ExtehcrfPFTBxvdzJCBB.wav" 47 | 48 | 49 | Tracks & Clips : 50 | ================ 51 | 52 | 53 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO Name: "Audio 1" 54 | └── Clip (1): Start: 158760000 Len: 88200 End: 158848200 SourceOffset: 0 Channels: 1 55 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 56 | 57 | 58 | -------------------------------------------------------------------------------- /test/expected/PT_WAV_External_sub_directory.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 15:52:53.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 15:52:46.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xa7db0617 0xd34b 0x4aac { 0xa6 0xb9 0xd5 0x6a 0x76 0x76 0x4e 0xee } } 19 | 20 | 21 | 22 | Composition Name : PT_WAV_External_sub_directory 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 108060 (EditRate: 30/1) 32 | Composition End (samples) : 158848200 33 | Composition End : 01:00:02:00 34 | 35 | Dominant Sample Rate : 32000 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 32000 Hz - 16 bits Length: 64001 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 46 | └── File: "./PT_WAV_External_sub_directory/PT_WAV_ExterqqqHXSBxbzcJCBB.wav" 47 | 48 | 49 | Tracks & Clips : 50 | ================ 51 | 52 | 53 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO Name: "Audio 1" 54 | └── Clip (1): Start: 158760000 Len: 88200 End: 158848200 SourceOffset: 0 Channels: 1 55 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 56 | 57 | 58 | -------------------------------------------------------------------------------- /include/libaaf/AAFDefs/AAFInterpolatorDefs.h: -------------------------------------------------------------------------------- 1 | #ifndef __InterpolationDefinition_h__ 2 | #define __InterpolationDefinition_h__ 3 | 4 | #include 5 | 6 | // AAF well-known InterpolationDefinition instances 7 | // 8 | 9 | //{5b6c85a3-0ede-11d3-80a9-006008143e6f} 10 | static const aafUID_t AAFInterpolationDef_None = 11 | {0x5b6c85a3, 0x0ede, 0x11d3, {0x80, 0xa9, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f}}; 12 | 13 | 14 | //{5b6c85a4-0ede-11d3-80a9-006008143e6f} 15 | static const aafUID_t AAFInterpolationDef_Linear = 16 | {0x5b6c85a4, 0x0ede, 0x11d3, {0x80, 0xa9, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f}}; 17 | 18 | 19 | //{5b6c85a5-0ede-11d3-80a9-006008143e6f} 20 | static const aafUID_t AAFInterpolationDef_Constant = 21 | {0x5b6c85a5, 0x0ede, 0x11d3, {0x80, 0xa9, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f}}; 22 | 23 | 24 | //{5b6c85a6-0ede-11d3-80a9-006008143e6f} 25 | static const aafUID_t AAFInterpolationDef_BSpline = 26 | {0x5b6c85a6, 0x0ede, 0x11d3, {0x80, 0xa9, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f}}; 27 | 28 | 29 | //{15829ec3-1f24-458a-960d-c65bb23c2aa1} 30 | static const aafUID_t AAFInterpolationDef_Log = 31 | {0x15829ec3, 0x1f24, 0x458a, {0x96, 0x0d, 0xc6, 0x5b, 0xb2, 0x3c, 0x2a, 0xa1}}; 32 | 33 | 34 | //{c09153f7-bd18-4e5a-ad09-cbdd654fa001} 35 | static const aafUID_t AAFInterpolationDef_Power = 36 | {0xc09153f7, 0xbd18, 0x4e5a, {0xad, 0x09, 0xcb, 0xdd, 0x65, 0x4f, 0xa0, 0x01}}; 37 | 38 | 39 | // AAF InterpolationDefinition legacy aliases 40 | // 41 | /* 42 | static const aafUID_t NoInterpolator = AAFInterpolationDef_None; 43 | static const aafUID_t LinearInterpolator = AAFInterpolationDef_Linear; 44 | static const aafUID_t ConstantInterpolator = AAFInterpolationDef_Constant; 45 | static const aafUID_t BSplineInterpolator = AAFInterpolationDef_BSpline; 46 | static const aafUID_t LogInterpolator = AAFInterpolationDef_Log; 47 | static const aafUID_t PowerInterpolator = AAFInterpolationDef_Power; 48 | */ 49 | #endif // ! __InterpolationDefinition_h__ 50 | -------------------------------------------------------------------------------- /test/expected/PT_AIFF_External.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-03 16:58:39.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-03 16:58:39.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x2dea6fac 0xe951 0x4b23 { 0x9f 0xfd 0x5a 0xda 0xb6 0x79 0x5f 0x43 } } 19 | 20 | 21 | 22 | Composition Name : PT_AIFF_External 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 158848200 (EditRate: 44100/1) 32 | Composition End (samples) : 158848200 33 | Composition End : 01:00:01:29 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: AIFC - 01 ch - 44100 Hz - 16 bits Length: 132304 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 46 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/res/1000hz-18dbs16b44.1k.aiff" 47 | 48 | 49 | Tracks & Clips : 50 | ================ 51 | 52 | 53 | AudioTrack[1] :: EditRate: 44100/1 (44100.00) Format: MONO Name: "Audio 1" 54 | └── Clip (1): Start: 158804100 Len: 44100 End: 158848200 SourceOffset: 44100 Channels: 1 55 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 56 | 57 | 58 | -------------------------------------------------------------------------------- /test/expected/PT_MXF_External.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 15:33:16.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 15:32:58.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x7936189a 0xe324 0x41ec { 0xac 0x9d 0xbf 0x3c 0x29 0xca 0x77 0xc9 } } 19 | 20 | 21 | 22 | Composition Name : PT_MXF_External 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 108060 (EditRate: 30/1) 32 | Composition End (samples) : 158848200 33 | Composition End : 01:00:02:00 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: PCM - 01 ch - 44100 Hz - 16 bits Length: 132301 Name: "PT_MXF_ExtepwwsVYMTxgrsYBFR-01" UniqueName: "PT_MXF_ExtepwwsVYMTxgrsYBFR-01" 46 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/PT_MXF_ExtezdxyVYMTxgrsWRHR.mxf" 47 | 48 | 49 | Tracks & Clips : 50 | ================ 51 | 52 | 53 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO Name: "Audio 1" 54 | └── Clip (1): Start: 158804100 Len: 44100 End: 158848200 SourceOffset: 44100 Channels: 1 55 | └── SourceFile [ch 1]: "PT_MXF_ExtepwwsVYMTxgrsYBFR-01" 56 | 57 | 58 | -------------------------------------------------------------------------------- /test/expected/PR_AIFF_Internal.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-13 16:38:16.00 4 | AAF ObjSpec Version : 1.2 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Adobe 11 | ProductName : Premiere Pro 12 | ProductVersion : 23.5.0.0 AAFVersionUnknown (0) 13 | ProductVersionString : 23.5.0 14 | ProductID : { 0x00000000 0x0000 0x0000 { 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-01-13 16:38:15.00 16 | ToolkitVersion : 1.2.0.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x235d3ba6 0xaa81 0x414d { 0x91 0xe0 0xcc 0x9d 0x35 0x80 0xc4 0x7e } } 19 | 20 | 21 | 22 | Composition Name : PR_AIFF_Internal 23 | 24 | TC EditRrate : 30000/1001 25 | TC FPS : 30 DF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00;00 30 | 31 | Composition End (EU) : 107922 (EditRate: 30000/1001) 32 | Composition End (samples) : 172847876 33 | Composition End : 01:00:01;00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: AIFC - 01 ch - 48000 Hz - 16 bits Length: 51260 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "EMBEDDED" 44 | └── Metadata: 45 | - Name: "Take" Text: "" 46 | - Name: "Scene" Text: "" 47 | 48 | 49 | Tracks & Clips : 50 | ================ 51 | 52 | VideoTrack[1] :: EditRate: 30000/1001 (29.97) 53 | 54 | 55 | AudioTrack[1] :: EditRate: 30000/1001 (29.97) Format: MONO Name: "Audio 1" 56 | └── Clip (1): Start: 172799828 Len: 48048 End: 172847876 SourceOffset: 1601 Channels: 1 Gain: +00.0 dB 57 | └── SourceFile [ch ALL]: "1000hz-18dbs16b44.1k.wav" 58 | 59 | 60 | -------------------------------------------------------------------------------- /test/expected/PR_Clip_length_beyond_EOF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-11-27 17:28:42.00 4 | AAF ObjSpec Version : 1.2 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Adobe 11 | ProductName : Premiere Pro 12 | ProductVersion : 23.5.0.0 AAFVersionUnknown (0) 13 | ProductVersionString : 23.5.0 14 | ProductID : { 0x00000000 0x0000 0x0000 { 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-11-27 17:28:42.00 16 | ToolkitVersion : 1.2.0.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xed9d9cf1 0x73d1 0x4f93 { 0x87 0x80 0xd8 0x33 0x9f 0xfa 0xba 0x3a } } 19 | 20 | 21 | 22 | Composition Name : PR_Clip_length_beyond_EOF 23 | 24 | TC EditRrate : 25/1 25 | TC FPS : 25 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 2 (EditRate: 25/1) 32 | Composition End (samples) : 3840 33 | Composition End : 00:00:00:02 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: WAVE - 01 ch - 48000 Hz - 16 bits Length: 3792 Name: "1000hz-18dbs16b44.1k-79ms.wav" UniqueName: "1000hz-18dbs16b44.1k-79ms.wav" 43 | ├── File: "EMBEDDED" 44 | └── Metadata: 45 | - Name: "Take" Text: "" 46 | - Name: "Scene" Text: "" 47 | 48 | 49 | Tracks & Clips : 50 | ================ 51 | 52 | VideoTrack[1] :: EditRate: 25/1 (25.00) 53 | 54 | 55 | AudioTrack[1] :: EditRate: 25/1 (25.00) Format: MONO Name: "Audio 1" 56 | └── Clip (1): Start: 0 Len: 3840 (out of range !) End: 3840 SourceOffset: 0 Channels: 1 Gain: +00.0 dB 57 | └── SourceFile [ch ALL]: "1000hz-18dbs16b44.1k-79ms.wav" 58 | 59 | 60 | -------------------------------------------------------------------------------- /test/expected/PR_WAV_Internal.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-13 16:37:36.00 4 | AAF ObjSpec Version : 1.2 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Adobe 11 | ProductName : Premiere Pro 12 | ProductVersion : 23.5.0.0 AAFVersionUnknown (0) 13 | ProductVersionString : 23.5.0 14 | ProductID : { 0x00000000 0x0000 0x0000 { 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-01-13 16:37:36.00 16 | ToolkitVersion : 1.2.0.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x30c5466a 0xb33e 0x470f { 0xb3 0x48 0x25 0xbc 0xd5 0xf2 0xec 0xa5 } } 19 | 20 | 21 | 22 | Composition Name : PR_WAV_Internal 23 | 24 | TC EditRrate : 30000/1001 25 | TC FPS : 30 DF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00;00 30 | 31 | Composition End (EU) : 107922 (EditRate: 30000/1001) 32 | Composition End (samples) : 172847876 33 | Composition End : 01:00:01;00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: WAVE - 01 ch - 48000 Hz - 16 bits Length: 51252 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "EMBEDDED" 44 | └── Metadata: 45 | - Name: "Take" Text: "" 46 | - Name: "Scene" Text: "" 47 | 48 | 49 | Tracks & Clips : 50 | ================ 51 | 52 | VideoTrack[1] :: EditRate: 30000/1001 (29.97) 53 | 54 | 55 | AudioTrack[1] :: EditRate: 30000/1001 (29.97) Format: MONO Name: "Audio 1" 56 | └── Clip (1): Start: 172799828 Len: 48048 End: 172847876 SourceOffset: 1601 Channels: 1 Gain: +00.0 dB 57 | └── SourceFile [ch ALL]: "1000hz-18dbs16b44.1k.wav" 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/AAFIface/Resolve.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2023-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #include 22 | #include 23 | 24 | #include 25 | #include 26 | #include 27 | #include 28 | 29 | #include 30 | #include 31 | 32 | 33 | #define debug( ... ) \ 34 | AAF_LOG( aafi->log, aafi, LOG_SRC_ID_AAF_IFACE, VERB_DEBUG, __VA_ARGS__ ) 35 | 36 | #define warning( ... ) \ 37 | AAF_LOG( aafi->log, aafi, LOG_SRC_ID_AAF_IFACE, VERB_WARNING, __VA_ARGS__ ) 38 | 39 | #define error( ... ) \ 40 | AAF_LOG( aafi->log, aafi, LOG_SRC_ID_AAF_IFACE, VERB_ERROR, __VA_ARGS__ ) 41 | 42 | 43 | 44 | int resolve_AAF( struct AAF_Iface *aafi ) 45 | { 46 | int probe = 0; 47 | 48 | if ( aafi->aafd->Identification.CompanyName && strncmp( aafi->aafd->Identification.CompanyName, "Blackmagic Design", strlen( "Blackmagic Design" ) ) == 0 ) { 49 | probe++; 50 | } 51 | 52 | if ( aafi->aafd->Identification.ProductName && strncmp( aafi->aafd->Identification.ProductName, "DaVinci Resolve", strlen( "DaVinci Resolve" ) ) == 0 ) { 53 | probe++; 54 | } 55 | 56 | if ( probe == 2 ) { 57 | return 1; 58 | } 59 | 60 | return 0; 61 | } 62 | -------------------------------------------------------------------------------- /test/expected/PR_WAV_External_sub_sub_directory_UTF8.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-11-27 17:35:12.00 4 | AAF ObjSpec Version : 1.2 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Adobe 11 | ProductName : Premiere Pro 12 | ProductVersion : 23.5.0.0 AAFVersionUnknown (0) 13 | ProductVersionString : 23.5.0 14 | ProductID : { 0x00000000 0x0000 0x0000 { 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-11-27 17:35:12.00 16 | ToolkitVersion : 1.2.0.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x475f3171 0x06b4 0x4a41 { 0x95 0x66 0xa3 0xe8 0xd5 0xfb 0x8f 0x7f } } 19 | 20 | 21 | 22 | Composition Name : PR_WAV_External_Subdir_UTF8 23 | 24 | TC EditRrate : 25/1 25 | TC FPS : 25 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 2 (EditRate: 25/1) 32 | Composition End (samples) : 3840 33 | Composition End : 00:00:00:02 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: WAVE - 01 ch - 48000 Hz - 16 bits Length: 3840 Name: "1000hz-18dbs16b44.1k-80ms.wav" UniqueName: "1000hz-18dbs16b44.1k-80ms.wav" 43 | ├── File: "./Média AAF/花/bb6deb92-04b8-4b2a-9d6f-cd840000007c.wav" 44 | └── Metadata: 45 | - Name: "Take" Text: "" 46 | - Name: "Scene" Text: "" 47 | 48 | 49 | Tracks & Clips : 50 | ================ 51 | 52 | VideoTrack[1] :: EditRate: 25/1 (25.00) 53 | 54 | 55 | AudioTrack[1] :: EditRate: 25/1 (25.00) Format: MONO Name: "Audio 1" 56 | └── Clip (1): Start: 0 Len: 3840 End: 3840 SourceOffset: 0 Channels: 1 Gain: +00.0 dB 57 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-80ms.wav" 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/AAFIface/MediaComposer.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #include 22 | #include 23 | 24 | #include 25 | #include 26 | #include 27 | #include 28 | 29 | #include 30 | #include 31 | 32 | 33 | #define debug( ... ) \ 34 | AAF_LOG( aafi->log, aafi, LOG_SRC_ID_AAF_IFACE, VERB_DEBUG, __VA_ARGS__ ) 35 | 36 | #define warning( ... ) \ 37 | AAF_LOG( aafi->log, aafi, LOG_SRC_ID_AAF_IFACE, VERB_WARNING, __VA_ARGS__ ) 38 | 39 | #define error( ... ) \ 40 | AAF_LOG( aafi->log, aafi, LOG_SRC_ID_AAF_IFACE, VERB_ERROR, __VA_ARGS__ ) 41 | 42 | 43 | 44 | int mediaComposer_AAF( struct AAF_Iface *aafi ) 45 | { 46 | int probe = 0; 47 | 48 | if ( aafi->aafd->Identification.CompanyName && strncmp( aafi->aafd->Identification.CompanyName, "Avid Technology, Inc.", strlen( "Avid Technology, Inc." ) ) == 0 ) { 49 | probe++; 50 | } 51 | 52 | if ( aafi->aafd->Identification.ProductName && strncmp( aafi->aafd->Identification.ProductName, "Avid Media Composer", strlen( "Avid Media Composer" ) ) == 0 ) { 53 | probe++; 54 | } 55 | 56 | if ( probe == 2 ) { 57 | return 1; 58 | } 59 | 60 | return 0; 61 | } 62 | -------------------------------------------------------------------------------- /src/AAFCore/AAFClass.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017-2023 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef __AAFClass_h__ 22 | #define __AAFClass_h__ 23 | 24 | /** 25 | * @brief AAF core functions. 26 | * @author Adrien Gesta-Fline 27 | * @version 0.1 28 | * @date 04 october 2017 29 | */ 30 | 31 | #include 32 | #include 33 | #include 34 | 35 | #include 36 | #include 37 | 38 | 39 | #define foreachClass( Class, Classes ) \ 40 | for( Class = Classes; Class != NULL; Class = Class->next ) 41 | 42 | #define foreachClassInheritance( Class, Classes ) \ 43 | for( Class = Classes; Class != NULL; Class = Class->Parent ) 44 | 45 | #define foreachPropertyDefinition( PDef, PDefs ) \ 46 | for( PDef = PDefs; PDef != NULL; PDef = PDef->next ) 47 | 48 | 49 | 50 | int aafclass_classExists( AAF_Data *aafd, aafUID_t *ClassID ); 51 | 52 | aafClass * aafclass_defineNewClass( AAF_Data *aafd, const aafUID_t *id, uint8_t isConcrete, aafClass *parent ); 53 | 54 | aafClass * aafclass_getClassByID( AAF_Data *aafd, const aafUID_t *id ); 55 | 56 | aafPropertyDef * aafclass_getPropertyDefinitionByID( aafClass *Classes, aafPID_t PID ); 57 | 58 | void aafclass_printClasses( aafClass *Class, int depth ); // TODO move to AAFDump ? 59 | 60 | int aafclass_setDefaultClasses( AAF_Data *aafd ); 61 | 62 | 63 | #endif // ! __AAFClass_h__ 64 | -------------------------------------------------------------------------------- /test/expected/DR_Multichannel_stereo_single_source.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 23:02:12.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Blackmagic Design 11 | ProductName : DaVinci Resolve 12 | ProductVersion : 18.5.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0x64a8d1aa 0x7ffd 0x0000 { 0x44 0x00 0x2f 0x00 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-01-09 23:02:12.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win32) 18 | GenerationAUID : { 0xea1f6f4b 0xc31f 0x4880 { 0xb4 0x9c 0xbb 0xd0 0x05 0xdd 0x19 0x8a } } 19 | 20 | 21 | 22 | Composition Name : DR_Multichannel_stereo_single_source 23 | 24 | TC EditRrate : 24/1 25 | TC FPS : 24 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 14472000 (EditRate: 48000/1) 32 | Composition End (samples) : 13296150 33 | Composition End : 00:05:01:12 34 | 35 | Dominant Sample Rate : 22050 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: WAVE - 02 ch - 22050 Hz - 16 bits Length: 43117 Name: "stereo-identif" UniqueName: "stereo-identif_1" 43 | └── File: "file://localhost/C:/Users/user/Desktop/res/stereo-identif.wav" 44 | 45 | Audio[2] :: Format: WAVE - 02 ch - 22050 Hz - 16 bits Length: 43117 Name: "stereo-identif" UniqueName: "stereo-identif" 46 | └── File: "file://localhost/C:/Users/user/Desktop/res/stereo-identif.wav" 47 | 48 | 49 | Tracks & Clips : 50 | ================ 51 | 52 | VideoTrack[1] :: EditRate: 24/1 (24.00) 53 | 54 | 55 | AudioTrack[1] :: EditRate: 48000/1 (48000.00) Format: STEREO Name: "Audio 1" 56 | └── Clip (1): Start: 13215779 Len: 80238 End: 13296017 SourceOffset: 1837 Channels: 2 57 | ├── SourceFile [ch 1]: "stereo-identif" 58 | └── SourceFile [ch 2]: "stereo-identif_1" 59 | 60 | 61 | -------------------------------------------------------------------------------- /test/expected/MC_TC_24.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 21:50:11.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 21:50:11.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x4b3f8fd7 0x0c56 0x499b { 0xaf 0xe0 0xe3 0x33 0xbd 0xe4 0x10 0x36 } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_24.Exporté.01 23 | 24 | TC EditRrate : 24/1 25 | TC FPS : 24 NDF 26 | 27 | Composition Start (EU) : 86400 28 | Composition Start (samples) : 172800000 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 86712 (EditRate: 24/1) 32 | Composition End (samples) : 173424000 33 | Composition End : 01:00:13:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03:00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A91FA88295A.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 24/1 (24.00) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 24/1 (24.00) Format: MONO 57 | └── Clip (1): Start: 01:00:10:00 Len: 00:00:03:00 End: 01:00:13:00 SourceOffset: 00:00:00:00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 24/1 (24.00) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_25.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 21:51:01.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 21:51:01.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x2a3f8287 0x540b 0x4845 { 0xb3 0x40 0xe5 0x37 0x80 0xd3 0x82 0xf7 } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_25.Exporté.01 23 | 24 | TC EditRrate : 25/1 25 | TC FPS : 25 NDF 26 | 27 | Composition Start (EU) : 90000 28 | Composition Start (samples) : 172800000 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 90325 (EditRate: 25/1) 32 | Composition End (samples) : 173424000 33 | Composition End : 01:00:13:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03:00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A91FCEF2B6A.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 25/1 (25.00) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 25/1 (25.00) Format: MONO 57 | └── Clip (1): Start: 01:00:10:00 Len: 00:00:03:00 End: 01:00:13:00 SourceOffset: 00:00:00:00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 25/1 (25.00) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_50.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 22:20:35.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 22:20:35.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xd26ba408 0x1e17 0x4b70 { 0x98 0x7c 0xb9 0x32 0x0d 0x13 0x1e 0xf7 } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_50.Exporté.01 23 | 24 | TC EditRrate : 50/1 25 | TC FPS : 50 NDF 26 | 27 | Composition Start (EU) : 180000 28 | Composition Start (samples) : 172800000 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 180650 (EditRate: 50/1) 32 | Composition End (samples) : 173424000 33 | Composition End : 01:00:13:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03:00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A924FF1087A.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 50/1 (50.00) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 50/1 (50.00) Format: MONO 57 | └── Clip (1): Start: 01:00:10:00 Len: 00:00:03:00 End: 01:00:13:00 SourceOffset: 00:00:00:00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 50/1 (50.00) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_30_DF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 22:21:51.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 22:21:51.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xb16d1dc7 0xa63e 0x46fd { 0x9c 0xdf 0x68 0x3f 0x54 0x72 0xd5 0x48 } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_30_DF.Exporté.02 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 DF 26 | 27 | Composition Start (EU) : 107892 28 | Composition Start (samples) : 172627200 29 | Composition Start : 01:00:00;00 30 | 31 | Composition End (EU) : 108282 (EditRate: 30/1) 32 | Composition End (samples) : 173251200 33 | Composition End : 01:00:13;00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03;00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A924A2102EA.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 30/1 (30.00) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO 57 | └── Clip (1): Start: 01:00:10;00 Len: 00:00:03;00 End: 01:00:13;00 SourceOffset: 00:00:00;00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 30/1 (30.00) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_60_DF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 22:26:01.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 22:26:01.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x4af2b472 0xd879 0x40f0 { 0x93 0x9e 0x7b 0x63 0x63 0xd2 0x21 0x24 } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_60_DF.Exporté.01 23 | 24 | TC EditRrate : 60/1 25 | TC FPS : 60 DF 26 | 27 | Composition Start (EU) : 215784 28 | Composition Start (samples) : 172627200 29 | Composition Start : 01:00:00;00 30 | 31 | Composition End (EU) : 216564 (EditRate: 60/1) 32 | Composition End (samples) : 173251200 33 | Composition End : 01:00:13;00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03;00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A925E142ACA.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 60/1 (60.00) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 60/1 (60.00) Format: MONO 57 | └── Clip (1): Start: 01:00:10;00 Len: 00:00:03;00 End: 01:00:13;00 SourceOffset: 00:00:00;00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 60/1 (60.00) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_100.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 22:27:10.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 22:27:10.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x7191554d 0x35e0 0x407f { 0xb0 0xe1 0xbb 0x44 0xb2 0xbc 0x10 0xca } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_100.Exporté.01 23 | 24 | TC EditRrate : 100/1 25 | TC FPS : 100 NDF 26 | 27 | Composition Start (EU) : 360000 28 | Composition Start (samples) : 172800000 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 361300 (EditRate: 100/1) 32 | Composition End (samples) : 173424000 33 | Composition End : 01:00:13:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03:00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A92634D1AAA.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 100/1 (100.00) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 100/1 (100.00) Format: MONO 57 | └── Clip (1): Start: 01:00:10:00 Len: 00:00:03:00 End: 01:00:13:00 SourceOffset: 00:00:00:00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 100/1 (100.00) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_30_NDF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 22:18:32.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 22:18:32.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x002f9135 0x8f0f 0x41d3 { 0xa3 0x9c 0xf9 0x2a 0xa4 0x79 0x32 0xf3 } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_30_NDF.Exporté.01 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 108000 28 | Composition Start (samples) : 172800000 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 108390 (EditRate: 30/1) 32 | Composition End (samples) : 173424000 33 | Composition End : 01:00:13:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03:00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A924A2102EA.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 30/1 (30.00) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO 57 | └── Clip (1): Start: 01:00:10:00 Len: 00:00:03:00 End: 01:00:13:00 SourceOffset: 00:00:00:00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 30/1 (30.00) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_60_NDF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 22:25:35.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 22:25:35.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xecd9458d 0x4110 0x473c { 0xbc 0xe9 0x64 0xd0 0x65 0xd3 0xf1 0xf8 } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_60_NDF.Exporté.01 23 | 24 | TC EditRrate : 60/1 25 | TC FPS : 60 NDF 26 | 27 | Composition Start (EU) : 216000 28 | Composition Start (samples) : 172800000 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 216780 (EditRate: 60/1) 32 | Composition End (samples) : 173424000 33 | Composition End : 01:00:13:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03:00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A925E142ACA.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 60/1 (60.00) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 60/1 (60.00) Format: MONO 57 | └── Clip (1): Start: 01:00:10:00 Len: 00:00:03:00 End: 01:00:13:00 SourceOffset: 00:00:00:00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 60/1 (60.00) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_120_DF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 22:31:32.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 22:31:32.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x73aed159 0xcf91 0x4e7b { 0x87 0xe8 0x93 0xa3 0x25 0x88 0xc3 0xc4 } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_120_DF.Exporté.01 23 | 24 | TC EditRrate : 120/1 25 | TC FPS : 120 DF 26 | 27 | Composition Start (EU) : 431568 28 | Composition Start (samples) : 172627200 29 | Composition Start : 01:00:00;00 30 | 31 | Composition End (EU) : 433128 (EditRate: 120/1) 32 | Composition End (samples) : 173251200 33 | Composition End : 01:00:13;00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03;00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A926D3E07FA.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 120/1 (120.00) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 120/1 (120.00) Format: MONO 57 | └── Clip (1): Start: 01:00:10;00 Len: 00:00:03;00 End: 01:00:13;00 SourceOffset: 00:00:00;00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 120/1 (120.00) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /include/libaaf/AAFIEssenceFile.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef __AAFIEssenceFile_h__ 22 | #define __AAFIEssenceFile_h__ 23 | 24 | /** 25 | * @file LibAAF/AAFIface/AAFIEssenceFile.h 26 | * @brief AAF processing 27 | * @author Adrien Gesta-Fline 28 | * @version 0.1 29 | * @date 27 june 2024 30 | * 31 | * @ingroup AAFIface 32 | * @addtogroup AAFIface 33 | * @{ 34 | */ 35 | 36 | #include 37 | 38 | 39 | 40 | char * aafi_locate_external_essence_file( AAF_Iface *aafi, const char *original_uri_filepath, const char *commonPathPart, const char *search_location ); 41 | 42 | /** 43 | * Extract audio essence file. 44 | * 45 | * @param aafi XXXXXX 46 | */ 47 | int aafi_extractAudioEssenceFile( AAF_Iface *aafi, aafiAudioEssenceFile *audioEssenceFile, enum aafiExtractFormat extractFormat, const char *outfilepath, uint64_t sampleOffset, uint64_t sampleLength, const char *forcedFileName, char **usable_file_path ); 48 | 49 | int aafi_extractAudioClip( AAF_Iface *aafi, aafiAudioClip *audioClip, enum aafiExtractFormat extractFormat, const char *outfilepath ); 50 | 51 | int aafi_parse_audio_essence( AAF_Iface *aafi, aafiAudioEssenceFile *audioEssenceFile ); 52 | 53 | int aafi_build_unique_audio_essence_name( AAF_Iface *aafi, aafiAudioEssenceFile *audioEssenceFile ); 54 | 55 | aafiAudioEssencePointer * aafi_audioEssencePointer_exists_before( AAF_Iface *aafi, aafiAudioEssencePointer *audioEssencePointerList ); 56 | 57 | /** 58 | * @} 59 | */ 60 | #endif // !__AAFIEssenceFile_h__ 61 | -------------------------------------------------------------------------------- /test/expected/MC_TC_120_NDF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 22:31:07.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 22:31:07.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xd152b3f5 0x2266 0x4ccc { 0x96 0xc7 0x9f 0x75 0x72 0x6a 0xb2 0x2c } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_120_NDF.Exporté.01 23 | 24 | TC EditRrate : 120/1 25 | TC FPS : 120 NDF 26 | 27 | Composition Start (EU) : 432000 28 | Composition Start (samples) : 172800000 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 433560 (EditRate: 120/1) 32 | Composition End (samples) : 173424000 33 | Composition End : 01:00:13:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03:00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A926D3E07FA.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 120/1 (120.00) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 120/1 (120.00) Format: MONO 57 | └── Clip (1): Start: 01:00:10:00 Len: 00:00:03:00 End: 01:00:13:00 SourceOffset: 00:00:00:00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 120/1 (120.00) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_Clip_Mute.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-15 01:14:43.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-15 01:14:43.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xaf8aee3d 0xb2aa 0x460c { 0xaa 0x9e 0x9f 0x6e 0xbc 0xc7 0x59 0xe1 } } 19 | 20 | 21 | 22 | Composition Name : MC_Mute.Exporté.01 23 | 24 | TC EditRrate : 30000/1001 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 108000 28 | Composition Start (samples) : 172972800 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 108030 (EditRate: 30000/1001) 32 | Composition End (samples) : 173020848 33 | Composition End : 01:00:01:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 144144 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A40B01E984A.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 30000/1001 (29.97) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 30000/1001 (29.97) Format: MONO 57 | └── Clip (1): Start: 172972800 Len: 48048 End: 173020848 SourceOffset: 48048 Channels: 1 Mute: MUTE 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 30000/1001 (29.97) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_23.976.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 21:48:32.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 21:48:32.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x128eead1 0x3f28 0x4440 { 0x97 0xdb 0x3b 0xc8 0x93 0xb4 0x1b 0x8e } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_23.976.Exporté.01 23 | 24 | TC EditRrate : 24000/1001 25 | TC FPS : 24 NDF 26 | 27 | Composition Start (EU) : 86400 28 | Composition Start (samples) : 172972795 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 86712 (EditRate: 24000/1001) 32 | Composition End (samples) : 173597419 33 | Composition End : 01:00:13:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03:00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A91EF8D674A.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 24000/1001 (23.98) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 24000/1001 (23.98) Format: MONO 57 | └── Clip (1): Start: 01:00:10:00 Len: 00:00:03:00 End: 01:00:13:00 SourceOffset: 00:00:00:00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 24000/1001 (23.98) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_29.97_DF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 21:54:27.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 21:54:27.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xfec8e739 0xb000 0x468f { 0xb6 0x77 0xda 0xdc 0xae 0x06 0x08 0xd1 } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_29.97_DF.Exporté.01 23 | 24 | TC EditRrate : 30000/1001 25 | TC FPS : 30 DF 26 | 27 | Composition Start (EU) : 107892 28 | Composition Start (samples) : 172799828 29 | Composition Start : 01:00:00;00 30 | 31 | Composition End (EU) : 108282 (EditRate: 30000/1001) 32 | Composition End (samples) : 173424452 33 | Composition End : 01:00:13;00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03;00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A92001C747A.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 30000/1001 (29.97) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 30000/1001 (29.97) Format: MONO 57 | └── Clip (1): Start: 01:00:10;00 Len: 00:00:03;00 End: 01:00:13;00 SourceOffset: 00:00:00;00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 30000/1001 (29.97) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_59.94_DF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 22:24:07.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 22:24:07.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xa90bec17 0x70d8 0x4a1f { 0x9e 0xa3 0xa2 0x10 0xfd 0x5d 0x24 0x08 } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_59.94_DF.Exporté.01 23 | 24 | TC EditRrate : 60000/1001 25 | TC FPS : 60 DF 26 | 27 | Composition Start (EU) : 215784 28 | Composition Start (samples) : 172799828 29 | Composition Start : 01:00:00;00 30 | 31 | Composition End (EU) : 216564 (EditRate: 60000/1001) 32 | Composition End (samples) : 173424452 33 | Composition End : 01:00:13;00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03;00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A92589ED78A.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 60000/1001 (59.94) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 60000/1001 (59.94) Format: MONO 57 | └── Clip (1): Start: 01:00:10;00 Len: 00:00:03;00 End: 01:00:13;00 SourceOffset: 00:00:00;00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 60000/1001 (59.94) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_119.88_DF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 22:29:34.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 22:29:34.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x205472dc 0x1a77 0x434d { 0x84 0xd7 0xfe 0x72 0x93 0xbc 0x4e 0x1a } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_119.88_DF.Exporté.01 23 | 24 | TC EditRrate : 11988/100 25 | TC FPS : 120 DF 26 | 27 | Composition Start (EU) : 431568 28 | Composition Start (samples) : 172800003 29 | Composition Start : 01:00:00;00 30 | 31 | Composition End (EU) : 433128 (EditRate: 11988/100) 32 | Composition End (samples) : 173424628 33 | Composition End : 01:00:13;00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:02;119 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A9268189BAA.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 11988/100 (119.88) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 11988/100 (119.88) Format: MONO 57 | └── Clip (1): Start: 01:00:10;00 Len: 00:00:03;00 End: 01:00:13;00 SourceOffset: 00:00:00;00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 11988/100 (119.88) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_119.88_NDF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 22:29:07.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 22:29:07.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xdc608d09 0x6793 0x4f38 { 0x93 0x78 0x40 0x34 0x49 0x61 0x67 0x52 } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_119.88_NDF.Exporté.01 23 | 24 | TC EditRrate : 11988/100 25 | TC FPS : 120 NDF 26 | 27 | Composition Start (EU) : 432000 28 | Composition Start (samples) : 172972976 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 433560 (EditRate: 11988/100) 32 | Composition End (samples) : 173597601 33 | Composition End : 01:00:13:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:02:119 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A9268189BAA.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 11988/100 (119.88) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 11988/100 (119.88) Format: MONO 57 | └── Clip (1): Start: 01:00:10:00 Len: 00:00:03:00 End: 01:00:13:00 SourceOffset: 00:00:00:00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 11988/100 (119.88) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_29.97_NDF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 21:53:10.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 21:53:10.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xda71781f 0x8f9d 0x40b6 { 0xa3 0x75 0x81 0xd5 0xab 0x32 0x00 0x3e } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_29.97_NDF.Exporté.01 23 | 24 | TC EditRrate : 30000/1001 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 108000 28 | Composition Start (samples) : 172972800 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 108390 (EditRate: 30000/1001) 32 | Composition End (samples) : 173597424 33 | Composition End : 01:00:13:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03:00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A92001C747A.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 30000/1001 (29.97) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 30000/1001 (29.97) Format: MONO 57 | └── Clip (1): Start: 01:00:10:00 Len: 00:00:03:00 End: 01:00:13:00 SourceOffset: 00:00:00:00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 30000/1001 (29.97) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_TC_59.94_NDF.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 22:23:40.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 22:23:40.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x34db2e64 0x9598 0x4425 { 0xb3 0xe6 0xb7 0xf6 0x81 0xc3 0xd3 0x02 } } 19 | 20 | 21 | 22 | Composition Name : MC_TC_59.94_NDF.Exporté.01 23 | 24 | TC EditRrate : 60000/1001 25 | TC FPS : 60 NDF 26 | 27 | Composition Start (EU) : 216000 28 | Composition Start (samples) : 172972800 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 216780 (EditRate: 60000/1001) 32 | Composition End (samples) : 173597424 33 | Composition End : 01:00:13:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 00:00:03:00 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A92589ED78A.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 60000/1001 (59.94) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 60000/1001 (59.94) Format: MONO 57 | └── Clip (1): Start: 01:00:10:00 Len: 00:00:03:00 End: 01:00:13:00 SourceOffset: 00:00:00:00 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 60000/1001 (59.94) Format: Unknwn 62 | 63 | -------------------------------------------------------------------------------- /test/expected/MC_Track_Solo_Mute.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-15 13:22:14.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-15 13:22:14.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x354f366d 0x0a56 0x4836 { 0x8d 0x6d 0xfa 0xd3 0xb9 0xa5 0xb3 0x49 } } 19 | 20 | 21 | 22 | Composition Name : MC_Track_Solo_Mute.Exporté.01 23 | 24 | TC EditRrate : 30000/1001 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 108000 28 | Composition Start (samples) : 172972800 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 108030 (EditRate: 30000/1001) 32 | Composition End (samples) : 173020848 33 | Composition End : 01:00:01:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 144144 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A40B01E984A.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 30000/1001 (29.97) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 30000/1001 (29.97) Format: MONO Solo: SOLO 57 | └── Clip (1): Start: 172972800 Len: 48048 End: 173020848 SourceOffset: 48048 Channels: 1 58 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | 60 | 61 | AudioTrack[2] :: EditRate: 30000/1001 (29.97) Format: MONO Mute: MUTE 62 | └── Clip (1): Start: 172972800 Len: 48048 End: 173020848 SourceOffset: 48048 Channels: 1 63 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 64 | 65 | 66 | -------------------------------------------------------------------------------- /test/units/common.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifdef _WIN32 22 | #include 23 | #include // _O_U8TEXT 24 | #include 25 | #endif 26 | 27 | #include 28 | #include 29 | 30 | #define TEST_ERROR_STR "\x1b[38;5;242m%05i "TREE_LINE" \x1b[0m[\x1b[38;5;124mer\x1b[0m] " 31 | #define TEST_PASSED_STR "\x1b[38;5;242m%05i "TREE_LINE" \x1b[0m[\x1b[92mok\x1b[0m] " 32 | 33 | 34 | 35 | #ifdef _WIN32 36 | #ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING 37 | #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 38 | #endif 39 | 40 | #define INIT_WINDOWS_CONSOLE() \ 41 | HANDLE hOut = GetStdHandle( STD_OUTPUT_HANDLE );\ 42 | DWORD dwMode = 0;\ 43 | GetConsoleMode( hOut, &dwMode );\ 44 | SetConsoleMode( hOut, (dwMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING) );\ 45 | SetConsoleOutputCP(65001);\ 46 | _setmode( _fileno(stdout), _O_U8TEXT ); 47 | #endif 48 | 49 | 50 | #ifdef __MINGW32__ 51 | #define WPRIws L"ls" // wchar_t* 52 | #define WPRIs L"s" // char* 53 | 54 | #define SET_LOCALE() setlocale( LC_ALL, "" ); 55 | 56 | #define TEST_LOG( ... )\ 57 | {\ 58 | size_t len = (size_t)snprintf( NULL, 0, __VA_ARGS__ );\ 59 | char *str = malloc( len +1 );\ 60 | laaf_util_snprintf_realloc( &str, &len, 0, __VA_ARGS__ );\ 61 | wchar_t *wstr = laaf_util_windows_utf8toutf16( str );\ 62 | fwprintf( stdout, L"%"WPRIws, wstr );\ 63 | free( wstr );\ 64 | } 65 | #else 66 | #define WPRIws L"ls" // wchar_t* 67 | #define WPRIs L"S" // char* 68 | 69 | #ifdef _MSC_VER 70 | #define SET_LOCALE() setlocale( LC_ALL, ".utf8" ); 71 | #else 72 | #define SET_LOCALE() setlocale( LC_ALL, "" ); 73 | #endif 74 | 75 | #define TEST_LOG( ... )\ 76 | fprintf( stdout, __VA_ARGS__ ); 77 | #endif 78 | -------------------------------------------------------------------------------- /doc/theme/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | $projectname: $title 10 | $title 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | $treeview 20 | $search 21 | $mathjax 22 | 23 | $extrastylesheet 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 | 32 |
33 | 34 | 35 |
36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 48 | 49 | 50 | 51 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 |
44 |
$projectname $projectnumber 45 |
46 |
$projectbrief
47 |
52 |
$projectbrief
53 |
$searchbox
$searchbox
71 |
72 | 73 | 74 | -------------------------------------------------------------------------------- /test/expected/PT_Multichannel_stereo_multi_source.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 21:46:06.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 21:45:57.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xfb410af8 0x631d 0x4a32 { 0x97 0x0b 0x06 0xe3 0x41 0xe5 0x0a 0x4b } } 19 | 20 | 21 | 22 | Composition Name : PT_Multichannel_stereo_multi_source 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 9054 (EditRate: 30/1) 32 | Composition End (samples) : 13309380 33 | Composition End : 00:05:01:24 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Sample accurate edit" UniqueName: "Sample accurate edit_1" 46 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/PT_Multichannel_stereo_multi_source/PT_MultichacsgdMFRRgymmQRBB.wav" 47 | 48 | Audio[2] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Sample accurate edit" UniqueName: "Sample accurate edit" 49 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/PT_Multichannel_stereo_multi_source/PT_MultichaydzzJFRRgqmmQRBB.wav" 50 | 51 | Audio[3] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 88201 Name: "stereo-identif-01.R" UniqueName: "stereo-identif-01.R" 52 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/PT_Multichannel_stereo_multi_source/PT_MultichapyccMFRRgvmmQRBB.wav" 53 | 54 | Audio[4] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 88201 Name: "stereo-identif-01.L" UniqueName: "stereo-identif-01.L" 55 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/PT_Multichannel_stereo_multi_source/PT_MultichammsyJFRRzgmmQRBB.wav" 56 | 57 | 58 | Tracks & Clips : 59 | ================ 60 | 61 | 62 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: STEREO Name: "Audio 1" 63 | └── Clip (1): Start: 13230000 Len: 79380 End: 13309380 SourceOffset: 2940 Channels: 2 64 | ├── SourceFile [ch 1]: "stereo-identif-01.L" 65 | └── SourceFile [ch 1]: "stereo-identif-01.R" 66 | 67 | 68 | -------------------------------------------------------------------------------- /test/expected/MC_Audio_Pan.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 20:22:07.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 20:22:07.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x39f6cfeb 0xa9d9 0x42ef { 0xbf 0x82 0xa8 0x01 0xd3 0xc5 0xda 0x53 } } 19 | 20 | 21 | 22 | Composition Name : MC_Pan.Exporté.04 23 | 24 | TC EditRrate : 30000/1001 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 108000 28 | Composition Start (samples) : 172972800 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 108060 (EditRate: 30000/1001) 32 | Composition End (samples) : 173068896 33 | Composition End : 01:00:02:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 144144 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A40B01E984A.mxf" 44 | └── Metadata: 45 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 46 | - Name: "Shoot Date" Text: "2024-01-03" 47 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 48 | 49 | 50 | Tracks & Clips : 51 | ================ 52 | 53 | VideoTrack[1] :: EditRate: 30000/1001 (29.97) 54 | 55 | 56 | AudioTrack[1] :: EditRate: 30000/1001 (29.97) Format: MONO Pan: (A) 57 | ├── Clip (1): Start: 172972800 Len: 48048 End: 173020848 SourceOffset: 48048 Channels: 1 58 | │ └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 59 | │ 60 | ├── Clip (2): Start: 173020848 Len: 48048 End: 173068896 SourceOffset: 48048 Channels: 1 61 | │ └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 62 | │ 63 | └── Track Pan Automation ───────────── 64 | _time: 0.000000 _value: 0.000000 65 | _time: 0.483333 _value: 0.000000 66 | _time: 0.500000 _value: 0.500000 67 | _time: 0.633333 _value: 1.000000 68 | _time: 0.800000 _value: 0.000000 69 | _time: 0.983333 _value: 0.500000 70 | 71 | AudioTrack[2] :: EditRate: 30000/1001 (29.97) Format: MONO Pan: 1.00 (R) 72 | └── Clip (1): Start: 172972800 Len: 48048 End: 173020848 SourceOffset: 48048 Channels: 1 73 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 74 | 75 | 76 | -------------------------------------------------------------------------------- /include/libaaf/AAFDefs/AAFDataDefs.h: -------------------------------------------------------------------------------- 1 | #ifndef __DataDefinition_h__ 2 | #define __DataDefinition_h__ 3 | 4 | #include 5 | 6 | // AAF well-known DataDefinition instances 7 | // 8 | 9 | //{01030202-0100-0000-060e-2b3404010101} 10 | static const aafUID_t AAFDataDef_Picture = 11 | {0x01030202, 0x0100, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 12 | 13 | 14 | //{6f3c8ce1-6cef-11d2-807d-006008143e6f} 15 | static const aafUID_t AAFDataDef_LegacyPicture = 16 | {0x6f3c8ce1, 0x6cef, 0x11d2, {0x80, 0x7d, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f}}; 17 | 18 | 19 | //{05cba731-1daa-11d3-80ad-006008143e6f} 20 | static const aafUID_t AAFDataDef_Matte = 21 | {0x05cba731, 0x1daa, 0x11d3, {0x80, 0xad, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f}}; 22 | 23 | 24 | //{05cba732-1daa-11d3-80ad-006008143e6f} 25 | static const aafUID_t AAFDataDef_PictureWithMatte = 26 | {0x05cba732, 0x1daa, 0x11d3, {0x80, 0xad, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f}}; 27 | 28 | 29 | //{01030202-0200-0000-060e-2b3404010101} 30 | static const aafUID_t AAFDataDef_Sound = 31 | {0x01030202, 0x0200, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 32 | 33 | 34 | //{78e1ebe1-6cef-11d2-807d-006008143e6f} 35 | static const aafUID_t AAFDataDef_LegacySound = 36 | {0x78e1ebe1, 0x6cef, 0x11d2, {0x80, 0x7d, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f}}; 37 | 38 | 39 | //{01030201-0100-0000-060e-2b3404010101} 40 | static const aafUID_t AAFDataDef_Timecode = 41 | {0x01030201, 0x0100, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 42 | 43 | 44 | //{7f275e81-77e5-11d2-807f-006008143e6f} 45 | static const aafUID_t AAFDataDef_LegacyTimecode = 46 | {0x7f275e81, 0x77e5, 0x11d2, {0x80, 0x7f, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f}}; 47 | 48 | 49 | //{d2bb2af0-d234-11d2-89ee-006097116212} 50 | static const aafUID_t AAFDataDef_Edgecode = 51 | {0xd2bb2af0, 0xd234, 0x11d2, {0x89, 0xee, 0x00, 0x60, 0x97, 0x11, 0x62, 0x12}}; 52 | 53 | 54 | //{01030201-1000-0000-060e-2b3404010101} 55 | static const aafUID_t AAFDataDef_DescriptiveMetadata = 56 | {0x01030201, 0x1000, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 57 | 58 | 59 | //{01030203-0100-0000-060e-2b3404010105} 60 | static const aafUID_t AAFDataDef_Auxiliary = 61 | {0x01030203, 0x0100, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x05}}; 62 | 63 | 64 | //{851419d0-2e4f-11d3-8a5b-0050040ef7d2} 65 | static const aafUID_t AAFDataDef_Unknown = 66 | {0x851419d0, 0x2e4f, 0x11d3, {0x8a, 0x5b, 0x00, 0x50, 0x04, 0x0e, 0xf7, 0xd2}}; 67 | 68 | 69 | // AAF DataDefinition legacy aliases 70 | // 71 | 72 | /* 73 | static const aafUID_t DDEF_Picture = AAFDataDef_LegacyPicture; 74 | static const aafUID_t DDEF_Matte = AAFDataDef_Matte; 75 | static const aafUID_t DDEF_PictureWithMatte = AAFDataDef_PictureWithMatte; 76 | static const aafUID_t DDEF_Sound = AAFDataDef_LegacySound; 77 | static const aafUID_t DDEF_Timecode = AAFDataDef_LegacyTimecode; 78 | static const aafUID_t DDEF_Edgecode = AAFDataDef_Edgecode; 79 | static const aafUID_t DDEF_Unknown = AAFDataDef_Unknown; 80 | */ 81 | #endif // ! __DataDefinition_h__ 82 | -------------------------------------------------------------------------------- /test/expected/DR_Multichannel_5.1_single_source.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 22:45:19.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Blackmagic Design 11 | ProductName : DaVinci Resolve 12 | ProductVersion : 18.5.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0x64a8d1aa 0x7ffd 0x0000 { 0x09 0x04 0x58 0x05 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-01-09 22:45:19.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win32) 18 | GenerationAUID : { 0x72d24b02 0x8ac1 0x4977 { 0x84 0xe0 0xe4 0x19 0xcf 0xd6 0x2c 0x6f } } 19 | 20 | 21 | 22 | Composition Name : DR_Multichannel_5.1_single_source 23 | 24 | TC EditRrate : 24/1 25 | TC FPS : 24 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 14720000 (EditRate: 48000/1) 32 | Composition End (samples) : 13524000 33 | Composition End : 00:05:06:16 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: WAVE - 06 ch - 44100 Hz - 16 bits Length: 311952 Name: "5" UniqueName: "5_5" 43 | └── File: "file://localhost/C:/Users/user/Desktop/res/5.1-SMPTE-channel-identif.wav" 44 | 45 | Audio[2] :: Format: WAVE - 06 ch - 44100 Hz - 16 bits Length: 311952 Name: "5" UniqueName: "5_4" 46 | └── File: "file://localhost/C:/Users/user/Desktop/res/5.1-SMPTE-channel-identif.wav" 47 | 48 | Audio[3] :: Format: WAVE - 06 ch - 44100 Hz - 16 bits Length: 311952 Name: "5" UniqueName: "5_3" 49 | └── File: "file://localhost/C:/Users/user/Desktop/res/5.1-SMPTE-channel-identif.wav" 50 | 51 | Audio[4] :: Format: WAVE - 06 ch - 44100 Hz - 16 bits Length: 311952 Name: "5" UniqueName: "5_2" 52 | └── File: "file://localhost/C:/Users/user/Desktop/res/5.1-SMPTE-channel-identif.wav" 53 | 54 | Audio[5] :: Format: WAVE - 06 ch - 44100 Hz - 16 bits Length: 311952 Name: "5" UniqueName: "5_1" 55 | └── File: "file://localhost/C:/Users/user/Desktop/res/5.1-SMPTE-channel-identif.wav" 56 | 57 | Audio[6] :: Format: WAVE - 06 ch - 44100 Hz - 16 bits Length: 311952 Name: "5" UniqueName: "5" 58 | └── File: "file://localhost/C:/Users/user/Desktop/res/5.1-SMPTE-channel-identif.wav" 59 | 60 | 61 | Tracks & Clips : 62 | ================ 63 | 64 | VideoTrack[1] :: EditRate: 24/1 (24.00) 65 | 66 | 67 | AudioTrack[1] :: EditRate: 48000/1 (48000.00) Format: 5.1 Name: "Audio 1" 68 | └── Clip (1): Start: 13215779 Len: 306787 End: 13522566 SourceOffset: 1837 Channels: 6 69 | ├── SourceFile [ch 1]: "5" 70 | ├── SourceFile [ch 2]: "5_1" 71 | ├── SourceFile [ch 3]: "5_2" 72 | ├── SourceFile [ch 4]: "5_3" 73 | ├── SourceFile [ch 5]: "5_4" 74 | └── SourceFile [ch 6]: "5_5" 75 | 76 | 77 | -------------------------------------------------------------------------------- /include/libaaf/log.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef laaf_log_h__ 22 | #define laaf_log_h__ 23 | 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include // PRIi64 PRIu64 29 | #include 30 | 31 | 32 | #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) 33 | 34 | enum log_source_id { 35 | LOG_SRC_ID_LIB_CFB, 36 | LOG_SRC_ID_AAF_CORE, 37 | LOG_SRC_ID_AAF_IFACE, 38 | LOG_SRC_ID_TRACE, 39 | LOG_SRC_ID_DUMP 40 | }; 41 | 42 | typedef enum verbosityLevel_e { 43 | VERB_QUIET = 0, 44 | VERB_ERROR, 45 | VERB_WARNING, 46 | VERB_DEBUG, 47 | MAX_VERB 48 | } verbosityLevel_e; 49 | 50 | #define VERB_SUCCESS 99 51 | 52 | struct aafLog { 53 | 54 | void (*log_callback)(struct aafLog *log, void *ctxdata, int lib, int type, const char *srcfile, const char *srcfunc, int lineno, const char *msg, void *user); 55 | 56 | FILE *fp; 57 | verbosityLevel_e verb; 58 | int ansicolor; 59 | 60 | const char *color_reset; 61 | 62 | char *_msg; 63 | size_t _msg_size; 64 | size_t _msg_pos; 65 | 66 | char *_previous_msg; 67 | size_t _previous_pos; 68 | 69 | int _tmp_msg_pos; 70 | 71 | void *user; 72 | }; 73 | 74 | 75 | #define AAF_LOG( log, ctxdata, lib, type, ... ) \ 76 | laaf_write_log( log, ctxdata, lib, type, __FILENAME__, __func__, __LINE__, __VA_ARGS__ ) 77 | 78 | 79 | #define LOG_BUFFER_WRITE( log, ... )\ 80 | log->_tmp_msg_pos = laaf_util_snprintf_realloc( &log->_msg, &log->_msg_size, log->_msg_pos, __VA_ARGS__ ); \ 81 | log->_msg_pos += (log->_tmp_msg_pos<0) ? 0 : (size_t)log->_tmp_msg_pos; 82 | 83 | 84 | #define LOG_BUFFER_RESET( log )\ 85 | log->_msg_pos = 0; 86 | 87 | 88 | 89 | struct aafLog * laaf_new_log( void ); 90 | 91 | void laaf_free_log( struct aafLog *log ); 92 | 93 | void laaf_log_callback( struct aafLog *log, void *ctxdata, int lib, int type, const char *srcfile, const char *srcfunc, int lineno, const char *msg, void *user ); 94 | 95 | void laaf_write_log( struct aafLog *log, void *ctxdata, enum log_source_id lib, enum verbosityLevel_e type, const char *srcfile, const char *srcfunc, int srcline, const char *format, ... ); 96 | 97 | 98 | #endif // !laaf_log_h__ 99 | -------------------------------------------------------------------------------- /test/expected/MC_Markers.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-18 21:07:09.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-18 21:07:09.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xeb663fe0 0x8cc1 0x4622 { 0xad 0xd9 0xf5 0x3a 0xb3 0x87 0x33 0xc9 } } 19 | 20 | 21 | 22 | Composition Name : MC_Markers.Exporté.03 23 | 24 | TC EditRrate : 30000/1001 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 108000 28 | Composition Start (samples) : 172972800 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 108030 (EditRate: 30000/1001) 32 | Composition End (samples) : 173020848 33 | Composition End : 01:00:01:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 144144 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 43 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A40B01E984A.mxf" 44 | └── Metadata: 45 | - Name: "Comments" Text: "This is a Source Media Comment." 46 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 47 | - Name: "Shoot Date" Text: "2024-01-03" 48 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 49 | 50 | 51 | Tracks & Clips : 52 | ================ 53 | 54 | VideoTrack[1] :: EditRate: 30000/1001 (29.97) 55 | 56 | 57 | AudioTrack[1] :: EditRate: 30000/1001 (29.97) Format: MONO 58 | └── Clip (1): Start: 172972800 Len: 48048 End: 173020848 SourceOffset: 48048 Channels: 1 59 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 60 | 61 | 62 | AudioTrack[2] :: EditRate: 30000/1001 (29.97) Format: MONO 63 | └── Clip (1): Start: 172972800 Len: 6406 End: 172979207 SourceOffset: 48048 Channels: 1 64 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 65 | 66 | 67 | Markers : 68 | ========= 69 | 70 | Marker[0]: EditRate: 30000/1001 (29.97) Start: 172988816 Length: 0 Color: #ffa1662fa419 Label: "ABC" Comment: "I'm a Marker on track A1, at pos 01:00:00:10, I last 1 frame, my color is red, my name is ABC" 71 | Marker[1]: EditRate: 30000/1001 (29.97) Start: 173019247 Length: 0 Color: #3333cccccccc Label: "DEF" Comment: "I'm a Marker on track A2, at pos 01:00:00:29, I last 1 frame, my color is cyan, my name is DEF" 72 | Marker[2]: EditRate: 30000/1001 (29.97) Start: 172972800 Length: 6406 Color: #65e665e69919 Label: "XYZ" Comment: "I'm a Marker on track TC1, at pos 01:00:00:00, I last 4 frames, my color is yellow, my name is XYZ" 73 | -------------------------------------------------------------------------------- /test/expected/DR_Mono_Clip_Positioning.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-07 15:20:31.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Blackmagic Design 11 | ProductName : DaVinci Resolve 12 | ProductVersion : 18.5.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0x64a8d1aa 0x7ffd 0x0000 { 0xe9 0x01 0x50 0x05 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-01-07 15:20:31.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win32) 18 | GenerationAUID : { 0x8a25d237 0xb3c4 0x4f48 { 0x91 0xe6 0x8d 0xd0 0xaf 0x03 0xcd 0xf5 } } 19 | 20 | 21 | 22 | Composition Name : DR_Mono_Clip_Positioning 23 | 24 | TC EditRrate : 24/1 25 | TC FPS : 24 NDF 26 | 27 | Composition Start (EU) : 86400 28 | Composition Start (samples) : 158760000 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 173604000 (EditRate: 48000/1) 32 | Composition End (samples) : 159498675 33 | Composition End : 01:00:16:18 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 132300 Name: "sample-accuracy-173459321" UniqueName: "sample-accuracy-173459321" 43 | └── File: "file://localhost/C:/Users/user/Desktop/LibAAFTestFiles/res/1000hz-18dbs16b44.1k.wav" 44 | 45 | Audio[2] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 132300 Name: "tc-accurate-01:00:09:00-173232000" UniqueName: "tc-accurate-01:00:09:00-173232000" 46 | └── File: "file://localhost/C:/Users/user/Desktop/LibAAFTestFiles/res/1000hz-18dbs16b44.1k.wav" 47 | 48 | Audio[3] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 132300 Name: "sample-accurate-173000000" UniqueName: "sample-accurate-173000000" 49 | └── File: "file://localhost/C:/Users/user/Desktop/LibAAFTestFiles/res/1000hz-18dbs16b44.1k.wav" 50 | 51 | Audio[4] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 132300 Name: "1000hz-18dbs16b44" UniqueName: "1000hz-18dbs16b44" 52 | └── File: "file://localhost/C:/Users/user/Desktop/LibAAFTestFiles/res/1000hz-18dbs16b44.1k.wav" 53 | 54 | 55 | Tracks & Clips : 56 | ================ 57 | 58 | VideoTrack[1] :: EditRate: 24/1 (24.00) 59 | 60 | 61 | AudioTrack[1] :: EditRate: 48000/1 (48000.00) Format: MONO Name: "Audio 1" 62 | ├── Clip (1): Start: 158760000 Len: 132300 End: 158892300 SourceOffset: 0 Channels: 1 63 | │ └── SourceFile [ch 1]: "1000hz-18dbs16b44" 64 | │ 65 | ├── Clip (2): Start: 158943750 Len: 132300 End: 159076050 SourceOffset: 0 Channels: 1 66 | │ └── SourceFile [ch 1]: "sample-accurate-173000000" 67 | │ 68 | ├── Clip (3): Start: 159156900 Len: 132300 End: 159289200 SourceOffset: 0 Channels: 1 69 | │ └── SourceFile [ch 1]: "tc-accurate-01:00:09:00-173232000" 70 | │ 71 | └── Clip (4): Start: 159365751 Len: 132300 End: 159498051 SourceOffset: 0 Channels: 1 72 | └── SourceFile [ch 1]: "sample-accuracy-173459321" 73 | 74 | 75 | -------------------------------------------------------------------------------- /test/expected/PT_lang_zh_CN.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 22:03:23.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 22:03:20.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x48624b4b 0x2ab4 0x411f { 0xbe 0x13 0x3a 0xac 0xf1 0x65 0x84 0xd9 } } 19 | 20 | 21 | 22 | Composition Name : PT_lang_zh_CN 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 9055 (EditRate: 30/1) 32 | Composition End (samples) : 13310850 33 | Composition End : 00:05:01:25 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "精确采样编辑" UniqueName: "精确采样编辑_3" 46 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_rmpzHMYRvphwBBBB.wav" 47 | 48 | Audio[2] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 19111 Name: "淡变 " UniqueName: "淡变 _1" 49 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_ppgyHMYRvghwBBBB.wav" 50 | 51 | Audio[3] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "精确采样编辑" UniqueName: "精确采样编辑_2" 52 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_wpqwHMYRfbhwBBBB.wav" 53 | 54 | Audio[4] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 130831 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 55 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_hmmvHMYRhxgwBBBB.wav" 56 | 57 | Audio[5] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "精确采样编辑" UniqueName: "精确采样编辑_1" 58 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_syfsHMYRhsgwBBBB.wav" 59 | 60 | Audio[6] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 16171 Name: "淡变 " UniqueName: "淡变 " 61 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_cvcrHMYRppgwBBBB.wav" 62 | 63 | Audio[7] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "精确采样编辑" UniqueName: "精确采样编辑" 64 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_svvpHMYRyfgwBBBB.wav" 65 | 66 | 67 | Tracks & Clips : 68 | ================ 69 | 70 | 71 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO 72 | └── Clip (1): Start: 13232940 Len: 77910 End: 13310850 SourceOffset: 29400 Channels: 1 FadeIn: CURV_LIN (16170) FadeOut: CURV_LIN (17640) 73 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 74 | 75 | 76 | -------------------------------------------------------------------------------- /test/expected/PT_lang_zh_TW.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 22:05:29.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 22:05:25.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x33ae7f64 0x0a42 0x46c5 { 0xb7 0x9f 0xb0 0x19 0xa1 0xe6 0x1c 0x1d } } 19 | 20 | 21 | 22 | Composition Name : PT_lang_zh_TW 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 9055 (EditRate: 30/1) 32 | Composition End (samples) : 13310850 33 | Composition End : 00:05:01:25 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "精確取樣編輯" UniqueName: "精確取樣編輯_3" 46 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_pqszFCZRghypCBBB.wav" 47 | 48 | Audio[2] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 19111 Name: "淡變 " UniqueName: "淡變 _1" 49 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_swpyFCZRgdypCBBB.wav" 50 | 51 | Audio[3] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "精確取樣編輯" UniqueName: "精確取樣編輯_2" 52 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_dwswFCZRsxxpCBBB.wav" 53 | 54 | Audio[4] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 130831 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 55 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_pmqvFCZRvsxpCBBB.wav" 56 | 57 | Audio[5] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "精確取樣編輯" UniqueName: "精確取樣編輯_1" 58 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_xwhsFCZRvpxpCBBB.wav" 59 | 60 | Audio[6] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 16171 Name: "淡變 " UniqueName: "淡變 " 61 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_vrfrFCZRwgxpCBBB.wav" 62 | 63 | Audio[7] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "精確取樣編輯" UniqueName: "精確取樣編輯" 64 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_zh_gzxpFCZRhcxpCBBB.wav" 65 | 66 | 67 | Tracks & Clips : 68 | ================ 69 | 70 | 71 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO 72 | └── Clip (1): Start: 13232940 Len: 77910 End: 13310850 SourceOffset: 29400 Channels: 1 FadeIn: CURV_LIN (16170) FadeOut: CURV_LIN (17640) 73 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 74 | 75 | 76 | -------------------------------------------------------------------------------- /test/expected/PT_lang_ja.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 21:58:36.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 21:58:31.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xe852c987 0x8dcd 0x45ce { 0xad 0x2f 0xf8 0xe5 0x23 0x14 0x29 0x67 } } 19 | 20 | 21 | 22 | Composition Name : PT_lang_ja 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 9055 (EditRate: 30/1) 32 | Composition End (samples) : 13310850 33 | Composition End : 00:05:01:25 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "サンプル精度編集" UniqueName: "サンプル精度編集_3" 46 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_jawmpmXSWRfmyvBBBB.wav" 47 | 48 | Audio[2] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 19111 Name: "Fade " UniqueName: "Fade _1" 49 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_jafhxgXSWRbdyvBBBB.wav" 50 | 51 | Audio[3] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "サンプル精度編集" UniqueName: "サンプル精度編集_2" 52 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_jaqmcfXSWRqxxvBBBB.wav" 53 | 54 | Audio[4] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 130831 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 55 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_jawfzcXSWRssxvBBBB.wav" 56 | 57 | Audio[5] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "サンプル精度編集" UniqueName: "サンプル精度編集_1" 58 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_japrwbXSWRspxvBBBB.wav" 59 | 60 | Audio[6] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 16171 Name: "Fade " UniqueName: "Fade " 61 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_javdgzWSWRwfxvBBBB.wav" 62 | 63 | Audio[7] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "サンプル精度編集" UniqueName: "サンプル精度編集" 64 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_jawsgxWSWRvywvBBBB.wav" 65 | 66 | 67 | Tracks & Clips : 68 | ================ 69 | 70 | 71 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO 72 | └── Clip (1): Start: 13232940 Len: 77910 End: 13310850 SourceOffset: 29400 Channels: 1 FadeIn: CURV_LIN (16170) FadeOut: CURV_LIN (17640) 73 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 74 | 75 | 76 | -------------------------------------------------------------------------------- /test/expected/PT_lang_ko.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 22:06:39.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 22:06:36.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x3e79665b 0x9628 0x42fd { 0x96 0x44 0xdc 0xdc 0xbe 0x59 0xc3 0xdf } } 19 | 20 | 21 | 22 | Composition Name : PT_lang_ko 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 9055 (EditRate: 30/1) 32 | Composition End (samples) : 13310850 33 | Composition End : 00:05:01:25 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "샘플 단위 정밀 편집" UniqueName: "샘플 단위 정밀 편집_3" 46 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_kosphrYQZRqxxsBBBB.wav" 47 | 48 | Audio[2] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 19111 Name: "페이드" UniqueName: "페이드_1" 49 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_koczrpYQZRcrxsBBBB.wav" 50 | 51 | Audio[3] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "샘플 단위 정밀 편집" UniqueName: "샘플 단위 정밀 편집_2" 52 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_kobmpmYQZRdmxsBBBB.wav" 53 | 54 | Audio[4] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 130831 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 55 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_kocdhhYQZRffxsBBBB.wav" 56 | 57 | Audio[5] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "샘플 단위 정밀 편집" UniqueName: "샘플 단위 정밀 편집_1" 58 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_kofsdgYQZRgbxsBBBB.wav" 59 | 60 | Audio[6] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 16171 Name: "페이드" UniqueName: "페이드" 61 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_kowgbfYQZRhxwsBBBB.wav" 62 | 63 | Audio[7] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "샘플 단위 정밀 편집" UniqueName: "샘플 단위 정밀 편집" 64 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_korsrcYQZRvrwsBBBB.wav" 65 | 66 | 67 | Tracks & Clips : 68 | ================ 69 | 70 | 71 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO 72 | └── Clip (1): Start: 13232940 Len: 77910 End: 13310850 SourceOffset: 29400 Channels: 1 FadeIn: CURV_LIN (16170) FadeOut: CURV_LIN (17640) 73 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 74 | 75 | 76 | -------------------------------------------------------------------------------- /test/expected/PT_lang_en.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 21:57:04.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 21:56:47.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xa5f7eadb 0x4217 0x4c1f { 0x99 0xc2 0xb2 0x85 0x23 0xa5 0x54 0x3a } } 19 | 20 | 21 | 22 | Composition Name : PT_lang_en 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 9055 (EditRate: 30/1) 32 | Composition End (samples) : 13310850 33 | Composition End : 00:05:01:25 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Sample accurate edit" UniqueName: "Sample accurate edit_3" 46 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_endgqhBCWRmczmCSBB.wav" 47 | 48 | Audio[2] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 19111 Name: "Fade " UniqueName: "Fade _1" 49 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_enbscgBCWRwxymCSBB.wav" 50 | 51 | Audio[3] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Sample accurate edit" UniqueName: "Sample accurate edit_2" 52 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_enwczdBCWRxsymCSBB.wav" 53 | 54 | Audio[4] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 133771 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 55 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_enwvwcBCWRypymCSBB.wav" 56 | 57 | Audio[5] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Sample accurate edit" UniqueName: "Sample accurate edit_1" 58 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_ensrrbBCWRxgymCSBB.wav" 59 | 60 | Audio[6] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 16171 Name: "Fade " UniqueName: "Fade " 61 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_enxcpzZBWRycymCSBB.wav" 62 | 63 | Audio[7] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Sample accurate edit" UniqueName: "Sample accurate edit" 64 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_endhdyZBWRqyxmCSBB.wav" 65 | 66 | 67 | Tracks & Clips : 68 | ================ 69 | 70 | 71 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO 72 | └── Clip (1): Start: 13232940 Len: 77910 End: 13310850 SourceOffset: 32340 Channels: 1 FadeIn: CURV_LIN (16170) FadeOut: CURV_LIN (17640) 73 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 74 | 75 | 76 | -------------------------------------------------------------------------------- /test/expected/PT_lang_de.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 22:09:00.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 22:08:57.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xf6bfd145 0xed00 0x4d2d { 0xb9 0xab 0x42 0x5b 0x34 0x8c 0x38 0xe4 } } 19 | 20 | 21 | 22 | Composition Name : PT_lang_de 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 9055 (EditRate: 30/1) 32 | Composition End (samples) : 13310850 33 | Composition End : 00:05:01:25 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Samplegenaue Bearbeitung" UniqueName: "Samplegenaue Bearbeitung_3" 46 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_dehfdyMMBSqfpqBBBB.wav" 47 | 48 | Audio[2] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 19111 Name: "Fade " UniqueName: "Fade _1" 49 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_deddbxMMBSsbpqBBBB.wav" 50 | 51 | Audio[3] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Samplegenaue Bearbeitung" UniqueName: "Samplegenaue Bearbeitung_2" 52 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_deywxvMMBSvxmqBBBB.wav" 53 | 54 | Audio[4] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 130831 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 55 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_dewqvsMMBSwsmqBBBB.wav" 56 | 57 | Audio[5] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Samplegenaue Bearbeitung" UniqueName: "Samplegenaue Bearbeitung_1" 58 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_dedyqrMMBSwpmqBBBB.wav" 59 | 60 | Audio[6] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 16171 Name: "Fade " UniqueName: "Fade " 61 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_devyfqMMBSpgmqBBBB.wav" 62 | 63 | Audio[7] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Samplegenaue Bearbeitung" UniqueName: "Samplegenaue Bearbeitung" 64 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_dergxmMMBSxbmqBBBB.wav" 65 | 66 | 67 | Tracks & Clips : 68 | ================ 69 | 70 | 71 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO 72 | └── Clip (1): Start: 13232940 Len: 77910 End: 13310850 SourceOffset: 29400 Channels: 1 FadeIn: CURV_LIN (16170) FadeOut: CURV_LIN (17640) 73 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 74 | 75 | 76 | -------------------------------------------------------------------------------- /test/expected/MC_Metadata.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-27 13:54:16.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-27 13:54:16.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x8638c4e7 0x1d69 0x4ed4 { 0xb3 0x70 0xb5 0xa8 0xf4 0xe6 0xd6 0x6d } } 19 | 20 | 21 | 22 | Composition Name : MC_Metadata.Exporté.02 23 | 24 | TC EditRrate : 30000/1001 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 108000 28 | Composition Start (samples) : 172972800 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 108090 (EditRate: 30000/1001) 32 | Composition End (samples) : 173116944 33 | Composition End : 01:00:03:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comments" Text: "This is a composition comment" 40 | - Name: "TapeID" Text: "compo. tapeid" 41 | 42 | 43 | Media Essences : 44 | ================ 45 | 46 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 144144 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 47 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65B20470E378A.mxf" 48 | └── Metadata: 49 | - Name: "Comments" Text: "This is a source file comment" 50 | - Name: "Journalist" Text: "M. Bakounine" 51 | - Name: "Scene" Text: "P21" 52 | - Name: "Take" Text: "3" 53 | - Name: "Production" Text: "horlaprod" 54 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 55 | - Name: "Shoot Date" Text: "2024-01-03" 56 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 57 | 58 | 59 | Tracks & Clips : 60 | ================ 61 | 62 | VideoTrack[1] :: EditRate: 30000/1001 (29.97) 63 | 64 | 65 | AudioTrack[1] :: EditRate: 30000/1001 (29.97) Format: MONO 66 | └── Clip (1): Start: 172972800 Len: 144144 End: 173116944 SourceOffset: 0 Channels: 1 67 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 68 | 69 | 70 | AudioTrack[2] :: EditRate: 30000/1001 (29.97) Format: MONO 71 | └── Clip (1): Start: 173020848 Len: 48048 End: 173068896 SourceOffset: 48048 Channels: 1 72 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 73 | 74 | 75 | AudioTrack[3] :: EditRate: 30000/1001 (29.97) Format: MONO 76 | └── Clip (1): Start: 173020848 Len: 48048 End: 173068896 SourceOffset: 0 Channels: 1 ClipName: "1000hz-18dbs16b44.1k.wav.Sub.01" 77 | ├── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 78 | └── Metadata ──────────────────────────────────── 79 | - Name: "Comments" Text: "sub. This is a sub clip comment" 80 | - Name: "Production" Text: "sub. horlaprod" 81 | - Name: "Journalist" Text: "sub. M. Bakounine" 82 | - Name: "_COMMENT" Text: "This is a timeline clip note" 83 | 84 | 85 | -------------------------------------------------------------------------------- /test/expected/PT_lang_es.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 22:10:15.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 22:10:11.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0x67f71f04 0x2033 0x42ae { 0x95 0x79 0x1a 0x93 0x32 0x7f 0xf8 0xd0 } } 19 | 20 | 21 | 22 | Composition Name : PT_lang_es 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 9055 (EditRate: 30/1) 32 | Composition End (samples) : 13310850 33 | Composition End : 00:05:01:25 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Edición con precisión de muestra" UniqueName: "Edición con precisión de muestra_3" 46 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_esbrhmRWBSmdfrBBBB.wav" 47 | 48 | Audio[2] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 19111 Name: "Fundido " UniqueName: "Fundido _1" 49 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_esxrygRWBSvydrBBBB.wav" 50 | 51 | Audio[3] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Edición con precisión de muestra" UniqueName: "Edición con precisión de muestra_2" 52 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_esshrfRWBShvdrBBBB.wav" 53 | 54 | Audio[4] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 130831 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 55 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_eshwmdRWBShqdrBBBB.wav" 56 | 57 | Audio[5] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Edición con precisión de muestra" UniqueName: "Edición con precisión de muestra_1" 58 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_esffgcRWBSmhdrBBBB.wav" 59 | 60 | Audio[6] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 16171 Name: "Fundido " UniqueName: "Fundido " 61 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_esvcdbRWBSpddrBBBB.wav" 62 | 63 | Audio[7] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Edición con precisión de muestra" UniqueName: "Edición con precisión de muestra" 64 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_esgfxyQWBSdzcrBBBB.wav" 65 | 66 | 67 | Tracks & Clips : 68 | ================ 69 | 70 | 71 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO 72 | └── Clip (1): Start: 13232940 Len: 77910 End: 13310850 SourceOffset: 29400 Channels: 1 FadeIn: CURV_LIN (16170) FadeOut: CURV_LIN (17640) 73 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 74 | 75 | 76 | -------------------------------------------------------------------------------- /test/expected/PT_lang_fr.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 22:07:50.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Digidesign, Inc. 11 | ProductName : ProTools 12 | ProductVersion : 23.12.0.136 AAFVersionReleased (1) 13 | ProductVersionString : 23.12.0.136 14 | ProductID : { 0x319414f6 0x5852 0x4050 { 0xa4 0xeb 0x98 0x1e 0x64 0x3f 0x33 0xa2 } } 15 | Date : 2024-01-09 22:07:46.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xadf3200b 0x3149 0x48c7 { 0x98 0xee 0x23 0xc0 0xf2 0x78 0x0a 0xb3 } } 19 | 20 | 21 | 22 | Composition Name : PT_lang_fr 23 | 24 | TC EditRrate : 30/1 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 9055 (EditRate: 30/1) 32 | Composition End (samples) : 13310850 33 | Composition End : 00:05:01:25 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | Metadata: 39 | - Name: "Comment" Text: "" 40 | 41 | 42 | Media Essences : 43 | ================ 44 | 45 | Audio[1] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Modification à l'échantillon près" UniqueName: "Modification à l'échantillon près_3" 46 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_frspvmTYZRcpgxBBBB.wav" 47 | 48 | Audio[2] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 19111 Name: "Fondu " UniqueName: "Fondu _1" 49 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_frdvqhTYZRcggxBBBB.wav" 50 | 51 | Audio[3] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Modification à l'échantillon près" UniqueName: "Modification à l'échantillon près_2" 52 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_frfrhgTYZRbcgxBBBB.wav" 53 | 54 | Audio[4] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 130831 Name: "1000hz-18dbs16b44.1k-01" UniqueName: "1000hz-18dbs16b44.1k-01" 55 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_frvbffTYZRbyfxBBBB.wav" 56 | 57 | Audio[5] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Modification à l'échantillon près" UniqueName: "Modification à l'échantillon près_1" 58 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_frpyzcTYZRzsfxBBBB.wav" 59 | 60 | Audio[6] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 16171 Name: "Fondu " UniqueName: "Fondu " 61 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_frzwxbTYZRcqfxBBBB.wav" 62 | 63 | Audio[7] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 1471 Name: "Modification à l'échantillon près" UniqueName: "Modification à l'échantillon près" 64 | └── File: "file:///c%3a/Users/user/Desktop/LibAAFTestFiles/tmp/dumb/PT_lang_frgyqzSYZRvgfxBBBB.wav" 65 | 66 | 67 | Tracks & Clips : 68 | ================ 69 | 70 | 71 | AudioTrack[1] :: EditRate: 30/1 (30.00) Format: MONO 72 | └── Clip (1): Start: 13232940 Len: 77910 End: 13310850 SourceOffset: 29400 Channels: 1 FadeIn: CURV_LIN (16170) FadeOut: CURV_LIN (17640) 73 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k-01" 74 | 75 | 76 | -------------------------------------------------------------------------------- /test/expected/DR_Multichannel_7.1_single_source.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-09 22:42:26.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Blackmagic Design 11 | ProductName : DaVinci Resolve 12 | ProductVersion : 18.5.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0x64a8d1aa 0x7ffd 0x0000 { 0x17 0x04 0x50 0x01 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-01-09 22:42:26.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win32) 18 | GenerationAUID : { 0x8b591a1e 0xea6b 0x4ad5 { 0x95 0xe5 0xe9 0x23 0x36 0x90 0x9e 0x72 } } 19 | 20 | 21 | 22 | Composition Name : DR_Multichannel_7.1_single_source 23 | 24 | TC EditRrate : 24/1 25 | TC FPS : 24 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 14902000 (EditRate: 48000/1) 32 | Composition End (samples) : 13691212 33 | Composition End : 00:05:10:11 34 | 35 | Dominant Sample Rate : 44100 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: WAVE - 08 ch - 44100 Hz - 16 bits Length: 481171 Name: "7" UniqueName: "7_7" 43 | └── File: "file://localhost/C:/Users/user/Desktop/res/7.1-SMPTE-channel-identif.wav" 44 | 45 | Audio[2] :: Format: WAVE - 08 ch - 44100 Hz - 16 bits Length: 481171 Name: "7" UniqueName: "7_6" 46 | └── File: "file://localhost/C:/Users/user/Desktop/res/7.1-SMPTE-channel-identif.wav" 47 | 48 | Audio[3] :: Format: WAVE - 08 ch - 44100 Hz - 16 bits Length: 481171 Name: "7" UniqueName: "7_5" 49 | └── File: "file://localhost/C:/Users/user/Desktop/res/7.1-SMPTE-channel-identif.wav" 50 | 51 | Audio[4] :: Format: WAVE - 08 ch - 44100 Hz - 16 bits Length: 481171 Name: "7" UniqueName: "7_4" 52 | └── File: "file://localhost/C:/Users/user/Desktop/res/7.1-SMPTE-channel-identif.wav" 53 | 54 | Audio[5] :: Format: WAVE - 08 ch - 44100 Hz - 16 bits Length: 481171 Name: "7" UniqueName: "7_3" 55 | └── File: "file://localhost/C:/Users/user/Desktop/res/7.1-SMPTE-channel-identif.wav" 56 | 57 | Audio[6] :: Format: WAVE - 08 ch - 44100 Hz - 16 bits Length: 481171 Name: "7" UniqueName: "7_2" 58 | └── File: "file://localhost/C:/Users/user/Desktop/res/7.1-SMPTE-channel-identif.wav" 59 | 60 | Audio[7] :: Format: WAVE - 08 ch - 44100 Hz - 16 bits Length: 481171 Name: "7" UniqueName: "7_1" 61 | └── File: "file://localhost/C:/Users/user/Desktop/res/7.1-SMPTE-channel-identif.wav" 62 | 63 | Audio[8] :: Format: WAVE - 08 ch - 44100 Hz - 16 bits Length: 481171 Name: "7" UniqueName: "7" 64 | └── File: "file://localhost/C:/Users/user/Desktop/res/7.1-SMPTE-channel-identif.wav" 65 | 66 | 67 | Tracks & Clips : 68 | ================ 69 | 70 | VideoTrack[1] :: EditRate: 24/1 (24.00) 71 | 72 | 73 | AudioTrack[1] :: EditRate: 48000/1 (48000.00) Format: 7.1 Name: "Audio 1" 74 | └── Clip (1): Start: 13215780 Len: 475183 End: 13690964 SourceOffset: 1837 Channels: 8 75 | ├── SourceFile [ch 1]: "7" 76 | ├── SourceFile [ch 2]: "7_1" 77 | ├── SourceFile [ch 3]: "7_2" 78 | ├── SourceFile [ch 4]: "7_3" 79 | ├── SourceFile [ch 5]: "7_4" 80 | ├── SourceFile [ch 6]: "7_5" 81 | ├── SourceFile [ch 7]: "7_6" 82 | └── SourceFile [ch 8]: "7_7" 83 | 84 | 85 | -------------------------------------------------------------------------------- /include/libaaf/AAFIParser.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef __AAFIParser_h__ 22 | #define __AAFIParser_h__ 23 | 24 | /** 25 | * @file LibAAF/AAFIface/AAFIParser.h 26 | * @brief AAF processing 27 | * @author Adrien Gesta-Fline 28 | * @version 0.1 29 | * @date 27 june 2018 30 | * 31 | * @ingroup AAFIface 32 | * @addtogroup AAFIface 33 | * @{ 34 | */ 35 | 36 | #include 37 | #include 38 | 39 | 40 | 41 | enum trace_dump_state { 42 | TD_OK = 0, 43 | TD_INFO, 44 | TD_WARNING, 45 | TD_ERROR, 46 | TD_NOT_SUPPORTED 47 | }; 48 | 49 | 50 | 51 | typedef struct trace_dump { 52 | int fn; // line number of current __td 53 | int pfn; // line number of previous __td 54 | int lv; // current level 55 | int *ll; // level loop : each entry correspond to a level and tell if there is more to print 56 | int eob; // end of branch 57 | } td; 58 | 59 | 60 | 61 | #define __td_set( __td, __ptd, offset ) \ 62 | __td.fn = __LINE__; \ 63 | __td.pfn = __ptd->fn; \ 64 | __td.lv = __ptd->lv+offset; \ 65 | __td.ll = __ptd->ll; \ 66 | __td.ll[__td.lv] = (offset > 0) ? 0 : __td.ll[__td.lv]; \ 67 | __td.eob = (offset) ? 0 : __ptd->eob; \ 68 | 69 | 70 | 71 | #define TRACE_OBJ( aafi, Obj, __td ) \ 72 | aafi_dump_obj( aafi, Obj, __td, TD_OK, __func__, __LINE__, "" ); 73 | 74 | #define TRACE_OBJ_INFO( aafi, Obj, __td, ... ) \ 75 | aafi_dump_obj( aafi, Obj, __td, TD_INFO, __func__, __LINE__, __VA_ARGS__ ); 76 | 77 | #define TRACE_OBJ_WARNING( aafi, Obj, __td, ... ) \ 78 | aafi_dump_obj( aafi, Obj, __td, TD_WARNING, __func__, __LINE__, __VA_ARGS__ ); 79 | 80 | #define TRACE_OBJ_ERROR( aafi, Obj, __td, ... ) \ 81 | (__td)->eob = 1; \ 82 | aafi_dump_obj( aafi, Obj, __td, TD_ERROR, __func__, __LINE__, __VA_ARGS__ ); 83 | 84 | #define TRACE_OBJ_NO_SUPPORT( aafi, Obj, __td ) \ 85 | aafi_dump_obj( aafi, Obj, __td, TD_NOT_SUPPORTED, __func__, __LINE__, "" ); 86 | 87 | 88 | #define AAFI_foreach_ObjectInSet( Obj, head, i, __td ) \ 89 | i = 0;\ 90 | while ( _aaf_foreach_ObjectInSet( Obj, head, NULL ) && \ 91 | (__td.ll[__td.lv] = (head->Header->_entryCount > 1) ? (int)(head->Header->_entryCount - i++) : 0) >= 0 ) 92 | 93 | int aafi_retrieveData( AAF_Iface *aafi ); 94 | 95 | 96 | 97 | /* 98 | * The following functions are declared beyond AAFIparser.c scope, 99 | * so they are accessible to vendor-specific files (Resolve.c, ProTools.c, etc.) 100 | */ 101 | 102 | void aafi_dump_obj( AAF_Iface *aafi, aafObject *Obj, struct trace_dump *__td, int state, const char *func, int line, const char *fmt, ... ); 103 | 104 | void aafi_trace_obj( AAF_Iface *aafi, aafObject *Obj, const char *color ); 105 | 106 | 107 | #endif // !__AAFIParser_h__ 108 | -------------------------------------------------------------------------------- /test/expected/PR_Audio_Pan-noBTM.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-14 17:20:47.00 4 | AAF ObjSpec Version : 1.2 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Adobe 11 | ProductName : Premiere Pro 12 | ProductVersion : 23.5.0.0 AAFVersionUnknown (0) 13 | ProductVersionString : 23.5.0 14 | ProductID : { 0x00000000 0x0000 0x0000 { 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-01-14 17:20:47.00 16 | ToolkitVersion : 1.2.0.0 AAFVersionBeta (4) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xc601c2f3 0xc254 0x4f2a { 0xa8 0x09 0x3b 0xec 0xde 0x0e 0xee 0x3b } } 19 | 20 | 21 | 22 | Composition Name : PR_Audio_Pan 23 | 24 | TC EditRrate : 25/1 25 | TC FPS : 25 NDF 26 | 27 | Composition Start (EU) : 0 28 | Composition Start (samples) : 0 29 | Composition Start : 00:00:00:00 30 | 31 | Composition End (EU) : 198 (EditRate: 25/1) 32 | Composition End (samples) : 174636 33 | Composition End : 00:00:07:23 34 | 35 | Dominant Sample Rate : 22050 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: WAVE - 02 ch - 22050 Hz - 16 bits Length: 0 Name: "stereo-identif.wav" UniqueName: "stereo-identif.wav_1" 43 | ├── File: "file://si.francetv.fr/process_limo/SDG/Utilisateurs/Adrien%20GESTA-FLINE/prjcts_prs/libaaf/fullres/stereo-identif.wav" 44 | └── Metadata: 45 | - Name: "Take" Text: "" 46 | - Name: "Scene" Text: "" 47 | 48 | Audio[2] :: Format: WAVE - 02 ch - 22050 Hz - 16 bits Length: 0 Name: "stereo-identif.wav" UniqueName: "stereo-identif.wav" 49 | ├── File: "file://si.francetv.fr/process_limo/SDG/Utilisateurs/Adrien%20GESTA-FLINE/prjcts_prs/libaaf/fullres/stereo-identif.wav" 50 | └── Metadata: 51 | - Name: "Take" Text: "" 52 | - Name: "Scene" Text: "" 53 | 54 | Audio[3] :: Format: WAVE - 01 ch - 44100 Hz - 16 bits Length: 0 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 55 | ├── File: "file://si.francetv.fr/process_limo/SDG/Utilisateurs/Adrien%20GESTA-FLINE/prjcts_prs/libaaf/res/1000hz-18dbs16b44.1k.wav" 56 | └── Metadata: 57 | - Name: "Take" Text: "" 58 | - Name: "Scene" Text: "" 59 | 60 | 61 | Tracks & Clips : 62 | ================ 63 | 64 | VideoTrack[1] :: EditRate: 25/1 (25.00) 65 | 66 | 67 | AudioTrack[1] :: EditRate: 25/1 (25.00) Format: MONO Pan: 0.25 Name: "Audio 1" 68 | ├── Clip (1): Start: 0 Len: 42336 End: 42336 SourceOffset: 0 Channels: 1 69 | │ └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 70 | │ 71 | ├── Clip (2): Start: 66150 Len: 42336 End: 108486 SourceOffset: 0 Channels: 1 72 | │ └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 73 | │ 74 | └── Clip (3): Start: 132300 Len: 42336 End: 174636 SourceOffset: 0 Channels: 1 Gain: +00.0 dB 75 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 76 | 77 | 78 | AudioTrack[2] :: EditRate: 25/1 (25.00) Format: STEREO Name: "Audio 2" 79 | ├── Clip (1): Start: 0 Len: 42336 End: 42336 SourceOffset: 0 Channels: 2 80 | │ ├── SourceFile [ch 1]: "stereo-identif.wav" 81 | │ └── SourceFile [ch 2]: "stereo-identif.wav_1" 82 | │ 83 | ├── Clip (2): Start: 66150 Len: 42336 End: 108486 SourceOffset: 0 Channels: 2 84 | │ ├── SourceFile [ch 1]: "stereo-identif.wav" 85 | │ └── SourceFile [ch 2]: "stereo-identif.wav_1" 86 | │ 87 | └── Clip (3): Start: 132300 Len: 42336 End: 174636 SourceOffset: 0 Channels: 2 88 | ├── SourceFile [ch 1]: "stereo-identif.wav" 89 | └── SourceFile [ch 2]: "stereo-identif.wav_1" 90 | 91 | 92 | -------------------------------------------------------------------------------- /src/AAFIface/URIParser.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2023-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef URI_PARSER_H 22 | #define URI_PARSER_H 23 | 24 | #include 25 | 26 | #if defined(__linux__) 27 | #include 28 | #include 29 | #elif defined(__APPLE__) 30 | #include 31 | #elif defined(_WIN32) 32 | #include // MAX_PATH 33 | #include 34 | #endif 35 | 36 | #define MAX_URI_LENGTH 64000 37 | 38 | 39 | 40 | enum uri_option { 41 | 42 | URI_OPT_NONE = 0, 43 | 44 | URI_OPT_IGNORE_USERPASS = (1<<0), 45 | URI_OPT_IGNORE_QUERY = (1<<1), 46 | URI_OPT_IGNORE_FRAGMENT = (1<<2), 47 | 48 | URI_OPT_DECODE_HOSTNAME = (1<<3), 49 | URI_OPT_DECODE_USERINFO = (1<<4), 50 | URI_OPT_DECODE_USERPASS = (1<<5), 51 | URI_OPT_DECODE_PATH = (1<<6), 52 | URI_OPT_DECODE_QUERY = (1<<7), 53 | URI_OPT_DECODE_FRAGMENT = (1<<8) 54 | }; 55 | 56 | #define URI_OPT_DECODE_ALL ( \ 57 | URI_OPT_DECODE_HOSTNAME | \ 58 | URI_OPT_DECODE_USERINFO | \ 59 | URI_OPT_DECODE_USERPASS | \ 60 | URI_OPT_DECODE_PATH | \ 61 | URI_OPT_DECODE_QUERY | \ 62 | URI_OPT_DECODE_FRAGMENT ) 63 | 64 | 65 | 66 | enum uri_type { 67 | 68 | URI_T_GUESSED_OS_LINUX = (1<<0), 69 | URI_T_GUESSED_OS_APPLE = (1<<1), 70 | URI_T_GUESSED_OS_WINDOWS = (1<<2), 71 | 72 | URI_T_HOST_EMPTY = (1<<3), 73 | URI_T_HOST_IPV4 = (1<<4), 74 | URI_T_HOST_IPV6 = (1<<5), 75 | URI_T_HOST_REGNAME = (1<<6), 76 | 77 | URI_T_LOCALHOST = (1<<7), 78 | }; 79 | 80 | #define URI_T_GUESSED_OS_MASK ( \ 81 | URI_T_GUESSED_OS_LINUX | \ 82 | URI_T_GUESSED_OS_APPLE | \ 83 | URI_T_GUESSED_OS_WINDOWS ) 84 | 85 | #define URI_T_HOST_MASK ( \ 86 | URI_T_HOST_EMPTY | \ 87 | URI_T_HOST_IPV4 | \ 88 | URI_T_HOST_IPV6 | \ 89 | URI_T_HOST_REGNAME ) 90 | 91 | 92 | 93 | enum uri_scheme_type { 94 | 95 | URI_SCHEME_T_UNKNOWN = 0, 96 | URI_SCHEME_T_AFP, 97 | URI_SCHEME_T_CIFS, 98 | URI_SCHEME_T_DATA, 99 | URI_SCHEME_T_DNS, 100 | URI_SCHEME_T_FILE, 101 | URI_SCHEME_T_FTP, 102 | URI_SCHEME_T_HTTP, 103 | URI_SCHEME_T_HTTPS, 104 | URI_SCHEME_T_IMAP, 105 | URI_SCHEME_T_IRC, 106 | URI_SCHEME_T_MAILTO, 107 | URI_SCHEME_T_NFS, 108 | URI_SCHEME_T_POP, 109 | URI_SCHEME_T_RTSP, 110 | URI_SCHEME_T_SFTP, 111 | URI_SCHEME_T_SIP, 112 | URI_SCHEME_T_SMB, 113 | URI_SCHEME_T_SSH, 114 | URI_SCHEME_T_TEL, 115 | URI_SCHEME_T_TELNET, 116 | }; 117 | 118 | 119 | 120 | struct uri { 121 | 122 | char *scheme; 123 | char *authority; 124 | char *userinfo; 125 | char *user; 126 | char *pass; 127 | char *host; 128 | int port; 129 | char *path; 130 | char *query; 131 | char *fragment; 132 | 133 | enum uri_scheme_type scheme_t; 134 | 135 | enum uri_option opts; 136 | enum uri_type flags; 137 | }; 138 | 139 | 140 | 141 | struct uri * laaf_uri_parse( const char *, enum uri_option, struct aafLog *log ); 142 | 143 | void laaf_uri_free( struct uri * ); 144 | 145 | 146 | #endif // ! URI_PARSER_H 147 | -------------------------------------------------------------------------------- /include/libaaf/AAFToText.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef __AAFToText_h__ 22 | #define __AAFToText_h__ 23 | 24 | #include 25 | #include 26 | #include 27 | 28 | 29 | 30 | #define AUIDToText( auid ) \ 31 | cfb_CLSIDToText( (const cfbCLSID_t*)auid ) 32 | 33 | 34 | const char * aaft_MobIDToText( aafMobID_t *mobid ); 35 | 36 | const char * aaft_TimestampToText( aafTimeStamp_t *ts ); 37 | 38 | const char * aaft_VersionToText( aafVersionType_t *vers ); 39 | 40 | const char * aaft_ProductVersionToText( aafProductVersion_t *vers ); 41 | 42 | const char * aaft_FileKindToText( const aafUID_t *auid ); 43 | 44 | const char * aaft_TapeCaseTypeToText( aafTapeCaseType_t t ); 45 | 46 | const char * aaft_VideoSignalTypeToText( aafVideoSignalType_t v ); 47 | 48 | const char * aaft_TapeFormatTypeToText( aafTapeFormatType_t t ); 49 | 50 | const char * aaft_FilmTypeToText( aafFilmType_t f ); 51 | 52 | const char * aaft_SignalStandardToText( aafSignalStandard_t s ); 53 | 54 | const char * aaft_FieldNumberToText( aafFieldNumber_t f ); 55 | 56 | const char * aaft_AlphaTransparencyToText( aafAlphaTransparency_t a ); 57 | 58 | const char * aaft_FrameLayoutToText( aafFrameLayout_t f ); 59 | 60 | const char * aaft_ColorSitingToText( aafColorSiting_t c ); 61 | 62 | const char * aaft_ProductReleaseTypeToText( aafProductReleaseType_t t ); 63 | 64 | const char * aaft_FadeTypeToText( aafFadeType_t f ); 65 | 66 | const char * aaft_BoolToText( aafBoolean_t b ); 67 | 68 | const char * aaft_OperationCategoryToText( const aafUID_t *auid ); 69 | 70 | const char * aaft_PluginCategoryToText( const aafUID_t *auid ); 71 | 72 | const char * aaft_ScanningDirectionToText( aafScanningDirection_t s ); 73 | 74 | const char * aaft_ByteOrderToText( int16_t e ); 75 | 76 | const char * aaft_ElectroSpatialToText( aafElectroSpatialFormulation_t e ); 77 | 78 | const char * aaft_TypeIDToText( const aafUID_t *auid ); 79 | 80 | const char * aaft_StoredFormToText( enum aafStoredForm_e sf ); 81 | 82 | const char * aaft_OPDefToText( const aafUID_t *auid ); 83 | 84 | const char * aaft_DataDefToText( AAF_Data *aafd, const aafUID_t *auid ); 85 | 86 | const char * aaft_OperationDefToText( AAF_Data *aafd, const aafUID_t *auid ); 87 | 88 | const char * aaft_InterpolationToText( const aafUID_t *auid ); 89 | 90 | const char * aaft_ParameterToText( AAF_Data *aafd, const aafUID_t *auid ); 91 | 92 | const char * aaft_TransferCharacteristicToText( const aafUID_t *auid ); 93 | 94 | const char * aaft_CodingEquationsToText( const aafUID_t *auid ); 95 | 96 | const char * aaft_ColorPrimariesToText( const aafUID_t *auid ); 97 | 98 | const char * aaft_UsageCodeToText( const aafUID_t *auid ); 99 | 100 | const char * aaft_PIDToText( AAF_Data *aafd, aafPID_t pid ); 101 | 102 | const char * aaft_ClassIDToText( AAF_Data *aafd, const aafUID_t *auid ); 103 | 104 | const char * aaft_ContainerToText( const aafUID_t *auid ); 105 | 106 | const char * aaft_IndirectValueToText( AAF_Data *aafd, aafIndirect_t *Indirect ); 107 | 108 | const char * aaft_CompressionToText( const aafUID_t *auid ); 109 | 110 | 111 | #endif // !__AAFToText_h__ 112 | -------------------------------------------------------------------------------- /test/expected/DR_Stereo_Clip_Positioning.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-07 15:29:44.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFUID_NULL 7 | 8 | 9 | 10 | CompanyName : Blackmagic Design 11 | ProductName : DaVinci Resolve 12 | ProductVersion : 18.5.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0x64a8d1aa 0x7ffd 0x0000 { 0x61 0x00 0x28 0x03 0x00 0x00 0x00 0x00 } } 15 | Date : 2024-01-07 15:29:44.00 16 | ToolkitVersion : 1.1.6.0 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win32) 18 | GenerationAUID : { 0x5957dd3e 0x358c 0x44c1 { 0xb0 0x6f 0x38 0x5c 0x37 0xb5 0x2d 0xb1 } } 19 | 20 | 21 | 22 | Composition Name : DR_Stereo_Clip_Positioning 23 | 24 | TC EditRrate : 24/1 25 | TC FPS : 24 NDF 26 | 27 | Composition Start (EU) : 86400 28 | Composition Start (samples) : 172800000 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 173554000 (EditRate: 48000/1) 32 | Composition End (samples) : 173554000 33 | Composition End : 01:00:15:17 34 | 35 | Dominant Sample Rate : 22050 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: WAVE - 02 ch - 22050 Hz - 16 bits Length: 43117 Name: "sample-accuracy-173459321" UniqueName: "sample-accuracy-173459321_1" 43 | └── File: "file://localhost/C:/Users/user/Desktop/res/stereo-identif.wav" 44 | 45 | Audio[2] :: Format: WAVE - 02 ch - 22050 Hz - 16 bits Length: 43117 Name: "sample-accuracy-173459321" UniqueName: "sample-accuracy-173459321" 46 | └── File: "file://localhost/C:/Users/user/Desktop/res/stereo-identif.wav" 47 | 48 | Audio[3] :: Format: WAVE - 02 ch - 22050 Hz - 16 bits Length: 43117 Name: "tc-accurate-01:00:09:00-173232000" UniqueName: "tc-accurate-01:00:09:00-173232000_1" 49 | └── File: "file://localhost/C:/Users/user/Desktop/res/stereo-identif.wav" 50 | 51 | Audio[4] :: Format: WAVE - 02 ch - 22050 Hz - 16 bits Length: 43117 Name: "tc-accurate-01:00:09:00-173232000" UniqueName: "tc-accurate-01:00:09:00-173232000" 52 | └── File: "file://localhost/C:/Users/user/Desktop/res/stereo-identif.wav" 53 | 54 | Audio[5] :: Format: WAVE - 02 ch - 22050 Hz - 16 bits Length: 43117 Name: "sample-accurate-173000000" UniqueName: "sample-accurate-173000000_1" 55 | └── File: "file://localhost/C:/Users/user/Desktop/res/stereo-identif.wav" 56 | 57 | Audio[6] :: Format: WAVE - 02 ch - 22050 Hz - 16 bits Length: 43117 Name: "sample-accurate-173000000" UniqueName: "sample-accurate-173000000" 58 | └── File: "file://localhost/C:/Users/user/Desktop/res/stereo-identif.wav" 59 | 60 | Audio[7] :: Format: WAVE - 02 ch - 22050 Hz - 16 bits Length: 43117 Name: "stereo-identif" UniqueName: "stereo-identif_1" 61 | └── File: "file://localhost/C:/Users/user/Desktop/res/stereo-identif.wav" 62 | 63 | Audio[8] :: Format: WAVE - 02 ch - 22050 Hz - 16 bits Length: 43117 Name: "stereo-identif" UniqueName: "stereo-identif" 64 | └── File: "file://localhost/C:/Users/user/Desktop/res/stereo-identif.wav" 65 | 66 | 67 | Tracks & Clips : 68 | ================ 69 | 70 | VideoTrack[1] :: EditRate: 24/1 (24.00) 71 | 72 | 73 | AudioTrack[1] :: EditRate: 48000/1 (48000.00) Format: STEREO Name: "Audio 1" 74 | ├── Clip (1): Start: 172800000 Len: 93860 End: 172893860 SourceOffset: 0 Channels: 2 75 | │ ├── SourceFile [ch 1]: "stereo-identif" 76 | │ └── SourceFile [ch 2]: "stereo-identif_1" 77 | │ 78 | ├── Clip (2): Start: 173000000 Len: 93860 End: 173093860 SourceOffset: 0 Channels: 2 79 | │ ├── SourceFile [ch 1]: "sample-accurate-173000000" 80 | │ └── SourceFile [ch 2]: "sample-accurate-173000000_1" 81 | │ 82 | ├── Clip (3): Start: 173232000 Len: 93860 End: 173325860 SourceOffset: 0 Channels: 2 83 | │ ├── SourceFile [ch 1]: "tc-accurate-01:00:09:00-173232000" 84 | │ └── SourceFile [ch 2]: "tc-accurate-01:00:09:00-173232000_1" 85 | │ 86 | └── Clip (4): Start: 173459321 Len: 93860 End: 173553181 SourceOffset: 0 Channels: 2 87 | ├── SourceFile [ch 1]: "sample-accuracy-173459321" 88 | └── SourceFile [ch 2]: "sample-accuracy-173459321_1" 89 | 90 | 91 | -------------------------------------------------------------------------------- /test/expected/MC_Audio_Levels.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-27 17:46:27.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-27 17:46:27.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xbb3d8e34 0x8494 0x4a2d { 0x9a 0xfa 0x17 0xdd 0x02 0xa7 0x9b 0xe7 } } 19 | 20 | 21 | 22 | Composition Name : MC_Audio_Levels.Exporté.14 23 | 24 | TC EditRrate : 30000/1001 25 | TC FPS : 30 NDF 26 | 27 | Composition Start (EU) : 108000 28 | Composition Start (samples) : 172972800 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 108090 (EditRate: 30000/1001) 32 | Composition End (samples) : 173116944 33 | Composition End : 01:00:03:00 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Audio[1] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 144144 Name: "A1000hz-18dbs16b44.1k.wav" UniqueName: "A1000hz-18dbs16b44.1k.wav" 43 | └── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/A1000hz-18A01.65A40B55B067A.mxf" 44 | 45 | Audio[2] :: Format: PCM - 01 ch - 48000 Hz - 16 bits Length: 144144 Name: "1000hz-18dbs16b44.1k.wav" UniqueName: "1000hz-18dbs16b44.1k.wav" 46 | ├── File: "file:///D%3A/Avid%20MediaFiles/MXF/1/1000hz-18dA01.65A40B01E984A.mxf" 47 | └── Metadata: 48 | - Name: "Comments" Text: "This is a Source Media Comment." 49 | - Name: "UNC Path" Text: "C:\Users\user\Desktop\LibAAFTestFiles\res\1000hz-18dbs16b44.1k.wav" 50 | - Name: "Shoot Date" Text: "2024-01-03" 51 | - Name: "TapeID" Text: "1000hz-18dbs16b44.1k.wav" 52 | 53 | 54 | Tracks & Clips : 55 | ================ 56 | 57 | VideoTrack[1] :: EditRate: 30000/1001 (29.97) 58 | 59 | 60 | AudioTrack[1] :: EditRate: 30000/1001 (29.97) Format: MONO 61 | ├── Clip (1): Start: 172972800 Len: 48048 End: 173020848 SourceOffset: 48048 Channels: 1 VolumeAutomation: YES 62 | │ ├── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 63 | │ └── Clip Volume Automation ────────────────────── 64 | │ _time: 0.000000 _value: 1.000000 (+00.0 dB) 65 | │ _time: 0.433333 _value: 0.004842 (-46.3 dB) 66 | │ _time: 0.966667 _value: 1.000000 (+00.0 dB) 67 | │ 68 | └── Clip (2): Start: 173020848 Len: 48048 End: 173068896 SourceOffset: 64064 Channels: 1 Gain: +03.0 dB VolumeAutomation: YES 69 | ├── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 70 | └── Clip Volume Automation ────────────────────── 71 | _time: 0.000000 _value: 1.000000 (+00.0 dB) 72 | _time: 0.366667 _value: 0.000030 (-90.4 dB) 73 | _time: 0.666667 _value: 2.871290 (+09.2 dB) 74 | _time: 0.966667 _value: 1.000000 (+00.0 dB) 75 | 76 | 77 | AudioTrack[2] :: EditRate: 30000/1001 (29.97) Format: MONO 78 | └── Clip (1): Start: 172972800 Len: 48048 End: 173020848 SourceOffset: 48048 Channels: 1 VolumeAutomation: YES 79 | ├── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 80 | └── Clip Volume Automation ────────────────────── 81 | _time: 0.433333 _value: 2.511886 (+08.0 dB) 82 | 83 | 84 | AudioTrack[3] :: EditRate: 30000/1001 (29.97) Format: MONO Solo: SOLO 85 | └── Clip (1): Start: 172972800 Len: 48048 End: 173020848 SourceOffset: 0 Channels: 1 Gain: +02.0 dB ClipName: "1000hz-18dbs16b44.1k.wav.Sub.01" 86 | └── SourceFile [ch 1]: "1000hz-18dbs16b44.1k.wav" 87 | 88 | 89 | AudioTrack[4] :: EditRate: 30000/1001 (29.97) Format: MONO 90 | └── Clip (1): Start: 172972800 Len: 144144 End: 173116944 SourceOffset: 0 Channels: 1 Gain: +01.5 dB 91 | └── SourceFile [ch 1]: "A1000hz-18dbs16b44.1k.wav" 92 | 93 | 94 | AudioTrack[5] :: EditRate: 30000/1001 (29.97) Format: MONO 95 | └── Clip (1): Start: 172972800 Len: 144144 End: 173116944 SourceOffset: 0 Channels: 1 Gain: +06.0 dB 96 | └── SourceFile [ch 1]: "A1000hz-18dbs16b44.1k.wav" 97 | 98 | 99 | -------------------------------------------------------------------------------- /test/expected/MC_Audio_Warp.aaf.expected: -------------------------------------------------------------------------------- 1 | 2 | ByteOrder : Little-Endian (0x4949) 3 | LastModified : 2024-01-31 00:25:06.00 4 | AAF ObjSpec Version : 1.1 5 | ObjectModel Version : 1 6 | Operational Pattern : AAFOPDef_EditProtocol 7 | 8 | 9 | 10 | CompanyName : Avid Technology, Inc. 11 | ProductName : Avid Media Composer 23.12 12 | ProductVersion : 23.12.0.0 AAFVersionReleased (1) 13 | ProductVersionString : Unknown version 14 | ProductID : { 0xd0b7c06e 0xcd3d 0x4ad7 { 0xac 0xfb 0xf0 0x3a 0x4f 0x42 0xa2 0x31 } } 15 | Date : 2024-01-31 00:25:06.00 16 | ToolkitVersion : 2.0.9.124 AAFVersionReleased (1) 17 | Platform : AAFSDK (Win64) 18 | GenerationAUID : { 0xc29f777b 0x15c2 0x4650 { 0x9e 0xf1 0xec 0xf7 0xdb 0xc9 0xe9 0xec } } 19 | 20 | 21 | 22 | Composition Name : MC_Audio_Warp.Exporté.02 23 | 24 | TC EditRrate : 25/1 25 | TC FPS : 25 NDF 26 | 27 | Composition Start (EU) : 90000 28 | Composition Start (samples) : 172800000 29 | Composition Start : 01:00:00:00 30 | 31 | Composition End (EU) : 90121 (EditRate: 25/1) 32 | Composition End (samples) : 173032320 33 | Composition End : 01:00:04:21 34 | 35 | Dominant Sample Rate : 48000 36 | Dominant Sample Size : 16 bits 37 | 38 | 39 | Media Essences : 40 | ================ 41 | 42 | Video[1] :: Length: 0 Name: "bbb_sunflower_1080p_30fps_normal" UniqueName: "bbb_sunflower_1080p_30fps_normal" 43 | └── File: "file:///C%3A/Users/user/Downloads/bbb_sunflower_1080p_30fps_normal.mp4" 44 | 45 | 46 | Audio[1] :: Format: PCM - 06 ch - 48000 Hz - 16 bits Length: 30457600 Name: "bbb_sunflower_1080p_30fps_normal" UniqueName: "bbb_sunflower_1080p_30fps_normal_1" 47 | ├── File: "file:///C%3A/Users/user/Downloads/bbb_sunflower_1080p_30fps_normal.mp4" 48 | └── Metadata: 49 | - Name: "Video" Text: "QTFF" 50 | 51 | Audio[2] :: Format: - 00 ch - 0 Hz - 0 bits Length: 0 Name: "bbb_sunflower_1080p_30fps_normal" UniqueName: "bbb_sunflower_1080p_30fps_normal" 52 | ├── File: "file:///C%3A/Users/user/Downloads/bbb_sunflower_1080p_30fps_normal.mp4" 53 | └── Metadata: 54 | - Name: "Video" Text: "QTFF" 55 | 56 | 57 | Tracks & Clips : 58 | ================ 59 | 60 | VideoTrack[1] :: EditRate: 25/1 (25.00) 61 | └── Clip (1): Start: 172800000 Len: 232320 End: 173032320 SourceOffset: 12506880 62 | 63 | 64 | 65 | AudioTrack[1] :: EditRate: 25/1 (25.00) Format: MONO 66 | └── Clip (1): Start: 172800000 Len: 192000 End: 172992000 SourceOffset: 10421760 Channels: 1 67 | └── SourceFile [ch 1]: "bbb_sunflower_1080p_30fps_normal" 68 | 69 | 70 | AudioTrack[2] :: EditRate: 25/1 (25.00) Format: MONO 71 | └── Clip (1): Start: 172800000 Len: 192000 End: 172992000 SourceOffset: 10421760 Channels: 1 72 | └── SourceFile [ch 2]: "bbb_sunflower_1080p_30fps_normal" 73 | 74 | 75 | AudioTrack[3] :: EditRate: 25/1 (25.00) Format: MONO 76 | └── Clip (1): Start: 172800000 Len: 192000 End: 172992000 SourceOffset: 10421760 Channels: 1 77 | └── SourceFile [ch 3]: "bbb_sunflower_1080p_30fps_normal_1" 78 | 79 | 80 | AudioTrack[4] :: EditRate: 25/1 (25.00) Format: MONO 81 | └── Clip (1): Start: 172800000 Len: 192000 End: 172992000 SourceOffset: 10421760 Channels: 1 82 | └── SourceFile [ch 4]: "bbb_sunflower_1080p_30fps_normal_1" 83 | 84 | 85 | AudioTrack[5] :: EditRate: 25/1 (25.00) Format: MONO 86 | └── Clip (1): Start: 172800000 Len: 192000 End: 172992000 SourceOffset: 10421760 Channels: 1 87 | └── SourceFile [ch 5]: "bbb_sunflower_1080p_30fps_normal_1" 88 | 89 | 90 | AudioTrack[6] :: EditRate: 25/1 (25.00) Format: MONO 91 | └── Clip (1): Start: 172800000 Len: 192000 End: 172992000 SourceOffset: 10421760 Channels: 1 92 | └── SourceFile [ch 6]: "bbb_sunflower_1080p_30fps_normal_1" 93 | 94 | 95 | AudioTrack[7] :: EditRate: 25/1 (25.00) Format: MONO 96 | └── Clip (1): Start: 172800000 Len: 192000 End: 172992000 SourceOffset: 10421760 Channels: 1 97 | └── SourceFile [ch 7]: "bbb_sunflower_1080p_30fps_normal_1" 98 | 99 | 100 | AudioTrack[8] :: EditRate: 25/1 (25.00) Format: MONO 101 | └── Clip (1): Start: 172800000 Len: 192000 End: 172992000 SourceOffset: 10421760 Channels: 1 102 | └── SourceFile [ch 8]: "bbb_sunflower_1080p_30fps_normal_1" 103 | 104 | 105 | -------------------------------------------------------------------------------- /include/libaaf/utils.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef __utils_h__ 22 | #define __utils_h__ 23 | 24 | #include 25 | #include 26 | 27 | #include 28 | 29 | #ifdef __cplusplus 30 | extern "C" { 31 | #endif 32 | 33 | #ifdef _WIN32 34 | #define DIR_SEP '\\' 35 | #define DIR_SEP_STR "\\" 36 | #else 37 | #define DIR_SEP '/' 38 | #define DIR_SEP_STR "/" 39 | #endif 40 | 41 | 42 | #if defined(__linux__) 43 | #include 44 | #include 45 | #elif defined(__APPLE__) 46 | #include 47 | #elif defined(_WIN32) 48 | #include // MAX_PATH 49 | #include 50 | #include 51 | #endif 52 | 53 | 54 | #if defined(_WIN32) 55 | #define fseek64 _fseeki64 56 | #define ftell64 _ftelli64 57 | #else 58 | #define fseek64 fseek 59 | #define ftell64 ftell 60 | #endif 61 | 62 | 63 | #define AAF_DIR_SEP '/' 64 | #define AAF_DIR_SEP_STR "/" 65 | 66 | #define IS_DIR_SEP(c) \ 67 | (( ((c) == DIR_SEP) || ((c) == '/') )) 68 | 69 | #define IS_ANY_DIR_SEP(c) \ 70 | (( ((c) == '/') || ((c) == '\\') )) 71 | 72 | 73 | #define ANSI_COLOR_RED( log ) (( (log)->ansicolor ) ? "\x1b[38;5;124m" : "") 74 | #define ANSI_COLOR_GREEN( log ) (( (log)->ansicolor ) ? "\x1b[92m" : "") 75 | #define ANSI_COLOR_YELLOW( log ) (( (log)->ansicolor ) ? "\x1b[33m" : "") 76 | #define ANSI_COLOR_ORANGE( log ) (( (log)->ansicolor ) ? "\x1b[38;5;130m" : "") 77 | #define ANSI_COLOR_BLUE( log ) (( (log)->ansicolor ) ? "\x1b[34m" : "") 78 | #define ANSI_COLOR_MAGENTA( log ) (( (log)->ansicolor ) ? "\x1b[35m" : "") 79 | #define ANSI_COLOR_CYAN( log ) (( (log)->ansicolor ) ? "\x1b[38;5;81m" : "") 80 | #define ANSI_COLOR_DARKGREY( log ) (( (log)->ansicolor ) ? "\x1b[38;5;242m" : "") 81 | #define ANSI_COLOR_BOLD( log ) (( (log)->ansicolor ) ? "\x1b[1m" : "") 82 | #define ANSI_COLOR_RESET( log ) (( (log)->ansicolor ) ? (log->color_reset) ? log->color_reset : "\x1b[0m" : "") 83 | 84 | 85 | #define TREE_LINE "\xe2\x94\x82" /* │ */ 86 | #define TREE_PADDED_LINE "\xe2\x94\x82\x20\x20" /* │ */ 87 | #define TREE_ENTRY "\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80" /* ├── */ 88 | #define TREE_LAST_ENTRY "\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80" /* └── */ 89 | 90 | 91 | size_t laaf_util_utf8strCharLen( const char *u8str ); 92 | 93 | char *laaf_util_utf16Toutf8(const uint16_t *u16str); 94 | 95 | #ifdef _WIN32 96 | wchar_t * laaf_util_windows_utf8toutf16( const char *str ); 97 | char * laaf_util_windows_utf16toutf8( const wchar_t *wstr ); 98 | #endif 99 | 100 | int laaf_util_file_exists( const char *filepath ); 101 | 102 | FILE * laaf_util_fopen_utf8( const char *filepath, const char *mode ); 103 | 104 | char * laaf_util_clean_filename( char *filename ); 105 | 106 | int laaf_util_is_fileext( const char *filepath, const char *ext ); 107 | 108 | char * laaf_util_build_path( const char *sep, const char *first, ... ); 109 | 110 | char * laaf_util_relative_path( const char *filepath, const char *refpath ); 111 | 112 | char * laaf_util_absolute_path( const char *relpath ); 113 | 114 | char * laaf_util_c99strdup( const char *src ); 115 | 116 | int laaf_util_snprintf_realloc( char **str, size_t *size, size_t offset, const char *format, ... ); 117 | 118 | int laaf_util_vsnprintf_realloc( char **str, size_t *size, size_t offset, const char *fmt, va_list args ); 119 | 120 | int laaf_util_dump_hex( const unsigned char *stream, size_t stream_sz, char **buf, size_t *bufsz, size_t offset, const char *padding ); 121 | 122 | 123 | #ifdef __cplusplus 124 | } 125 | #endif 126 | 127 | #endif // ! __utils_h__ 128 | -------------------------------------------------------------------------------- /include/libaaf/AAFDefs/AAFExtEnum.h: -------------------------------------------------------------------------------- 1 | #ifndef __AAFExtEnum_h__ 2 | #define __AAFExtEnum_h__ 3 | 4 | #include 5 | 6 | // AAF extensible enumeration member UIDs. 7 | // 8 | 9 | // Members of OperationCategoryType 10 | // 11 | //{0d010102-0101-0100-060e-2b3404010101} 12 | static const aafUID_t AAFOperationCategory_Effect = 13 | {0x0d010102, 0x0101, 0x0100, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 14 | 15 | // Members of TransferCharacteristicType 16 | // 17 | //{04010101-0101-0000-060e-2b3404010101} 18 | static const aafUID_t AAFTransferCharacteristic_ITU470_PAL = 19 | {0x04010101, 0x0101, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 20 | 21 | //{04010101-0102-0000-060e-2b3404010101} 22 | static const aafUID_t AAFTransferCharacteristic_ITU709 = 23 | {0x04010101, 0x0102, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 24 | 25 | //{04010101-0103-0000-060e-2b3404010101} 26 | static const aafUID_t AAFTransferCharacteristic_SMPTE240M = 27 | {0x04010101, 0x0103, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 28 | 29 | //{04010101-0104-0000-060e-2b3404010101} 30 | static const aafUID_t AAFTransferCharacteristic_274M_296M = 31 | {0x04010101, 0x0104, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 32 | 33 | //{04010101-0105-0000-060e-2b3404010101} 34 | static const aafUID_t AAFTransferCharacteristic_ITU1361 = 35 | {0x04010101, 0x0105, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 36 | 37 | //{04010101-0106-0000-060e-2b3404010101} 38 | static const aafUID_t AAFTransferCharacteristic_linear = 39 | {0x04010101, 0x0106, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 40 | 41 | // Members of PluginCategoryType 42 | // 43 | //{0d010102-0101-0200-060e-2b3404010101} 44 | static const aafUID_t AAFPluginCategory_Effect = 45 | {0x0d010102, 0x0101, 0x0200, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 46 | 47 | //{0d010102-0101-0300-060e-2b3404010101} 48 | static const aafUID_t AAFPluginCategory_Codec = 49 | {0x0d010102, 0x0101, 0x0300, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 50 | 51 | //{0d010102-0101-0400-060e-2b3404010101} 52 | static const aafUID_t AAFPluginCategory_Interpolation = 53 | {0x0d010102, 0x0101, 0x0400, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 54 | 55 | // Members of UsageType 56 | // 57 | //{0d010102-0101-0500-060e-2b3404010101} 58 | static const aafUID_t AAFUsage_SubClip = 59 | {0x0d010102, 0x0101, 0x0500, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 60 | 61 | //{0d010102-0101-0600-060e-2b3404010101} 62 | static const aafUID_t AAFUsage_AdjustedClip = 63 | {0x0d010102, 0x0101, 0x0600, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 64 | 65 | //{0d010102-0101-0700-060e-2b3404010101} 66 | static const aafUID_t AAFUsage_TopLevel = 67 | {0x0d010102, 0x0101, 0x0700, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 68 | 69 | //{0d010102-0101-0800-060e-2b3404010101} 70 | static const aafUID_t AAFUsage_LowerLevel = 71 | {0x0d010102, 0x0101, 0x0800, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 72 | 73 | //{0d010102-0101-0900-060e-2b3404010101} 74 | static const aafUID_t AAFUsage_Template = 75 | {0x0d010102, 0x0101, 0x0900, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 76 | 77 | // Members of ColorPrimariesType 78 | // 79 | //{04010101-0301-0000-060e-2b3404010106} 80 | static const aafUID_t AAFColorPrimaries_SMPTE170M = 81 | {0x04010101, 0x0301, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x06}}; 82 | 83 | //{04010101-0302-0000-060e-2b3404010106} 84 | static const aafUID_t AAFColorPrimaries_ITU470_PAL = 85 | {0x04010101, 0x0302, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x06}}; 86 | 87 | //{04010101-0303-0000-060e-2b3404010106} 88 | static const aafUID_t AAFColorPrimaries_ITU709 = 89 | {0x04010101, 0x0303, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x06}}; 90 | 91 | // Members of CodingEquationsType 92 | // 93 | //{04010101-0201-0000-060e-2b3404010101} 94 | static const aafUID_t AAFCodingEquations_ITU601 = 95 | {0x04010101, 0x0201, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 96 | 97 | //{04010101-0202-0000-060e-2b3404010101} 98 | static const aafUID_t AAFCodingEquations_ITU709 = 99 | {0x04010101, 0x0202, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 100 | 101 | //{04010101-0203-0000-060e-2b3404010101} 102 | static const aafUID_t AAFCodingEquations_SMPTE240M = 103 | {0x04010101, 0x0203, 0x0000, {0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01}}; 104 | 105 | 106 | #endif // ! __AAFExtEnum_h__ 107 | -------------------------------------------------------------------------------- /src/AAFIface/RIFFParser.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2023-2024 Adrien Gesta-Fline 3 | * 4 | * This file is part of libAAF. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program; if not, write to the Free Software Foundation, Inc., 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | 21 | #ifndef __RIFFParser__ 22 | #define __RIFFParser__ 23 | 24 | #include 25 | 26 | #if defined(__linux__) 27 | #include 28 | #include 29 | #elif defined(__APPLE__) 30 | #include 31 | #elif defined(_WIN32) 32 | #include // MAX_PATH 33 | #include 34 | #endif 35 | 36 | 37 | #ifdef __GNUC__ 38 | #define PACK( __Declaration__ ) __Declaration__ __attribute__((__packed__)) 39 | #endif 40 | 41 | #ifdef _MSC_VER 42 | #define PACK( __Declaration__ ) __pragma( pack(push, 1) ) __Declaration__ __pragma( pack(pop)) 43 | #endif 44 | 45 | 46 | 47 | #define RIFF_READER_ERROR SIZE_MAX 48 | 49 | 50 | enum RIFF_PARSER_FLAGS { 51 | RIFF_PARSE_ONLY_HEADER = (1 << 0), 52 | RIFF_PARSE_AAF_SUMMARY = (1 << 1), 53 | }; 54 | 55 | 56 | 57 | struct RIFFAudioFile { 58 | /* common to wave/aiff */ 59 | uint32_t sampleRate; 60 | uint16_t sampleSize; 61 | uint16_t channels; 62 | uint64_t sampleCount; /* total samples for 1 channel (no matter channel count). (sampleCount / sampleRate) = duration in seconds */ 63 | size_t pcm_audio_start_offset; 64 | }; 65 | 66 | 67 | 68 | PACK(struct riffHeaderChunk { 69 | char ckid[4]; 70 | uint32_t cksz; 71 | 72 | char format[4]; 73 | unsigned char data[]; 74 | }); 75 | 76 | 77 | 78 | PACK(struct riffChunk { 79 | char ckid[4]; 80 | uint32_t cksz; 81 | 82 | unsigned char data[]; 83 | }); 84 | 85 | 86 | 87 | PACK(struct wavFmtChunk { 88 | char ckid[4]; /* 'fmt ' */ 89 | uint32_t cksz; 90 | 91 | uint16_t format_tag; 92 | uint16_t channels; 93 | uint32_t samples_per_sec; 94 | uint32_t avg_bytes_per_sec; 95 | uint16_t block_align; 96 | uint16_t bits_per_sample; 97 | }); 98 | 99 | 100 | 101 | PACK(struct wavBextChunk { 102 | char ckid[4]; /* 'bext' */ 103 | uint32_t cksz; 104 | 105 | char description[256]; 106 | 107 | char originator[32]; 108 | char originator_reference[32]; 109 | char origination_date[10]; 110 | char origination_time[8]; 111 | 112 | uint64_t time_reference; 113 | 114 | uint16_t version; 115 | 116 | /* since bext v1 (2001) */ 117 | unsigned char umid[64]; 118 | 119 | /* since bext v2 (2011) 120 | * 121 | * If any loudness parameter is not 122 | * being used, its value shall be 123 | * set to 0x7fff. Any value outside 124 | * valid ranges shall be ignored. 125 | */ 126 | int16_t loudness_value; // 0xd8f1 - 0xffff (-99.99 -0.1) and 0x000 0x270f (0.00 99.99) 127 | int16_t loudness_range; // 0x0000 - 0x270f (0.00 99.99) 128 | int16_t max_true_peak_level; // 0xd8f1 - 0xffff (-99.99 -0.1) and 0x000 0x270f (0.00 99.99) 129 | int16_t max_momentary_loudness; // 0xd8f1 - 0xffff (-99.99 -0.1) and 0x000 0x270f (0.00 99.99) 130 | int16_t max_short_term_loudness; // 0xd8f1 - 0xffff (-99.99 -0.1) and 0x000 0x270f (0.00 99.99) 131 | 132 | char reserved[180]; 133 | 134 | /* 135 | Because it is variable size, we 136 | do not include coding history 137 | in the bext structure. However, 138 | we know it starts at the end 139 | of bext structure when parsing. 140 | */ 141 | }); 142 | 143 | 144 | 145 | PACK(struct aiffCOMMChunk { 146 | char ckid[4]; /* 'COMM' */ 147 | uint32_t cksz; 148 | 149 | uint16_t numChannels; 150 | uint32_t numSampleFrames; 151 | uint16_t sampleSize; 152 | unsigned char sampleRate[10]; // 80 bit IEEE Standard 754 floating point number 153 | }); 154 | 155 | 156 | PACK(struct aiffSSNDChunk { 157 | char ckid[4]; /* 'SSND' */ 158 | uint32_t cksz; 159 | 160 | uint32_t offset; 161 | uint32_t blockSize; 162 | }); 163 | 164 | 165 | 166 | int laaf_riff_parseAudioFile( struct RIFFAudioFile *RIFFAudioFile, enum RIFF_PARSER_FLAGS flags, size_t (*readerCallback)(unsigned char *, size_t, size_t, void*, void*, void*), void *user1, void *user2, void *user3, struct aafLog *log ); 167 | 168 | int laaf_riff_writeWavFileHeader( FILE *fp, struct wavFmtChunk *wavFmt, struct wavBextChunk *wavBext, uint32_t audioDataSize, struct aafLog *log ); 169 | 170 | 171 | #endif // ! __RIFFParser__ 172 | --------------------------------------------------------------------------------