blob: 79db8c82da1351b7ad3df924eac19fe50ff69c97 [file] [log] [blame]
//
// File: iTunesVisualAPI.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 ITUNESVISUALAPI_H_
#define ITUNESVISUALAPI_H_
#include "iTunesAPI.h"
#if PRAGMA_ONCE
#pragma once
#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
struct ITTrackInfoV1 {
ITTIFieldMask validFields;
UInt32 reserved; /* Must be zero */
Str255 name;
Str255 fileName;
Str255 artist;
Str255 album;
Str255 genre;
Str255 kind;
UInt32 trackNumber;
UInt32 numTracks;
UInt16 year;
SInt16 soundVolumeAdjustment; /* Valid range is -255 to +255 */
Str255 eqPresetName;
Str255 comments;
UInt32 totalTimeInMS;
UInt32 startTimeInMS;
UInt32 stopTimeInMS;
UInt32 sizeInBytes;
UInt32 bitRate;
UInt32 sampleRateFixed;
OSType fileType;
UInt32 date;
UInt32 unusedReserved2; /* Must be zero */
ITTrackAttributes attributes;
ITTrackAttributes validAttributes; /* Mask indicating which attributes are applicable */
OSType fileCreator;
};
typedef struct ITTrackInfoV1 ITTrackInfoV1;
enum {
kCurrentITStreamInfoVersion = 1
};
struct ITStreamInfoV1 {
SInt32 version;
Str255 streamTitle;
Str255 streamURL;
Str255 streamMessage;
};
typedef struct ITStreamInfoV1 ITStreamInfoV1;
enum {
kITVisualPluginMajorMessageVersion = 10,
kITVisualPluginMinorMessageVersion = 7
};
enum {
/* VisualPlugin messages */
kVisualPluginIdleMessage = 'null',
kVisualPluginInitMessage = 'init',
kVisualPluginCleanupMessage = 'clr ',
kVisualPluginConfigureMessage = 'cnfg', /* Configure the plugin (may not be enabled) */
kVisualPluginEnableMessage = 'von ', /* Turn on the module (automatic)*/
kVisualPluginDisableMessage = 'voff', /* Turn off the module */
kVisualPluginShowWindowMessage = 'show', /* Show the plugin window (allocate large memory here!) */
kVisualPluginHideWindowMessage = 'hide', /* Hide the plugin window (deallocate large memory here!) */
kVisualPluginSetWindowMessage = 'swin', /* Change the window parameters */
kVisualPluginRenderMessage = 'vrnd', /* Render to window */
kVisualPluginUpdateMessage = 'vupd', /* Update the window */
kVisualPluginPlayMessage = 'vply', /* Playing a track */
kVisualPluginChangeTrackMessage = 'ctrk', /* Change track (for CD continuous play) or info about currently playing track has changed */
kVisualPluginStopMessage = 'vstp', /* Stopping a track */
kVisualPluginSetPositionMessage = 'setp', /* Setting the position of a track */
kVisualPluginPauseMessage = 'vpau', /* Pausing a track (unused - Pause is stop) */
kVisualPluginUnpauseMessage = 'vunp', /* Unpausing a track (unused - Pause is stop) */
kVisualPluginEventMessage = 'vevt', /* Mac-event. */
kVisualPluginDisplayChangedMessage = 'dchn' /* Something about display state changed */
};
/*
VisualPlugin messages
*/
enum {
kVisualMaxDataChannels = 2,
kVisualNumWaveformEntries = 512,
kVisualNumSpectrumEntries = 512
};
enum {
/* Set/ShowWindow options */
kWindowIsFullScreen = (1L << 0),
kWindowIsStretched = (1L << 1)
};
enum {
/* Initialize options */
kVisualDoesNotNeedResolutionSwitch = (1L << 0), /* Added in 7.0 */
kVisualDoesNotNeedErase = (1L << 1) /* Added in 7.0 */
};
struct RenderVisualData {
UInt8 numWaveformChannels;
UInt8 waveformData[kVisualMaxDataChannels][kVisualNumWaveformEntries];
UInt8 numSpectrumChannels;
UInt8 spectrumData[kVisualMaxDataChannels][kVisualNumSpectrumEntries];
};
typedef struct RenderVisualData RenderVisualData;
struct VisualPluginInitMessage {
UInt32 messageMajorVersion; /* Input */
UInt32 messageMinorVersion; /* Input */
NumVersion appVersion; /* Input */
void * appCookie; /* Input */
ITAppProcPtr appProc; /* Input */
OptionBits options; /* Output */
void * refCon; /* Output */
};
typedef struct VisualPluginInitMessage VisualPluginInitMessage;
struct VisualPluginShowWindowMessage {
GRAPHICS_DEVICE GRAPHICS_DEVICE_NAME; /* Input */
Rect drawRect; /* Input */
OptionBits options; /* Input */
Rect totalVisualizerRect; /* Input -- Added in 7.0 */
};
typedef struct VisualPluginShowWindowMessage VisualPluginShowWindowMessage;
struct VisualPluginSetWindowMessage {
GRAPHICS_DEVICE GRAPHICS_DEVICE_NAME; /* Input */
Rect drawRect; /* Input */
OptionBits options; /* Input */
Rect totalVisualizerRect; /* Input -- Added in 7.0 */
};
typedef struct VisualPluginSetWindowMessage VisualPluginSetWindowMessage;
struct VisualPluginPlayMessage {
ITTrackInfoV1 * trackInfo; /* Input */
ITStreamInfoV1 * streamInfo; /* Input */
SInt32 volume; /* Input */
UInt32 bitRate; /* Input */
SoundComponentData oldSoundFormat; /* Input -- deprecated in 7.1 */
ITTrackInfo * trackInfoUnicode; /* Input */
ITStreamInfo * streamInfoUnicode; /* Input */
AudioStreamBasicDescription audioFormat; /* Input -- added in 7.1 */
};
typedef struct VisualPluginPlayMessage VisualPluginPlayMessage;
struct VisualPluginChangeTrackMessage {
ITTrackInfoV1 * trackInfo; /* Input */
ITStreamInfoV1 * streamInfo; /* Input */
ITTrackInfo * trackInfoUnicode; /* Input */
ITStreamInfo * streamInfoUnicode; /* Input */
};
typedef struct VisualPluginChangeTrackMessage VisualPluginChangeTrackMessage;
struct VisualPluginRenderMessage {
RenderVisualData * renderData; /* Input */
UInt32 timeStampID; /* Input */
UInt32 currentPositionInMS; /* Input -- added in 4.7 */
};
typedef struct VisualPluginRenderMessage VisualPluginRenderMessage;
struct VisualPluginSetPositionMessage {
UInt32 positionTimeInMS; /* Input */
};
typedef struct VisualPluginSetPositionMessage VisualPluginSetPositionMessage;
//#if TARGET_OS_MAC // uncommented by VizKit (20071216) to allow event handling by visualizer on Windows
struct VisualPluginEventMessage {
EventRecord * event; /* Input */
};
//#endif
typedef struct VisualPluginEventMessage VisualPluginEventMessage;
enum {
kVisualDisplayDepthChanged = 1 << 0, /* the display's depth has changed */
kVisualDisplayRectChanged = 1 << 1, /* the display's location changed */
kVisualWindowMovedMoved = 1 << 2, /* the window has moved location */
kVisualDisplayConfigChanged = 1 << 3 /* something else about the display changed */
};
struct VisualPluginDisplayChangedMessage {
UInt32 flags; /* Input */
};
typedef struct VisualPluginDisplayChangedMessage VisualPluginDisplayChangedMessage;
struct VisualPluginIdleMessage {
UInt32 timeBetweenDataInMS; /* Output -- added in 4.8 */
};
typedef struct VisualPluginIdleMessage VisualPluginIdleMessage;
struct VisualPluginMessageInfo {
union {
VisualPluginInitMessage initMessage;
VisualPluginShowWindowMessage showWindowMessage;
VisualPluginSetWindowMessage setWindowMessage;
VisualPluginPlayMessage playMessage;
VisualPluginChangeTrackMessage changeTrackMessage;
VisualPluginRenderMessage renderMessage;
VisualPluginSetPositionMessage setPositionMessage;
//#if TARGET_OS_MAC // uncommented by VizKit (20071216) to allow event handling by visualizer on Windows
VisualPluginEventMessage eventMessage;
//#endif
VisualPluginDisplayChangedMessage displayChangedMessage;
VisualPluginIdleMessage idleMessage;
} u;
};
typedef struct VisualPluginMessageInfo VisualPluginMessageInfo;
#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 /* ITUNESVISUALAPI_H_ */