mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 12:24:38 +03:00
Caption support (#2462)
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
80
vendor/github.com/asticode/go-astits/data_nit.go
generated
vendored
Normal file
80
vendor/github.com/asticode/go-astits/data_nit.go
generated
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
package astits
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/asticode/go-astikit"
|
||||
)
|
||||
|
||||
// NITData represents a NIT data
|
||||
// Page: 29 | Chapter: 5.2.1 | Link: https://www.dvb.org/resources/public/standards/a38_dvb-si_specification.pdf
|
||||
// (barbashov) the link above can be broken, alternative: https://dvb.org/wp-content/uploads/2019/12/a038_tm1217r37_en300468v1_17_1_-_rev-134_-_si_specification.pdf
|
||||
type NITData struct {
|
||||
NetworkDescriptors []*Descriptor
|
||||
NetworkID uint16
|
||||
TransportStreams []*NITDataTransportStream
|
||||
}
|
||||
|
||||
// NITDataTransportStream represents a NIT data transport stream
|
||||
type NITDataTransportStream struct {
|
||||
OriginalNetworkID uint16
|
||||
TransportDescriptors []*Descriptor
|
||||
TransportStreamID uint16
|
||||
}
|
||||
|
||||
// parseNITSection parses a NIT section
|
||||
func parseNITSection(i *astikit.BytesIterator, tableIDExtension uint16) (d *NITData, err error) {
|
||||
// Create data
|
||||
d = &NITData{NetworkID: tableIDExtension}
|
||||
|
||||
// Network descriptors
|
||||
if d.NetworkDescriptors, err = parseDescriptors(i); err != nil {
|
||||
err = fmt.Errorf("astits: parsing descriptors failed: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Get next bytes
|
||||
var bs []byte
|
||||
if bs, err = i.NextBytesNoCopy(2); err != nil {
|
||||
err = fmt.Errorf("astits: fetching next bytes failed: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Transport stream loop length
|
||||
transportStreamLoopLength := int(uint16(bs[0]&0xf)<<8 | uint16(bs[1]))
|
||||
|
||||
// Transport stream loop
|
||||
offsetEnd := i.Offset() + transportStreamLoopLength
|
||||
for i.Offset() < offsetEnd {
|
||||
// Create transport stream
|
||||
ts := &NITDataTransportStream{}
|
||||
|
||||
// Get next bytes
|
||||
if bs, err = i.NextBytesNoCopy(2); err != nil {
|
||||
err = fmt.Errorf("astits: fetching next bytes failed: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Transport stream ID
|
||||
ts.TransportStreamID = uint16(bs[0])<<8 | uint16(bs[1])
|
||||
|
||||
// Get next bytes
|
||||
if bs, err = i.NextBytesNoCopy(2); err != nil {
|
||||
err = fmt.Errorf("astits: fetching next bytes failed: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Original network ID
|
||||
ts.OriginalNetworkID = uint16(bs[0])<<8 | uint16(bs[1])
|
||||
|
||||
// Transport descriptors
|
||||
if ts.TransportDescriptors, err = parseDescriptors(i); err != nil {
|
||||
err = fmt.Errorf("astits: parsing descriptors failed: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Append transport stream
|
||||
d.TransportStreams = append(d.TransportStreams, ts)
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user