topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-MediaHandlers.h / h



  /*
       File:       MediaHandlers.h
   
       Contains:   QuickTime Interfaces.
   
       Version:    Technology: QuickTime 6.0
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1990-2001 by Apple Computer, Inc., all rights reserved
   
       Bugs?:      For bug reports, consult the following page on
                   the World Wide Web:
   
                       http://developer.apple.com/bugreporter/
   
  */
  ifndef __MEDIAHANDLERS__
  define __MEDIAHANDLERS__
  
  ifndef __CONDITIONALMACROS__
  include <ConditionalMacros.h>
  endif
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __COMPONENTS__
  include <Components.h>
  endif
  
  ifndef __MOVIES__
  include <Movies.h>
  endif
  
  ifndef __SOUND__
  include <Sound.h>
  endif
  
  if PRAGMA_ONCE
  #pragma once
  endif
  
  ifdef __cplusplus
  extern "C" {
  endif
  
  if PRAGMA_IMPORT
  #pragma import on
  endif
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=mac68k
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(push, 2)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack(2)
  endif
  
  typedef CALLBACK_API( void , PrePrerollCompleteProcPtr )(MediaHandler mh, OSErr err, void *refcon);
  typedef STACK_UPP_TYPE(PrePrerollCompleteProcPtr)               PrePrerollCompleteUPP;
  enum {
      handlerHasSpatial           = 1 << 0,
      handlerCanClip              = 1 << 1,
      handlerCanMatte             = 1 << 2,
      handlerCanTransferMode      = 1 << 3,
      handlerNeedsBuffer          = 1 << 4,
      handlerNoIdle               = 1 << 5,
      handlerNoScheduler          = 1 << 6,
      handlerWantsTime            = 1 << 7,
      handlerCGrafPortOnly        = 1 << 8,
      handlerCanSend              = 1 << 9,
      handlerCanHandleComplexMatrix = 1 << 10,
      handlerWantsDestinationPixels = 1 << 11,
      handlerCanSendImageData     = 1 << 12,
      handlerCanPicSave           = 1 << 13
  };
  
  /* media task flags */
  enum {
      mMustDraw                   = 1 << 3,
      mAtEnd                      = 1 << 4,
      mPreflightDraw              = 1 << 5,
      mSyncDrawing                = 1 << 6,
      mPrecompositeOnly           = 1 << 9,
      mSoundOnly                  = 1 << 10,
      mDoIdleActionsBeforeDraws   = 1 << 11,
      mDisableIdleActions         = 1 << 12
  };
  
  /* media task result flags */
  enum {
      mDidDraw                    = 1 << 0,
      mNeedsToDraw                = 1 << 2,
      mDrawAgain                  = 1 << 3,
      mPartialDraw                = 1 << 4,
      mWantIdleActions            = 1 << 5
  };
  
  enum {
      forceUpdateRedraw           = 1 << 0,
      forceUpdateNewBuffer        = 1 << 1
  };
  
  /* media hit test flags */
  enum {
      mHitTestBounds              = 1L << 0,                      /*    point must only be within targetRefCon's bounding box */
      mHitTestImage               = 1L << 1,                      /*  point must be within the shape of the targetRefCon's image */
      mHitTestInvisible           = 1L << 2,                      /*  invisible targetRefCon's may be hit tested */
      mHitTestIsClick             = 1L << 3                       /*  for codecs that want mouse events */
  };
  
  /* media is opaque flags */
  enum {
      mOpaque                     = 1L << 0,
      mInvisible                  = 1L << 1
  };
  
  /* MediaSetPublicInfo/MediaGetPublicInfo selectors */
  enum {
      kMediaQTIdleFrequencySelector = FOUR_CHAR_CODE('idfq')
  };
  
  struct GetMovieCompleteParams {
      short                           version;
      Movie                           theMovie;
      Track                           theTrack;
      Media                           theMedia;
      TimeScale                       movieScale;
      TimeScale                       mediaScale;
      TimeValue                       movieDuration;
      TimeValue                       trackDuration;
      TimeValue                       mediaDuration;
      Fixed                           effectiveRate;
      TimeBase                        timeBase;
      short                           volume;
      Fixed                           width;
      Fixed                           height;
      MatrixRecord                    trackMovieMatrix;
      CGrafPtr                        moviePort;
      GDHandle                        movieGD;
      PixMapHandle                    trackMatte;
      QTAtomContainer                 inputMap;
      QTMediaContextID                mediaContextID;
  };
  typedef struct GetMovieCompleteParams   GetMovieCompleteParams;
  enum {
      kMediaVideoParamBrightness  = 1,
      kMediaVideoParamContrast    = 2,
      kMediaVideoParamHue         = 3,
      kMediaVideoParamSharpness   = 4,
      kMediaVideoParamSaturation  = 5,
      kMediaVideoParamBlackLevel  = 6,
      kMediaVideoParamWhiteLevel  = 7
  };
  
  /* These are for MediaGetInfo() and MediaSetInfo().*/
  enum {
      kMHInfoEncodedFrameRate     = FOUR_CHAR_CODE('orat')        /* Parameter is a MHInfoEncodedFrameRateRecord*.*/
  };
  
  /* This holds the frame rate at which the track was encoded.*/
  
  struct MHInfoEncodedFrameRateRecord {
      Fixed                           encodedFrameRate;
  };
  typedef struct MHInfoEncodedFrameRateRecord MHInfoEncodedFrameRateRecord;
  
  typedef Handle *                        dataHandlePtr;
  typedef dataHandlePtr *                 dataHandleHandle;
  
  struct QTCustomActionTargetRecord {
      Movie                           movie;
      DoMCActionUPP                   doMCActionCallbackProc;
      long                            callBackRefcon;
      Track                           track;
      long                            trackObjectRefCon;
      Track                           defaultTrack;
      long                            defaultObjectRefCon;
      long                            reserved1;
      long                            reserved2;
  };
  typedef struct QTCustomActionTargetRecord QTCustomActionTargetRecord;
  
  typedef QTCustomActionTargetRecord *    QTCustomActionTargetPtr;
  
  struct MediaEQSpectrumBandsRecord {
      short                           count;
      UnsignedFixedPtr                frequency;                  /* pointer to array of frequencies*/
  };
  typedef struct MediaEQSpectrumBandsRecord MediaEQSpectrumBandsRecord;
  typedef MediaEQSpectrumBandsRecord *    MediaEQSpectrumBandsRecordPtr;
  EXTERN_API( ComponentResult )
  CallComponentExecuteWiredAction (ComponentInstance      ci,
                                   QTAtomContainer        actionContainer,
                                   QTAtom                 actionAtom,
                                   QTCustomActionTargetPtr  target,
                                   QTEventRecordPtr       event)                              FIVEWORDINLINE(0x2F3C, 0x0010, 0xFFF7, 0x7000, 0xA82A);
  
  /* MediaCallRange2 */
  /* These are unique to each type of media handler */
  /* They are also included in the public interfaces */
  
  /* Flags for MediaSetChunkManagementFlags*/
  enum {
      kEmptyPurgableChunksOverAllowance = 1
  };
  
  EXTERN_API( ComponentResult )
  MediaSetChunkManagementFlags    (MediaHandler           mh,
                                   UInt32                 flags,
                                   UInt32                 flagsMask)                          FIVEWORDINLINE(0x2F3C, 0x0008, 0x0415, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetChunkManagementFlags    (MediaHandler           mh,
                                   UInt32 *               flags)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x0416, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetPurgeableChunkMemoryAllowance (MediaHandler     mh,
                                   Size                   allowance)                          FIVEWORDINLINE(0x2F3C, 0x0004, 0x0417, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetPurgeableChunkMemoryAllowance (MediaHandler     mh,
                                   Size *                 allowance)                          FIVEWORDINLINE(0x2F3C, 0x0004, 0x0418, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaEmptyAllPurgeableChunks    (MediaHandler           mh)                                 FIVEWORDINLINE(0x2F3C, 0x0000, 0x0419, 0x7000, 0xA82A);
  
  
*** These are the calls for dealing with the Generic media handler ****

  
  EXTERN_API( ComponentResult )
  MediaInitialize                 (MediaHandler           mh,
                                   GetMovieCompleteParams * gmc)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x0501, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetHandlerCapabilities     (MediaHandler           mh,
                                   long                   flags,
                                   long                   flagsMask)                          FIVEWORDINLINE(0x2F3C, 0x0008, 0x0502, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaIdle                       (MediaHandler           mh,
                                   TimeValue              atMediaTime,
                                   long                   flagsIn,
                                   long *                 flagsOut,
                                   const TimeRecord *     movieTime)                          FIVEWORDINLINE(0x2F3C, 0x0010, 0x0503, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetMediaInfo               (MediaHandler           mh,
                                   Handle                 h)                                  FIVEWORDINLINE(0x2F3C, 0x0004, 0x0504, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaPutMediaInfo               (MediaHandler           mh,
                                   Handle                 h)                                  FIVEWORDINLINE(0x2F3C, 0x0004, 0x0505, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetActive                  (MediaHandler           mh,
                                   Boolean                enableMedia)                        FIVEWORDINLINE(0x2F3C, 0x0002, 0x0506, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetRate                    (MediaHandler           mh,
                                   Fixed                  rate)                               FIVEWORDINLINE(0x2F3C, 0x0004, 0x0507, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGGetStatus                 (MediaHandler           mh,
                                   ComponentResult *      statusErr)                          FIVEWORDINLINE(0x2F3C, 0x0004, 0x0508, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaTrackEdited                (MediaHandler           mh)                                 FIVEWORDINLINE(0x2F3C, 0x0000, 0x0509, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetMediaTimeScale          (MediaHandler           mh,
                                   TimeScale              newTimeScale)                       FIVEWORDINLINE(0x2F3C, 0x0004, 0x050A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetMovieTimeScale          (MediaHandler           mh,
                                   TimeScale              newTimeScale)                       FIVEWORDINLINE(0x2F3C, 0x0004, 0x050B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetGWorld                  (MediaHandler           mh,
                                   CGrafPtr               aPort,
                                   GDHandle               aGD)                                FIVEWORDINLINE(0x2F3C, 0x0008, 0x050C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetDimensions              (MediaHandler           mh,
                                   Fixed                  width,
                                   Fixed                  height)                             FIVEWORDINLINE(0x2F3C, 0x0008, 0x050D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetClip                    (MediaHandler           mh,
                                   RgnHandle              theClip)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x050E, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetMatrix                  (MediaHandler           mh,
                                   MatrixRecord *         trackMovieMatrix)                   FIVEWORDINLINE(0x2F3C, 0x0004, 0x050F, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetTrackOpaque             (MediaHandler           mh,
                                   Boolean *              trackIsOpaque)                      FIVEWORDINLINE(0x2F3C, 0x0004, 0x0510, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetGraphicsMode            (MediaHandler           mh,
                                   long                   mode,
                                   const RGBColor *       opColor)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0511, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetGraphicsMode            (MediaHandler           mh,
                                   long *                 mode,
                                   RGBColor *             opColor)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0512, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGSetVolume                 (MediaHandler           mh,
                                   short                  volume)                             FIVEWORDINLINE(0x2F3C, 0x0002, 0x0513, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetSoundBalance            (MediaHandler           mh,
                                   short                  balance)                            FIVEWORDINLINE(0x2F3C, 0x0002, 0x0514, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetSoundBalance            (MediaHandler           mh,
                                   short *                balance)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0515, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetNextBoundsChange        (MediaHandler           mh,
                                   TimeValue *            when)                               FIVEWORDINLINE(0x2F3C, 0x0004, 0x0516, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetSrcRgn                  (MediaHandler           mh,
                                   RgnHandle              rgn,
                                   TimeValue              atMediaTime)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x0517, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaPreroll                    (MediaHandler           mh,
                                   TimeValue              time,
                                   Fixed                  rate)                               FIVEWORDINLINE(0x2F3C, 0x0008, 0x0518, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSampleDescriptionChanged   (MediaHandler           mh,
                                   long                   index)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x0519, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaHasCharacteristic          (MediaHandler           mh,
                                   OSType                 characteristic,
                                   Boolean *              hasIt)                              FIVEWORDINLINE(0x2F3C, 0x0008, 0x051A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetOffscreenBufferSize     (MediaHandler           mh,
                                   Rect *                 bounds,
                                   short                  depth,
                                   CTabHandle             ctab)                               FIVEWORDINLINE(0x2F3C, 0x000A, 0x051B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetHints                   (MediaHandler           mh,
                                   long                   hints)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x051C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetName                    (MediaHandler           mh,
                                   Str255                 name,
                                   long                   requestedLanguage,
                                   long *                 actualLanguage)                     FIVEWORDINLINE(0x2F3C, 0x000C, 0x051D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaForceUpdate                (MediaHandler           mh,
                                   long                   forceUpdateFlags)                   FIVEWORDINLINE(0x2F3C, 0x0004, 0x051E, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetDrawingRgn              (MediaHandler           mh,
                                   RgnHandle *            partialRgn)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x051F, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGSetActiveSegment          (MediaHandler           mh,
                                   TimeValue              activeStart,
                                   TimeValue              activeDuration)                     FIVEWORDINLINE(0x2F3C, 0x0008, 0x0520, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaInvalidateRegion           (MediaHandler           mh,
                                   RgnHandle              invalRgn)                           FIVEWORDINLINE(0x2F3C, 0x0004, 0x0521, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetNextStepTime            (MediaHandler           mh,
                                   short                  flags,
                                   TimeValue              mediaTimeIn,
                                   TimeValue *            mediaTimeOut,
                                   Fixed                  rate)                               FIVEWORDINLINE(0x2F3C, 0x000E, 0x0522, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetNonPrimarySourceData    (MediaHandler           mh,
                                   long                   inputIndex,
                                   long                   dataDescriptionSeed,
                                   Handle                 dataDescription,
                                   void *                 data,
                                   long                   dataSize,
                                   ICMCompletionProcRecordPtr  asyncCompletionProc,
                                   ICMConvertDataFormatUPP  transferProc,
                                   void *                 refCon)                             FIVEWORDINLINE(0x2F3C, 0x0020, 0x0523, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaChangedNonPrimarySource    (MediaHandler           mh,
                                   long                   inputIndex)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x0524, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaTrackReferencesChanged     (MediaHandler           mh)                                 FIVEWORDINLINE(0x2F3C, 0x0000, 0x0525, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetSampleDataPointer       (MediaHandler           mh,
                                   long                   sampleNum,
                                   Ptr *                  dataPtr,
                                   long *                 dataSize,
                                   long *                 sampleDescIndex)                    FIVEWORDINLINE(0x2F3C, 0x0010, 0x0526, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaReleaseSampleDataPointer   (MediaHandler           mh,
                                   long                   sampleNum)                          FIVEWORDINLINE(0x2F3C, 0x0004, 0x0527, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaTrackPropertyAtomChanged   (MediaHandler           mh)                                 FIVEWORDINLINE(0x2F3C, 0x0000, 0x0528, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetTrackInputMapReference  (MediaHandler           mh,
                                   QTAtomContainer        inputMap)                           FIVEWORDINLINE(0x2F3C, 0x0004, 0x0529, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetVideoParam              (MediaHandler           mh,
                                   long                   whichParam,
                                   unsigned short *       value)                              FIVEWORDINLINE(0x2F3C, 0x0008, 0x052B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetVideoParam              (MediaHandler           mh,
                                   long                   whichParam,
                                   unsigned short *       value)                              FIVEWORDINLINE(0x2F3C, 0x0008, 0x052C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaCompare                    (MediaHandler           mh,
                                   Boolean *              isOK,
                                   Media                  srcMedia,
                                   ComponentInstance      srcMediaComponent)                  FIVEWORDINLINE(0x2F3C, 0x000C, 0x052D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetClock                   (MediaHandler           mh,
                                   ComponentInstance *    clock)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x052E, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetSoundOutputComponent    (MediaHandler           mh,
                                   Component              outputComponent)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x052F, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetSoundOutputComponent    (MediaHandler           mh,
                                   Component *            outputComponent)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x0530, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetSoundLocalizationData   (MediaHandler           mh,
                                   Handle                 data)                               FIVEWORDINLINE(0x2F3C, 0x0004, 0x0531, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetInvalidRegion           (MediaHandler           mh,
                                   RgnHandle              rgn)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x053C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSampleDescriptionB2N       (MediaHandler           mh,
                                   SampleDescriptionHandle  sampleDescriptionH)               FIVEWORDINLINE(0x2F3C, 0x0004, 0x053E, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSampleDescriptionN2B       (MediaHandler           mh,
                                   SampleDescriptionHandle  sampleDescriptionH)               FIVEWORDINLINE(0x2F3C, 0x0004, 0x053F, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaQueueNonPrimarySourceData  (MediaHandler           mh,
                                   long                   inputIndex,
                                   long                   dataDescriptionSeed,
                                   Handle                 dataDescription,
                                   void *                 data,
                                   long                   dataSize,
                                   ICMCompletionProcRecordPtr  asyncCompletionProc,
                                   const ICMFrameTimeRecord * frameTime,
                                   ICMConvertDataFormatUPP  transferProc,
                                   void *                 refCon)                             FIVEWORDINLINE(0x2F3C, 0x0024, 0x0540, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaFlushNonPrimarySourceData  (MediaHandler           mh,
                                   long                   inputIndex)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x0541, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetURLLink                 (MediaHandler           mh,
                                   Point                  displayWhere,
                                   Handle *               urlLink)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0543, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaMakeMediaTimeTable         (MediaHandler           mh,
                                   long **                offsets,
                                   TimeValue              startTime,
                                   TimeValue              endTime,
                                   TimeValue              timeIncrement,
                                   short                  firstDataRefIndex,
                                   short                  lastDataRefIndex,
                                   long *                 retDataRefSkew)                     FIVEWORDINLINE(0x2F3C, 0x0018, 0x0545, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaHitTestForTargetRefCon     (MediaHandler           mh,
                                   long                   flags,
                                   Point                  loc,
                                   long *                 targetRefCon)                       FIVEWORDINLINE(0x2F3C, 0x000C, 0x0546, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaHitTestTargetRefCon        (MediaHandler           mh,
                                   long                   targetRefCon,
                                   long                   flags,
                                   Point                  loc,
                                   Boolean *              wasHit)                             FIVEWORDINLINE(0x2F3C, 0x0010, 0x0547, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetActionsForQTEvent       (MediaHandler           mh,
                                   QTEventRecordPtr       event,
                                   long                   targetRefCon,
                                   QTAtomContainer *      container,
                                   QTAtom *               atom)                               FIVEWORDINLINE(0x2F3C, 0x0010, 0x0548, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaDisposeTargetRefCon        (MediaHandler           mh,
                                   long                   targetRefCon)                       FIVEWORDINLINE(0x2F3C, 0x0004, 0x0549, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaTargetRefConsEqual         (MediaHandler           mh,
                                   long                   firstRefCon,
                                   long                   secondRefCon,
                                   Boolean *              equal)                              FIVEWORDINLINE(0x2F3C, 0x000C, 0x054A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetActionsCallback         (MediaHandler           mh,
                                   ActionsUPP             actionsCallbackProc,
                                   void *                 refcon)                             FIVEWORDINLINE(0x2F3C, 0x0008, 0x054B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaPrePrerollBegin            (MediaHandler           mh,
                                   TimeValue              time,
                                   Fixed                  rate,
                                   PrePrerollCompleteUPP  completeProc,
                                   void *                 refcon)                             FIVEWORDINLINE(0x2F3C, 0x0010, 0x054C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaPrePrerollCancel           (MediaHandler           mh,
                                   void *                 refcon)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x054D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaEnterEmptyEdit             (MediaHandler           mh)                                 FIVEWORDINLINE(0x2F3C, 0x0000, 0x054F, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaCurrentMediaQueuedData     (MediaHandler           mh,
                                   long *                 milliSecs)                          FIVEWORDINLINE(0x2F3C, 0x0004, 0x0550, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetEffectiveVolume         (MediaHandler           mh,
                                   short *                volume)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x0551, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaResolveTargetRefCon        (MediaHandler           mh,
                                   QTAtomContainer        container,
                                   QTAtom                 atom,
                                   long *                 targetRefCon)                       FIVEWORDINLINE(0x2F3C, 0x000C, 0x0552, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetSoundLevelMeteringEnabled (MediaHandler         mh,
                                   Boolean *              enabled)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0553, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetSoundLevelMeteringEnabled (MediaHandler         mh,
                                   Boolean                enable)                             FIVEWORDINLINE(0x2F3C, 0x0002, 0x0554, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetSoundLevelMeterInfo     (MediaHandler           mh,
                                   LevelMeterInfoPtr      levelInfo)                          FIVEWORDINLINE(0x2F3C, 0x0004, 0x0555, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetEffectiveSoundBalance   (MediaHandler           mh,
                                   short *                balance)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0556, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetScreenLock              (MediaHandler           mh,
                                   Boolean                lockIt)                             FIVEWORDINLINE(0x2F3C, 0x0002, 0x0557, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetDoMCActionCallback      (MediaHandler           mh,
                                   DoMCActionUPP          doMCActionCallbackProc,
                                   void *                 refcon)                             FIVEWORDINLINE(0x2F3C, 0x0008, 0x0558, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetErrorString             (MediaHandler           mh,
                                   ComponentResult        theError,
                                   Str255                 errorString)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x0559, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetSoundEqualizerBands     (MediaHandler           mh,
                                   MediaEQSpectrumBandsRecordPtr  spectrumInfo)               FIVEWORDINLINE(0x2F3C, 0x0004, 0x055A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetSoundEqualizerBands     (MediaHandler           mh,
                                   MediaEQSpectrumBandsRecordPtr  spectrumInfo)               FIVEWORDINLINE(0x2F3C, 0x0004, 0x055B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetSoundEqualizerBandLevels (MediaHandler          mh,
                                   UInt8 *                bandLevels)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x055C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaDoIdleActions              (MediaHandler           mh)                                 FIVEWORDINLINE(0x2F3C, 0x0000, 0x055D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetSoundBassAndTreble      (MediaHandler           mh,
                                   short                  bass,
                                   short                  treble)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x055E, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetSoundBassAndTreble      (MediaHandler           mh,
                                   short *                bass,
                                   short *                treble)                             FIVEWORDINLINE(0x2F3C, 0x0008, 0x055F, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaTimeBaseChanged            (MediaHandler           mh)                                 FIVEWORDINLINE(0x2F3C, 0x0000, 0x0560, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaMCIsPlayerEvent            (MediaHandler           mh,
                                   const EventRecord *    e,
                                   Boolean *              handledIt)                          FIVEWORDINLINE(0x2F3C, 0x0008, 0x0561, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetMediaLoadState          (MediaHandler           mh,
                                   long *                 mediaLoadState)                     FIVEWORDINLINE(0x2F3C, 0x0004, 0x0562, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaVideoOutputChanged         (MediaHandler           mh,
                                   ComponentInstance      vout)                               FIVEWORDINLINE(0x2F3C, 0x0004, 0x0563, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaEmptySampleCache           (MediaHandler           mh,
                                   long                   sampleNum,
                                   long                   sampleCount)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x0564, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetPublicInfo              (MediaHandler           mh,
                                   OSType                 infoSelector,
                                   void *                 infoDataPtr,
                                   Size *                 ioDataSize)                         FIVEWORDINLINE(0x2F3C, 0x000C, 0x0565, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetPublicInfo              (MediaHandler           mh,
                                   OSType                 infoSelector,
                                   void *                 infoDataPtr,
                                   Size                   dataSize)                           FIVEWORDINLINE(0x2F3C, 0x000C, 0x0566, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGetUserPreferredCodecs     (MediaHandler           mh,
                                   CodecComponentHandle * userPreferredCodecs)                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0567, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaSetUserPreferredCodecs     (MediaHandler           mh,
                                   CodecComponentHandle   userPreferredCodecs)                FIVEWORDINLINE(0x2F3C, 0x0004, 0x0568, 0x7000, 0xA82A);
  
  /* Keyboard Focus Support*/
  
  EXTERN_API( ComponentResult )
  MediaRefConSetProperty          (MediaHandler           mh,
                                   long                   refCon,
                                   long                   propertyType,
                                   void *                 propertyValue)                      FIVEWORDINLINE(0x2F3C, 0x000C, 0x0569, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaRefConGetProperty          (MediaHandler           mh,
                                   long                   refCon,
                                   long                   propertyType,
                                   void *                 propertyValue)                      FIVEWORDINLINE(0x2F3C, 0x000C, 0x056A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaNavigateTargetRefCon       (MediaHandler           mh,
                                   long                   navigation,
                                   long *                 refCon)                             FIVEWORDINLINE(0x2F3C, 0x0008, 0x056B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGGetIdleManager            (MediaHandler           mh,
                                   IdleManager *          pim)                                FIVEWORDINLINE(0x2F3C, 0x0004, 0x056C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  MediaGSetIdleManager            (MediaHandler           mh,
                                   IdleManager            im)                                 FIVEWORDINLINE(0x2F3C, 0x0004, 0x056D, 0x7000, 0xA82A);
  
  /* selectors for component calls */
  enum {
      kCallComponentExecuteWiredActionSelect     = -9,
      kMediaSetChunkManagementFlagsSelect        = 0x0415,
      kMediaGetChunkManagementFlagsSelect        = 0x0416,
      kMediaSetPurgeableChunkMemoryAllowanceSelect = 0x0417,
      kMediaGetPurgeableChunkMemoryAllowanceSelect = 0x0418,
      kMediaEmptyAllPurgeableChunksSelect        = 0x0419,
      kMediaInitializeSelect                     = 0x0501,
      kMediaSetHandlerCapabilitiesSelect         = 0x0502,
      kMediaIdleSelect                           = 0x0503,
      kMediaGetMediaInfoSelect                   = 0x0504,
      kMediaPutMediaInfoSelect                   = 0x0505,
      kMediaSetActiveSelect                      = 0x0506,
      kMediaSetRateSelect                        = 0x0507,
      kMediaGGetStatusSelect                     = 0x0508,
      kMediaTrackEditedSelect                    = 0x0509,
      kMediaSetMediaTimeScaleSelect              = 0x050A,
      kMediaSetMovieTimeScaleSelect              = 0x050B,
      kMediaSetGWorldSelect                      = 0x050C,
      kMediaSetDimensionsSelect                  = 0x050D,
      kMediaSetClipSelect                        = 0x050E,
      kMediaSetMatrixSelect                      = 0x050F,
      kMediaGetTrackOpaqueSelect                 = 0x0510,
      kMediaSetGraphicsModeSelect                = 0x0511,
      kMediaGetGraphicsModeSelect                = 0x0512,
      kMediaGSetVolumeSelect                     = 0x0513,
      kMediaSetSoundBalanceSelect                = 0x0514,
      kMediaGetSoundBalanceSelect                = 0x0515,
      kMediaGetNextBoundsChangeSelect            = 0x0516,
      kMediaGetSrcRgnSelect                      = 0x0517,
      kMediaPrerollSelect                        = 0x0518,
      kMediaSampleDescriptionChangedSelect       = 0x0519,
      kMediaHasCharacteristicSelect              = 0x051A,
      kMediaGetOffscreenBufferSizeSelect         = 0x051B,
      kMediaSetHintsSelect                       = 0x051C,
      kMediaGetNameSelect                        = 0x051D,
      kMediaForceUpdateSelect                    = 0x051E,
      kMediaGetDrawingRgnSelect                  = 0x051F,
      kMediaGSetActiveSegmentSelect              = 0x0520,
      kMediaInvalidateRegionSelect               = 0x0521,
      kMediaGetNextStepTimeSelect                = 0x0522,
      kMediaSetNonPrimarySourceDataSelect        = 0x0523,
      kMediaChangedNonPrimarySourceSelect        = 0x0524,
      kMediaTrackReferencesChangedSelect         = 0x0525,
      kMediaGetSampleDataPointerSelect           = 0x0526,
      kMediaReleaseSampleDataPointerSelect       = 0x0527,
      kMediaTrackPropertyAtomChangedSelect       = 0x0528,
      kMediaSetTrackInputMapReferenceSelect      = 0x0529,
      kMediaSetVideoParamSelect                  = 0x052B,
      kMediaGetVideoParamSelect                  = 0x052C,
      kMediaCompareSelect                        = 0x052D,
      kMediaGetClockSelect                       = 0x052E,
      kMediaSetSoundOutputComponentSelect        = 0x052F,
      kMediaGetSoundOutputComponentSelect        = 0x0530,
      kMediaSetSoundLocalizationDataSelect       = 0x0531,
      kMediaGetInvalidRegionSelect               = 0x053C,
      kMediaSampleDescriptionB2NSelect           = 0x053E,
      kMediaSampleDescriptionN2BSelect           = 0x053F,
      kMediaQueueNonPrimarySourceDataSelect      = 0x0540,
      kMediaFlushNonPrimarySourceDataSelect      = 0x0541,
      kMediaGetURLLinkSelect                     = 0x0543,
      kMediaMakeMediaTimeTableSelect             = 0x0545,
      kMediaHitTestForTargetRefConSelect         = 0x0546,
      kMediaHitTestTargetRefConSelect            = 0x0547,
      kMediaGetActionsForQTEventSelect           = 0x0548,
      kMediaDisposeTargetRefConSelect            = 0x0549,
      kMediaTargetRefConsEqualSelect             = 0x054A,
      kMediaSetActionsCallbackSelect             = 0x054B,
      kMediaPrePrerollBeginSelect                = 0x054C,
      kMediaPrePrerollCancelSelect               = 0x054D,
      kMediaEnterEmptyEditSelect                 = 0x054F,
      kMediaCurrentMediaQueuedDataSelect         = 0x0550,
      kMediaGetEffectiveVolumeSelect             = 0x0551,
      kMediaResolveTargetRefConSelect            = 0x0552,
      kMediaGetSoundLevelMeteringEnabledSelect   = 0x0553,
      kMediaSetSoundLevelMeteringEnabledSelect   = 0x0554,
      kMediaGetSoundLevelMeterInfoSelect         = 0x0555,
      kMediaGetEffectiveSoundBalanceSelect       = 0x0556,
      kMediaSetScreenLockSelect                  = 0x0557,
      kMediaSetDoMCActionCallbackSelect          = 0x0558,
      kMediaGetErrorStringSelect                 = 0x0559,
      kMediaGetSoundEqualizerBandsSelect         = 0x055A,
      kMediaSetSoundEqualizerBandsSelect         = 0x055B,
      kMediaGetSoundEqualizerBandLevelsSelect    = 0x055C,
      kMediaDoIdleActionsSelect                  = 0x055D,
      kMediaSetSoundBassAndTrebleSelect          = 0x055E,
      kMediaGetSoundBassAndTrebleSelect          = 0x055F,
      kMediaTimeBaseChangedSelect                = 0x0560,
      kMediaMCIsPlayerEventSelect                = 0x0561,
      kMediaGetMediaLoadStateSelect              = 0x0562,
      kMediaVideoOutputChangedSelect             = 0x0563,
      kMediaEmptySampleCacheSelect               = 0x0564,
      kMediaGetPublicInfoSelect                  = 0x0565,
      kMediaSetPublicInfoSelect                  = 0x0566,
      kMediaGetUserPreferredCodecsSelect         = 0x0567,
      kMediaSetUserPreferredCodecsSelect         = 0x0568,
      kMediaRefConSetPropertySelect              = 0x0569,
      kMediaRefConGetPropertySelect              = 0x056A,
      kMediaNavigateTargetRefConSelect           = 0x056B,
      kMediaGGetIdleManagerSelect                = 0x056C,
      kMediaGSetIdleManagerSelect                = 0x056D
  };
  if OPAQUE_UPP_TYPES
      EXTERN_API(PrePrerollCompleteUPP)
      NewPrePrerollCompleteUPP       (PrePrerollCompleteProcPtr userRoutine);
  
      EXTERN_API(void)
      DisposePrePrerollCompleteUPP    (PrePrerollCompleteUPP  userUPP);
  
      EXTERN_API(void)
      InvokePrePrerollCompleteUPP    (MediaHandler            mh,
                                      OSErr                   err,
                                      void *                  refcon,
                                      PrePrerollCompleteUPP   userUPP);
  
  else
      enum { uppPrePrerollCompleteProcInfo = 0x00000EC0 };            /* pascal no_return_value Func(4_bytes, 2_bytes, 4_bytes) */
      #define NewPrePrerollCompleteUPP(userRoutine)                   (PrePrerollCompleteUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPrePrerollCompleteProcInfo, GetCurrentArchitecture())
      #define DisposePrePrerollCompleteUPP(userUPP)                   DisposeRoutineDescriptor(userUPP)
      #define InvokePrePrerollCompleteUPP(mh, err, refcon, userUPP)   CALL_THREE_PARAMETER_UPP((userUPP), uppPrePrerollCompleteProcInfo, (mh), (err), (refcon))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewPrePrerollCompleteProc(userRoutine)                  NewPrePrerollCompleteUPP(userRoutine)
  define CallPrePrerollCompleteProc(userRoutine, mh, err, refcon) InvokePrePrerollCompleteUPP(mh, err, refcon, userRoutine)
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=reset
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(pop)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack()
  endif
  
  ifdef PRAGMA_IMPORT_OFF
  #pragma import off
  #elif PRAGMA_IMPORT
  #pragma import reset
  endif
  
  ifdef __cplusplus
  }
  endif
  
  endif /* __MEDIAHANDLERS__ */
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.