Update libaaf to v1.0-11-gb04c547
This commit is contained in:
parent
895fe2f753
commit
41587d3c06
@ -1951,8 +1951,8 @@ retrieveProperty (AAF_Data* aafd, aafObject* Obj, aafPropertyDef* Def, aafProper
|
|||||||
Prop->sf = p->_storedForm;
|
Prop->sf = p->_storedForm;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO Prop->len / Prop->val ---> retrieveStrongReference() retrieveStrongReferenceSet() retrieveStrongReferenceVector()
|
TODO Prop->len / Prop->val ---> retrieveStrongReference() retrieveStrongReferenceSet() retrieveStrongReferenceVector()
|
||||||
only used to retrieve node name ? There could be a better approach.
|
only used to retrieve node name ? There could be a better approach.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Prop->len = p->_length;
|
Prop->len = p->_length;
|
||||||
@ -2127,18 +2127,18 @@ getNodeProperties (AAF_Data* aafd, cfbNode* Node)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
uint32_t prop_sz = sizeof(aafPropertyIndexHeader_t);
|
uint32_t prop_sz = sizeof(aafPropertyIndexHeader_t);
|
||||||
|
|
||||||
uint32_t i = 0;
|
uint32_t i = 0;
|
||||||
|
|
||||||
for ( i = 0; i < ((aafPropertyIndexHeader_t*)stream)->_entryCount; i++ )
|
for ( i = 0; i < ((aafPropertyIndexHeader_t*)stream)->_entryCount; i++ )
|
||||||
prop_sz += (((aafPropertyIndexEntry_t*)(stream+((sizeof(aafPropertyIndexEntry_t)*i)+sizeof(aafPropertyIndexHeader_t))))->_length) + sizeof(aafPropertyIndexEntry_t);
|
prop_sz += (((aafPropertyIndexEntry_t*)(stream+((sizeof(aafPropertyIndexEntry_t)*i)+sizeof(aafPropertyIndexHeader_t))))->_length) + sizeof(aafPropertyIndexEntry_t);
|
||||||
|
|
||||||
if ( prop_sz != stream_sz )
|
if ( prop_sz != stream_sz )
|
||||||
warning( L"Stream length (%lu Bytes) does not match property length (%u Bytes).",
|
warning( L"Stream length (%lu Bytes) does not match property length (%u Bytes).",
|
||||||
stream_sz,
|
stream_sz,
|
||||||
prop_sz );
|
prop_sz );
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return stream;
|
return stream;
|
||||||
}
|
}
|
||||||
|
@ -131,7 +131,7 @@ aaf_dump_TaggedValueSet (AAF_Data* aafd, aafObject* ObjCollection, const char* p
|
|||||||
ANSI_COLOR_DARKGREY (log),
|
ANSI_COLOR_DARKGREY (log),
|
||||||
(name) ? name : "<unknown>",
|
(name) ? name : "<unknown>",
|
||||||
ANSI_COLOR_RESET (log),
|
ANSI_COLOR_RESET (log),
|
||||||
(name) ? (size_t) (34 - (int)strlen (name)) : (size_t) (34 - strlen ("<unknown>")), " ",
|
(name) ? (size_t)(34 - (int)strlen (name)) : (size_t)(34 - strlen ("<unknown>")), " ",
|
||||||
ANSI_COLOR_DARKGREY (log),
|
ANSI_COLOR_DARKGREY (log),
|
||||||
aaft_TypeIDToText (&indirect->TypeDef),
|
aaft_TypeIDToText (&indirect->TypeDef),
|
||||||
ANSI_COLOR_RESET (log),
|
ANSI_COLOR_RESET (log),
|
||||||
|
@ -888,3 +888,44 @@ externalAudioDataReaderCallback (unsigned char* buf, size_t offset, size_t reqle
|
|||||||
|
|
||||||
return byteRead;
|
return byteRead;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
aafiAudioEssencePointer*
|
||||||
|
aafi_audioEssencePointer_exists_before (AAF_Iface* aafi, aafiAudioEssencePointer* audioEssencePointerList)
|
||||||
|
{
|
||||||
|
aafiAudioTrack* at = NULL;
|
||||||
|
aafiTimelineItem* ai = NULL;
|
||||||
|
aafiAudioClip* ac = NULL;
|
||||||
|
|
||||||
|
aafiAudioEssencePointer* aep1 = NULL;
|
||||||
|
aafiAudioEssencePointer* aep2 = NULL;
|
||||||
|
|
||||||
|
AAFI_foreachAudioTrack (aafi, at)
|
||||||
|
{
|
||||||
|
AAFI_foreachTrackItem (at, ai)
|
||||||
|
{
|
||||||
|
if (ai->type != AAFI_AUDIO_CLIP) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ac = (aafiAudioClip*)ai->data;
|
||||||
|
aep1 = audioEssencePointerList;
|
||||||
|
|
||||||
|
int found = 1;
|
||||||
|
|
||||||
|
AAFI_foreachEssencePointer (ac->essencePointerList, aep2)
|
||||||
|
{
|
||||||
|
if (!aep1 || aep1->essenceFile != aep2->essenceFile || aep1->essenceChannel != aep2->essenceChannel) {
|
||||||
|
found = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
aep1 = aep1->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found && aep1 == NULL) {
|
||||||
|
return ac->essencePointerList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
@ -3166,12 +3166,23 @@ aafi_retrieveData (AAF_Iface* aafi)
|
|||||||
|
|
||||||
AAFI_foreachTrackItem (audioTrack, audioItem)
|
AAFI_foreachTrackItem (audioTrack, audioItem)
|
||||||
{
|
{
|
||||||
if (audioItem->type == AAFI_TRANS) {
|
if (audioItem->type != AAFI_AUDIO_CLIP) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
audioClip = (aafiAudioClip*)audioItem->data;
|
audioClip = (aafiAudioClip*)audioItem->data;
|
||||||
audioClip->channels = aafi_getAudioEssencePointerChannelCount (audioClip->essencePointerList);
|
audioClip->channels = aafi_getAudioEssencePointerChannelCount (audioClip->essencePointerList);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* we check if any previous clip is using the exact same essence pointer,
|
||||||
|
* to avoid duplication and allow to detect when multiple clips are using
|
||||||
|
* the same essence.
|
||||||
|
*/
|
||||||
|
aafiAudioEssencePointer* prev = aafi_audioEssencePointer_exists_before (aafi, audioClip->essencePointerList);
|
||||||
|
|
||||||
|
if (prev) {
|
||||||
|
audioClip->essencePointerList = prev;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,6 +214,12 @@ aafi_release (AAF_Iface** aafi)
|
|||||||
aafi_freeAudioTracks (&(*aafi)->Audio->Tracks);
|
aafi_freeAudioTracks (&(*aafi)->Audio->Tracks);
|
||||||
aafi_freeAudioEssences (&(*aafi)->Audio->essenceFiles);
|
aafi_freeAudioEssences (&(*aafi)->Audio->essenceFiles);
|
||||||
|
|
||||||
|
aafiAudioEssencePointer* essencePointer = (*aafi)->Audio->essencePointerList;
|
||||||
|
|
||||||
|
while (essencePointer) {
|
||||||
|
essencePointer = aafi_freeAudioEssencePointer (essencePointer);
|
||||||
|
}
|
||||||
|
|
||||||
free ((*aafi)->Audio);
|
free ((*aafi)->Audio);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -358,7 +364,7 @@ aafi_convertUnit (aafPosition_t value, aafRational_t* valueEditRate, aafRational
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (aafPosition_t) ((double)value * (destEditRateFloat / valueEditRateFloat));
|
return (aafPosition_t)((double)value * (destEditRateFloat / valueEditRateFloat));
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t
|
uint64_t
|
||||||
@ -391,7 +397,7 @@ aafi_convertUnitUint64 (aafPosition_t value, aafRational_t* valueEditRate, aafRa
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (uint64_t) ((double)value * (destEditRateFloat / valueEditRateFloat));
|
return (uint64_t)((double)value * (destEditRateFloat / valueEditRateFloat));
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -506,8 +512,8 @@ aafi_applyGainOffset (AAF_Iface* aafi, aafiAudioGain** gain, aafiAudioGain* offs
|
|||||||
* is the same accross all gains in file. Thus, we devide both gain numbers
|
* is the same accross all gains in file. Thus, we devide both gain numbers
|
||||||
* by offset denominator, so we fit inside uint32_t.
|
* by offset denominator, so we fit inside uint32_t.
|
||||||
*/
|
*/
|
||||||
(*gain)->value[i].numerator = (int32_t) (((int64_t) (*gain)->value[i].numerator * (int64_t)offset->value[0].numerator) / (int64_t)offset->value[0].denominator);
|
(*gain)->value[i].numerator = (int32_t)(((int64_t)(*gain)->value[i].numerator * (int64_t)offset->value[0].numerator) / (int64_t)offset->value[0].denominator);
|
||||||
(*gain)->value[i].denominator = (int32_t) (((int64_t) (*gain)->value[i].denominator * (int64_t)offset->value[0].denominator) / (int64_t)offset->value[0].denominator);
|
(*gain)->value[i].denominator = (int32_t)(((int64_t)(*gain)->value[i].denominator * (int64_t)offset->value[0].denominator) / (int64_t)offset->value[0].denominator);
|
||||||
// debug( "Setting (*gain)->value[%i] = %i/%i * %i/%i",
|
// debug( "Setting (*gain)->value[%i] = %i/%i * %i/%i",
|
||||||
// i,
|
// i,
|
||||||
// (*gain)->value[i].numerator,
|
// (*gain)->value[i].numerator,
|
||||||
@ -798,11 +804,11 @@ aafi_newAudioEssencePointer (AAF_Iface* aafi, aafiAudioEssencePointer** list, aa
|
|||||||
last->next = essencePointer;
|
last->next = essencePointer;
|
||||||
} else {
|
} else {
|
||||||
*list = essencePointer;
|
*list = essencePointer;
|
||||||
|
|
||||||
essencePointer->aafiNext = aafi->Audio->essencePointerList;
|
|
||||||
aafi->Audio->essencePointerList = essencePointer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
essencePointer->aafiNext = aafi->Audio->essencePointerList;
|
||||||
|
aafi->Audio->essencePointerList = essencePointer;
|
||||||
|
|
||||||
return *list;
|
return *list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -985,8 +991,6 @@ aafi_freeAudioClip (aafiAudioClip* audioClip)
|
|||||||
aafi_freeAudioGain (audioClip->automation);
|
aafi_freeAudioGain (audioClip->automation);
|
||||||
aafi_freeMetadata (&(audioClip->metadata));
|
aafi_freeMetadata (&(audioClip->metadata));
|
||||||
|
|
||||||
aafi_freeAudioEssencePointer (audioClip->essencePointerList);
|
|
||||||
|
|
||||||
free (audioClip);
|
free (audioClip);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1042,16 +1046,14 @@ aafi_freeMetadata (aafiMetaData** CommentList)
|
|||||||
*CommentList = NULL;
|
*CommentList = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
aafiAudioEssencePointer*
|
||||||
aafi_freeAudioEssencePointer (aafiAudioEssencePointer* essencePointer)
|
aafi_freeAudioEssencePointer (aafiAudioEssencePointer* essencePointer)
|
||||||
{
|
{
|
||||||
aafiAudioEssencePointer* next = NULL;
|
aafiAudioEssencePointer* next = essencePointer->aafiNext;
|
||||||
|
|
||||||
while (essencePointer) {
|
free (essencePointer);
|
||||||
next = essencePointer->next;
|
|
||||||
free (essencePointer);
|
return next;
|
||||||
essencePointer = next;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1912,19 +1912,19 @@ aaft_PIDToText (AAF_Data* aafd, aafPID_t pid)
|
|||||||
return "PID_BWFImportDescriptor_UnknownBWFChunks";
|
return "PID_BWFImportDescriptor_UnknownBWFChunks";
|
||||||
|
|
||||||
/* the following is marked as "dynamic" in ref implementation :
|
/* the following is marked as "dynamic" in ref implementation :
|
||||||
* AAF/ref-impl/include/ref-api/AAFTypes.h
|
* AAF/ref-impl/include/ref-api/AAFTypes.h
|
||||||
*
|
*
|
||||||
* case PID_MPEGVideoDescriptor_SingleSequence:
|
* case PID_MPEGVideoDescriptor_SingleSequence:
|
||||||
* case PID_MPEGVideoDescriptor_ConstantBPictureCount:
|
* case PID_MPEGVideoDescriptor_ConstantBPictureCount:
|
||||||
* case PID_MPEGVideoDescriptor_CodedContentScanning:
|
* case PID_MPEGVideoDescriptor_CodedContentScanning:
|
||||||
* case PID_MPEGVideoDescriptor_LowDelay:
|
* case PID_MPEGVideoDescriptor_LowDelay:
|
||||||
* case PID_MPEGVideoDescriptor_ClosedGOP:
|
* case PID_MPEGVideoDescriptor_ClosedGOP:
|
||||||
* case PID_MPEGVideoDescriptor_IdenticalGOP:
|
* case PID_MPEGVideoDescriptor_IdenticalGOP:
|
||||||
* case PID_MPEGVideoDescriptor_MaxGOP:
|
* case PID_MPEGVideoDescriptor_MaxGOP:
|
||||||
* case PID_MPEGVideoDescriptor_MaxBPictureCount:
|
* case PID_MPEGVideoDescriptor_MaxBPictureCount:
|
||||||
* case PID_MPEGVideoDescriptor_BitRate:
|
* case PID_MPEGVideoDescriptor_BitRate:
|
||||||
* case PID_MPEGVideoDescriptor_ProfileAndLevel:
|
* case PID_MPEGVideoDescriptor_ProfileAndLevel:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
case PID_ClassDefinition_ParentClass:
|
case PID_ClassDefinition_ParentClass:
|
||||||
return "PID_ClassDefinition_ParentClass";
|
return "PID_ClassDefinition_ParentClass";
|
||||||
|
@ -729,7 +729,7 @@ cfb_getStream (CFB_Data* cfbd, cfbNode* node, unsigned char** stream, uint64_t*
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
cpy_sz = ((stream_len - offset) < (uint64_t) (1 << cfbd->hdr->_uMiniSectorShift)) ? (stream_len - offset) : (uint64_t) (1 << cfbd->hdr->_uMiniSectorShift);
|
cpy_sz = ((stream_len - offset) < (uint64_t)(1 << cfbd->hdr->_uMiniSectorShift)) ? (stream_len - offset) : (uint64_t)(1 << cfbd->hdr->_uMiniSectorShift);
|
||||||
|
|
||||||
memcpy (*stream + offset, buf, cpy_sz);
|
memcpy (*stream + offset, buf, cpy_sz);
|
||||||
|
|
||||||
@ -740,7 +740,7 @@ cfb_getStream (CFB_Data* cfbd, cfbNode* node, unsigned char** stream, uint64_t*
|
|||||||
} else {
|
} else {
|
||||||
CFB_foreachSectorInChain (cfbd, buf, id)
|
CFB_foreachSectorInChain (cfbd, buf, id)
|
||||||
{
|
{
|
||||||
cpy_sz = ((stream_len - offset) < (uint64_t) (1 << cfbd->hdr->_uSectorShift)) ? (stream_len - offset) : (uint64_t) (1 << cfbd->hdr->_uSectorShift);
|
cpy_sz = ((stream_len - offset) < (uint64_t)(1 << cfbd->hdr->_uSectorShift)) ? (stream_len - offset) : (uint64_t)(1 << cfbd->hdr->_uSectorShift);
|
||||||
|
|
||||||
memcpy (*stream + offset, buf, cpy_sz);
|
memcpy (*stream + offset, buf, cpy_sz);
|
||||||
|
|
||||||
@ -1073,7 +1073,7 @@ cfb_retrieveMiniFAT (CFB_Data* cfbd)
|
|||||||
* its ID (a.k.a SID) :
|
* its ID (a.k.a SID) :
|
||||||
*
|
*
|
||||||
* ```
|
* ```
|
||||||
cfbNode *node = CFB_Data.nodes[ID];
|
cfbNode *node = CFB_Data.nodes[ID];
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* @param cfbd Pointer to the CFB_Data structure.
|
* @param cfbd Pointer to the CFB_Data structure.
|
||||||
|
@ -92,16 +92,16 @@ typedef SSIZE_T ssize_t;
|
|||||||
(uri->scheme_t != URI_SCHEME_T_FILE && \
|
(uri->scheme_t != URI_SCHEME_T_FILE && \
|
||||||
!(uri->opts & URI_OPT_IGNORE_FRAGMENT))
|
!(uri->opts & URI_OPT_IGNORE_FRAGMENT))
|
||||||
|
|
||||||
#define URI_SET_STR(str, start, end) \
|
#define URI_SET_STR(str, start, end) \
|
||||||
\
|
\
|
||||||
str = malloc (sizeof (char) * (uint32_t) ((end - start) + 1)); \
|
str = malloc (sizeof (char) * (uint32_t)((end - start) + 1)); \
|
||||||
\
|
\
|
||||||
if (!str) { \
|
if (!str) { \
|
||||||
error ("Out of memory"); \
|
error ("Out of memory"); \
|
||||||
goto err; \
|
goto err; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
snprintf (str, (uint32_t) (end - start) + 1, "%s", start);
|
snprintf (str, (uint32_t)(end - start) + 1, "%s", start);
|
||||||
|
|
||||||
static char*
|
static char*
|
||||||
uriDecodeString (char* src, char* dst);
|
uriDecodeString (char* src, char* dst);
|
||||||
@ -787,7 +787,7 @@ uriIsIPv6 (const char* s, size_t size, char** err)
|
|||||||
if (!IS_DIGIT (*(s + i))) {
|
if (!IS_DIGIT (*(s + i))) {
|
||||||
loopback = -1;
|
loopback = -1;
|
||||||
} else {
|
} else {
|
||||||
loopback += (*(s + i) - '0'); //atoi(*(s+i));
|
loopback += (*(s + i) - '0'); // atoi(*(s+i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -601,7 +601,7 @@ typedef struct _aafData {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define aafRationalToint64(r) \
|
#define aafRationalToint64(r) \
|
||||||
(((r).denominator == 0) ? 0 : (int64_t) ((r).numerator / (r).denominator))
|
(((r).denominator == 0) ? 0 : (int64_t)((r).numerator / (r).denominator))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loops through each aafPropertyIndexEntry_t of a "properties" node stream.
|
* Loops through each aafPropertyIndexEntry_t of a "properties" node stream.
|
||||||
|
@ -55,6 +55,9 @@ aafi_parse_audio_essence (AAF_Iface* aafi, aafiAudioEssenceFile* audioEssenceFil
|
|||||||
int
|
int
|
||||||
aafi_build_unique_audio_essence_name (AAF_Iface* aafi, aafiAudioEssenceFile* audioEssenceFile);
|
aafi_build_unique_audio_essence_name (AAF_Iface* aafi, aafiAudioEssenceFile* audioEssenceFile);
|
||||||
|
|
||||||
|
aafiAudioEssencePointer*
|
||||||
|
aafi_audioEssencePointer_exists_before (AAF_Iface* aafi, aafiAudioEssencePointer* audioEssencePointerList);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -468,11 +468,11 @@ typedef struct aafiAudioClip {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* set with CompoMob's SourceClip::StartTime. In the case of an OperationGroup(AudioChannelCombiner),
|
* set with CompoMob's SourceClip::StartTime. In the case of an OperationGroup(AudioChannelCombiner),
|
||||||
* There is one SourceClip per audio channel. So even though it's very unlikely, there could possibly
|
* There is one SourceClip per audio channel. So even though it's very unlikely, there could possibly
|
||||||
* be one essence_offset per channel.
|
* be one essence_offset per channel.
|
||||||
* Value is in edit unit, edit rate definition is aafiAudioTrack->edit_rate
|
* Value is in edit unit, edit rate definition is aafiAudioTrack->edit_rate
|
||||||
*/
|
*/
|
||||||
aafPosition_t essence_offset;
|
aafPosition_t essence_offset;
|
||||||
|
|
||||||
aafiMetaData* metadata;
|
aafiMetaData* metadata;
|
||||||
@ -1060,7 +1060,7 @@ aafi_freeMarkers (aafiMarker** aafi);
|
|||||||
void
|
void
|
||||||
aafi_freeMetadata (aafiMetaData** CommentList);
|
aafi_freeMetadata (aafiMetaData** CommentList);
|
||||||
|
|
||||||
void
|
aafiAudioEssencePointer*
|
||||||
aafi_freeAudioEssencePointer (aafiAudioEssencePointer* audioEssenceGroupEntry);
|
aafi_freeAudioEssencePointer (aafiAudioEssencePointer* audioEssenceGroupEntry);
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -57,33 +57,33 @@ typedef enum aafStoredForm_e {
|
|||||||
typedef int32_t AAFTypeCategory_t;
|
typedef int32_t AAFTypeCategory_t;
|
||||||
typedef enum _eAAFTypeCategory_e
|
typedef enum _eAAFTypeCategory_e
|
||||||
{
|
{
|
||||||
AAFTypeCatUnknown = 0, // can only occur in damaged files
|
AAFTypeCatUnknown = 0, // can only occur in damaged files
|
||||||
AAFTypeCatInt = 1, // any integral type
|
AAFTypeCatInt = 1, // any integral type
|
||||||
AAFTypeCatCharacter = 2, // any character type
|
AAFTypeCatCharacter = 2, // any character type
|
||||||
AAFTypeCatStrongObjRef = 3, // strong object reference
|
AAFTypeCatStrongObjRef = 3, // strong object reference
|
||||||
AAFTypeCatWeakObjRef = 4, // weak object reference
|
AAFTypeCatWeakObjRef = 4, // weak object reference
|
||||||
AAFTypeCatRename = 5, // renamed type
|
AAFTypeCatRename = 5, // renamed type
|
||||||
AAFTypeCatEnum = 6, // enumerated type
|
AAFTypeCatEnum = 6, // enumerated type
|
||||||
AAFTypeCatFixedArray = 7, // fixed-size array
|
AAFTypeCatFixedArray = 7, // fixed-size array
|
||||||
AAFTypeCatVariableArray = 8, // variably-sized array
|
AAFTypeCatVariableArray = 8, // variably-sized array
|
||||||
AAFTypeCatSet = 9, // set of strong object references or
|
AAFTypeCatSet = 9, // set of strong object references or
|
||||||
// set of weak object references
|
// set of weak object references
|
||||||
AAFTypeCatRecord = 10, // a structured type
|
AAFTypeCatRecord = 10, // a structured type
|
||||||
AAFTypeCatStream = 11, // potentially huge amount of data
|
AAFTypeCatStream = 11, // potentially huge amount of data
|
||||||
AAFTypeCatString = 12, // null-terminated variably-sized
|
AAFTypeCatString = 12, // null-terminated variably-sized
|
||||||
// array of characters
|
// array of characters
|
||||||
AAFTypeCatExtEnum = 13, // extendible enumerated type
|
AAFTypeCatExtEnum = 13, // extendible enumerated type
|
||||||
AAFTypeCatIndirect = 14, // type must be determined at runtime
|
AAFTypeCatIndirect = 14, // type must be determined at runtime
|
||||||
AAFTypeCatOpaque = 15, // type can be determined at runtime
|
AAFTypeCatOpaque = 15, // type can be determined at runtime
|
||||||
AAFTypeCatEncrypted = 16 // type can be determined at runtime
|
AAFTypeCatEncrypted = 16 // type can be determined at runtime
|
||||||
// but bits are encrypted
|
// but bits are encrypted
|
||||||
} AAFTypeCategory_e;
|
} AAFTypeCategory_e;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* :: Types Definition
|
* :: Types Definition
|
||||||
* see Git nevali/aaf/ref-impl/include/ref-api/AAFTypes.h
|
* see Git nevali/aaf/ref-impl/include/ref-api/AAFTypes.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef unsigned char aafByte_t;
|
typedef unsigned char aafByte_t;
|
||||||
|
|
||||||
@ -369,7 +369,7 @@ typedef struct _aafRGBAComponent_t {
|
|||||||
|
|
||||||
} aafRGBAComponent_t;
|
} aafRGBAComponent_t;
|
||||||
|
|
||||||
//typedef aafRGBAComponent_t aafRGBALayout[8];
|
// typedef aafRGBAComponent_t aafRGBALayout[8];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This structure map the first bytes in a **properties** stream
|
* This structure map the first bytes in a **properties** stream
|
||||||
@ -521,7 +521,7 @@ typedef struct aafStrongRefSetEntry_t {
|
|||||||
* of the first aafStrongRefSetEntry_t is used to
|
* of the first aafStrongRefSetEntry_t is used to
|
||||||
* form the name of the first element in the set and so
|
* form the name of the first element in the set and so
|
||||||
* on. The #_localKey is an insertion key.
|
* on. The #_localKey is an insertion key.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint32_t _localKey;
|
uint32_t _localKey;
|
||||||
|
|
||||||
@ -588,7 +588,7 @@ typedef struct aafStrongRefVectorEntry_t {
|
|||||||
* of the first aafStrongRefVectorEntry_t is used to
|
* of the first aafStrongRefVectorEntry_t is used to
|
||||||
* form the name of the first element in the vector and so
|
* form the name of the first element in the vector and so
|
||||||
* on. The #_localKey is an insertion key.
|
* on. The #_localKey is an insertion key.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint32_t _localKey;
|
uint32_t _localKey;
|
||||||
|
|
||||||
@ -679,15 +679,15 @@ typedef struct _WeakReferenceIndexHeader {
|
|||||||
/*
|
/*
|
||||||
typedef struct _aafIndirect_t
|
typedef struct _aafIndirect_t
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
size_t size;
|
size_t size;
|
||||||
aafByte_t *data;
|
aafByte_t *data;
|
||||||
} aafIndirect_t;
|
} aafIndirect_t;
|
||||||
|
|
||||||
typedef struct _AAF_TaggedValueClass
|
typedef struct _AAF_TaggedValueClass
|
||||||
{
|
{
|
||||||
aafString_t Name;
|
aafString_t Name;
|
||||||
aafIndirect_t Value;
|
aafIndirect_t Value;
|
||||||
} AAF_ObjTaggedValue;
|
} AAF_ObjTaggedValue;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -710,7 +710,7 @@ typedef struct CFB_Data {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define CFB_getNodeStreamLen(cfbd, node) \
|
#define CFB_getNodeStreamLen(cfbd, node) \
|
||||||
((cfbd->hdr->_uSectorShift > 9) ? (uint64_t) (((uint64_t) (node->_ulSizeHigh) << 32) | (node->_ulSizeLow)) : node->_ulSizeLow)
|
((cfbd->hdr->_uSectorShift > 9) ? (uint64_t)(((uint64_t)(node->_ulSizeHigh) << 32) | (node->_ulSizeLow)) : node->_ulSizeLow)
|
||||||
|
|
||||||
#define CFB_getStreamSectorShift(cfbd, node) \
|
#define CFB_getStreamSectorShift(cfbd, node) \
|
||||||
((CFB_getNodeStreamLen (cfbd, node) < cfbd->hdr->_ulMiniSectorCutoff) ? cfbd->hdr->_uMiniSectorShift : cfbd->hdr->_uSectorShift)
|
((CFB_getNodeStreamLen (cfbd, node) < cfbd->hdr->_ulMiniSectorCutoff) ? cfbd->hdr->_uMiniSectorShift : cfbd->hdr->_uSectorShift)
|
||||||
|
@ -103,7 +103,7 @@ PACK (struct wavBextChunk {
|
|||||||
unsigned char umid[64];
|
unsigned char umid[64];
|
||||||
|
|
||||||
/* since bext v2 (2011)
|
/* since bext v2 (2011)
|
||||||
*
|
*
|
||||||
* If any loudness parameter is not
|
* If any loudness parameter is not
|
||||||
* being used, its value shall be
|
* being used, its value shall be
|
||||||
* set to 0x7fff. Any value outside
|
* set to 0x7fff. Any value outside
|
||||||
@ -118,11 +118,11 @@ PACK (struct wavBextChunk {
|
|||||||
char reserved[180];
|
char reserved[180];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Because it is variable size, we
|
Because it is variable size, we
|
||||||
do not include coding history
|
do not include coding history
|
||||||
in the bext structure. However,
|
in the bext structure. However,
|
||||||
we know it starts at the end
|
we know it starts at the end
|
||||||
of bext structure when parsing.
|
of bext structure when parsing.
|
||||||
*/
|
*/
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#define LIBAAF_VERSION "v1.0-10-g13f0b0a"
|
#define LIBAAF_VERSION "v1.0-11-gb04c547"
|
||||||
|
@ -263,7 +263,7 @@ laaf_util_build_path (const char* sep, const char* first, ...)
|
|||||||
|
|
||||||
int written = snprintf (str + offset, len - offset, "%s%.*s",
|
int written = snprintf (str + offset, len - offset, "%s%.*s",
|
||||||
((element_count == 0 && has_leading_sep) || (element_count > 0)) ? sep : "",
|
((element_count == 0 && has_leading_sep) || (element_count > 0)) ? sep : "",
|
||||||
(uint32_t) (arglen - argstart),
|
(uint32_t)(arglen - argstart),
|
||||||
arg + argstart);
|
arg + argstart);
|
||||||
|
|
||||||
if (written < 0 || (size_t)written >= (len - offset)) {
|
if (written < 0 || (size_t)written >= (len - offset)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user