> > From: Christophe de Dinechin <dinechin@xxxxxxxxxx> > > Signed-off-by: Christophe de Dinechin <dinechin@xxxxxxxxxx> > --- > include/spice-streaming-agent/plugin.hpp | 6 ++++++ > src/concrete-agent.cpp | 11 +++++++++++ > src/concrete-agent.hpp | 1 + > src/spice-streaming-agent.cpp | 23 +++++++++++------------ > 4 files changed, 29 insertions(+), 12 deletions(-) > > diff --git a/include/spice-streaming-agent/plugin.hpp > b/include/spice-streaming-agent/plugin.hpp > index 41ad11f..83980d7 100644 > --- a/include/spice-streaming-agent/plugin.hpp > +++ b/include/spice-streaming-agent/plugin.hpp > @@ -56,6 +56,12 @@ struct Settings > unsigned quality = 80; // Normalized in 0-100 (100=high) > unsigned avg_bitrate = 3000000; // Target average bitrate in bps > unsigned max_bitrate = 8000000; // Target maximum bitrate > + > +#define STANDARD_OPTIONS_USAGE \ > + "framerate = [1-240] Number of frames per second\n" \ > + "quality = [1-100] Normalized quality, 100 = high\n" \ > + "avg_bitrate= [1-10000000] Average bits per second for stream\n" \ > + "max_bitrate= [1-10000000] Maximum bits per second for stream\n" > }; > > /*! Why putting this in the public header? I don't see any point for the plugins to know that information and if they starts using it the value can become an ABI. Also these defines are global (not inside any namespace) so the "STANDARD_OPTIONS_USAGE" would prevent the name reuse. > diff --git a/src/concrete-agent.cpp b/src/concrete-agent.cpp > index 59f11b2..377c934 100644 > --- a/src/concrete-agent.cpp > +++ b/src/concrete-agent.cpp > @@ -140,6 +140,17 @@ FrameCapture *ConcreteAgent::GetBestFrameCapture() > return nullptr; > } > > +void ConcreteAgent::PluginsUsage() > +{ > + for (auto &plugin: plugins) { > + printf("\n" > + "settings for %s:\n" > + "%s", > + plugin->Name(), > + plugin->Usage()); > + } > +} > + > void ConcreteAgent::ApplyOptions(Plugin *plugin) > { > bool usage = false; > diff --git a/src/concrete-agent.hpp b/src/concrete-agent.hpp > index b3d4e06..eeb43f8 100644 > --- a/src/concrete-agent.hpp > +++ b/src/concrete-agent.hpp > @@ -34,6 +34,7 @@ public: > void LoadPlugins(const char *directory); > void ApplyOptions(Plugin *plugin); > FrameCapture *GetBestFrameCapture(); > + void PluginsUsage(); > > private: > void LoadPlugin(const char *plugin_filename); > diff --git a/src/spice-streaming-agent.cpp b/src/spice-streaming-agent.cpp > index d5984bc..71a36e1 100644 > --- a/src/spice-streaming-agent.cpp > +++ b/src/spice-streaming-agent.cpp > @@ -269,18 +269,16 @@ static void register_interrupts(void) > > static void usage(const char *progname) > { > - printf("usage: %s <options>\n", progname); > - printf("options are:\n"); > - printf("\t-p portname -- virtio-serial port to use\n"); > - printf("\t-i accept commands from stdin\n"); > - printf("\t-l file -- log frames to file\n"); > - printf("\t--log-binary -- log binary frames (following -l)\n"); > - printf("\t-d -- enable debug logs\n"); > - printf("\t-c variable=value -- change settings\n"); > - printf("\t\tframerate = 1-100 (check 10,20,30,40,50,60)\n"); > - printf("\n"); > - printf("\t-h or --help -- print this help message\n"); > - > + printf("usage: %s <options>\n" > + "options are:\n" > + "\t-p portname -- virtio-serial port to use\n" > + "\t-i accept commands from stdin\n" > + "\t-l file -- log frames to file\n" > + "\t--log-binary -- log binary frames (following -l)\n" > + "\t-d -- enable debug logs\n" > + "\t-c variable=value -- change settings (see below)\n" > + "\t-h or --help -- print this help message\n", progname); > + agent.PluginsUsage(); > exit(1); > } > > @@ -474,6 +472,7 @@ int main(int argc, char* argv[]) > setlogmask(logmask); > break; > case 'h': > + agent.LoadPlugins(PLUGINSDIR); > usage(argv[0]); > break; > } Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel