EVS Conditions: Parallel generation and application of error patterns might cause undeterministic behavior
As reported by @vaillancour, @janssontoftg, @norvell: There might be issues with the bit-exactness of EVS bitstreams after application of error patterns. The likely cause for this is the generation and application of the error pattern in parallel threads, with a shared filename for the error pattern. This occurs in evs.py, line 218ff:
# apply bitstream processing and save unprocessed bitstream
split_chan_bs_unprocessed = split_chan_bs
split_chan_bs = apply_func_parallel(
self.simulate_tx,
zip(split_chan_files, split_chan_bs, repeat(logger)),
None,
"mt" if self.multiprocessing else None,
show_progress=False,
)
voip = [scb[1] for scb in split_chan_bs]
split_chan_bs = [scb[0] for scb in split_chan_bs]
Disabling multithreading seems to resolve the issue.