Rename h264 to openh264

This commit is contained in:
Lukas Herman
2020-01-05 22:11:17 -08:00
parent 62aef6b8f3
commit 107b8c0a34
4 changed files with 11 additions and 14 deletions

View File

@@ -5,7 +5,7 @@ import (
"github.com/pion/mediadevices" "github.com/pion/mediadevices"
"github.com/pion/mediadevices/examples/internal/signal" "github.com/pion/mediadevices/examples/internal/signal"
_ "github.com/pion/mediadevices/pkg/codec/h264" // This is required to register h264 video encoder _ "github.com/pion/mediadevices/pkg/codec/openh264" // This is required to register h264 video encoder
"github.com/pion/webrtc/v2" "github.com/pion/webrtc/v2"
) )

View File

@@ -1,4 +1,4 @@
package h264 package openh264
// #cgo CFLAGS: -I${SRCDIR}/../../../cvendor/include // #cgo CFLAGS: -I${SRCDIR}/../../../cvendor/include
// #cgo CXXFLAGS: -I${SRCDIR}/../../../cvendor/include // #cgo CXXFLAGS: -I${SRCDIR}/../../../cvendor/include
@@ -17,11 +17,11 @@ import (
"unsafe" "unsafe"
) )
type h264Encoder struct { type encoder struct {
encoder *C.Encoder engine *C.Encoder
} }
var _ codec.VideoEncoder = &h264Encoder{} var _ codec.VideoEncoder = &encoder{}
var _ codec.VideoEncoderBuilder = codec.VideoEncoderBuilder(NewEncoder) var _ codec.VideoEncoderBuilder = codec.VideoEncoderBuilder(NewEncoder)
func init() { func init() {
@@ -29,7 +29,7 @@ func init() {
} }
func NewEncoder(s codec.VideoSetting) (codec.VideoEncoder, error) { func NewEncoder(s codec.VideoSetting) (codec.VideoEncoder, error) {
encoder, err := C.enc_new(C.EncoderOptions{ cEncoder, err := C.enc_new(C.EncoderOptions{
width: C.int(s.Width), width: C.int(s.Width),
height: C.int(s.Height), height: C.int(s.Height),
target_bitrate: C.int(s.TargetBitRate), target_bitrate: C.int(s.TargetBitRate),
@@ -41,18 +41,15 @@ func NewEncoder(s codec.VideoSetting) (codec.VideoEncoder, error) {
return nil, fmt.Errorf("failed in creating encoder") return nil, fmt.Errorf("failed in creating encoder")
} }
e := h264Encoder{ return &encoder{cEncoder}, nil
encoder: encoder,
}
return &e, nil
} }
func (e *h264Encoder) Encode(img image.Image) ([]byte, error) { func (e *encoder) Encode(img image.Image) ([]byte, error) {
// TODO: Convert img to YCbCr since openh264 only accepts YCbCr // TODO: Convert img to YCbCr since openh264 only accepts YCbCr
// TODO: Convert img to 4:2:0 format which what openh264 accepts // TODO: Convert img to 4:2:0 format which what openh264 accepts
yuvImg := img.(*image.YCbCr) yuvImg := img.(*image.YCbCr)
bounds := yuvImg.Bounds() bounds := yuvImg.Bounds()
s, err := C.enc_encode(e.encoder, C.Frame{ s, err := C.enc_encode(e.engine, C.Frame{
y: unsafe.Pointer(&yuvImg.Y[0]), y: unsafe.Pointer(&yuvImg.Y[0]),
u: unsafe.Pointer(&yuvImg.Cb[0]), u: unsafe.Pointer(&yuvImg.Cb[0]),
v: unsafe.Pointer(&yuvImg.Cr[0]), v: unsafe.Pointer(&yuvImg.Cr[0]),
@@ -67,7 +64,7 @@ func (e *h264Encoder) Encode(img image.Image) ([]byte, error) {
return C.GoBytes(unsafe.Pointer(s.data), s.data_len), nil return C.GoBytes(unsafe.Pointer(s.data), s.data_len), nil
} }
func (e *h264Encoder) Close() error { func (e *encoder) Close() error {
C.enc_free(e.encoder) C.enc_free(e.engine)
return nil return nil
} }