From 3f1550b5cab99a6085539fe9674f7621c8757b57 Mon Sep 17 00:00:00 2001 From: Quentin Renard Date: Thu, 5 Nov 2020 11:59:32 +0100 Subject: [PATCH] Removed global logger and added unknown descriptors instead --- astits/main.go | 3 --- data_psi.go | 3 +-- descriptor.go | 34 ++++++++++++++++++++++++++++++++-- logger.go | 10 ---------- 4 files changed, 33 insertions(+), 17 deletions(-) delete mode 100644 logger.go diff --git a/astits/main.go b/astits/main.go index 680542b..07cd7eb 100644 --- a/astits/main.go +++ b/astits/main.go @@ -40,9 +40,6 @@ func main() { cmd := astikit.FlagCmd() flag.Parse() - // Set logger - astits.SetLogger(log.New(log.Writer(), log.Prefix(), log.Flags())) - // Handle signals handleSignals() diff --git a/data_psi.go b/data_psi.go index 2423a32..f9146a4 100644 --- a/data_psi.go +++ b/data_psi.go @@ -292,9 +292,8 @@ func psiTableType(tableID int) string { case tableID == 0x73: return PSITableTypeTOT default: - logger.Debugf("astits: unlisted PSI table ID %d\n", tableID) + return PSITableTypeUnknown } - return PSITableTypeUnknown } // parsePSISectionSyntax parses a PSI section syntax diff --git a/descriptor.go b/descriptor.go index 704f07d..62d2d2c 100644 --- a/descriptor.go +++ b/descriptor.go @@ -112,6 +112,7 @@ type Descriptor struct { Subtitling *DescriptorSubtitling Tag uint8 // the tag defines the structure of the contained data following the descriptor length. Teletext *DescriptorTeletext + Unknown *DescriptorUnknown UserDefined []byte VBIData *DescriptorVBIData VBITeletext *DescriptorTeletext @@ -612,6 +613,7 @@ func newDescriptorExtendedEventItem(i *astikit.BytesIterator) (d *DescriptorExte type DescriptorExtension struct { SupplementaryAudio *DescriptorExtensionSupplementaryAudio Tag uint8 + Unknown *[]byte } func newDescriptorExtension(i *astikit.BytesIterator, offsetEnd int) (d *DescriptorExtension, err error) { @@ -633,7 +635,15 @@ func newDescriptorExtension(i *astikit.BytesIterator, offsetEnd int) (d *Descrip return } default: - logger.Debugf("astits: unlisted extension tag 0x%x\n", d.Tag) + // Get next bytes + var b []byte + if b, err = i.NextBytes(offsetEnd - i.Offset()); err != nil { + err = fmt.Errorf("astits: fetching next bytes failed: %w", err) + return + } + + // Update unknown + d.Unknown = &b } return } @@ -1157,6 +1167,23 @@ func newDescriptorTeletext(i *astikit.BytesIterator, offsetEnd int) (d *Descript return } +type DescriptorUnknown struct { + Content []byte + Tag uint8 +} + +func newDescriptorUnknown(i *astikit.BytesIterator, tag, length uint8) (d *DescriptorUnknown, err error) { + // Create descriptor + d = &DescriptorUnknown{Tag: tag} + + // Get next bytes + if d.Content, err = i.NextBytes(int(length)); err != nil { + err = fmt.Errorf("astits: fetching next bytes failed: %w", err) + return + } + return +} + // DescriptorVBIData represents a VBI data descriptor // Chapter: 6.2.47 | Link: https://www.etsi.org/deliver/etsi_en/300400_300499/300468/01.15.01_60/en_300468v011501p.pdf type DescriptorVBIData struct { @@ -1394,7 +1421,10 @@ func parseDescriptors(i *astikit.BytesIterator) (o []*Descriptor, err error) { return } default: - logger.Debugf("astits: unlisted descriptor tag 0x%x\n", d.Tag) + if d.Unknown, err = newDescriptorUnknown(i, d.Tag, d.Length); err != nil { + err = fmt.Errorf("astits: parsing unknown descriptor failed: %w", err) + return + } } } diff --git a/logger.go b/logger.go deleted file mode 100644 index 9596d63..0000000 --- a/logger.go +++ /dev/null @@ -1,10 +0,0 @@ -package astits - -import "github.com/asticode/go-astikit" - -// Right now we use a global logger because it feels weird to inject a logger in pure functions -// Indeed, logger is only needed to let the developer know when an unhandled descriptor or id has been found -// in the stream -var logger = astikit.AdaptStdLogger(nil) - -func SetLogger(l astikit.StdLogger) { logger = astikit.AdaptStdLogger(l) }