Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Recent Posts
94
3rd Party Plugins - (fb2k) / Re: foo_httpcontrol
Last post by regor -
Thank you so much, hopefully it will be useful for others. Will also create a new repository just for my fork on github, so it will be a bit more "visible".
95
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by Majestyk -
EDIT2: One of the things I don't like is that the your component overwrites the old component, which makes it very hard to test since you cannot compare the old and new component running side by side.
You can absolutely compare the two versions running side-by-side on the x86 build. Just rename one component folder and DLL to something different. For example I renamed the old component <user components folder>/foo_vis_vu_meter/foo_vis_vu_meter.dll. Been running like that ever since I was able to decode the BIN format.

VU Meter (DirectX12) CUI seems to have a one size fits all approach, compared to the old VU Meter.

It also doesn't seem to save settings on exit as I have to set it up again every time I reboot fb2k. (I did not show this behavior in the video)
Settings are saved in 0.7.2. Just tested. I stared at the video for a long time trying to decipher what you're doing. Let me try to put it into words and note that what follows applies equally to DUI and CUI: you seem to have several instances running at the same time--more than 2. foobar2000 keeps the configuration in a SQLite database. So, I only hold 2 different sets of configuration settings at runtime because that is generally what fits in a single entry (unless I use blobs which was a pain in foo_vis_milk2 so decided to avoid that here). Basically ping-pong'ing between each new opened instance using the instance id modulo 2 to pick. Settings are then saved in the order of closing; last wins. But since "I think" you have more than 2 running at the same time, you might be saving one of the hidden windows depending on how foobar2000 is pumping the WM_DESTROY messages on exit. Fullscreen is special because in DUI it is associated with a non-fullscreen window which is a completely separate window from the embedded or undocked window which is a huge pain. Oh, and foobar2000 leaks memory when you create new panels; specifically in the settings/preferences data--it is in the proprietary player code--so don't go too crazy.
Surely I got something wrong in my interpretation of what's happening, but your use case is simply not something I envisioned. My setup is less visually impressive.

So are you saying that I can't have any more than two VU Meter (DirectX 12) entries? (As shows below)

96
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by oops -
Thank you for the tool to you and BoringName. As always, some CLI magic can do the same if you know how to use cat and pipes.

On the compression algorithms. What I see mirrors what you get if you select a benchmark that is a few megabytes and a desktop processor. Assuming defaults for the reference executable: BZip2 gives the best compression but the slowest decompression, LZMA follows with almost the same ratio but slightly faster to decompress. GZip/Zlib follows those. But LZ4 and ZStd have the best tradeoff between compression size and decompression speed:
Squash benchmark

I've tried to implement all of them using their streaming functionality and with the lowest-level API functions available. Based on the implementations, I would guess that Zstd would be the fastest because it can decompress both L/R concatenated file streams without clearing the "context." All others finish their frame and need to re-set up before going again.

Lastly, a personal observation. LZMA (not XZ or LZMA2) is the worst of the bunch in one metric: there is no way to identify the compression scheme using a magic number. That means that I can craft a valid uncompressed BIN file header that would identify as LZMA-compressed. This is a rather inconvenient oversight and it is why I decided not to include Brotli as it shares the same issue.

Obviously don't listen to anything I say if you care about reusability and portability, just use BZip2 or LZMA and enjoy.
97
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by sveakul -
Make your BIN files smaller by converting them to LZMA compression; have an option to combine meters consisting of multiple BIN files into just one.  BinExtractor 1.2 from BoringName:

"Changes
- Added a "Save Bin File" button. This will save the currently loaded bin as a single Bin file using LZMA compression. It will be saved in the same location as the loaded bin with "_new" appended to the file name.
Use cases -
- Repackage a bin using BZip2 compression to use LZMA which loads a lot faster.
- Repackage an uncompressed bin to use LZMA compression and take up less space.
- Repackage bin files stored as separate files for left and right meters into a single bin file. eg) Accuphase A-46 1.bin, Accuphase A-46 2.bin will be saved as a single bin file Accuphase A-46 _new.bin. May be handy for skin creators to deploy a single file instead of 2."

99
3rd Party Plugins - (fb2k) / Re: foo_httpcontrol
Last post by spacedrone808 -
@regor


+ download and install Foobar2000, latest version 2.24 is working fine
+ download and install into Foobar by double clicking HttpControl component //download via download Raw file button
+ download these configuration files //download via download Raw file button
+ place them to
Code: [Select]
%APPDATA%\foobar2000-v2\foo_httpcontrol_data\foobar2000controller
+ launch Foobar and setup appropriate settings in [see screenshot]:
Code: [Select]
File > Preferences > Tools > HTTP Control 

Http server should be accessible by means of [my settings for example]:
Code: [Select]
http://192.168.1.240:8888/

And if everything is correctly installed you should see on web page something like:
Code: [Select]
Installed templates: foobar2000controller

If so, we have the right to move on.

+ download and install Android part of software //download via download Raw file button
+ In Android greeting wizard you need to replicate your IP desktop address of machine where Foobar is installed,
    enter the same port number and you are good to go

If for some reason nothing happening, try to disable your firewall or router filtering capabilities just for a time of testing.

If you don’t want to download ALL files by pressing download Raw file button million of times and you have Git installed you can clone whole repository like this:

Code: [Select]
git clone https://github.com/regorxxx/foobar2000-assets.git

And then select all needed files that were mentioned here previously.
100
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by oops -
Instance data is saved inside theme.fth for default UI.

If you're using cfg_XXX or the configStore APIs inside these then you've seriously fucked up.
But just so no one claims I don't try to improve things, I just tried converting the configuration partially to it being per instance. Breaks fullscreen massively, due to the fullscreen implementation in Default UI where it is a completely separate instance. The breakage is unacceptable: I can't even exit fullscreen via regular methods, none of the BIN files transfer, the panel is not in the same mode, position, layout as the windowed version.

It is implemented the way it is because that is what I was able to make work with the functionality I targeted. And see my data inside the memory leaks in the CRT every time I edit the layout for this component, whereas when I don't use the per-instance theme data no leaks occur (from this component).

I think I'll leave as is.