Skip to main content


If you are using a Hotmail or Outlook email address, please change it now, as Microsoft is rejecting all email from our service outright.
Topic: Specific question about Foobar2000 SDK function hooking design (Read 557 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Specific question about Foobar2000 SDK function hooking design

I've got an idea of creating improved Open-Source version of m-TAGS foobar component. However I admit I haven't got any knowledge of Foobar SDK. And if what I ask is possible in Foobar SDK, I'll start this project, if not, I won't even bother to learn the SDK.

Because I haven't yet looked into the workflow/communication of Foobar2000 plugin system, my questions might not make sense to you, so don't absolutely judge me on that.

Ok, so here's the questions.

1.    Is it possible to hook the Read/Write Song Metadata foobar functions to globally redirect them not to files, but to component-managed metadata database?

2.    How could it be possible to hook those functions only in one playlist's scope? For example, my plugin (let's call it Nu-Tags) scans a specific playlist (by already provided SDK interfaces), generating the initial metadata database. Then how could all subsequent tag-writing functions from core/other components on that playlist would be redirected to Nu-Tags component?

3.    How would it be possible to save/load the state of which playlists should be managed by the Nu-Tags component?

Re: Specific question about Foobar2000 SDK function hooking design

Reply #1
It is not possible to hook metadata reading/writing.

You can however overlay your own info in title formatting fields using metadb_display_field_provider, but its functionality is severely limited to providing a fixed set of fields per component. We used to have a much more powerful API for the same (metadb_display_hook allowing unrestricted injection of arbitrary fields/functions), but it had to be removed due total chaos caused by components using it in most strange ways.

SimplePortal 1.0.0 RC1 © 2008-2020