mirror of
https://github.com/asticode/go-astiav.git
synced 2025-10-05 08:06:59 +08:00
Added missing ColorSpace + ColorRange methods
This commit is contained in:
@@ -80,6 +80,10 @@ func (cp *CodecParameters) ColorSpace() ColorSpace {
|
||||
return ColorSpace(cp.c.color_space)
|
||||
}
|
||||
|
||||
func (cp *CodecParameters) SetColorSpace(s ColorSpace) {
|
||||
cp.c.color_space = C.enum_AVColorSpace(s)
|
||||
}
|
||||
|
||||
func (cp *CodecParameters) ColorTransferCharacteristic() ColorTransferCharacteristic {
|
||||
return ColorTransferCharacteristic(cp.c.color_trc)
|
||||
}
|
||||
|
@@ -74,6 +74,8 @@ func TestCodecParameters(t *testing.T) {
|
||||
require.Equal(t, CodecTag(2), cp6.CodecTag())
|
||||
cp6.SetColorRange(ColorRangeJpeg)
|
||||
require.Equal(t, ColorRangeJpeg, cp6.ColorRange())
|
||||
cp6.SetColorSpace(ColorSpaceBt709)
|
||||
require.Equal(t, ColorSpaceBt709, cp6.ColorSpace())
|
||||
cp6.SetCodecType(MediaTypeAudio)
|
||||
require.Equal(t, MediaTypeAudio, cp6.CodecType())
|
||||
cp6.SetFrameSize(1)
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package astiav
|
||||
|
||||
//#include <libavutil/pixdesc.h>
|
||||
//#include <libavutil/pixfmt.h>
|
||||
import "C"
|
||||
|
||||
@@ -12,3 +13,7 @@ const (
|
||||
ColorRangeJpeg = ColorRange(C.AVCOL_RANGE_JPEG)
|
||||
ColorRangeNb = ColorRange(C.AVCOL_RANGE_NB)
|
||||
)
|
||||
|
||||
func (r ColorRange) String() string {
|
||||
return C.GoString(C.av_color_range_name(C.enum_AVColorRange(r)))
|
||||
}
|
||||
|
11
color_range_test.go
Normal file
11
color_range_test.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package astiav
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestColorRange(t *testing.T) {
|
||||
require.Equal(t, "tv", ColorRangeMpeg.String())
|
||||
}
|
@@ -1,5 +1,6 @@
|
||||
package astiav
|
||||
|
||||
//#include <libavutil/pixdesc.h>
|
||||
//#include <libavutil/pixfmt.h>
|
||||
import "C"
|
||||
|
||||
@@ -25,3 +26,7 @@ const (
|
||||
ColorSpaceIctcp = ColorSpace(C.AVCOL_SPC_ICTCP)
|
||||
ColorSpaceNb = ColorSpace(C.AVCOL_SPC_NB)
|
||||
)
|
||||
|
||||
func (s ColorSpace) String() string {
|
||||
return C.GoString(C.av_color_space_name(C.enum_AVColorSpace(s)))
|
||||
}
|
||||
|
11
color_space_test.go
Normal file
11
color_space_test.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package astiav
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestColorSpace(t *testing.T) {
|
||||
require.Equal(t, "bt709", ColorSpaceBt709.String())
|
||||
}
|
@@ -33,6 +33,8 @@ func TestFilterGraph(t *testing.T) {
|
||||
}
|
||||
type link struct {
|
||||
channelLayout ChannelLayout
|
||||
colorRange ColorRange
|
||||
colorSpace ColorSpace
|
||||
frameRate Rational
|
||||
height int
|
||||
mediaType MediaType
|
||||
@@ -55,13 +57,15 @@ func TestFilterGraph(t *testing.T) {
|
||||
for _, v := range []graph{
|
||||
{
|
||||
buffersinkExpectedInput: link{
|
||||
colorRange: ColorRangeUnspecified,
|
||||
colorSpace: ColorSpaceUnspecified,
|
||||
frameRate: NewRational(4, 1),
|
||||
height: 4,
|
||||
height: 8,
|
||||
mediaType: MediaTypeVideo,
|
||||
pixelFormat: PixelFormatRgba,
|
||||
sampleAspectRatio: NewRational(1, 4),
|
||||
pixelFormat: PixelFormatYuv420P,
|
||||
sampleAspectRatio: NewRational(2, 1),
|
||||
timeBase: NewRational(1, 4),
|
||||
width: 2,
|
||||
width: 4,
|
||||
},
|
||||
buffersinkName: "buffersink",
|
||||
buffersrcName: "buffer",
|
||||
@@ -80,15 +84,15 @@ func TestFilterGraph(t *testing.T) {
|
||||
target: "scale",
|
||||
},
|
||||
},
|
||||
content: "[input_1]scale=2x4,settb=1/4,fps=fps=4/1,format=pix_fmts=rgba,setsar=1/4",
|
||||
s: " +--------------+\nParsed_setsar_4:default--[2x4 1:4 rgba]--default| filter_out |\n | (buffersink) |\n +--------------+\n\n+-------------+\n| filter_in_1 |default--[1x2 1:2 yuv420p]--Parsed_scale_0:default\n| (buffer) |\n+-------------+\n\n +----------------+\nfilter_in_1:default--[1x2 1:2 yuv420p]--default| Parsed_scale_0 |default--[2x4 1:2 rgba]--Parsed_settb_1:default\n | (scale) |\n +----------------+\n\n +----------------+\nParsed_scale_0:default--[2x4 1:2 rgba]--default| Parsed_settb_1 |default--[2x4 1:2 rgba]--Parsed_fps_2:default\n | (settb) |\n +----------------+\n\n +--------------+\nParsed_settb_1:default--[2x4 1:2 rgba]--default| Parsed_fps_2 |default--[2x4 1:2 rgba]--Parsed_format_3:default\n | (fps) |\n +--------------+\n\n +-----------------+\nParsed_fps_2:default--[2x4 1:2 rgba]--default| Parsed_format_3 |default--[2x4 1:2 rgba]--Parsed_setsar_4:default\n | (format) |\n +-----------------+\n\n +-----------------+\nParsed_format_3:default--[2x4 1:2 rgba]--default| Parsed_setsar_4 |default--[2x4 1:4 rgba]--filter_out:default\n | (setsar) |\n +-----------------+\n\n",
|
||||
content: "[input_1]scale=4x8,settb=1/4,fps=fps=4/1,format=pix_fmts=yuv420p,setsar=2/1",
|
||||
s: " +--------------+\nParsed_setsar_4:default--[4x8 2:1 yuv420p]--default| filter_out |\n | (buffersink) |\n +--------------+\n\n+-------------+\n| filter_in_1 |default--[2x4 1:2 rgba]--Parsed_scale_0:default\n| (buffer) |\n+-------------+\n\n +----------------+\nfilter_in_1:default--[2x4 1:2 rgba]--default| Parsed_scale_0 |default--[4x8 1:2 yuv420p]--Parsed_settb_1:default\n | (scale) |\n +----------------+\n\n +----------------+\nParsed_scale_0:default--[4x8 1:2 yuv420p]--default| Parsed_settb_1 |default--[4x8 1:2 yuv420p]--Parsed_fps_2:default\n | (settb) |\n +----------------+\n\n +--------------+\nParsed_settb_1:default--[4x8 1:2 yuv420p]--default| Parsed_fps_2 |default--[4x8 1:2 yuv420p]--Parsed_format_3:default\n | (fps) |\n +--------------+\n\n +-----------------+\nParsed_fps_2:default--[4x8 1:2 yuv420p]--default| Parsed_format_3 |default--[4x8 1:2 yuv420p]--Parsed_setsar_4:default\n | (format) |\n +-----------------+\n\n +-----------------+\nParsed_format_3:default--[4x8 1:2 yuv420p]--default| Parsed_setsar_4 |default--[4x8 2:1 yuv420p]--filter_out:default\n | (setsar) |\n +-----------------+\n\n",
|
||||
sources: []FilterArgs{
|
||||
{
|
||||
"height": "2",
|
||||
"pix_fmt": strconv.Itoa(int(PixelFormatYuv420P)),
|
||||
"height": "4",
|
||||
"pix_fmt": strconv.Itoa(int(PixelFormatRgba)),
|
||||
"sar": "1/2",
|
||||
"time_base": "1/2",
|
||||
"width": "1",
|
||||
"width": "2",
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -174,6 +178,8 @@ func TestFilterGraph(t *testing.T) {
|
||||
require.Equal(t, e.sampleFormat, g.SampleFormat())
|
||||
require.Equal(t, e.sampleRate, g.SampleRate())
|
||||
default:
|
||||
require.Equal(t, e.colorRange, g.ColorRange())
|
||||
require.Equal(t, e.colorSpace, g.ColorSpace())
|
||||
require.Equal(t, e.height, g.Height())
|
||||
require.Equal(t, e.pixelFormat, g.PixelFormat())
|
||||
require.Equal(t, e.sampleAspectRatio, g.SampleAspectRatio())
|
||||
|
@@ -20,6 +20,14 @@ func (l *FilterLink) ChannelLayout() ChannelLayout {
|
||||
return v
|
||||
}
|
||||
|
||||
func (l *FilterLink) ColorRange() ColorRange {
|
||||
return ColorRange(l.c.color_range)
|
||||
}
|
||||
|
||||
func (l *FilterLink) ColorSpace() ColorSpace {
|
||||
return ColorSpace(l.c.colorspace)
|
||||
}
|
||||
|
||||
func (l *FilterLink) FrameRate() Rational {
|
||||
return newRationalFromC(l.c.frame_rate)
|
||||
}
|
||||
|
8
frame.go
8
frame.go
@@ -57,6 +57,14 @@ func (f *Frame) SetColorRange(r ColorRange) {
|
||||
f.c.color_range = C.enum_AVColorRange(r)
|
||||
}
|
||||
|
||||
func (f *Frame) ColorSpace() ColorSpace {
|
||||
return ColorSpace(f.c.colorspace)
|
||||
}
|
||||
|
||||
func (f *Frame) SetColorSpace(s ColorSpace) {
|
||||
f.c.colorspace = C.enum_AVColorSpace(s)
|
||||
}
|
||||
|
||||
func (f *Frame) Data() *FrameData {
|
||||
return newFrameData(newFrameDataFrame(f))
|
||||
}
|
||||
|
@@ -25,6 +25,7 @@ func TestFrame(t *testing.T) {
|
||||
defer f2.Free()
|
||||
f2.SetChannelLayout(ChannelLayout21)
|
||||
f2.SetColorRange(ColorRangeJpeg)
|
||||
f2.SetColorSpace(ColorSpaceBt709)
|
||||
f2.SetHeight(2)
|
||||
f2.SetKeyFrame(true)
|
||||
f2.SetNbSamples(4)
|
||||
@@ -39,6 +40,7 @@ func TestFrame(t *testing.T) {
|
||||
f2.SetWidth(10)
|
||||
require.True(t, f2.ChannelLayout().Equal(ChannelLayout21))
|
||||
require.Equal(t, ColorRangeJpeg, f2.ColorRange())
|
||||
require.Equal(t, ColorSpaceBt709, f2.ColorSpace())
|
||||
require.Equal(t, 2, f2.Height())
|
||||
require.True(t, f2.KeyFrame())
|
||||
require.Equal(t, 4, f2.NbSamples())
|
||||
|
Reference in New Issue
Block a user