• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

asticode / go-astiav / 7709505259

30 Jan 2024 10:10AM UTC coverage: 88.49% (-0.1%) from 88.63%
7709505259

push

github

asticode
Minor codec hardware config changes

0 of 4 new or added lines in 2 files covered. (0.0%)

1676 of 1894 relevant lines covered (88.49%)

39.93 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

89.53
/codec.go
1
package astiav
2

3
//#cgo pkg-config: libavcodec libavutil
4
//#include <libavcodec/avcodec.h>
5
//#include <libavutil/channel_layout.h>
6
import "C"
7
import (
8
        "unsafe"
9
)
10

11
// https://github.com/FFmpeg/FFmpeg/blob/n5.0/libavcodec/codec.h#L202
12
type Codec struct {
13
        c *C.struct_AVCodec
14
}
15

16
func newCodecFromC(c *C.struct_AVCodec) *Codec {
2,016✔
17
        if c == nil {
2,019✔
18
                return nil
3✔
19
        }
3✔
20
        return &Codec{c: c}
2,013✔
21
}
22

23
func (c *Codec) Name() string {
24✔
24
        return C.GoString(c.c.name)
24✔
25
}
24✔
26

27
func (c *Codec) String() string {
12✔
28
        return c.Name()
12✔
29
}
12✔
30

31
func (c *Codec) ID() CodecID {
1,989✔
32
        return CodecID(c.c.id)
1,989✔
33
}
1,989✔
34

35
func (c *Codec) ChannelLayouts() (o []ChannelLayout) {
6✔
36
        if c.c.ch_layouts == nil {
9✔
37
                return nil
3✔
38
        }
3✔
39
        size := unsafe.Sizeof(*c.c.ch_layouts)
3✔
40
        for i := 0; ; i++ {
27✔
41
                v, _ := newChannelLayoutFromC((*C.struct_AVChannelLayout)(unsafe.Pointer(uintptr(unsafe.Pointer(c.c.ch_layouts)) + uintptr(i)*size))).clone()
24✔
42
                if !v.Valid() {
27✔
43
                        break
3✔
44
                }
45
                o = append(o, v)
21✔
46
        }
47
        return
3✔
48
}
49

50
func (c *Codec) IsDecoder() bool {
12✔
51
        return int(C.av_codec_is_decoder(c.c)) != 0
12✔
52
}
12✔
53

54
func (c *Codec) IsEncoder() bool {
12✔
55
        return int(C.av_codec_is_encoder(c.c)) != 0
12✔
56
}
12✔
57

58
func (c *Codec) PixelFormats() (o []PixelFormat) {
9✔
59
        if c.c.pix_fmts == nil {
12✔
60
                return nil
3✔
61
        }
3✔
62
        size := unsafe.Sizeof(*c.c.pix_fmts)
6✔
63
        for i := 0; ; i++ {
48✔
64
                p := *(*C.int)(unsafe.Pointer(uintptr(unsafe.Pointer(c.c.pix_fmts)) + uintptr(i)*size))
42✔
65
                if p == C.AV_PIX_FMT_NONE {
48✔
66
                        break
6✔
67
                }
68
                o = append(o, PixelFormat(p))
36✔
69
        }
70
        return
6✔
71
}
72

73
func (c *Codec) SampleFormats() (o []SampleFormat) {
9✔
74
        if c.c.sample_fmts == nil {
12✔
75
                return nil
3✔
76
        }
3✔
77
        size := unsafe.Sizeof(*c.c.sample_fmts)
6✔
78
        for i := 0; ; i++ {
21✔
79
                p := *(*C.int)(unsafe.Pointer(uintptr(unsafe.Pointer(c.c.sample_fmts)) + uintptr(i)*size))
15✔
80
                if p == C.AV_SAMPLE_FMT_NONE {
21✔
81
                        break
6✔
82
                }
83
                o = append(o, SampleFormat(p))
9✔
84
        }
85
        return
6✔
86
}
87

88
func FindDecoder(id CodecID) *Codec {
15✔
89
        return newCodecFromC(C.avcodec_find_decoder((C.enum_AVCodecID)(id)))
15✔
90
}
15✔
91

92
func FindDecoderByName(n string) *Codec {
6✔
93
        cn := C.CString(n)
6✔
94
        defer C.free(unsafe.Pointer(cn))
6✔
95
        return newCodecFromC(C.avcodec_find_decoder_by_name(cn))
6✔
96
}
6✔
97

98
func FindEncoder(id CodecID) *Codec {
6✔
99
        return newCodecFromC(C.avcodec_find_encoder((C.enum_AVCodecID)(id)))
6✔
100
}
6✔
101

102
func FindEncoderByName(n string) *Codec {
3✔
103
        cn := C.CString(n)
3✔
104
        defer C.free(unsafe.Pointer(cn))
3✔
105
        return newCodecFromC(C.avcodec_find_encoder_by_name(cn))
3✔
106
}
3✔
107

108
func (c *Codec) HardwareConfigs() (configs []CodecHardwareConfig) {
×
109
        var i int
×
110
        for {
×
111
                config := C.avcodec_get_hw_config(c.c, C.int(i))
×
112
                if config == nil {
×
113
                        break
×
114
                }
NEW
115
                configs = append(configs, newCodecHardwareConfigFromC(config))
×
116
                i++
×
117
        }
118
        return
×
119
}
120

121
func Codecs() (cs []*Codec) {
3✔
122
        var opq *C.void = nil
3✔
123
        for {
1,992✔
124
                c := C.av_codec_iterate((*unsafe.Pointer)(unsafe.Pointer(&opq)))
1,989✔
125
                if c == nil {
1,992✔
126
                        break
3✔
127
                }
128
                cs = append(cs, newCodecFromC(c))
1,986✔
129
        }
130
        return
3✔
131
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc