github.com/bluenviron/mediacommon@v1.9.3/pkg/codecs/jpeg/define_huffman_table.go (about)

     1  package jpeg
     2  
     3  // DefineHuffmanTable is a DHT marker.
     4  type DefineHuffmanTable struct {
     5  	Codes       []byte
     6  	Symbols     []byte
     7  	TableNumber int
     8  	TableClass  int
     9  }
    10  
    11  // Marshal encodes the marker.
    12  func (m DefineHuffmanTable) Marshal(buf []byte) []byte {
    13  	buf = append(buf, []byte{0xFF, MarkerDefineHuffmanTable}...)
    14  	s := 3 + len(m.Codes) + len(m.Symbols)
    15  	buf = append(buf, []byte{byte(s >> 8), byte(s)}...) // length
    16  	buf = append(buf, []byte{byte(m.TableClass<<4) | byte(m.TableNumber)}...)
    17  	buf = append(buf, m.Codes...)
    18  	buf = append(buf, m.Symbols...)
    19  	return buf
    20  }