Sunday 23 November 2014

Week 11

Nearing the end of term, and last week felt like the calm before a storm. A very big storm. I had two days off on monday and tuesday for the fall reading break, and used that extra time fairly effectively.

What I Worked On

I spent part of my reading week off-days looking into #654 and #658, issues related to the plugin configuration work I did earlier in the term. #654 was caused by not having a valid default value set for the USB source configuration's input property. 

My initial fix for #654 was to have the Configuration class call a method to find an appropriate default value when the Configuration instance is first created. However, this caused further issues because the method that detects compatible devices had OS-specific code in its body (see #658!). My final fix involved calling the method to detect a default input only if the plugin binary was being loaded and there wasn't already an input source selected by the user. The binary should only ever be called when the user is preparing to record and has already selected their plugins, and so no OS-incompatible plugin code should be run at that point. So far this seems to be working best.

Aside from the above issues, I also addressed some feedback for two PRs I had open at the end of last week related to both Freeseer's ProfileManager, and also to the json schemas I was adding to Freeseer's Configuration and Option classes: 

I managed to get both of those merged into master, which made it possible for me to get back to working on the Configuration API endpoints. I spent a fair amount of time on the endpoints, their unit tests, and various helper methods, and have working code for most of the configuration as described in the API doc:


See this PR for details:

Issues

The main issue i have run into, which is serious enough to block progress on a couple of the Configuration endpoints, is that Freeseer's PluginManager does not track instances for plugins.

1 - It's also currently not possible to determine which particular instance of a plugin is being used by an audio or videomixer from its configuration.
2 - PluginManager doesn't keep track of how many instances have been created for some plugin.
3 - There is no way to get all of the existing instances for a plugin from PluginManager.

These points are all ultimately related to this old issue:

What I Will be Working On

I will mostly be working on addressing feedback for #632, and on updating and editing the API configuration docs. Aside from the two endpoints that I cannot implement without larger changes to the PluginManager, the API configuration is currently in working condition and hopefully can still be used as a starting point for any further work related to making a headless Freeseer server.

No comments:

Post a Comment