implement service id filter for better DAB performance

This commit is contained in:
Jakob Ketterl 2024-02-12 13:53:06 +01:00
parent 8da92f5788
commit 0edc0b49cd
2 changed files with 8 additions and 7 deletions

View file

@ -62,10 +62,10 @@ class MetaProcessor(PickleModule):
class Dablin(BaseDemodulatorChain, FixedIfSampleRateChain, FixedAudioRateChain, HdAudio, MetaProvider, DabServiceSelector, DialFrequencyReceiver): class Dablin(BaseDemodulatorChain, FixedIfSampleRateChain, FixedAudioRateChain, HdAudio, MetaProvider, DabServiceSelector, DialFrequencyReceiver):
def __init__(self): def __init__(self):
shift = Shift(0) shift = Shift(0)
decoder = EtiDecoder() self.decoder = EtiDecoder()
metaBuffer = Buffer(Format.CHAR) metaBuffer = Buffer(Format.CHAR)
decoder.setMetaWriter(metaBuffer) self.decoder.setMetaWriter(metaBuffer)
self.processor = MetaProcessor(shift) self.processor = MetaProcessor(shift)
self.processor.setReader(metaBuffer.getReader()) self.processor.setReader(metaBuffer.getReader())
# use a dummy to start with. it won't run without. # use a dummy to start with. it won't run without.
@ -76,7 +76,7 @@ class Dablin(BaseDemodulatorChain, FixedIfSampleRateChain, FixedAudioRateChain,
workers = [ workers = [
shift, shift,
decoder, self.decoder,
self.dablin, self.dablin,
Downmix(Format.FLOAT), Downmix(Format.FLOAT),
] ]
@ -101,6 +101,7 @@ class Dablin(BaseDemodulatorChain, FixedIfSampleRateChain, FixedAudioRateChain,
self.processor.setWriter(writer) self.processor.setWriter(writer)
def setDabServiceId(self, serviceId: int) -> None: def setDabServiceId(self, serviceId: int) -> None:
self.decoder.setServiceIdFilter([serviceId])
self.dablin.setDabServiceId(serviceId) self.dablin.setDabServiceId(serviceId)
def setDialFrequency(self, frequency: int) -> None: def setDialFrequency(self, frequency: int) -> None:

View file

@ -44,13 +44,13 @@ cd ..
rm -rf pycsdr rm -rf pycsdr
git clone https://github.com/jketterl/csdr-eti.git git clone https://github.com/jketterl/csdr-eti.git
# latest develop as of 2024-01-26 (global variables fix) # latest develop as of 2024-02-12 (service id filter)
cmakebuild csdr-eti 9f2360e7ab080d3a9da5e04978c260cc911c06ca cmakebuild csdr-eti e09823e188bc8a9918fb38f4ffe17e131ef2dee3
git clone https://github.com/jketterl/pycsdr-eti.git git clone https://github.com/jketterl/pycsdr-eti.git
cd pycsdr-eti cd pycsdr-eti
# latest develop as of 2024-01-26 (initial integration) # latest develop as of 2024-02-12 (service id filter)
git checkout ebc29af1eb7c0be7532c91cf459f064dcb017455 git checkout 676663b4d796fbadd18dfcae0c3b80eb1b1f9147
./setup.py install ./setup.py install
cd .. cd ..
rm -rf pycsdr-eti rm -rf pycsdr-eti