diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2016-01-22 14:08:58 +0100 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2016-01-22 14:08:58 +0100 |
commit | 74e2beb5b80470a26054c8c51665996b10303f68 (patch) | |
tree | 55032f4b62aea432d03c8a49adfab51740b4640b /fig0_2.cpp | |
parent | e05c1b5903709651aac348fd5144de3ccbbd77a3 (diff) | |
download | etisnoop-74e2beb5b80470a26054c8c51665996b10303f68.tar.gz etisnoop-74e2beb5b80470a26054c8c51665996b10303f68.tar.bz2 etisnoop-74e2beb5b80470a26054c8c51665996b10303f68.zip |
Add repetition rate analyser
Diffstat (limited to 'fig0_2.cpp')
-rw-r--r-- | fig0_2.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
@@ -28,10 +28,27 @@ #include <cstdio> #include <string> #include <cstring> +#include <unordered_set> + +static std::unordered_set<int> services_seen; + +bool fig0_2_is_complete(int services_id) +{ + bool complete = services_seen.count(services_id); + + if (complete) { + services_seen.clear(); + } + else { + services_seen.insert(services_id); + } + + return complete; +} // FIG 0/2 Basic service and service component definition // ETSI EN 300 401 6.3.1 -void fig0_2(fig0_common_t& fig0, int indent) +bool fig0_2(fig0_common_t& fig0, int indent) { uint16_t sref, sid; uint8_t cid, ecc, local, caid, ncomp, timd, ps, ca, subchid, scty; @@ -40,6 +57,7 @@ void fig0_2(fig0_common_t& fig0, int indent) uint8_t* f = fig0.f; char sctydesc[32]; char desc[256]; + bool complete = false; while (k < fig0.figlen) { if (fig0.pd() == 0) { @@ -63,6 +81,8 @@ void fig0_2(fig0_common_t& fig0, int indent) k += 4; } + complete |= fig0_2_is_complete(sid); + local = (f[k] & 0x80) >> 7; caid = (f[k] & 0x70) >> 4; ncomp = f[k] & 0x0F; @@ -141,6 +161,7 @@ void fig0_2(fig0_common_t& fig0, int indent) k += 2; } } -} + return complete; +} |