mirror of
https://github.com/asticode/go-astiav.git
synced 2024-05-28 13:53:18 +08:00
106 lines
3.5 KiB
Go
106 lines
3.5 KiB
Go
package astiav
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestCodecParameters(t *testing.T) {
|
|
fc, err := globalHelper.inputFormatContext("video.mp4")
|
|
require.NoError(t, err)
|
|
ss := fc.Streams()
|
|
require.Len(t, ss, 2)
|
|
s1 := ss[0]
|
|
s2 := ss[1]
|
|
|
|
cp1 := s1.CodecParameters()
|
|
require.Equal(t, int64(441324), cp1.BitRate())
|
|
require.Equal(t, ChromaLocationLeft, cp1.ChromaLocation())
|
|
require.Equal(t, CodecIDH264, cp1.CodecID())
|
|
require.Equal(t, CodecTag(0x31637661), cp1.CodecTag())
|
|
require.Equal(t, ColorPrimariesUnspecified, cp1.ColorPrimaries())
|
|
require.Equal(t, ColorRangeUnspecified, cp1.ColorRange())
|
|
require.Equal(t, ColorSpaceUnspecified, cp1.ColorSpace())
|
|
require.Equal(t, ColorTransferCharacteristicUnspecified, cp1.ColorTransferCharacteristic())
|
|
require.Equal(t, 180, cp1.Height())
|
|
require.Equal(t, Level(13), cp1.Level())
|
|
require.Equal(t, MediaTypeVideo, cp1.MediaType())
|
|
require.Equal(t, PixelFormatYuv420P, cp1.PixelFormat())
|
|
require.Equal(t, ProfileH264ConstrainedBaseline, cp1.Profile())
|
|
require.Equal(t, NewRational(1, 1), cp1.SampleAspectRatio())
|
|
require.Equal(t, 320, cp1.Width())
|
|
|
|
cp2 := s2.CodecParameters()
|
|
require.Equal(t, int64(161052), cp2.BitRate())
|
|
require.Equal(t, 2, cp2.Channels())
|
|
require.True(t, cp2.ChannelLayout().Equal(ChannelLayoutStereo))
|
|
require.Equal(t, CodecIDAac, cp2.CodecID())
|
|
require.Equal(t, CodecTag(0x6134706d), cp2.CodecTag())
|
|
require.Equal(t, 1024, cp2.FrameSize())
|
|
require.Equal(t, MediaTypeAudio, cp2.MediaType())
|
|
require.Equal(t, SampleFormatFltp, cp2.SampleFormat())
|
|
require.Equal(t, 48000, cp2.SampleRate())
|
|
|
|
cp3 := AllocCodecParameters()
|
|
require.NotNil(t, cp3)
|
|
defer cp3.Free()
|
|
err = cp2.Copy(cp3)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 2, cp3.Channels())
|
|
|
|
cc4 := AllocCodecContext(nil)
|
|
require.NotNil(t, cc4)
|
|
defer cc4.Free()
|
|
err = cp2.ToCodecContext(cc4)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 2, cc4.Channels())
|
|
|
|
cp5 := AllocCodecParameters()
|
|
require.NotNil(t, cp5)
|
|
defer cp5.Free()
|
|
err = cp5.FromCodecContext(cc4)
|
|
require.NoError(t, err)
|
|
require.Equal(t, 2, cp5.Channels())
|
|
|
|
cp6 := AllocCodecParameters()
|
|
require.NotNil(t, cp6)
|
|
defer cp6.Free()
|
|
cp6.SetChannelLayout(ChannelLayout21)
|
|
require.True(t, cp6.ChannelLayout().Equal(ChannelLayout21))
|
|
defer cp6.Free()
|
|
cp6.SetChannels(3)
|
|
require.Equal(t, 3, cp6.Channels())
|
|
cp6.SetCodecID(CodecIDRawvideo)
|
|
require.Equal(t, CodecIDRawvideo, cp6.CodecID())
|
|
cp6.SetCodecTag(CodecTag(2))
|
|
require.Equal(t, CodecTag(2), cp6.CodecTag())
|
|
cp6.SetColorRange(ColorRangeJpeg)
|
|
require.Equal(t, ColorRangeJpeg, cp6.ColorRange())
|
|
cp6.SetCodecType(MediaTypeAudio)
|
|
require.Equal(t, MediaTypeAudio, cp6.CodecType())
|
|
cp6.SetFrameSize(1)
|
|
require.Equal(t, 1, cp6.FrameSize())
|
|
cp6.SetHeight(1)
|
|
require.Equal(t, 1, cp6.Height())
|
|
cp1.SetLevel(16)
|
|
require.Equal(t, Level(16), cp1.Level())
|
|
cp6.SetMediaType(MediaTypeAudio)
|
|
require.Equal(t, MediaTypeAudio, cp6.MediaType())
|
|
cp1.SetProfile(ProfileH264Extended)
|
|
require.Equal(t, ProfileH264Extended, cp1.Profile())
|
|
cp6.SetPixelFormat(PixelFormat0Bgr)
|
|
require.Equal(t, PixelFormat0Bgr, cp6.PixelFormat())
|
|
cp6.SetSampleAspectRatio(NewRational(1, 2))
|
|
require.Equal(t, NewRational(1, 2), cp6.SampleAspectRatio())
|
|
cp6.SetSampleFormat(SampleFormatDbl)
|
|
require.Equal(t, SampleFormatDbl, cp6.SampleFormat())
|
|
cp6.SetSampleRate(4)
|
|
require.Equal(t, 4, cp6.SampleRate())
|
|
cp6.SetWidth(2)
|
|
require.Equal(t, 2, cp6.Width())
|
|
b := []byte("test")
|
|
require.NoError(t, cp6.SetExtraData(b))
|
|
require.Equal(t, b, cp6.ExtraData())
|
|
}
|