]> sigrok.org Git - libsigrok.git/blobdiff - src/input/binary.c
input/binary: Only calculate unitsize once.
[libsigrok.git] / src / input / binary.c
index 52e1da36e62c06d2a20202e27af957c22033381f..223efd88089bd1fa78f2eeaec0f429cab01829ec 100644 (file)
@@ -36,6 +36,7 @@
 struct context {
        gboolean started;
        uint64_t samplerate;
+       uint16_t unitsize;
 };
 
 static int init(struct sr_input *in, GHashTable *options)
@@ -60,6 +61,8 @@ static int init(struct sr_input *in, GHashTable *options)
                sr_channel_new(in->sdi, i, SR_CHANNEL_LOGIC, TRUE, name);
        }
 
+       inc->unitsize = (g_slist_length(in->sdi->channels) + 7) / 8;
+
        return SR_OK;
 }
 
@@ -92,7 +95,7 @@ static int process_buffer(struct sr_input *in)
 
        packet.type = SR_DF_LOGIC;
        packet.payload = &logic;
-       logic.unitsize = (g_slist_length(in->sdi->channels) + 7) / 8;
+       logic.unitsize = inc->unitsize;
 
        /* Cut off at multiple of unitsize. */
        chunk_size = in->buf->len / logic.unitsize * logic.unitsize;