BASS_WMA_EncodeSetTag
Sets a tag in a WMA encoding.
BOOL BASS_WMA_EncodeSetTag( HWMENCODE handle, char *tag, char *value, DWORD form );
Parameters
handle | The encoder handle. | ||||||||||||||||||||
tag | The tag to set.The standard WMA header tags are as follows.
| ||||||||||||||||||||
value | The tag's text/data. | ||||||||||||||||||||
form | The format of the tag and value strings.
|
Return value
If successful, TRUE is returned, else FALSE is returned. Use BASS_ErrorGetCode to get the error code.Error codes
BASS_ERROR_HANDLE | handle is not valid. |
BASS_ERROR_NOTAVAIL | The encoder does not have mid-stream tags enabled, so tags cannot be set once encoding has begun. |
BASS_ERROR_ILLPARAM | tag and/or value is invalid. |
BASS_ERROR_UNKNOWN | Some other mystery problem! |
Remarks
Where the tags are located in the encoded stream depends on when this function is used. Calling this function before beginning encoding data puts the tags in the stream's header. Calling this function after encoding has begun puts the tags in the actual stream data, at the current encoding position.Header tags must be set before encoding any data; no more header tags can be set once BASS_WMA_EncodeWrite has been called.
To set tags mid-stream (after encoding has begun), the BASS_WMA_ENCODE_SCRIPT flag needs to have been specified in the encoder's creation. A mid-stream tag typically used is "Caption", which get's displayed in Windows Media Player 9 and above (if the user has enabled captions).
When using a network encoder, it should be noted that while all header tags are sent to newly connecting clients, prior mid-stream tags are not. So if, for example, you're using the "Caption" tag to indicate the current song title, it should be sent at fairly regular intervals (not only at the start of the song).
On the playback side, mid-stream tags can be processed using BASS_ChannelSetSync (BASS_SYNC_META).
Example
Initialize encoding 44100hz 16-bit stereo sample data at 128kb/s to a file called "blah.wma", and set the title to "Blah".HWMENCODE encoder=BASS_WMA_EncodeOpenFile(44100, 2, 0, 128000, "blah.wma"); BASS_WMA_EncodeSetTag(encoder, "Title", "Blah", BASS_WMA_TAG_ANSI); // set the title tag