mirror of https://bitbucket.org/ausocean/av.git
codec/h264/h264dec/slice_test.go: added TestNewRefPicListModification with a single test
This commit is contained in:
parent
a94109e286
commit
21603750aa
|
@ -58,9 +58,9 @@ func NewRefPicListModification(br *bits.BitReader, p *PPS, s *SliceHeader) (*Ref
|
||||||
r := &RefPicListModification{}
|
r := &RefPicListModification{}
|
||||||
r.ModificationOfPicNums[0] = make([]int, p.NumRefIdxL0DefaultActiveMinus1+2)
|
r.ModificationOfPicNums[0] = make([]int, p.NumRefIdxL0DefaultActiveMinus1+2)
|
||||||
r.ModificationOfPicNums[1] = make([]int, p.NumRefIdxL1DefaultActiveMinus1+2)
|
r.ModificationOfPicNums[1] = make([]int, p.NumRefIdxL1DefaultActiveMinus1+2)
|
||||||
r.AbsDiffPicNumMinus1[0] = make([]int, p.NumRefIdxL1DefaultActiveMinus1+2)
|
r.AbsDiffPicNumMinus1[0] = make([]int, p.NumRefIdxL0DefaultActiveMinus1+2)
|
||||||
r.AbsDiffPicNumMinus1[1] = make([]int, p.NumRefIdxL1DefaultActiveMinus1+2)
|
r.AbsDiffPicNumMinus1[1] = make([]int, p.NumRefIdxL1DefaultActiveMinus1+2)
|
||||||
r.LongTermPicNum[0] = make([]int, p.NumRefIdxL1DefaultActiveMinus1+2)
|
r.LongTermPicNum[0] = make([]int, p.NumRefIdxL0DefaultActiveMinus1+2)
|
||||||
r.LongTermPicNum[1] = make([]int, p.NumRefIdxL1DefaultActiveMinus1+2)
|
r.LongTermPicNum[1] = make([]int, p.NumRefIdxL1DefaultActiveMinus1+2)
|
||||||
fr := newFieldReader(br)
|
fr := newFieldReader(br)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
package h264dec
|
package h264dec
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"bytes"
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"bitbucket.org/ausocean/av/codec/h264/h264dec/bits"
|
||||||
|
)
|
||||||
|
|
||||||
var subWidthCTests = []struct {
|
var subWidthCTests = []struct {
|
||||||
in SPS
|
in SPS
|
||||||
|
@ -47,3 +53,64 @@ func TestSubHeightC(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNewRefPicListModification(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
in string
|
||||||
|
s SliceHeader
|
||||||
|
p PPS
|
||||||
|
want RefPicListModification
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
in: "1" + // u(1) ref_pic_list_modification_flag_l0=true
|
||||||
|
// First modification for list0
|
||||||
|
"1" + // ue(v) modification_of_pic_nums_idc[0][0] = 0
|
||||||
|
"010" + // ue(v) abs_diff_pic_num_minus1[0][0] = 1
|
||||||
|
|
||||||
|
// Second modification for list0
|
||||||
|
"010" + // ue(v) modification_of_pic_nums_idc[0][1] = 1
|
||||||
|
"011" + // ue(v) abs_diff_pic_num_minus1[0][1] = 2
|
||||||
|
|
||||||
|
// Third modification for list0
|
||||||
|
"011" + // ue(v) modification_of_pic_nums_idc[0][2] = 2
|
||||||
|
"010" + // ue(v) long_term_pic_num = 1
|
||||||
|
|
||||||
|
// Fourth modification does not exist
|
||||||
|
"00100" + // ue(v) modification_of_pic_nums_idc[0][3] = 3
|
||||||
|
|
||||||
|
// Padding bits
|
||||||
|
"00",
|
||||||
|
|
||||||
|
s: SliceHeader{
|
||||||
|
SliceType: 3,
|
||||||
|
},
|
||||||
|
|
||||||
|
p: PPS{
|
||||||
|
NumRefIdxL0DefaultActiveMinus1: 2,
|
||||||
|
},
|
||||||
|
|
||||||
|
want: RefPicListModification{
|
||||||
|
RefPicListModificationFlag: [2]bool{true, false},
|
||||||
|
ModificationOfPicNums: [2][]int{{0, 1, 2, 3}, {0, 0}},
|
||||||
|
AbsDiffPicNumMinus1: [2][]int{{1, 2, 0, 0}, {0, 0}},
|
||||||
|
LongTermPicNum: [2][]int{{0, 0, 1, 0}, {0, 0}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, test := range tests {
|
||||||
|
inBytes, err := binToSlice(test.in)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error %v for binToSlice in test %d", err, i)
|
||||||
|
}
|
||||||
|
|
||||||
|
got, err := NewRefPicListModification(bits.NewBitReader(bytes.NewReader(inBytes)), &test.p, &test.s)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error %v for NewRefPicListModification in test %d", err, i)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(*got, test.want) {
|
||||||
|
t.Errorf("did not get expected result for test %d\nGot: %v\nWant: %v\n", i, got, test.want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue