From: Vincent P. <vpa...@ch...> - 2017-11-22 12:28:49
|
Dear Sigrok developers, Any opinion on this sigrok-cli patch ? With my setup, it's faster for the analog corner cases I care about, and I don't think it really removes anything useful. On Tue, Oct 24, 2017 at 2:27 PM, Vincent Palatin <vpa...@ch...> wrote: > With the current conditions, when using the 'srzip' output module with > device generating SR_DF_ANALOG packets, they are processed both by > 'srzip' and the backup 'analog' module (as 'out' is always null for > srzip which does its own file operation). > For a moderately fast continuous analog capture (e.g. 2.4MSamples/s), > the overhead of the 'analog' module is important (e.g. 80% of the whole > processing of my workstation) while we are not using its output, > so disable it when the user actually selected an output format/file > but the module doesn't generate text output. > > Also remove the second part of the condition as 'opt_output_format' > never seems to be null or at least not in the case where the user has > omitted output parameters. > > Tested with a device generating analog packets both with '-o test.sr' > and no output option. > --- > session.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/session.c b/session.c > index 6b31ef5..5d92362 100644 > --- a/session.c > +++ b/session.c > @@ -193,7 +193,9 @@ void datafeed_in(const struct sr_dev_inst *sdi, > g_critical("Failed to initialize output module."); > > /* Set up backup analog output module. */ > - oa = sr_output_new(sr_output_find("analog"), NULL, sdi, > NULL); > + if (outfile) > + oa = sr_output_new(sr_output_find("analog"), NULL, > + sdi, NULL); > > rcvd_samples_logic = rcvd_samples_analog = 0; > > @@ -311,9 +313,7 @@ void datafeed_in(const struct sr_dev_inst *sdi, > > if (o && !opt_pds) { > if (sr_output_send(o, packet, &out) == SR_OK) { > - if (!out || (out->len == 0 > - && !opt_output_format > - && packet->type == SR_DF_ANALOG)) { > + if (oa && !out) { > /* > * The user didn't specify an output > module, > * but needs to see this analog data. > @@ -340,7 +340,8 @@ void datafeed_in(const struct sr_dev_inst *sdi, > sr_output_free(o); > o = NULL; > > - sr_output_free(oa); > + if (oa) > + sr_output_free(oa); > oa = NULL; > > if (outfile && outfile != stdout) > -- > 2.15.0.rc0.271.g36b669edcc-goog > > |