codec/h264/h264dec: addressing PR feedback.

Updated comment. Put a space between file header and package declaration. Not dereferencing things
This commit is contained in:
Saxon 2019-08-20 11:39:12 +09:30
parent 344d37cd29
commit dab94f6ae2
2 changed files with 44 additions and 25 deletions

View File

@ -263,9 +263,9 @@ func NewNALUnit(br *bits.BitReader) (*NALUnit, error) {
next3Bytes, err := br.PeekBits(24)
// If PeekBits cannot get 3 bytes, but there still might be 2 bytes left in
// the source, we will get an io.EOF; we wish to ignore this and continue.
// The call to moreRBSPData will determine when we have reached the end of
// the NAL unit.
// the source, we will get an io.ErrUnexpectedEOF; we wish to ignore this
// and continue. The call to moreRBSPData will determine when we have
// reached the end of the NAL unit.
if err != nil && errors.Cause(err) != io.ErrUnexpectedEOF {
return nil, errors.Wrap(err, "could not Peek next 3 bytes")
}

View File

@ -1,10 +1,27 @@
/*
DESCRIPTION
nalunit_test.go provides testing for NAL unit parsing utilities in nalunit.go.
nalunit_test.go provides testing for functionality in nalunit.go.
AUTHORS
Saxon Nelson-Milton <saxon@ausocean.org>, The Australian Ocean Laboratory (AusOcean)
Saxon A. Nelson-Milton <saxon@ausocean.org>
LICENSE
Copyright (C) 2017-2019 the Australian Ocean Lab (AusOcean)
It is free software: you can redistribute it and/or modify them
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
It is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
in gpl.txt. If not, see http://www.gnu.org/licenses.
*/
package h264dec
import (
@ -18,7 +35,7 @@ import (
func TestNewMVCExtension(t *testing.T) {
tests := []struct {
in string
want MVCExtension
want *MVCExtension
err error
}{
{
@ -30,7 +47,7 @@ func TestNewMVCExtension(t *testing.T) {
"0" + // u(1) inter_view_flag = false
"1" + // u(1) reserved_one_bit = 1
"0", // Some padding
want: MVCExtension{
want: &MVCExtension{
NonIdrFlag: false,
PriorityID: 2,
ViewID: 24,
@ -53,7 +70,7 @@ func TestNewMVCExtension(t *testing.T) {
t.Errorf("did not get expected error for test %d\nGot: %v\nWant: %v\n", i, err, test.err)
}
if !reflect.DeepEqual(*got, test.want) {
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)
}
}
@ -62,7 +79,7 @@ func TestNewMVCExtension(t *testing.T) {
func TestNewThreeDAVCExtension(t *testing.T) {
tests := []struct {
in string
want ThreeDAVCExtension
want *ThreeDAVCExtension
err error
}{
{
@ -73,7 +90,7 @@ func TestNewThreeDAVCExtension(t *testing.T) {
"1" + // u(1) anchor_pic_flag = true
"1" + // u(1) inter_view_flag = true
"000", // Some padding
want: ThreeDAVCExtension{
want: &ThreeDAVCExtension{
ViewIdx: 16,
DepthFlag: true,
NonIdrFlag: false,
@ -95,7 +112,7 @@ func TestNewThreeDAVCExtension(t *testing.T) {
t.Errorf("did not get expected error for test %d\nGot: %v\nWant: %v\n", i, err, test.err)
}
if !reflect.DeepEqual(*got, test.want) {
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)
}
}
@ -104,7 +121,7 @@ func TestNewThreeDAVCExtension(t *testing.T) {
func TestSVCExtension(t *testing.T) {
tests := []struct {
in string
want SVCExtension
want *SVCExtension
err error
}{
{
@ -119,7 +136,7 @@ func TestSVCExtension(t *testing.T) {
"0" + // u(1) output_flag = false
"11" + // ReservedThree2Bits
"0", // padding
want: SVCExtension{
want: &SVCExtension{
IdrFlag: false,
PriorityID: 32,
NoInterLayerPredFlag: false,
@ -145,7 +162,7 @@ func TestSVCExtension(t *testing.T) {
t.Errorf("did not get expected error for test %d\nGot: %v\nWant: %v\n", i, err, test.err)
}
if !reflect.DeepEqual(*got, test.want) {
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)
}
}
@ -154,7 +171,7 @@ func TestSVCExtension(t *testing.T) {
func TestNewNALUnit(t *testing.T) {
tests := []struct {
in string
want NALUnit
want *NALUnit
err error
}{
{
@ -182,7 +199,7 @@ func TestNewNALUnit(t *testing.T) {
"0000 1000" +
"1000 0000", // trailing bits
want: NALUnit{
want: &NALUnit{
ForbiddenZeroBit: 0,
RefIdc: 1,
Type: 14,
@ -221,21 +238,16 @@ func TestNewNALUnit(t *testing.T) {
t.Errorf("did not get expected error for test %d\nGot: %v\nWant: %v\n", i, err, test.err)
}
if !nalEqual(*got, test.want) {
if !nalEqual(got, test.want) {
t.Errorf("did not get expected result for test %d\nGot: %v\nWant: %v\n", i, *got, test.want)
}
}
}
// nalEqual returns true if two NALUnits are equal.
func nalEqual(a, b NALUnit) bool {
aCopy := a
bCopy := b
for _, n := range [](*NALUnit){&aCopy, &bCopy} {
n.SVCExtension = nil
n.MVCExtension = nil
n.ThreeDAVCExtension = nil
}
func nalEqual(a, b *NALUnit) bool {
aCopy := nalWithoutExtensions(*a)
bCopy := nalWithoutExtensions(*b)
if !reflect.DeepEqual(aCopy, bCopy) {
return false
@ -263,3 +275,10 @@ func nalEqual(a, b NALUnit) bool {
}
return true
}
func nalWithoutExtensions(n NALUnit) NALUnit {
n.SVCExtension = nil
n.MVCExtension = nil
n.ThreeDAVCExtension = nil
return n
}