mirror of
https://github.com/pion/mediadevices.git
synced 2025-10-28 18:51:48 +08:00
Rename h264 to openh264
This commit is contained in:
@@ -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"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user