feat: add msgpack decode to MediaFormat
This commit is contained in:
parent
889d327c3a
commit
ab37004d16
|
@ -1,6 +1,15 @@
|
|||
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 {
|
||||
Subtype string
|
||||
|
@ -29,6 +38,10 @@ type MediaFormat struct {
|
|||
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 {
|
||||
return &MediaFormat{
|
||||
Subtype: subtype,
|
||||
|
@ -57,3 +70,68 @@ func NewMediaFormat(subtype string, role, ext, vcodec, acodec, container, dynami
|
|||
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