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

3delite

  • Posts: 904
Hi!

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...

   www.ebu.ch/fr/technical/publications/userguides/bwf_user_guide.php
   www.cartchunk.org/cc_spec.htm

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...

   www.digitalpreservationeurope.eu/publications/briefs/UMID_Unique%20Material%20Identifier.pdf

3delite

  • 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.