Author Topic: BASS_ChannelGetTags() + BASS_TAG_RIFF_BEXT & BASS_TAG_RIFF_CART  (Read 723 times)


  • Posts: 904

Implementing these 2 functions in Tags Library and some questions arise:

1. Both links to specs. in the docs. are invalid
2. As I understand the last values for both tag structs are variable length. How can I determine the returned memory block length by BASS_ChannelGetTags()?
3. The field TAG_BEXT.UMID is a character array or a binary byte array?
« Last Edit: 19 May '14 - 13:11 by 3delite »

Ian @ un4seen

  • Administrator
  • Posts: 20426
Yep, it looks like those spec links are no longer valid. I'll update them for the next BASS release. In the meantime, you can find details here...

In both cases, the total size of the tag block can be found by adding the length of the final string (NULL-terminated) to the size of the rest of the tag structure. For example, something like this...

Code: [Select]
const TAG_BEXT *bext=(const TAG_BEXT*)BASS_ChannelGetTags(channel, BASS_TAG_BEXT); // get a pointer to the "bext" tags
bextsize=sizeof(TAG_BEXT)+strlen(bext->CodingHistory)+1; // get the total size

The "UMID" field is a BYTE array. Details here...


  • Posts: 904
Ok. Thank you! :)

From the UMID docs it seems that the "extended UMID" probably contains characters (time/date? for example) it's not clear from the specs.