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

asticode / go-astiav / 5681893079

27 Jul 2023 02:32PM UTC coverage: 80.997% (-10.4%) from 91.374%
5681893079

push

github

asticode
Added github actions

1202 of 1484 relevant lines covered (81.0%)

11.12 hits per line

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

75.76
/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 {
7✔
17
        if c == nil {
7✔
18
                return nil
×
19
        }
×
20
        return &Codec{c: c}
7✔
21
}
22

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

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

31
func (c *Codec) ChannelLayouts() (o []*ChannelLayout) {
2✔
32
        if c.c.ch_layouts == nil {
3✔
33
                return nil
1✔
34
        }
1✔
35
        size := unsafe.Sizeof(*c.c.ch_layouts)
1✔
36
        for i := 0; ; i++ {
9✔
37
                v := newChannelLayoutFromC((*C.struct_AVChannelLayout)(unsafe.Pointer(uintptr(unsafe.Pointer(c.c.ch_layouts)) + uintptr(i)*size)))
8✔
38
                if !v.Valid() {
9✔
39
                        break
1✔
40
                }
41
                o = append(o, v)
7✔
42
        }
43
        return
1✔
44
}
45

46
func (c *Codec) IsDecoder() bool {
3✔
47
        return int(C.av_codec_is_decoder(c.c)) != 0
3✔
48
}
3✔
49

50
func (c *Codec) IsEncoder() bool {
3✔
51
        return int(C.av_codec_is_encoder(c.c)) != 0
3✔
52
}
3✔
53

54
func (c *Codec) PixelFormats() (o []PixelFormat) {
2✔
55
        if c.c.pix_fmts == nil {
4✔
56
                return nil
2✔
57
        }
2✔
58
        size := unsafe.Sizeof(*c.c.pix_fmts)
×
59
        for i := 0; ; i++ {
×
60
                p := *(*C.int)(unsafe.Pointer(uintptr(unsafe.Pointer(c.c.pix_fmts)) + uintptr(i)*size))
×
61
                if p == C.AV_PIX_FMT_NONE {
×
62
                        break
×
63
                }
64
                o = append(o, PixelFormat(p))
×
65
        }
66
        return
×
67
}
68

69
func (c *Codec) SampleFormats() (o []SampleFormat) {
2✔
70
        if c.c.sample_fmts == nil {
2✔
71
                return nil
×
72
        }
×
73
        size := unsafe.Sizeof(*c.c.sample_fmts)
2✔
74
        for i := 0; ; i++ {
7✔
75
                p := *(*C.int)(unsafe.Pointer(uintptr(unsafe.Pointer(c.c.sample_fmts)) + uintptr(i)*size))
5✔
76
                if p == C.AV_SAMPLE_FMT_NONE {
7✔
77
                        break
2✔
78
                }
79
                o = append(o, SampleFormat(p))
3✔
80
        }
81
        return
2✔
82
}
83

84
func FindDecoder(id CodecID) *Codec {
4✔
85
        return newCodecFromC(C.avcodec_find_decoder((C.enum_AVCodecID)(id)))
4✔
86
}
4✔
87

88
func FindDecoderByName(n string) *Codec {
1✔
89
        cn := C.CString(n)
1✔
90
        defer C.free(unsafe.Pointer(cn))
1✔
91
        return newCodecFromC(C.avcodec_find_decoder_by_name(cn))
1✔
92
}
1✔
93

94
func FindEncoder(id CodecID) *Codec {
2✔
95
        return newCodecFromC(C.avcodec_find_encoder((C.enum_AVCodecID)(id)))
2✔
96
}
2✔
97

98
func FindEncoderByName(n string) *Codec {
×
99
        cn := C.CString(n)
×
100
        defer C.free(unsafe.Pointer(cn))
×
101
        return newCodecFromC(C.avcodec_find_encoder_by_name(cn))
×
102
}
×
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