diff --git a/display_matrix.go b/display_matrix.go index 6c6c068..c4cf703 100644 --- a/display_matrix.go +++ b/display_matrix.go @@ -23,7 +23,7 @@ func NewDisplayMatrixFromBytes(b []byte) (m *DisplayMatrix, err error) { // Loop for idx := 0; idx < 9; idx++ { - m[idx] = binary.BigEndian.Uint32(b[idx*4 : (idx+1)*4]) + m[idx] = binary.LittleEndian.Uint32(b[idx*4 : (idx+1)*4]) } return } diff --git a/display_matrix_test.go b/display_matrix_test.go index 6c357ee..419de82 100644 --- a/display_matrix_test.go +++ b/display_matrix_test.go @@ -11,6 +11,10 @@ func TestDisplayMatrix(t *testing.T) { require.Error(t, err) dm, err := NewDisplayMatrixFromBytes([]byte{0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64}) require.NoError(t, err) - require.Equal(t, DisplayMatrix{0x0, 0xffff, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0x40}, *dm) + require.Equal(t, DisplayMatrix{0x0, 0xffff0000, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x0, 0x40000000}, *dm) + require.Equal(t, float64(90), dm.Rotation()) + dm, err = NewDisplayMatrixFromBytes([]byte{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64}) + require.NoError(t, err) + require.Equal(t, DisplayMatrix{0x0, 0x10000, 0x0, 0xffff0000, 0x0, 0x0, 0x0, 0x0, 0x40000000}, *dm) require.Equal(t, float64(-90), dm.Rotation()) } diff --git a/examples/demuxing_decoding/main.go b/examples/demuxing_decoding/main.go index fdc8f0c..b66679d 100644 --- a/examples/demuxing_decoding/main.go +++ b/examples/demuxing_decoding/main.go @@ -74,6 +74,11 @@ func main() { // Create stream s := &stream{inputStream: is} + if sd := is.SideData(astiav.PacketSideDataTypeDisplaymatrix); len(sd) > 0 { + m, _ := astiav.NewDisplayMatrixFromBytes(sd) + log.Fatalf("rotation: %v | sd: %+v", m.Rotation(), sd) + } + // Find decoder if s.decCodec = astiav.FindDecoder(is.CodecParameters().CodecID()); s.decCodec == nil { log.Fatal(errors.New("main: codec is nil"))