blob: 52cbface6a256c68d0a4edbd91292b6901a8e305 [file] [log] [blame]
/////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2000 John Adcock. All rights reserved.
/////////////////////////////////////////////////////////////////////////////
//
// This file is subject to the terms of the GNU General Public License as
// published by the Free Software Foundation. A copy of this license is
// included with this software distribution in the file COPYING. If you
// do not have a copy, you may obtain a copy by writing to the Free
// Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details
//
/////////////////////////////////////////////////////////////////////////////
// ID3COM.idl : IDL source for ID3COM.dll
/////////////////////////////////////////////////////////////////////////////
// Change Log
//
// Date Developer Changes
//
// 05 Jan 2000 John Adcock Original Release
// 18 Aug 2000 Philip Oldaker Added Picture Functionality
// 01 Nov 2002 John Adcock Changed fields to reflect changes to id3lib
//
/////////////////////////////////////////////////////////////////////////////
// This file will be processed by the MIDL tool to
// produce the type library (ID3COM.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
typedef
[
uuid(181CFC77-C770-11d3-841C-0008C782A257),
helpstring("ID3 Field Types")
]
enum
{
ID3_FIELD_NOFIELD = 0, /**< No field */
ID3_FIELD_TEXTENC, /**< Text encoding (unicode or ASCII) */
ID3_FIELD_TEXT, /**< Text field */
ID3_FIELD_URL, /**< A URL */
ID3_FIELD_DATA, /**< Data field */
ID3_FIELD_DESCRIPTION, /**< Description field */
ID3_FIELD_OWNER, /**< Owner field */
ID3_FIELD_EMAIL, /**< Email field */
ID3_FIELD_RATING, /**< Rating field */
ID3_FIELD_FILENAME, /**< Filename field */
ID3_FIELD_LANGUAGE, /**< Language field */
ID3_FIELD_PICTURETYPE, /**< Picture type field */
ID3_FIELD_IMAGEFORMAT, /**< Image format field */
ID3_FIELD_MIMETYPE, /**< Mimetype field */
ID3_FIELD_COUNTER, /**< Counter field */
ID3_FIELD_ID, /**< Identifier/Symbol field */
ID3_FIELD_VOLUMEADJ, /**< Volume adjustment field */
ID3_FIELD_NUMBITS, /**< Number of bits field */
ID3_FIELD_NUMBER, /**< General Number, can be anything, as long it's an integer <= 32 bits */
ID3_FIELD_VOLCHGRIGHT, /**< Volume chage on the right channel */
ID3_FIELD_VOLCHGLEFT, /**< Volume chage on the left channel */
ID3_FIELD_PEAKVOLRIGHT, /**< Peak volume on the right channel */
ID3_FIELD_PEAKVOLLEFT, /**< Peak volume on the left channel */
ID3_FIELD_TIMESTAMPFORMAT, /**< SYLT Timestamp Format */
ID3_FIELD_CONTENTTYPE, /**< SYLT content type */
ID3_FIELD_REVERBL, /**< Reverb Left */
ID3_FIELD_REVERBR, /**< Reverb Right */
ID3_FIELD_REVERBBOUNCESL, /**< Reverb Bounces Left */
ID3_FIELD_REVERBBOUNCESR, /**< Reverb Bounces Right */
ID3_FIELD_REVERBFEEDBACKL2L, /**< Reverb Feedback Left to Left */
ID3_FIELD_REVERBFEEDBACKL2R, /**< Reverb Feedback Left to Right */
ID3_FIELD_REVERBFEEDBACKR2R, /**< Reverb Feedback Right to Right */
ID3_FIELD_REVERBFEEDBACKR2L, /**< Reverb Feedback Right to Left */
ID3_FIELD_PREMIXL2R, /**< Premix Left to Right */
ID3_FIELD_PREMIXR2L, /**< Premix Right to Left */
ID3_FIELD_LENGTH, /**< Size field, can be bits, bytes, time etc */
ID3_FIELD_FLAGS, /**< Flags field */
ID3_FIELD_OFFSET, /**< Offset, can be bits, bytes, time etc */
ID3_FIELD_PRICE, /**< Price Field, containing currency+amount */
ID3_FIELD_8DATE, /**< Date Field, containing date as YYYYMMDD */
ID3_FIELD_SELLER, /**< Seller */
ID3_FIELD_DELIVERY, /**< Way of delivery field */
ID3_FIELD_BITSSIZE, /**< contains the number of bits for other fields' fixed size */
ID3_FIELD_BYTESSIZE, /**< contains the number of bytes for other fields' fixed size */
ID3_FIELD_LASTFIELDID /**< Last field placeholder */
} eID3FieldTypes;
typedef
[
uuid(385B5F8C-1F3C-11d3-83C6-0008C782A257),
helpstring("ID3 Frame Types")
]
enum
{
/* ???? */ ID3_NOFRAME = 0, /**< No known frame */
/* AENC */ ID3_AUDIOCRYPTO, /**< Audio encryption */
/* APIC */ ID3_PICTURE, /**< Attached picture */
/* ASPI */ ID3_AUDIOSEEKPOINT, /**< Audio seek point index */
/* COMM */ ID3_COMMENT, /**< Comments */
/* COMR */ ID3_COMMERCIAL, /**< Commercial frame */
/* ENCR */ ID3_CRYPTOREG, /**< Encryption method registration */
/* EQU2 */ ID3_EQUALIZATION2, /**< Equalisation (2) */
/* EQUA */ ID3_EQUALIZATION, /**< Equalization */
/* ETCO */ ID3_EVENTTIMING, /**< Event timing codes */
/* GEOB */ ID3_GENERALOBJECT, /**< General encapsulated object */
/* GRID */ ID3_GROUPINGREG, /**< Group identification registration */
/* IPLS */ ID3_INVOLVEDPEOPLE, /**< Involved people list */
/* LINK */ ID3_LINKEDINFO, /**< Linked information */
/* MCDI */ ID3_CDID, /**< Music CD identifier */
/* MLLT */ ID3_MPEGLOOKUP, /**< MPEG location lookup table */
/* OWNE */ ID3_OWNERSHIP, /**< Ownership frame */
/* PRIV */ ID3_PRIVATE, /**< Private frame */
/* PCNT */ ID3_PLAYCOUNTER, /**< Play counter */
/* POPM */ ID3_POPULARIMETER, /**< Popularimeter */
/* POSS */ ID3_POSITIONSYNC, /**< Position synchronisation frame */
/* RBUF */ ID3_BUFFERSIZE, /**< Recommended buffer size */
/* RVA2 */ ID3_VOLUMEADJ2, /**< Relative volume adjustment (2) */
/* RVAD */ ID3_VOLUMEADJ, /**< Relative volume adjustment */
/* RVRB */ ID3_REVERB, /**< Reverb */
/* SEEK */ ID3_SEEKFRAME, /**< Seek frame */
/* SIGN */ ID3_SIGNATURE, /**< Signature frame */
/* SYLT */ ID3_SYNCEDLYRICS, /**< Synchronized lyric/text */
/* SYTC */ ID3_SYNCEDTEMPO, /**< Synchronized tempo codes */
/* TALB */ ID3_ALBUM, /**< Album/Movie/Show title */
/* TBPM */ ID3_BPM, /**< BPM (beats per minute) */
/* TCOM */ ID3_COMPOSER, /**< Composer */
/* TCON */ ID3_CONTENTTYPE, /**< Content type */
/* TCOP */ ID3_COPYRIGHT, /**< Copyright message */
/* TDAT */ ID3_DATE, /**< Date */
/* TDEN */ ID3_ENCODINGTIME, /**< Encoding time */
/* TDLY */ ID3_PLAYLISTDELAY, /**< Playlist delay */
/* TDOR */ ID3_ORIGRELEASETIME, /**< Original release time */
/* TDRC */ ID3_RECORDINGTIME, /**< Recording time */
/* TDRL */ ID3_RELEASETIME, /**< Release time */
/* TDTG */ ID3_TAGGINGTIME, /**< Tagging time */
/* TIPL */ ID3_INVOLVEDPEOPLE2, /**< Involved people list */
/* TENC */ ID3_ENCODEDBY, /**< Encoded by */
/* TEXT */ ID3_LYRICIST, /**< Lyricist/Text writer */
/* TFLT */ ID3_FILETYPE, /**< File type */
/* TIME */ ID3_TIME, /**< Time */
/* TIT1 */ ID3_CONTENTGROUP, /**< Content group description */
/* TIT2 */ ID3_TITLE, /**< Title/songname/content description */
/* TIT3 */ ID3_SUBTITLE, /**< Subtitle/Description refinement */
/* TKEY */ ID3_INITIALKEY, /**< Initial key */
/* TLAN */ ID3_LANGUAGE, /**< Language(s) */
/* TLEN */ ID3_SONGLEN, /**< Length */
/* TMCL */ ID3_MUSICIANCREDITLIST,/**< Musician credits list */
/* TMED */ ID3_MEDIATYPE, /**< Media type */
/* TMOO */ ID3_MOOD, /**< Mood */
/* TOAL */ ID3_ORIGALBUM, /**< Original album/movie/show title */
/* TOFN */ ID3_ORIGFILENAME, /**< Original filename */
/* TOLY */ ID3_ORIGLYRICIST, /**< Original lyricist(s)/text writer(s) */
/* TOPE */ ID3_ORIGARTIST, /**< Original artist(s)/performer(s) */
/* TORY */ ID3_ORIGYEAR, /**< Original release year */
/* TOWN */ ID3_FILEOWNER, /**< File owner/licensee */
/* TPE1 */ ID3_LEADARTIST, /**< Lead performer(s)/Soloist(s) */
/* TPE2 */ ID3_BAND, /**< Band/orchestra/accompaniment */
/* TPE3 */ ID3_CONDUCTOR, /**< Conductor/performer refinement */
/* TPE4 */ ID3_MIXARTIST, /**< Interpreted, remixed, or otherwise modified by */
/* TPOS */ ID3_PARTINSET, /**< Part of a set */
/* TPRO */ ID3_PRODUCEDNOTICE, /**< Produced notice */
/* TPUB */ ID3_PUBLISHER, /**< Publisher */
/* TRCK */ ID3_TRACKNUM, /**< Track number/Position in set */
/* TRDA */ ID3_RECORDINGDATES, /**< Recording dates */
/* TRSN */ ID3_NETRADIOSTATION, /**< Internet radio station name */
/* TRSO */ ID3_NETRADIOOWNER, /**< Internet radio station owner */
/* TSIZ */ ID3_SIZE, /**< Size */
/* TSOA */ ID3_ALBUMSORTORDER, /**< Album sort order */
/* TSOP */ ID3_PERFORMERSORTORDER,/**< Performer sort order */
/* TSOT */ ID3_TITLESORTORDER, /**< Title sort order */
/* TSRC */ ID3_ISRC, /**< ISRC (international standard recording code) */
/* TSSE */ ID3_ENCODERSETTINGS, /**< Software/Hardware and settings used for encoding */
/* TSST */ ID3_SETSUBTITLE, /**< Set subtitle */
/* TXXX */ ID3_USERTEXT, /**< User defined text information */
/* TYER */ ID3_YEAR, /**< Year */
/* UFID */ ID3_UNIQUEFILEID, /**< Unique file identifier */
/* USER */ ID3_TERMSOFUSE, /**< Terms of use */
/* USLT */ ID3_UNSYNCEDLYRICS, /**< Unsynchronized lyric/text transcription */
/* WCOM */ ID3_WWWCOMMERCIALINFO, /**< Commercial information */
/* WCOP */ ID3_WWWCOPYRIGHT, /**< Copyright/Legal infromation */
/* WOAF */ ID3_WWWAUDIOFILE, /**< Official audio file webpage */
/* WOAR */ ID3_WWWARTIST, /**< Official artist/performer webpage */
/* WOAS */ ID3_WWWAUDIOSOURCE, /**< Official audio source webpage */
/* WORS */ ID3_WWWRADIOPAGE, /**< Official internet radio station homepage */
/* WPAY */ ID3_WWWPAYMENT, /**< Payment */
/* WPUB */ ID3_WWWPUBLISHER, /**< Official publisher webpage */
/* WXXX */ ID3_WWWUSER, /**< User defined URL link */
/* */ ID3_METACRYPTO, /**< Encrypted meta frame (id3v2.2.x) */
/* */ ID3_METACOMPRESSION, /**< Compressed meta frame (id3v2.2.1) */
/* >>>> */ ID3_LASTFRAMEID /**< Last field placeholder */
} eID3FrameTypes;
[
object,
uuid(A513A24E-C749-11D3-841C-0008C782A257),
dual,
helpstring("IID3ComField Interface"),
pointer_default(unique)
]
interface IID3ComField : IDispatch
{
[propget, id(0), helpstring("property Text")] HRESULT Text([in] long ItemNum, [out, retval] BSTR *pVal);
[propput, id(0), helpstring("property Text")] HRESULT Text([in] long ItemNum, [in] BSTR newVal);
[propget, id(1), helpstring("property Long")] HRESULT Long([out, retval] long *pVal);
[propput, id(1), helpstring("property Long")] HRESULT Long([in] long newVal);
[id(4), helpstring("method Clear")] HRESULT Clear();
[id(5), helpstring("method CopyDataToFile")] HRESULT CopyDataToFile(BSTR FileName);
[id(6), helpstring("method CopyDataFromFile")] HRESULT CopyDataFromFile(BSTR FileName);
[propget, id(7), helpstring("property NumTextItems")] HRESULT NumTextItems([out, retval] long *pVal);
[propget, id(8), helpstring("property Binary")] HRESULT Binary([out, retval] BSTR *pVal);
[propput, id(8), helpstring("property Binary")] HRESULT Binary([in] BSTR newVal);
};
[
object,
uuid(AEBA98BE-C36C-11D3-841B-0008C782A257),
dual,
helpstring("IID3ComFrame Interface"),
pointer_default(unique)
]
interface IID3ComFrame : IDispatch
{
[propget, id(1), helpstring("property Field")] HRESULT Field([in] eID3FieldTypes FieldType, [out, retval] IID3ComField** pVal);
[id(2), helpstring("method Clear")] HRESULT Clear();
[propget, id(3), helpstring("property ID")] HRESULT ID([out, retval] eID3FrameTypes *pVal);
[propput, id(3), helpstring("property ID")] HRESULT ID([in] eID3FrameTypes newVal);
[propget, id(4), helpstring("property FrameName")] HRESULT FrameName([out, retval] BSTR *pVal);
[propget, id(5), helpstring("property Compressed")] HRESULT Compressed([out, retval] VARIANT_BOOL *pVal);
[propput, id(5), helpstring("property Compressed")] HRESULT Compressed([in] VARIANT_BOOL newVal);
};
[
object,
uuid(AEBA98BC-C36C-11D3-841B-0008C782A257),
dual,
helpstring("IID3ComTag Interface"),
pointer_default(unique)
]
interface IID3ComTag : IDispatch
{
[id(1), helpstring("method Link")] HRESULT Link(BSTR* FileName);
[id(2), helpstring("method Clear")] HRESULT Clear();
[propget, id(3), helpstring("property HasChanged")] HRESULT HasChanged([out, retval] VARIANT_BOOL *pVal);
[id(4), helpstring("method FindFrame")] HRESULT FindFrame([in] eID3FrameTypes FrameID, [in, defaultvalue(TRUE)] VARIANT_BOOL CreateNewIfNotFound, [out, retval] IID3ComFrame** pVal);
[propget, id(5), helpstring("property Count")] HRESULT Count([out, retval] long *pVal);
[propget, id(DISPID_VALUE), helpstring("property Item")] HRESULT Item([in] long FrameNum, [out, retval] IID3ComFrame** pVal);
[id(7), helpstring("method SaveV1Tag")] HRESULT SaveV1Tag();
[id(8), helpstring("method StripV1Tag")] HRESULT StripV1Tag();
[id(9), helpstring("method SaveV2Tag")] HRESULT SaveV2Tag();
[id(10), helpstring("method StripV2Tag")] HRESULT StripV2Tag();
[propget, id(11), helpstring("property Artist")] HRESULT Artist([out, retval] BSTR *pVal);
[propput, id(11), helpstring("property Artist")] HRESULT Artist([in] BSTR newVal);
[propget, id(12), helpstring("property Album")] HRESULT Album([out, retval] BSTR *pVal);
[propput, id(12), helpstring("property Album")] HRESULT Album([in] BSTR newVal);
[propget, id(13), helpstring("property Title")] HRESULT Title([out, retval] BSTR *pVal);
[propput, id(13), helpstring("property Title")] HRESULT Title([in] BSTR newVal);
[propget, id(14), helpstring("property Comment")] HRESULT Comment([out, retval] BSTR *pVal);
[propput, id(14), helpstring("property Comment")] HRESULT Comment([in] BSTR newVal);
[propget, id(15), helpstring("property Genre")] HRESULT Genre([out, retval] long *pVal);
[propput, id(15), helpstring("property Genre")] HRESULT Genre([in] long newVal);
[propget, id(16), helpstring("property Year")] HRESULT Year([out, retval] BSTR *pVal);
[propput, id(16), helpstring("property Year")] HRESULT Year([in] BSTR newVal);
[propget, id(17), helpstring("property Track")] HRESULT Track([out, retval] long *pVal);
[propput, id(17), helpstring("property Track")] HRESULT Track([in] long newVal);
[propget, id(18), helpstring("property LastPlayed")] HRESULT LastPlayed([out, retval] DATE *pVal);
[propput, id(18), helpstring("property LastPlayed")] HRESULT LastPlayed([in] DATE newVal);
[propget, id(19), helpstring("property HasV1Tag")] HRESULT HasV1Tag([out, retval] VARIANT_BOOL *pVal);
[propget, id(20), helpstring("property HasV2Tag")] HRESULT HasV2Tag([out, retval] VARIANT_BOOL *pVal);
[propget, id(21), helpstring("property HasLyrics")] HRESULT HasLyrics([out, retval] VARIANT_BOOL *pVal);
[id(22), helpstring("method FindFrameString")] HRESULT FindFrameString([in] eID3FrameTypes FrameID, [in] eID3FieldTypes FieldType, [in] BSTR FindString, [in, defaultvalue(TRUE)] VARIANT_BOOL CreateNewIfNotFound, [out, retval] IID3ComFrame** pVal);
[propget, id(23), helpstring("property PlayCount")] HRESULT PlayCount([in] BSTR EMailAddress, [out, retval] long *pVal);
[propput, id(23), helpstring("property PlayCount")] HRESULT PlayCount([in] BSTR EMailAddress, [in] long newVal);
[propget, id(24), helpstring("property Popularity")] HRESULT Popularity([in] BSTR EMailAddress, [out, retval] short *pVal);
[propput, id(24), helpstring("property Popularity")] HRESULT Popularity([in] BSTR EMailAddress, [in] short newVal);
[propget, id(25), helpstring("property TagCreated")] HRESULT TagCreated([out, retval] DATE *pVal);
[propput, id(25), helpstring("property TagCreated")] HRESULT TagCreated([in] DATE newVal);
[propget, id(26), helpstring("property PercentVolumeAdjust")] HRESULT PercentVolumeAdjust([out, retval] double *pVal);
[propput, id(26), helpstring("property PercentVolumeAdjust")] HRESULT PercentVolumeAdjust([in] double newVal);
[propput, id(27), helpstring("property Padding")] HRESULT Padding([in] VARIANT_BOOL newVal);
[propput, id(28), helpstring("property UnSync")] HRESULT UnSync([in] VARIANT_BOOL newVal);
[propget, id(29), helpstring("property VersionString")] HRESULT VersionString([out, retval] BSTR *pVal);
[id(35), helpstring("method RemoveFrame")] HRESULT RemoveFrame([in] eID3FrameTypes FrameID);
[id(37), helpstring("method RemoveFrameByNum")] HRESULT RemoveFrameByNum([in] long FrameNum);
[propget, id(DISPID_NEWENUM), restricted] HRESULT _NewEnum([out, retval] IUnknown** pRetVal);
};
[
uuid(AEBA98B0-C36C-11D3-841B-0008C782A257),
version(1.0),
helpstring("ID3COM 1.0 Type Library")
]
library ID3COM
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(AEBA98BD-C36C-11D3-841B-0008C782A257),
helpstring("ID3ComTag Class")
]
coclass ID3ComTag
{
[default] interface IID3ComTag;
};
[
uuid(AEBA98BF-C36C-11D3-841B-0008C782A257),
helpstring("ID3ComFrame Class"),
noncreatable
]
coclass ID3ComFrame
{
[default] interface IID3ComFrame;
};
[
uuid(A513A24F-C749-11D3-841C-0008C782A257),
helpstring("ID3ComField Class"),
noncreatable
]
coclass ID3ComField
{
[default] interface IID3ComField;
};
};