From: Stuart C. <stu...@us...> - 2009-08-24 13:32:41
|
Update of /cvsroot/aaf/AAF/dodo In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv24514/dodo Modified Files: AAFMasterMob.dod aafobjects.mk Added Files: AAFMasterMob3.dod Log Message: Extend AAFMasterMob interface to add new function AddMasterSlotWithSequence(). This function is similar to AddMasterSlot but instead adds a Sequence and then adds the SourceClip into the sequence, achieving better MXF interoperability. --- NEW FILE: AAFMasterMob3.dod --- #c ********************************************************************* #c #c $Id: AAFMasterMob3.dod,v 1.1 2009/08/24 13:31:59 stuart_hc Exp $ $Name: $ #c #c The contents of this file are subject to the AAF SDK Public Source #c License Agreement Version 2.0 (the "License"); You may not use this #c file except in compliance with the License. The License is available #c in AAFSDKPSL.TXT, or you may obtain a copy of the License from the #c Advanced Media Workflow Association, Inc., or its successor. #c #c Software distributed under the License is distributed on an "AS IS" #c basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See #c the License for the specific language governing rights and limitations #c under the License. Refer to Section 3.3 of the License for proper use #c of this Exhibit. #c #c WARNING: Please contact the Advanced Media Workflow Association, #c Inc., for more information about any additional licenses to #c intellectual property covering the AAF Standard that may be required #c to create and distribute AAF compliant products. #c (http://www.amwa.tv/policies). #c #c Copyright Notices: #c The Original Code of this file is Copyright 1998-2009, licensor of the #c Advanced Media Workflow Association. All rights reserved. #c #c The Initial Developer of the Original Code of this file and the #c licensor of the Advanced Media Workflow Association is #c Avid Technology. #c All rights reserved. #c #c ********************************************************************* #startm .this-module 0 AAFMasterMob3\ #endm #c #startm .parent-module 0 AAFMob\ #endm #c #c #import ./AAFObject.exp #c #import ./AAFMob.exp AD_HEAD AD_IDL(/// /// The IAAFMasterMob interface is implemented by objects which provide /// access to the File Source Mobs and EssenceData objects. The Master /// Mob object is used to provide a level of indirection for accessing /// Source Mobs from Composition Mobs. /// /// In addition to the specific error results listed for each method\, /// all methods in this interface may also return one of the following /// values: /// /// AAFRESULT_NOMEMORY /// - insufficient system memory is available to perform the /// operation. ///) AD_FORWARD_DECLARATION(AAFSourceClip) AD_FORWARD_DECLARATION(AAFSourceMob) AD_FORWARD_DECLARATION(AAFComponent) AD_FORWARD_DECLARATION(AAFDataDef) AD_FORWARD_DECLARATION(AAFFindSourceInfo) AD_FORWARD_DECLARATION(AAFEssenceAccess) AD_CLASS_UUID(7f1563bc, 1699, 483a, a7, 4d, cc, 2d, 3a, f7, ec, 86) AD_DEFAULT_UUID(988af5ac, 57d8, 47b7, 9b, 0f, 23, 99, 71, 16, 19, 39) AD_XCLASS_BEGIN(Concrete, StoredObject) #c #c Original MasterMob methods #c AD_METHOD0(Initialize, Initializes a newly allocated\, empty IAAFMasterMob-supporting /// object. This method must be called after allocation\, and before /// any other method can be called. /// /// Succeeds if: /// - Initialize\(\) has not yet been called on this object. /// /// This method will return the following codes. If more than one of /// the listed errors is in effect\, it will return the first one /// encountered in the order given below: /// /// AAFRESULT_SUCCESS /// - succeeded. \(This is the only code indicating success.\) /// /// AAFRESULT_ALREADY_INITIALIZED /// - Initialize\(\) has already been called on this object.) AD_XMETHOD5(AddMasterSlot, [in], objIn, AAFDataDef, pDataDef, Data kind of new slot. Requires a data kind valid for a media /// stream. Valid data kinds are: /// - Picture /// - Sound, [in], objPass, aafSlotID_t, sourceSlotID, Slot ID of the Source Mob slot to be added to the Master Mob, [in], objIn, AAFSourceMob, pSourceMob, Source Mob containing the slot to be added to the Master Mob, [in], objPass, aafSlotID_t, masterSlotID, SlotID assigned to the new Master Mob slot, [in\, string], objPass, aafCharacter_constptr, pSlotName, Name to assign to new slot in Master Mob, This function adds a slot to the specified Master Mob that /// references the specified a slot in the specified Source Mob. The /// new slot in the Master Mob contains a Source Clip that specifies /// the Source Mob in its source reference properties. Typically this /// is done automatically by passing the Master Mob handle to /// AAFMedia::Create\, but this function allows you to add it later. /// /// Note: If pSlotName is passed in with zero length\, then the /// slot is not assigned a name. Slot names are not used by the /// SDK\, and exist only so the user can name slots. /// /// Succeeds if all of the following are true: /// \(more conditions here\) /// /// If this method fails no state is changed. /// /// This method will return the following codes. If more than one of /// the listed errors is in effect\, it will return the first one /// encountered in the order given below: /// /// AAFRESULT_SUCCESS /// - succeeded. \(This is the only code indicating success.\) /// /// AAFRESULT_NOT_INITIALIZED /// - This object has not yet had Initialize\(\) called on it. /// /// AAFRESULT_NULL_PARAM /// - One or more of the following parameters are NULL pSourceMob\, /// pSlotName\, and pDataDef. /// /// AAFRESULT_INVALID_DATADEF /// - The data kind of the source MOB slot to be added to the Master /// Mob does not match what is specfied in pDataDef. /// /// AAFRESULT_SLOT_NOTFOUND /// - The specified Source Mob slot was not found. /// /// AAFRESULT_SLOT_EXISTS /// - The specified Master slot ID already exists.) AD_XMETHOD3(GetTapeName, [in], objPass, aafUInt32, masterSlotID, SlotID of the Master Mob slot, [out\, size_is\(bufSize\)\, string], objPass, aafCharacter *, pTapeName, The returned name, [in], objPass, aafUInt32, bufSize, the size of the pTapeName buffer, Finds the tape Source Mob associated with a Master Mob slot /// and writes the name of the tape\, which is stored in the /// Mobs Name property\, into the pTapeName buffer. The buffer is /// allocated by the caller. The size of the buffer is given by /// bufSize. If the property name has not yet been set\, a /// zero-length string will be written \(that is\, only the trailing /// null character\). /// /// Caller may call GetTapeNameBufLen\(\) to determine the required /// buffer size. /// /// Succeeds if all of the following are true: /// - the pTapeName pointer is valid. /// - the specified master slot was found. /// - the specified master slot contains a tape mob. /// - bufSize indicates the buffer is large enough to hold the name. /// /// If this method fails nothing will be written to *pTapeName. /// /// This method will return the following codes. If more than one of /// the listed errors is in effect\, it will return the first one /// encountered in the order given below: /// /// AAFRESULT_SUCCESS /// - succeeded. \(This is the only code indicating success.\) /// /// AAFRESULT_NOT_INITIALIZED /// - This object has not yet had Initialize\(\) called on it. /// /// AAFRESULT_NULL_PARAM /// - pTapeName arg is NULL. /// /// AAFRESULT_SLOT_NOTFOUND /// - The specified Master Slot was not found. /// /// AAFRESULT_NOT_TAPEMOB /// - The specified Master Slot does not contain a Tape MOB. /// /// AAFRESULT_SMALLBUF /// - bufSize indicates the buffer is too small to hold the string.) AD_XMETHOD2(GetTapeNameBufLen, [in], objPass, aafUInt32, masterSlotID, SlotID of the Master Mob slot, [out], objPass, aafUInt32 *, pLen, required buffer length, Returns the length of buffer required for the GetTapeName\(\) /// method. The value is placed into the location specified by /// pLen. The value will include space required for the trailing /// null character. /// /// Succeeds if all of the following are true: /// - the pLen pointer is valid. /// /// If this method fails nothing will be written to *pLen. /// /// This method will return the following codes. If more than one of /// the listed errors is in effect\, it will return the first one /// encountered in the order given below: /// /// AAFRESULT_SUCCESS /// - succeeded. \(This is the only code indicating success.\) /// /// AAFRESULT_NOT_INITIALIZED /// - This object has not yet had Initialize\(\) called on it. /// /// AAFRESULT_NULL_PARAM /// - pLen arg is NULL. /// /// AAFRESULT_SLOT_NOTFOUND /// - The specified Master Slot was not found. /// /// AAFRESULT_NOT_TAPEMOB /// - The specified Master Slot does not contain a Tape MOB.) AD_XMETHOD2(GetNumRepresentations, [in], objPass, aafSlotID_t, slotID, SlotID, [out\, retval], objPass, aafNumSlots_t *, pNumReps, number of representations, This function returns the number of media representations /// available for the specified SlotID on a specified Master /// Mob. This function is meant to work with /// GetRepresentationSourceClip\, so that you can iterate through /// all of the choices yourself. In most cases\, you can use /// GetCriteriaSourceClip to handle multiple /// representations. This function and /// GetRepresentationSourceClip are lower-level functions. /// /// Succeeds if all of the following are true: /// - the pNumReps pointer is valid. /// /// If this method fails nothing will be written to *pNumReps. /// /// This method will return the following codes. If more than one of /// the listed errors is in effect\, it will return the first one /// encountered in the order given below: /// /// AAFRESULT_SUCCESS /// - succeeded. \(This is the only code indicating success.\) /// /// AAFRESULT_NOT_INITIALIZED /// - This object has not yet had Initialize\(\) called on it. /// /// AAFRESULT_NULL_PARAM /// - pNumReps arg is NULL. /// /// AAFRESULT_SLOT_NOTFOUND /// - The Master Slot specified by slotID was not found.) AD_XMETHOD3(GetRepresentation, [in], objPass, aafSlotID_t, slotID, Slot ID, [in], objPass, aafUInt32, index, Index of requested representation, [out], objOut, AAFSegment, ppSourceClip, Requested Source Clip, This method returns the indexed media representation for the /// specified Master Mob\, SlotID\, and index. This call is meant to /// work with GetNumRepresentations\, so that you can iterate through /// all of the choices yourself. This method uses an integer index\, /// not an iterator. The function GetRepresentationSourceClip takes /// an index between 1 and the number of representations /// [inclusive]\, and returns the indexed Source Mob. You can make /// calls to functions such as AAFMedia::GetVideoInfo and /// AAFMedia::IsMediaContiguous to determine which media is the best /// fit. /// /// The returned source clip is AddRef\(\)ed before it is returned. /// /// Succeeds if all of the following are true: /// - the ppSourceClip pointer is valid. /// /// If this method fails nothing will be written to *ppSourceClip. /// /// This method will return the following codes. If more than one of /// the listed errors is in effect\, it will return the first one /// encountered in the order given below: /// /// AAFRESULT_SUCCESS /// - succeeded. \(This is the only code indicating success.\) /// /// AAFRESULT_NOT_INITIALIZED /// - This object has not yet had Initialize\(\) called on it. /// /// AAFRESULT_NULL_PARAM /// - ppSourceClip arg is NULL. /// /// AAFRESULT_SLOT_NOTFOUND /// - The specified Master Slot was not found. /// /// AAFRESULT_BADINDEX /// - No Source Mob at specified index.) AD_XMETHOD3(GetCriteriaSegment, [in], objPass, aafSlotID_t, slotID, Slot ID, [in], objPass, aafMediaCriteria_t *, pCriteria, Index of requested representation. Note: the /// aafMediaCriteria_t is defined as the following structure: /// typedef struct /// { /// aafCriteriaType_t type; /// aafCriteriaProc_t proc; /// } aafMediaCriteria_t; /// /// The type field can have one of the following values: /// typedef enum /// { /// kAAFAnyRepresentation = 0\, /// kAAFFastestRepresentation\, /// kAAFBestFidelityRepresentation\, /// kAAFSmallestRepresentation\, /// kAAFUseRepresentationProc /// } aafCriteriaType_t;, [out], objOut, AAFSegment, ppSegment, Requested Segment, Returns the Segment on the specified slot of a Master Mob /// that references the Source Mob that best meets the specified /// criteria. This function will work whether multiple media /// representations exist or not. /// /// The returned segment is AddRef\(\)ed before it is returned. /// /// Succeeds if all of the following are true: /// - the ppSegment pointer is valid. /// /// If this method fails nothing will be written to *ppSegment. /// /// This method will return the following codes. If more than one of /// the listed errors is in effect\, it will return the first one /// encountered in the order given below: /// /// AAFRESULT_SUCCESS /// - succeeded. \(This is the only code indicating success.\) /// /// AAFRESULT_NOT_INITIALIZED /// - This object has not yet had Initialize\(\) called on it. /// /// AAFRESULT_NULL_PARAM /// - ppSegment arg is NULL. /// /// AAFRESULT_SLOT_NOTFOUND /// - The specified Master Slot was not found.) AD_XMETHOD5(AppendPhysSourceRef, [in], objPass, aafRational_t, editrate, Edit rate of slot to contain reference, [in], objPass, aafSlotID_t, aMobSlot, SlotID of slot to contain reference, [in], objIn, AAFDataDef, pEssenceKind, Data kind of slot to contain reference. Requires a data kind /// valid for a essence stream. Valid data kinds are: /// - Picture /// - Sound, [in], objPass, aafSourceRef_t, ref, Reference to a Physical Source Mob, [in], objPass, aafLength_t, srcRefLength, Length of the Source Clip, Connects this Source Mob with the physical Source Mob that /// describes the previous generation of essence\, appending it to /// existing Mob data. If a physical Source Mob\, such as a File /// Source Mob or tape Source Mob\, references another physical /// Source Mob as its ancestor\, with no pulldown\, then this /// function makes the connection between the two. /// /// Functionally\, this is a helper function to create a slot with an /// AAFSourceClip referencing a particular piece of media. This /// function takes many parameters because the components of an /// aafSourceRef_t have been broken out as separate parameters. /// /// The ancestor of an AAFSourceMob with an AAFFileDescriptor is often an /// AAFTapeDescriptor or NIL. /// /// Succeeds if all of the following are true: /// - the pSourceRefObj pointer is valid. /// - the pEssenceKind pointer is valid. /// \(other conditions here\) /// /// This method will return the following codes. If more than one of /// the listed errors is in effect\, it will return the first one /// encountered in the order given below: /// /// AAFRESULT_SUCCESS /// - succeeded. \(This is the only code indicating success.\) /// /// AAFRESULT_NOT_INITIALIZED /// - This object has not yet had Initialize\(\) called on it. /// /// AAFRESULT_NULL_PARAM /// - pSourceRefObj or pEssenceKind is null. /// /// \(other codes here.\)) AD_XMETHOD5(NewPhysSourceRef, [in], objPass, aafRational_t, editrate, Edit rate of slot to contain reference, [in], objPass, aafSlotID_t, aMobSlot, SlotID of slot to contain reference, [in], objIn, AAFDataDef, pEssenceKind, Data kind of slot to contain reference. Requires a data kind /// valid for a essence stream. Valid data kinds are: /// - Picture /// - Sound, [in], objPass, aafSourceRef_t, ref, Reference to a Physical Source Mob, [in], objPass, aafLength_t, srcRefLength, Length of the Source Clip, Connects this Source Mob with the physical Source Mob that /// describes the previous generation of essence\, replacing any /// existing Mob data. If a physical Source Mob\, such as a File /// Source Mob or tape Source Mob\, references another physical /// Source Mob as its ancestor\, with no pulldown\, then this /// function makes the connection between the two. /// /// Functionally\, this is a helper function to create a slot with an /// AAFSourceClip referencing a particular piece of media. This /// function takes many parameters because the components of an /// aafSourceRef_t have been broken out as separate parameters. /// /// The ancestor of an AAFSourceMob with an AAFFileDescriptor is often an /// AAFTapeDescriptor or NIL. /// /// Succeeds if all of the following are true: /// - the pSourceRefObj pointer is valid. /// - the pEssenceKind pointer is valid. /// \(other conditions here\) /// /// This method will return the following codes. If more than one of /// the listed errors is in effect\, it will return the first one /// encountered in the order given below: /// /// AAFRESULT_SUCCESS /// - succeeded. \(This is the only code indicating success.\) /// /// AAFRESULT_NOT_INITIALIZED /// - This object has not yet had Initialize\(\) called on it. /// /// AAFRESULT_NULL_PARAM /// - pSourceRefObj or pEssenceKind is null. /// /// \(other codes here.\)) AD_XMETHOD9(CreateEssence, [in],objPass, aafSlotID_t,masterSlotID,, [in],objIn, AAFDataDef,pMediaKind,create essence of this type, [in\, ref],objPass, aafUID_constref,codecID,using this codec, [in],objPass, aafRational_t,editRate,with this edit rate, [in],objPass, aafRational_t,samplerate,with this sample rate, [in],enumIn, aafCompressEnable_t,Enable,optionally compressing it, [in],objIn, AAFLocator,destination,Optionally create the file HERE., [in\, ref],objPass, aafUID_constref,fileFormat,with this format, [out],objOut, AAFEssenceAccess,access,Return an essence access on the essence., Creates a single channel stream of essence. Convenience /// functions exist to create audio or video essence\, and a separate /// call \(MultiCreate\) exists to create interleaved audio and video /// data. /// /// The essence handle from this call can be used with /// WriteDataSamples and possibly WriteDataLines\, but NOT with /// WriteMultiSamples. /// /// If you are creating the essence\, and then attaching it to a /// master mob\, then the "masterMob" field may be left NULL. For /// video\, the sampleRate should be the edit rate of the file mob. /// For audio\, the sample rate should be the actual samples per /// second.) AD_XMETHOD7(CreateMultiEssence, [in\, ref],objPass, aafUID_constref,codecID,using this codec, [in],objPass, aafUInt16,arrayElemCount,this many channels, [in\,ref\,size_is\(arrayElemCount\)],objPass, aafmMultiCreate_t *,mediaArray,using these definitions, [in],enumIn, aafCompressEnable_t,Enable,optionally compressing it, [in],objIn, AAFLocator,destination,Optionally create the file HERE., [in\, ref],objPass, aafUID_constref,fileFormat,with this format, [out],objPass, IAAFEssenceMultiAccess**,access,Return an essence access on the essence., Creates a multi-channel interleaved stream of essence. The /// essence handle from this call can be used with WriteDataSamples /// or WriteMultiSamples but NOT with or WriteDataLines. /// /// If you are creating the essence\, and then attaching it to a /// master mob\, then the "masterMob" field may be left NULL.) AD_XMETHOD5(OpenEssence, [in],objPass, aafSlotID_t,slotID,On this slot, [in],objPass, aafMediaCriteria_t*,mediaCrit,using this essence criteria, [in],enumIn, aafMediaOpenMode_t,openMode,ReadOnly or Append, [in],enumIn, aafCompressEnable_t,compEnable,optionally decompressing, [out],objOut, AAFEssenceAccess,access,Return an essence access on the essence., Opens a single channel of a file mob. If the essence is /// interleaved\, then it will be di-interleaved when samples are /// read. This routine follows the locator\, and may call the locator /// failure callback if the essence can not be found. If the failure /// callback finds the essence\, then this routine will return /// normally. /// /// The essence handle from this call can be used with /// ReadDataSamples and possibly ReadDataLines\, but NOT with /// ReadMultiSamples. /// /// NOTE: If a locator is followed\, then essencePtr may reference /// ANOTHER file object\, which must be closed on file close.) AD_XMETHOD5(OpenMultiEssence, [in],objPass, aafSlotID_t,slotID,On this slot, [in],objPass, aafMediaCriteria_t*,mediaCrit,using this essence criteria, [in],enumIn, aafMediaOpenMode_t,openMode,ReadOnly or Append, [in],enumIn, aafCompressEnable_t,compEnable,optionally decompressing, [out],objPass, IAAFEssenceMultiAccess**,access,Return an essence access on the essence., Opens a all channels associated with a file mob. This routine /// follows the locator\, and may call the locator failure callback if /// the essence can not be found. If the failure callback finds the /// essence\, then this routine will return normally. /// /// The essence handle from this call can be used with /// WriteMultiSamples but NOT with WriteDataSamples.) AD_XMETHOD4(CountChannels, [in],objPass, aafSlotID_t,slotID,On this slot, [in],objPass, aafMediaCriteria_t*,mediaCrit,using this essence criteria, [in],objIn, AAFDataDef,pMediaKind,for this essence type, [out],objPass, aafUInt16*,numCh,How many channels?, Takes an opaque handle\, a master mob reference\, and a slot ID /// so that it may be called before the essence is opened. /// /// Returns the number of interleaved essence channels of a given /// type in the essence stream referenced by the given file mob. /// /// If the data format is not interleaved\, then the answer will /// always be zero or one. This function correctly returns zero for /// essence types not handled by a given codec\, and handles codecs /// which work with multiple essence types.) #c #c MasterMobEx methods #c AD_XMETHOD9(ExtendEssence, [in],objPass, aafSlotID_t,masterSlotID,, [in],objIn, AAFDataDef,pMediaKind,create essence of this type, [in\, ref],objPass, aafUID_constref,codecID,using this codec, [in],objPass, aafRational_t,editRate,with this edit rate, [in],objPass, aafRational_t,samplerate,with this sample rate, [in],enumIn, aafCompressEnable_t,Enable,optionally compressing it, [in],objIn, AAFLocator,destination,Optionally create the file HERE., [in\, ref],objPass, aafUID_constref,fileFormat,with this format, [out],objOut, AAFEssenceAccess,access,Return an essence access on the essence., Extends a single stream of essence that was originally created using /// IAAFMasterMob::CreateEssence. Extended essence is represented by /// a Sequence of SourceClip objects. The first call to ExtendEssence will cause the /// TimelineMobSlot's SourceClip object to be replaced by a /// Sequence. The initial SourceClip becomes the first /// component of the new Sequence.) AD_XMETHOD7(ExtendMultiEssence, [in\, ref],objPass, aafUID_constref,codecID,using this codec, [in],objPass, aafUInt16,arrayElemCount,this many channels, [in\,ref\,size_is\(arrayElemCount\)],objPass, aafmMultiCreate_t *,mediaArray,using these definitions, [in],enumIn, aafCompressEnable_t,Enable,optionally compressing it, [in],objIn, AAFLocator,destination,Optionally create the file HERE., [in\, ref],objPass, aafUID_constref,fileFormat,with this format, [out],objPass, IAAFEssenceMultiAccess**,access,Return an essence access on the essence., Extends a multi-channel interleaved stream of essence that was /// originally created using IAAFMasterMob::CreateMultiEssence. /// Extended essence is represented by a Sequence of SourceClip objects. /// The first call to ExtendEssence will cause the TimelineMobSlot's SourceClip /// object to be replaced by a Sequence. The initial SourceClip becomes the first /// component of the new Sequence.) #c #c New MasterMob2 methods #c AD_XMETHOD7(CreateStaticEssence, [in],objPass, aafSlotID_t,masterSlotID,, [in],objIn, AAFDataDef,pMediaKind,create essence of this type, [in\, ref],objPass, aafUID_constref,codecID,using this codec, [in],enumIn, aafCompressEnable_t,Enable,optionally compressing it, [in],objIn, AAFLocator,destination,Optionally create the file HERE., [in\, ref],objPass, aafUID_constref,fileFormat,with this format, [out],objOut, AAFEssenceAccess,access,Return an essence access on the essence., Creates and initializes the objects required to represent static essence.) /// This function is broadly similar to CreateEssence except that the essence is /// Created in a static slot in the MasterMob /// /// The essence handle from this call can be used with /// WriteDataSamples and possibly WriteDataLines\, but NOT with /// WriteMultiSamples. /// AD_XMETHOD9(CreateEventEssence, [in],objPass, aafSlotID_t,masterSlotID,, [in],objIn, AAFDataDef,pMediaKind,create essence of this type, [in\, ref],objPass, aafUID_constref,codecID,using this codec, [in],objPass, aafRational_t,editRate,with this edit rate, [in],objPass, aafRational_t,samplerate,with this sample rate, [in],enumIn, aafCompressEnable_t,Enable,optionally compressing it, [in],objIn, AAFLocator,destination,Optionally create the file HERE., [in\, ref],objPass, aafUID_constref,fileFormat,with this format, [out],objOut, AAFEssenceAccess,access,Return an essence access on the essence., Creates and initializes the objects required to represent stream of events.) /// This function is broadly similar to CreateEssence except that the essence is /// Created in a event slot in the MasterMob /// /// /// The essence handle from this call can be used with /// WriteDataSamples and possibly WriteDataLines\, but NOT with /// WriteMultiSamples. /// #c #c New MasterMob3 methods #c AD_XMETHOD5(AddMasterSlotWithSequence, [in], objIn, AAFDataDef, pDataDef, Data kind of new slot. Requires a data kind valid for a media /// stream. Valid data kinds are: /// - Picture /// - Sound, [in], objPass, aafSlotID_t, sourceSlotID, Slot ID of the Source Mob slot to be added to the Master Mob, [in], objIn, AAFSourceMob, pSourceMob, Source Mob containing the slot to be added to the Master Mob, [in], objPass, aafSlotID_t, masterSlotID, SlotID assigned to the new Master Mob slot, [in\, string], objPass, aafCharacter_constptr, pSlotName, Name to assign to new slot in Master Mob, This function is similar to AddMasterSlot but creates the structure /// MobSlot - Sequence - SourceClip instead of MobSlot - SourceClip. /// This arrangement is required for MXF compliance. /// /// This function adds a slot to the specified Master Mob that /// references the specified a slot in the specified Source Mob. The /// new slot in the Master Mob has a Sequence containing the Source Clip /// that specifies the Source Mob in its source reference properties. /// /// Note: If pSlotName is passed in with zero length\, then the /// slot is not assigned a name. Slot names are not used by the /// SDK\, and exist only so the user can name slots. /// /// Succeeds if all of the following are true: /// \(more conditions here\) /// /// If this method fails no state is changed. /// /// This method will return the following codes. If more than one of /// the listed errors is in effect\, it will return the first one /// encountered in the order given below: /// /// AAFRESULT_SUCCESS /// - succeeded. \(This is the only code indicating success.\) /// /// AAFRESULT_NOT_INITIALIZED /// - This object has not yet had Initialize\(\) called on it. /// /// AAFRESULT_NULL_PARAM /// - One or more of the following parameters are NULL pSourceMob\, /// pSlotName\, and pDataDef. /// /// AAFRESULT_INVALID_DATADEF /// - The data kind of the source MOB slot to be added to the Master /// Mob does not match what is specfied in pDataDef. /// /// AAFRESULT_SLOT_NOTFOUND /// - The specified Source Mob slot was not found. /// /// AAFRESULT_SLOT_EXISTS /// - The specified Master slot ID already exists.) AD_XCLASS_END(Concrete, StoredObject) Index: AAFMasterMob.dod =================================================================== RCS file: /cvsroot/aaf/AAF/dodo/AAFMasterMob.dod,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** AAFMasterMob.dod 1 Jun 2009 11:46:50 -0000 1.47 --- AAFMasterMob.dod 24 Aug 2009 13:31:59 -0000 1.48 *************** *** 44,47 **** --- 44,48 ---- #import ./AAFMasterMobEx.exp #import ./AAFMasterMob2.exp + #import ./AAFMasterMob3.exp AD_HEAD AD_IDL(/// *************** *** 69,73 **** AD_DEFAULT_UUID(b1a21372, 1a7d, 11d2, bf, 78, 00, 10, 4b, c9, 15, 6d) #c AD_XCLASS_BEGIN(Concrete, StoredObject) ! AD_COM_EXT3_CLASS_BEGIN(public IAAFSearchSource,public IAAFMasterMobEx,public IAAFMasterMob2) AD_METHOD0(Initialize, Initializes a newly allocated\, empty IAAFMasterMob-supporting --- 70,74 ---- AD_DEFAULT_UUID(b1a21372, 1a7d, 11d2, bf, 78, 00, 10, 4b, c9, 15, 6d) #c AD_XCLASS_BEGIN(Concrete, StoredObject) ! AD_COM_EXT4_CLASS_BEGIN(public IAAFSearchSource,public IAAFMasterMobEx,public IAAFMasterMob2,public IAAFMasterMob3) AD_METHOD0(Initialize, Initializes a newly allocated\, empty IAAFMasterMob-supporting *************** *** 659,662 **** AD_COM_METH(.method-CreateEventEssence) #c AD_XCLASS_END(Concrete, StoredObject) ! AD_COM_EXT3_CLASS_END(AAFSearchSource, AAFMasterMobEx, AAFMasterMob2) --- 660,668 ---- AD_COM_METH(.method-CreateEventEssence) + #c + #c MasterMob3 methods + #c + AD_COM_METH(.method-AddMasterSlotWithSequence) + #c AD_XCLASS_END(Concrete, StoredObject) ! AD_COM_EXT4_CLASS_END(AAFSearchSource, AAFMasterMobEx, AAFMasterMob2, AAFMasterMob3) Index: aafobjects.mk =================================================================== RCS file: /cvsroot/aaf/AAF/dodo/aafobjects.mk,v retrieving revision 1.175 retrieving revision 1.176 diff -C2 -d -r1.175 -r1.176 *** aafobjects.mk 28 Jul 2009 05:49:05 -0000 1.175 --- aafobjects.mk 24 Aug 2009 13:31:59 -0000 1.176 *************** *** 59,62 **** --- 59,63 ---- AAFKLVStreamParameters \ AAFMasterMob2 \ + AAFMasterMob3 \ AAFMasterMobEx \ AAFMob2 \ |