blob: f9aa90af91cefbfeee83c2755bc6cffa48340a9e [file] [log] [blame]
//
// File: iTunesAPI.h
//
// Abstract: part of iTunes Visual SDK
//
// Version: 1.2
//
// Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc. ( "Apple" )
// in consideration of your agreement to the following terms, and your use,
// installation, modification or redistribution of this Apple software
// constitutes acceptance of these terms. If you do not agree with these
// terms, please do not use, install, modify or redistribute this Apple
// software.
//
// In consideration of your agreement to abide by the following terms, and
// subject to these terms, Apple grants you a personal, non - exclusive
// license, under Apple's copyrights in this original Apple software ( the
// "Apple Software" ), to use, reproduce, modify and redistribute the Apple
// Software, with or without modifications, in source and / or binary forms;
// provided that if you redistribute the Apple Software in its entirety and
// without modifications, you must retain this notice and the following text
// and disclaimers in all such redistributions of the Apple Software. Neither
// the name, trademarks, service marks or logos of Apple Inc. may be used to
// endorse or promote products derived from the Apple Software without specific
// prior written permission from Apple. Except as expressly stated in this
// notice, no other rights or licenses, express or implied, are granted by
// Apple herein, including but not limited to any patent rights that may be
// infringed by your derivative works or by other works in which the Apple
// Software may be incorporated.
//
// The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO
// WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
// WARRANTIES OF NON - INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A
// PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION
// ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
//
// IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR
// CONSEQUENTIAL DAMAGES ( INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION ) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION
// AND / OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
// UNDER THEORY OF CONTRACT, TORT ( INCLUDING NEGLIGENCE ), STRICT LIABILITY OR
// OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Copyright ( C ) 2000-2007 Apple Inc. All Rights Reserved.
//
#ifndef ITUNESAPI_H_
#define ITUNESAPI_H_
#if PRAGMA_ONCE
#pragma once
#endif
#if defined(_MSC_VER)
#define TARGET_OS_MAC 0
#define TARGET_OS_WIN32 1
#else
#define TARGET_OS_MAC 1
#define TARGET_OS_WIN32 0
#endif
#if TARGET_OS_MAC
#include <Carbon/Carbon.h>
#include <CoreAudio/CoreAudioTypes.h>
#endif
#if TARGET_OS_WIN32
#include <windows.h>
#endif
#if !defined(__CONDITIONALMACROS__)
typedef unsigned long UInt32;
typedef signed long SInt32;
typedef unsigned short UInt16;
typedef signed short SInt16;
typedef unsigned char UInt8;
typedef signed char SInt8;
typedef UInt32 OptionBits;
typedef UInt8 Str255[256];
typedef UInt8 Str63[64];
typedef UInt8 * StringPtr;
typedef const UInt8 * ConstStringPtr;
typedef UInt32 OSType;
typedef SInt32 OSStatus;
typedef UInt16 EventKind;
typedef UInt16 EventModifiers;
typedef UInt16 UniChar;
typedef double Float64;
#if TARGET_OS_WIN32
typedef unsigned __int64 UInt64;
#else
typedef unsigned long long UInt64;
#endif
typedef void ** Handle;
struct NumVersion {
UInt8 majorRev;
UInt8 minorAndBugRev;
UInt8 stage;
UInt8 nonRelRev;
};
typedef struct NumVersion NumVersion;
struct Point {
short v;
short h;
};
typedef struct Point Point;
struct Rect {
short top;
short left;
short bottom;
short right;
};
typedef struct Rect Rect;
struct EventRecord {
EventKind what;
UInt32 message;
UInt32 when;
Point where;
EventModifiers modifiers;
};
typedef struct EventRecord EventRecord;
typedef UInt8 Boolean;
typedef UInt32 UnsignedFixed;
typedef void * LogicalAddress;
#define false 0
#define true 1
#define nil NULL
enum {
noErr = 0,
unimpErr = -4,
readErr = -19,
writErr = -20,
openErr = -23,
closErr = -24,
dirFulErr = -33,
dskFulErr = -34,
nsvErr = -35,
ioErr = -36,
bdNamErr = -37,
fnOpnErr = -38,
eofErr = -39,
posErr = -40,
tmfoErr = -42,
fnfErr = -43,
wPrErr = -44,
fLckdErr = -45,
vLckdErr = -46,
fBsyErr = -47,
dupFNErr = -48,
opWrErr = -49,
paramErr = -50,
permErr = -54,
nsDrvErr = -56,
wrPermErr = -61,
memFullErr = -108,
dirNFErr = -120,
badMovErr = -122
};
enum {
developStage = 0x20,
alphaStage = 0x40,
betaStage = 0x60,
finalStage = 0x80
};
struct SoundComponentData {
long flags;
OSType format;
short numChannels;
short sampleSize;
UnsignedFixed sampleRate;
long sampleCount;
UInt8 * buffer;
long reserved;
};
typedef struct SoundComponentData SoundComponentData;
struct AudioStreamBasicDescription
{
Float64 mSampleRate;
UInt32 mFormatID;
UInt32 mFormatFlags;
UInt32 mBytesPerPacket;
UInt32 mFramesPerPacket;
UInt32 mBytesPerFrame;
UInt32 mChannelsPerFrame;
UInt32 mBitsPerChannel;
UInt32 mReserved;
};
typedef struct AudioStreamBasicDescription AudioStreamBasicDescription;
#endif
#if TARGET_OS_WIN32
#define GRAPHICS_DEVICE HWND
#define GRAPHICS_DEVICE_NAME window
#else
#define GRAPHICS_DEVICE CGrafPtr
#define GRAPHICS_DEVICE_NAME port
#endif
#ifdef __cplusplus
extern "C" {
#endif
#if PRAGMA_STRUCT_ALIGN
#pragma options align=power
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(push, 4)
#elif PRAGMA_STRUCT_PACK
#pragma pack(4)
#endif
enum {
kITPluginMajorMessageVersion = 10,
kITPluginMinorMessageVersion = 9
};
enum {
kTrackSupportsID3Tags = (1L << 0),
kTrackHasVariableBitRate = (1L << 1),
kTrackIsLocked = (1L << 3), /* Device tracks only. Track cannot be deleted or renamed */
kTrackCanBeDownloaded = (1L << 4), /* Device tracks only. Track can be copied from device to desktop. */
kTrackIsHidden = (1L << 5), /* Device tracks only. Track should not be displayed in the device window. */
kTrackHasVideo = (1L << 6) /* Track has video track which can be played in iTunes */
};
typedef OptionBits ITTrackAttributes;
enum {
/*
These mask values are specified in ITTrackInfo.validFields
to indicate which fields contain valid data
*/
kITTIFieldInvalid = 0,
kITTINameFieldMask = (1L << 0),
kITTIFileNameFieldMask = (1L << 1),
kITTIArtistFieldMask = (1L << 2),
kITTIAlbumFieldMask = (1L << 3),
kITTIGenreFieldMask = (1L << 4),
kITTIKindFieldMask = (1L << 5),
kITTITrackNumberFieldsMask = (1L << 6),
kITTIYearFieldMask = (1L << 7),
kITTISoundVolumeFieldMask = (1L << 8),
kITTIEQPresetFieldMask = (1L << 9),
kITTICommentsFieldMask = (1L << 10),
kITTITotalTimeFieldMask = (1L << 11),
kITTIStartTimeFieldMask = (1L << 12),
kITTIStopTimeFieldMask = (1L << 13),
kITTISizeFieldMask = (1L << 14),
kITTIBitRateFieldMask = (1L << 15),
kITTISampleRateFieldMask = (1L << 16),
kITTIAttributesFieldMask = (1L << 17),
kITTIFileTypeFieldMask = (1L << 18),
kITTIDateFieldMask = (1L << 19),
kITTIFileCreatorFieldMask = (1L << 20),
kITTIComposerFieldMask = (1L << 21), /* Added in iTunes 3.0 */
kITTICompilationFieldMask = (1L << 22), /* Added in iTunes 3.0 */
kITTIDiscNumberFieldsMask = (1L << 23), /* Added in iTunes 3.0 */
kITTITrackRatingFieldMask = (1L << 24), /* Added in iTunes 3.0 - used to be called kITTIUserRatingFieldMask */
kITTIPlayCountFieldMask = (1L << 25), /* Added in iTunes 3.0 */
kITTILastPlayDateFieldMask = (1L << 26), /* Added in iTunes 3.0 */
kITTIBeatsPerMinuteFieldMask = (1L << 27), /* Added in iTunes 4.0 */
kITTIGroupingFieldMask = (1L << 28), /* Added in iTunes 4.2 */
kITTIGaplessAlbumFieldMask = (1L << 29), /* Added in iTunes 7.0 */
kITTIAlbumArtistFieldMask = (1L << 30) /* Added in iTunes 7.0 */
};
typedef OptionBits ITTIFieldMask;
#define kLastKnownITTIField kITTIAlbumArtistFieldMask
#define kAllKnownITTIFieldsMask ((((UInt32) kLastKnownITTIField) << 1) - 1)
enum
{
kITTIUserModifiableFieldsMask = kITTINameFieldMask | kITTIArtistFieldMask | kITTIAlbumFieldMask | kITTIGroupingFieldMask | kITTIGenreFieldMask |
kITTITrackNumberFieldsMask | kITTIYearFieldMask | kITTISoundVolumeFieldMask | kITTIEQPresetFieldMask |
kITTICommentsFieldMask | kITTIStartTimeFieldMask | kITTIStopTimeFieldMask | kITTIComposerFieldMask |
kITTICompilationFieldMask | kITTIDiscNumberFieldsMask | kITTITrackRatingFieldMask | kITTIBeatsPerMinuteFieldMask |
kITTIGaplessAlbumFieldMask | kITTIAlbumArtistFieldMask
};
typedef UniChar ITUniStr255[256]; /* Similar to Str255. First element is length of string in characters. */
typedef UniChar * ITUniStringPtr;
typedef const UniChar * ConstITUniStringPtr;
#if TARGET_OS_MAC
typedef FSRef ITFileSpec;
#endif
#if TARGET_OS_WIN32
#define kITFileSpecMaxPathLength (MAX_PATH - 1)
typedef struct ITFileSpec
{
UInt16 length; // Length in characters
UniChar fullPath[kITFileSpecMaxPathLength];
} ITFileSpec;
#endif
struct ITTrackInfo {
ITTIFieldMask validFields;
UInt32 recordLength; /* Size of this structure in bytes */
ITUniStr255 name;
ITUniStr255 fileName;
ITUniStr255 artist;
ITUniStr255 album;
ITUniStr255 genre;
ITUniStr255 kind;
ITUniStr255 eqPresetName;
ITUniStr255 comments;
UInt32 trackNumber;
UInt32 numTracks;
UInt16 year;
SInt16 soundVolumeAdjustment; /* Valid range is -255 to +255 */
UInt32 totalTimeInMS;
UInt32 startTimeInMS;
UInt32 stopTimeInMS;
UInt32 date;
UInt32 oldSizeInBytes; /* Deprecated in iTunes 7.1 */
UInt32 bitRate;
UInt32 oldSampleRateFixed; /* Deprecated in iTunes 5.0 */
OSType fileType;
OSType fileCreator;
ITTrackAttributes attributes;
ITTrackAttributes validAttributes; /* Mask indicating which attributes are applicable */
ITUniStr255 composer; /* Added in iTunes 3.0 */
Boolean isCompilationTrack; /* Added in iTunes 3.0 */
Boolean partOfGaplessAlbum; /* Added in iTunes 7.0 (was reserved) */
UInt16 trackRating; /* Added in iTunes 3.0. 0 = unrated, valid values are 20, 40, 60, 80 and 100. Used to be called userRating */
UInt16 discNumber; /* Added in iTunes 3.0 */
UInt16 numDiscs; /* Added in iTunes 3.0 */
UInt32 playCount; /* Added in iTunes 3.0 */
UInt32 lastPlayDate; /* Added in iTunes 3.0 */
UInt16 beatsPerMinute; /* Added in iTunes 4.0 */
UInt16 reserved; /* Reserved. Must be zero. */
ITUniStr255 grouping; /* Added in iTunes 4.0 */
float sampleRateFloat; /* Added in iTunes 5.0 */
ITUniStr255 albumArtist; /* Added in iTunes 7.0 */
UInt64 sizeInBytes; /* Added in iTunes 7.1 */
};
typedef struct ITTrackInfo ITTrackInfo;
struct ITStreamInfo {
SInt32 version;
ITUniStr255 streamTitle;
ITUniStr255 streamURL;
ITUniStr255 streamMessage;
};
typedef struct ITStreamInfo ITStreamInfo;
enum {
/* messages sent to plugin main */
kPluginInitMessage = 'init',
kPluginCleanupMessage = 'clr ',
kPluginPrepareToQuitMessage = 'prqt',
kPluginIdleMessage = 'idle'
};
enum {
/* PluginInitMessage.options */
kPluginWantsIdleMessages = (1L << 1), /* Send idle messages to plugin main */
kPluginWantsToBeLeftOpen = (1L << 2), /* Don't close this plugin just because it didn't register anyone */
kPluginWantsVolumeMessages = (1L << 3), /* The plugin wants to be notified when volumes are mounted/unmounted/renamed */
kPluginWantsDisplayNotification = (1L << 5) /* The plugin wants to know when the display depth/size changes */
};
enum {
/* iTunes API messages */
kPlayerRegisterVisualPluginMessage = 'rvis', /* Register a visual plugin */
/* Available for all plugins */
kPlayerUnregisterPluginMessage = 'unrg', /* Unregister the plugin this comes from */
kPlayerIdleMessage = 'idle', /* Give iTunes some time */
kPlayerShowAboutMessage = 'abou', /* Show the about box. */
kPlayerOpenURLMessage = 'url ', /* Open a URL */
kPlayerSetPluginDataMessage = 'sprf', /* Set plugin preferences */
kPlayerGetPluginDataMessage = 'gprf', /* Get plugin preferences */
kPlayerSetPluginNamedDataMessage = 'snpr', /* Set plugin named preferenes */
kPlayerGetPluginNamedDataMessage = 'gnpr', /* Get plugin named preferenes */
kPlayerGetFileTrackInfoMessage = 'gfti', /* Query iTunes for information about a file */
kPlayerSetFileTrackInfoMessage = 'sfti', /* Ask iTunes to set information about a file */
kPlayerGetITTrackInfoSizeMessage = 'itsz', /* Query iTunes for the sizeof(ITTrackInfo). This allows newer plugins to correctly workd with older versions of iTunes. */
kPlayerHandleMacOSEventMessage = 'evnt', /* Tell player to handle unhandled event */
#if TARGET_OS_MAC
kPlayerGetPluginFileSpecMessage = 'pspc', /* Get the location of the plugin executable (compatibility only) */
#endif
kPlayerGetPluginITFileSpecMessage = 'itfs', /* Get the location of the plugin executable (iTunes 4.1 or later) */
kPluginDisplayChangedMessage = 'disp' /* Something about some display has changed */
};
struct PlayerMessageInfo;
typedef OSStatus (*ITAppProcPtr)(void *appCookie, OSType message, struct PlayerMessageInfo *messageInfo);
/*
Plugin main Messages
*/
struct PluginInitMessage {
UInt32 majorVersion; /* Input */
UInt32 minorVersion; /* Input */
void * appCookie; /* Input */
ITAppProcPtr appProc; /* Input */
OptionBits options; /* Output, see above for values */
void * refCon; /* Output */
};
typedef struct PluginInitMessage PluginInitMessage;
struct PluginMessageInfo {
union {
PluginInitMessage initMessage;
} u;
};
typedef struct PluginMessageInfo PluginMessageInfo;
/* Plugin main entry point message handler */
typedef OSStatus (*PluginProcPtr)(OSType message, PluginMessageInfo *messageInfo, void *refCon);
/* Visual plugin message handler */
struct VisualPluginMessageInfo;
typedef OSStatus (*VisualPluginProcPtr)(OSType message, struct VisualPluginMessageInfo *messageInfo, void *refCon);
/*
Callbacks to iTunes
*/
struct PlayerOpenURLMessage {
SInt8 * url;
UInt32 length;
};
typedef struct PlayerOpenURLMessage PlayerOpenURLMessage;
struct PlayerSetPluginDataMessage {
void * dataPtr; /* Input */
UInt32 dataSize; /* Input */
};
typedef struct PlayerSetPluginDataMessage PlayerSetPluginDataMessage;
struct PlayerGetPluginDataMessage {
void * dataPtr; /* Input */
UInt32 dataBufferSize; /* Input */
UInt32 dataSize; /* Output */
};
typedef struct PlayerGetPluginDataMessage PlayerGetPluginDataMessage;
struct PlayerSetPluginNamedDataMessage {
ConstStringPtr dataName; /* Input */
void * dataPtr; /* Input */
UInt32 dataSize; /* Input */
};
typedef struct PlayerSetPluginNamedDataMessage PlayerSetPluginNamedDataMessage;
struct PlayerGetPluginNamedDataMessage {
ConstStringPtr dataName; /* Input */
void * dataPtr; /* Input */
UInt32 dataBufferSize; /* Input */
UInt32 dataSize; /* Output */
};
typedef struct PlayerGetPluginNamedDataMessage PlayerGetPluginNamedDataMessage;
struct PlayerHandleMacOSEventMessage {
const EventRecord * theEvent; /* Input */
Boolean handled; /* Output */
};
typedef struct PlayerHandleMacOSEventMessage PlayerHandleMacOSEventMessage;
#if TARGET_OS_MAC
struct PlayerGetPluginFileSpecMessage {
FSSpec * fileSpec; /* Output */
};
typedef struct PlayerGetPluginFileSpecMessage PlayerGetPluginFileSpecMessage;
#endif
struct PlayerGetPluginITFileSpecMessage {
ITFileSpec * fileSpec; /* Output */
};
typedef struct PlayerGetPluginITFileSpecMessage PlayerGetPluginITFileSpecMessage;
struct PlayerGetFileTrackInfoMessage {
const ITFileSpec * fileSpec; /* Input */
ITTrackInfo * trackInfo; /* Output */
};
typedef struct PlayerGetFileTrackInfoMessage PlayerGetFileTrackInfoMessage;
struct PlayerSetFileTrackInfoMessage {
const ITFileSpec * fileSpec; /* Input */
const ITTrackInfo * trackInfo; /* Input */
};
typedef struct PlayerSetFileTrackInfoMessage PlayerSetFileTrackInfoMessage;
struct PlayerGetITTrackInfoSizeMessage {
UInt32 itTrackInfoSize; /* Output */
};
typedef struct PlayerGetITTrackInfoSizeMessage PlayerGetITTrackInfoSizeMessage;
/*
iTunes API callback visual structures
*/
enum {
/* PlayerRegisterVisualPluginMessage.options */
kVisualWantsIdleMessages = (1L << 3),
kVisualWantsConfigure = (1L << 5),
kVisualProvidesUnicodeName = (1L << 6) /* Added in iTunes 7.3 */
};
struct PlayerRegisterVisualPluginMessage {
/* Input from plugin */
Str63 name; /* Displayed in the Visual menu -- may be empty if options include kVisualProvidesUnicodeName */
OptionBits options; /* See above */
OSType creator; /* Identifies the plugin */
NumVersion pluginVersion; /* Version number of the plugin */
VisualPluginProcPtr handler; /* Handler for the plugin's messages */
void * registerRefCon; /* RefCon for the plugin's handler */
UInt32 timeBetweenDataInMS; /* How often to call the plugin (0xFFFFFFFF = as often as possible) */
UInt32 numWaveformChannels; /* 0-2 waveforms requested */
UInt32 numSpectrumChannels; /* 0-2 spectrums requested */
SInt16 minWidth; /* Minimum resizeable width */
SInt16 minHeight; /* Minimum resizeable height */
SInt16 maxWidth; /* Maximum resizeable width */
SInt16 maxHeight; /* Maximum resizeable height */
UInt16 minFullScreenBitDepth; /* 0 = Any */
UInt16 maxFullScreenBitDepth; /* 0 = Any */
UInt16 windowAlignmentInBytes; /* Reserved (should be zero) */
ITUniStr255 unicodeName; /* options must include kVisualProvidesUnicodeName for this to be used -- Added in iTunes 7.3*/
};
typedef struct PlayerRegisterVisualPluginMessage PlayerRegisterVisualPluginMessage;
struct PlayerSetFullScreenMessage {
Boolean fullScreen;
};
typedef struct PlayerSetFullScreenMessage PlayerSetFullScreenMessage;
struct PlayerSetFullScreenOptionsMessage {
SInt16 minBitDepth; /* 0 = Any */
SInt16 maxBitDepth; /* 0 = Any */
SInt16 preferredBitDepth; /* 0 = Current */
SInt16 desiredWidth; /* Must be within minWidth & maxWidth */
SInt16 desiredHeight; /* Must be within minHeight & maxHeight */
};
typedef struct PlayerSetFullScreenOptionsMessage PlayerSetFullScreenOptionsMessage;
struct PlayerGetCurrentTrackCoverArtMessage {
Handle coverArt; /* output - client must dispose */
OSType coverArtFormat; /* output - format of cover art */
};
typedef struct PlayerGetCurrentTrackCoverArtMessage PlayerGetCurrentTrackCoverArtMessage;
// iTunes API callback union structure
struct PlayerMessageInfo {
UInt32 messageMajorVersion; /* Should be kITPluginMajorMessageVersion */
UInt32 messageMinorVersion; /* Should be kITPluginMinorMessageVersion */
UInt32 messageInfoSize; /* Should be sizeof(PlayerMessageInfo) */
union {
PlayerOpenURLMessage openURLMessage;
PlayerSetPluginDataMessage setPluginDataMessage;
PlayerGetPluginDataMessage getPluginDataMessage;
PlayerSetPluginNamedDataMessage setPluginNamedDataMessage;
PlayerGetPluginNamedDataMessage getPluginNamedDataMessage;
PlayerGetFileTrackInfoMessage getFileTrackInfoMessage;
PlayerSetFileTrackInfoMessage setFileTrackInfoMessage;
PlayerGetITTrackInfoSizeMessage getITTrackInfoSizeMessage;
PlayerHandleMacOSEventMessage handleMacOSEventMessage;
#if TARGET_OS_MAC
PlayerGetPluginFileSpecMessage getPluginFileSpecMessage;
#endif
PlayerGetPluginITFileSpecMessage getPluginITFileSpecMessage;
// visual APIs
PlayerRegisterVisualPluginMessage registerVisualPluginMessage;
PlayerSetFullScreenMessage setFullScreenMessage;
PlayerSetFullScreenOptionsMessage setFullScreenOptionsMessage;
PlayerGetCurrentTrackCoverArtMessage getCurrentTrackCoverArtMessage;
} u;
};
typedef struct PlayerMessageInfo PlayerMessageInfo;
extern OSStatus ITCallApplication (void *appCookie, ITAppProcPtr appProc, OSType message, PlayerMessageInfo *messageInfo);
extern void SetNumVersion (NumVersion *numVersion, UInt8 majorRev, UInt8 minorAndBugRev, UInt8 stage, UInt8 nonRelRev);
/* For all plugins */
extern OSStatus PlayerUnregisterPlugin (void *appCookie, ITAppProcPtr appProc, PlayerMessageInfo *messageInfo);
extern OSStatus PlayerIdle (void *appCookie, ITAppProcPtr appProc);
extern void PlayerShowAbout (void *appCookie, ITAppProcPtr appProc);
extern void PlayerOpenURL (void *appCookie, ITAppProcPtr appProc, SInt8 *string, UInt32 length);
extern OSStatus PlayerGetPluginData (void *appCookie, ITAppProcPtr appProc, void *dataPtr, UInt32 dataBufferSize, UInt32 *dataSize);
extern OSStatus PlayerSetPluginData (void *appCookie, ITAppProcPtr appProc, void *dataPtr, UInt32 dataSize);
extern OSStatus PlayerGetPluginNamedData (void *appCookie, ITAppProcPtr appProc, ConstStringPtr dataName, void *dataPtr, UInt32 dataBufferSize, UInt32 *dataSize);
extern OSStatus PlayerSetPluginNamedData (void *appCookie, ITAppProcPtr appProc, ConstStringPtr dataName, void *dataPtr, UInt32 dataSize);
extern OSStatus PlayerGetFileTrackInfo (void *appCookie, ITAppProcPtr appProc, const ITFileSpec *fileSpec, ITTrackInfo *trackInfo);
extern OSStatus PlayerSetFileTrackInfo (void *appCookie, ITAppProcPtr appProc, const ITFileSpec *fileSpec, const ITTrackInfo *trackInfo);
extern OSStatus PlayerGetITTrackInfoSize (void *appCookie, ITAppProcPtr appProc, UInt32 appPluginMajorVersion, UInt32 appPluginMinorVersion, UInt32 *itTrackInfoSize);
extern OSStatus PlayerHandleMacOSEvent (void *appCookie, ITAppProcPtr appProc, const EventRecord *theEvent, Boolean *eventHandled);
#if TARGET_OS_MAC
extern OSStatus PlayerGetPluginFileSpec (void *appCookie, ITAppProcPtr appProc, FSSpec *pluginFileSpec);
#endif
extern OSStatus PlayerGetPluginITFileSpec (void *appCookie, ITAppProcPtr appProc, ITFileSpec *pluginFileSpec);
/* iTunes APIs For visual plugins */
enum {
kPlayerSetFullScreenMessage = 'sful', /* Set full screen mode */
kPlayerSetFullScreenOptionsMessage = 'sfop', /* Set full screen options */
kPlayerGetCurrentTrackCoverArtMessage = 'covr' /* Get current player track cover artwork */
};
extern OSStatus PlayerRegisterVisualPlugin (void *appCookie, ITAppProcPtr appProc, PlayerMessageInfo *messageInfo);
extern OSStatus PlayerSetFullScreen (void *appCookie, ITAppProcPtr appProc, Boolean fullScreen);
extern OSStatus PlayerSetFullScreenOptions (void *appCookie, ITAppProcPtr appProc, SInt16 minBitDepth, SInt16 maxBitDepth, SInt16 preferredBitDepth, SInt16 desiredWidth, SInt16 desiredHeight);
extern OSStatus PlayerGetCurrentTrackCoverArt (void *appCookie, ITAppProcPtr appProc, Handle *coverArt, OSType *coverArtFormat);
#if PRAGMA_STRUCT_ALIGN
#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
#pragma pack()
#endif
#ifdef __cplusplus
}
#endif
#endif /* ITUNESAPI_H_ */