We would like to transmit arbitrary byte sequences using pylsl and cf_string channels. Unfortunately, the current pylsl implementation does not support that. Technically, it should work just fine though.
liblsl states the following about the cft_string channel format:
/** For variable-length ASCII strings or data blobs, such as video frames, complex event
descriptions, etc. */
cft_string = 3,
For the user's convenience, pylsl cf_string outlets accept Python str objects and encode them on the fly. Similarly, the cf_string inlets decode incoming byte strings to str objects.
While this is helpful 99% of the time, it makes sending/receiving arbitrary byte strings impossible, e.g. when one wants to transmit encoded video frame data. Decoding our bytestring to utf-8 first and then have pylsl encode it again is unfortunately not a viable workaround as not all byte sequences can be decoded to utf-8.
Proposed solution
We suggest adding a boolean flag to the corresponding pull_* and push_* function that indicates wether the data should be encoded/decoded, defaulting to True. This should fit conceptionally, given that it is the users responsibility to interpret the data.
Dear pylsl maintainers, what do you think about this proposal?
/cc @ClaraKuper
We would like to transmit arbitrary byte sequences using pylsl and cf_string channels. Unfortunately, the current pylsl implementation does not support that. Technically, it should work just fine though.
liblsl states the following about the
cft_stringchannel format:For the user's convenience, pylsl cf_string outlets accept Python
strobjects and encode them on the fly. Similarly, the cf_string inlets decode incoming byte strings tostrobjects.While this is helpful 99% of the time, it makes sending/receiving arbitrary byte strings impossible, e.g. when one wants to transmit encoded video frame data. Decoding our bytestring to utf-8 first and then have pylsl encode it again is unfortunately not a viable workaround as not all byte sequences can be decoded to utf-8.
Proposed solution
We suggest adding a boolean flag to the corresponding
pull_*andpush_*function that indicates wether the data should be encoded/decoded, defaulting toTrue. This should fit conceptionally, given that it is the users responsibility to interpret the data.Dear pylsl maintainers, what do you think about this proposal?
/cc @ClaraKuper