omeryusufyagci / fast-music-remover

A C++ based, lightweight music and noise remover for YouTube and other internet media, using DeepFilterNet for audio enhancement.
MIT License
163 stars 20 forks source link

Feature: Add `FFmpegController` to core #60

Open omeryusufyagci opened 1 month ago

omeryusufyagci commented 1 month ago

Implement the FFmpegController which will serve as the high level orchestrator for FFmpeg operations. For more context, see #45.

One thing to note here is that, the user may wish to update the FFmepg settings after instantiating the controller. We have to provide an updateSettings() public member function to faciliate this.

Initially I see 2 feasible solutions which would require changes to the FFmepgSettingsManager:

  1. Add a private member varible of type unordered map to keep track of modification status of each setting. Get the map within the controller, check for changed fields when updateSettings() is called.
  2. Same thing as (1), but with a bitmask. Introduce a public enum, e.g. SettingsFlags to expose the mask of each field, e.g.OverwriteFlag = 0x01.

With the limited amount of settings and likely infrequent nature of these calls, hash map seems like the better option for readability.

omeryusufyagci commented 4 weeks ago

Here are the current use cases we have:

The initial implementation of the controller should support these operations with a possibility of updating the settings as mentioned in the description.