| ///////////////////////////////////////////////////////////////////////////// |
| // 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; |
| }; |
| }; |