feat: add msgpack decode to MediaFormat
This commit is contained in:
parent
889d327c3a
commit
ab37004d16
|
@ -1,6 +1,15 @@
|
||||||
package metadata
|
package metadata
|
||||||
|
|
||||||
import "git.lumeweb.com/LumeWeb/libs5-go/encoding"
|
import (
|
||||||
|
"errors"
|
||||||
|
"git.lumeweb.com/LumeWeb/libs5-go/encoding"
|
||||||
|
"github.com/vmihailenco/msgpack/v5"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
_ msgpack.CustomDecoder = (*MediaFormat)(nil)
|
||||||
|
_ msgpack.CustomEncoder = (*MediaFormat)(nil)
|
||||||
|
)
|
||||||
|
|
||||||
type MediaFormat struct {
|
type MediaFormat struct {
|
||||||
Subtype string
|
Subtype string
|
||||||
|
@ -29,6 +38,10 @@ type MediaFormat struct {
|
||||||
Caption string
|
Caption string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (mmd *MediaFormat) EncodeMsgpack(encoder *msgpack.Encoder) error {
|
||||||
|
return errors.New("Not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
func NewMediaFormat(subtype string, role, ext, vcodec, acodec, container, dynamicRange, charset, initRange, indexRange, caption string, cid *encoding.CID, height, width, asr, fps, bitrate, audioChannels, duration, rows, columns, index int, languages []string, value []byte) *MediaFormat {
|
func NewMediaFormat(subtype string, role, ext, vcodec, acodec, container, dynamicRange, charset, initRange, indexRange, caption string, cid *encoding.CID, height, width, asr, fps, bitrate, audioChannels, duration, rows, columns, index int, languages []string, value []byte) *MediaFormat {
|
||||||
return &MediaFormat{
|
return &MediaFormat{
|
||||||
Subtype: subtype,
|
Subtype: subtype,
|
||||||
|
@ -57,3 +70,68 @@ func NewMediaFormat(subtype string, role, ext, vcodec, acodec, container, dynami
|
||||||
Caption: caption,
|
Caption: caption,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
func (mmd *MediaFormat) DecodeMsgpack(dec *msgpack.Decoder) error {
|
||||||
|
intMap, err := decodeIntMap(dec)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for key, value := range intMap {
|
||||||
|
switch key {
|
||||||
|
case 1:
|
||||||
|
mmd.Cid, err = encoding.CIDFromBytes(value.([]byte))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
mmd.Subtype = value.(string)
|
||||||
|
case 3:
|
||||||
|
mmd.Role = value.(string)
|
||||||
|
case 4:
|
||||||
|
mmd.Ext = value.(string)
|
||||||
|
case 10:
|
||||||
|
mmd.Height = value.(int)
|
||||||
|
case 11:
|
||||||
|
mmd.Width = value.(int)
|
||||||
|
case 12:
|
||||||
|
mmd.Languages = value.([]string)
|
||||||
|
case 13:
|
||||||
|
mmd.Asr = value.(int)
|
||||||
|
case 14:
|
||||||
|
mmd.Fps = value.(int)
|
||||||
|
case 15:
|
||||||
|
mmd.Bitrate = value.(int)
|
||||||
|
case 18:
|
||||||
|
mmd.AudioChannels = value.(int)
|
||||||
|
case 19:
|
||||||
|
mmd.Vcodec = value.(string)
|
||||||
|
case 20:
|
||||||
|
mmd.Acodec = value.(string)
|
||||||
|
case 21:
|
||||||
|
mmd.Container = value.(string)
|
||||||
|
case 22:
|
||||||
|
mmd.DynamicRange = value.(string)
|
||||||
|
case 23:
|
||||||
|
mmd.Charset = value.(string)
|
||||||
|
case 24:
|
||||||
|
mmd.Value = value.([]byte)
|
||||||
|
case 25:
|
||||||
|
mmd.Duration = value.(int)
|
||||||
|
case 26:
|
||||||
|
mmd.Rows = value.(int)
|
||||||
|
case 27:
|
||||||
|
mmd.Columns = value.(int)
|
||||||
|
case 28:
|
||||||
|
mmd.Index = value.(int)
|
||||||
|
case 29:
|
||||||
|
mmd.InitRange = value.(string)
|
||||||
|
case 30:
|
||||||
|
mmd.IndexRange = value.(string)
|
||||||
|
case 31:
|
||||||
|
mmd.Caption = value.(string)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue