Documentation
¶
Overview ¶
See the openh264 source code for how to use it.
Example (Decode) ¶
package main
import (
"bytes"
"compress/zlib"
"encoding/base64"
"image"
"io"
"strings"
"github.com/y9o/go-openh264"
)
func main() {
err := openh264.Open("./openh264-2.4.1-win64.dll")
if err != nil {
return
}
readerBase64 := base64.NewDecoder(base64.StdEncoding, strings.NewReader(data_zlib_h264))
readerZip, _ := zlib.NewReader(readerBase64)
in_h264, _ := io.ReadAll(readerZip)
var ppdec *openh264.ISVCDecoder
if ret := openh264.WelsCreateDecoder(&ppdec); ret != 0 || ppdec == nil {
return
}
defer openh264.WelsDestroyDecoder(ppdec)
sDecParam := openh264.SDecodingParam{}
sDecParam.EEcActiveIdc = openh264.ERROR_CON_SLICE_MV_COPY_CROSS_IDR_FREEZE_RES_CHANGE
if r := ppdec.Initialize(&sDecParam); r != 0 {
return
}
defer ppdec.Uninitialize()
var sDstBufInfo openh264.SBufferInfo
for len(in_h264) > 4 {
pos := bytes.Index(in_h264[4:], []byte{0, 0, 0, 1})
length := len(in_h264)
if pos != -1 {
length = pos + 4
}
var pDst [3][]byte
if r := ppdec.DecodeFrameNoDelay(in_h264[:length], length, &pDst, &sDstBufInfo); r != 0 {
return
}
if pDst[0] != nil {
_ = &image.YCbCr{
Y: pDst[0],
Cb: pDst[1],
Cr: pDst[2],
YStride: int(sDstBufInfo.UsrData_sSystemBuffer().IStride[0]),
CStride: int(sDstBufInfo.UsrData_sSystemBuffer().IStride[1]),
Rect: image.Rect(
0, 0,
int(sDstBufInfo.UsrData_sSystemBuffer().IWidth),
int(sDstBufInfo.UsrData_sSystemBuffer().IHeight)),
SubsampleRatio: image.YCbCrSubsampleRatio420,
}
}
if pos == -1 {
break
}
in_h264 = in_h264[pos+4:]
}
var num_of_frames_in_buffer int
ppdec.GetOption(openh264.DECODER_OPTION_NUM_OF_FRAMES_REMAINING_IN_BUFFER, &num_of_frames_in_buffer)
for i := 0; i < num_of_frames_in_buffer; i++ {
var pDst [3][]byte
if r := ppdec.FlushFrame(&pDst, &sDstBufInfo); r != 0 {
return
}
if pDst[0] != nil {
_ = &image.YCbCr{
Y: pDst[0],
Cb: pDst[1],
Cr: pDst[2],
YStride: int(sDstBufInfo.UsrData_sSystemBuffer().IStride[0]),
CStride: int(sDstBufInfo.UsrData_sSystemBuffer().IStride[1]),
Rect: image.Rect(
0, 0,
int(sDstBufInfo.UsrData_sSystemBuffer().IWidth),
int(sDstBufInfo.UsrData_sSystemBuffer().IHeight)),
SubsampleRatio: image.YCbCrSubsampleRatio420,
}
}
}
}
const data_zlib_h264 = `eJxiYGBgTHc6oNHT62DDKPzpgI2S4AqQWMY5mwYQnbqDgYWBgcWiJ4BBIL6PgYl14wEGh21+AwN2vV43ikbRKBpFo2gUjaJRNIpG0SgaRSMEDbwLSEerB9wFpKNXA+6CUTSKRtEoGkWjaBQNezSJZmbP7mBgYnjA0cLAyFDA4pk5IKAAEAAA//8onmGU`
Output:
Example (Encode) ¶
package main
import (
"bytes"
"image"
"runtime"
"unsafe"
"github.com/y9o/go-openh264"
)
func main() {
err := openh264.Open("./openh264-2.4.1-win64.dll")
if err != nil {
return
}
pinner := &runtime.Pinner{}
defer pinner.Unpin()
bufbyte := make([]byte, 0, 10_000)
out_h264 := bytes.NewBuffer(bufbyte)
input_frame := image.NewYCbCr(image.Rect(0, 0, 1920, 1080), image.YCbCrSubsampleRatio420)
var ppEnc *openh264.ISVCEncoder
if ret := openh264.WelsCreateSVCEncoder(&ppEnc); ret != 0 || ppEnc == nil {
return
}
defer openh264.WelsDestroySVCEncoder(ppEnc)
encParam := openh264.SEncParamBase{
IUsageType: openh264.CAMERA_VIDEO_REAL_TIME,
IPicWidth: 1920,
IPicHeight: 1080,
ITargetBitrate: 1_000_000,
FMaxFrameRate: 20,
}
if r := ppEnc.Initialize(&encParam); r != 0 {
return
}
defer ppEnc.Uninitialize()
encSrcPic := openh264.SSourcePicture{
IColorFormat: openh264.VideoFormatI420,
IStride: [4]int32{},
PData: [4]*uint8{},
IPicWidth: 1920,
IPicHeight: 1080,
UiTimeStamp: 0,
}
encSrcPic.IStride[0] = 1920
encSrcPic.IStride[1] = 960
encSrcPic.IStride[2] = 960
pinner.Pin(&input_frame.Y[0])
pinner.Pin(&input_frame.Cb[0])
pinner.Pin(&input_frame.Cr[0])
encSrcPic.PData[0] = (*uint8)(unsafe.Pointer(&input_frame.Y[0]))
encSrcPic.PData[1] = (*uint8)(unsafe.Pointer(&input_frame.Cb[0]))
encSrcPic.PData[2] = (*uint8)(unsafe.Pointer(&input_frame.Cr[0]))
encInfo := openh264.SFrameBSInfo{}
if ret := ppEnc.EncodeFrame(&encSrcPic, &encInfo); ret != openh264.CmResultSuccess {
return
}
if encInfo.EFrameType != openh264.VideoFrameTypeSkip {
for iLayer := 0; iLayer < int(encInfo.ILayerNum); iLayer++ {
pLayerBsInfo := &encInfo.SLayerInfo[iLayer]
var iLayerSize int32
nallens := unsafe.Slice(pLayerBsInfo.PNalLengthInByte, pLayerBsInfo.INalCount)
for _, l := range nallens {
iLayerSize += l
}
nals := unsafe.Slice(pLayerBsInfo.PBsBuf, iLayerSize)
out_h264.Write(nals)
}
}
}
Output:
Index ¶
- Constants
- Variables
- func Close() error
- func Open(library string) error
- type ISVCDecoder
- func (v *ISVCDecoder) DecodeFrame2(pSrc []byte, iSrcLen int, ppDst *[3][]byte, pDstInfo *SBufferInfo) int
- func (v *ISVCDecoder) DecodeFrameNoDelay(pSrc []byte, iSrcLen int, ppDst *[3][]byte, pDstInfo *SBufferInfo) int
- func (v *ISVCDecoder) DecodeParser(pSrc []byte, iSrcLen int, pDstInfo *SParserBsInfo) int
- func (v *ISVCDecoder) FlushFrame(ppDst *[3][]byte, pDstInfo *SBufferInfo) int
- func (v *ISVCDecoder) GetOption(eOptionId int, pOption *int) int
- func (v *ISVCDecoder) Initialize(p *SDecodingParam) int
- func (v *ISVCDecoder) SetOption(eOptionId int, pOption *int) int
- func (v *ISVCDecoder) Uninitialize() int
- type ISVCDecoderVtbl
- type ISVCEncoder
- func (v *ISVCEncoder) EncodeFrame(kpSrcPic *SSourcePicture, pBsInfo *SFrameBSInfo) int
- func (v *ISVCEncoder) EncodeParameterSets(pBsInfo *SFrameBSInfo) int
- func (v *ISVCEncoder) ForceIntraFrame(bIDR bool) int
- func (v *ISVCEncoder) GetDefaultParams(p *SEncParamExt) int
- func (v *ISVCEncoder) GetOption(eOptionId int, pOption *int) int
- func (v *ISVCEncoder) Initialize(p *SEncParamBase) int
- func (v *ISVCEncoder) InitializeExt(p *SEncParamExt) int
- func (v *ISVCEncoder) SetOption(eOptionId int, pOption *int) int
- func (v *ISVCEncoder) Uninitialize() int
- type ISVCEncoderVtbl
- type OpenH264Version
- type SBitrateInfo
- type SBufferInfo
- type SDecoderCapability
- type SDecoderStatistics
- type SDecodingParam
- type SDeliveryStatus
- type SDumpLayer
- type SEncParamBase
- type SEncParamExt
- type SEncoderStatistics
- type SFrameBSInfo
- type SLTRConfig
- type SLTRMarkingFeedback
- type SLTRRecoverRequest
- type SLayerBSInfo
- type SLevelInfo
- type SParserBsInfo
- type SProfileInfo
- type SRateThresholds
- type SSliceArgument
- type SSourcePicture
- type SSpatialLayerConfig
- type SSysMEMBuffer
- type SVideoProperty
- type SVuiSarInfo
- type SliceInfo
Examples ¶
Constants ¶
View Source
const ( DsErrorFree = 0x0 DsFramePending = 0x1 DsRefLost = 0x2 DsBitstreamError = 0x4 DsDepLayerLost = 0x8 DsNoParamSets = 0x10 DsDataErrorConcealed = 0x20 DsRefListNullPtrs = 0x40 DsInvalidArgument = 0x1000 DsInitialOptExpected = 0x2000 DsOutOfMemory = 0x4000 DsDstBufNeedExpan = 0x8000 )
View Source
const ( ENCODER_OPTION_DATAFORMAT = 0x0 ENCODER_OPTION_IDR_INTERVAL = 0x1 ENCODER_OPTION_SVC_ENCODE_PARAM_BASE = 0x2 ENCODER_OPTION_SVC_ENCODE_PARAM_EXT = 0x3 ENCODER_OPTION_FRAME_RATE = 0x4 ENCODER_OPTION_BITRATE = 0x5 ENCODER_OPTION_MAX_BITRATE = 0x6 ENCODER_OPTION_INTER_SPATIAL_PRED = 0x7 ENCODER_OPTION_RC_MODE = 0x8 ENCODER_OPTION_RC_FRAME_SKIP = 0x9 ENCODER_PADDING_PADDING = 0xa ENCODER_OPTION_PROFILE = 0xb ENCODER_OPTION_LEVEL = 0xc ENCODER_OPTION_NUMBER_REF = 0xd ENCODER_OPTION_DELIVERY_STATUS = 0xe ENCODER_LTR_RECOVERY_REQUEST = 0xf ENCODER_LTR_MARKING_FEEDBACK = 0x10 ENCODER_LTR_MARKING_PERIOD = 0x11 ENCODER_OPTION_LTR = 0x12 ENCODER_OPTION_COMPLEXITY = 0x13 ENCODER_OPTION_ENABLE_SSEI = 0x14 ENCODER_OPTION_ENABLE_PREFIX_NAL_ADDING = 0x15 ENCODER_OPTION_SPS_PPS_ID_STRATEGY = 0x16 ENCODER_OPTION_CURRENT_PATH = 0x17 ENCODER_OPTION_DUMP_FILE = 0x18 ENCODER_OPTION_TRACE_LEVEL = 0x19 ENCODER_OPTION_TRACE_CALLBACK = 0x1a ENCODER_OPTION_TRACE_CALLBACK_CONTEXT = 0x1b ENCODER_OPTION_GET_STATISTICS = 0x1c ENCODER_OPTION_STATISTICS_LOG_INTERVAL = 0x1d ENCODER_OPTION_IS_LOSSLESS_LINK = 0x1e ENCODER_OPTION_BITS_VARY_PERCENTAGE = 0x1f )
View Source
const ( DECODER_OPTION_END_OF_STREAM = 0x1 DECODER_OPTION_VCL_NAL = 0x2 DECODER_OPTION_TEMPORAL_ID = 0x3 DECODER_OPTION_FRAME_NUM = 0x4 DECODER_OPTION_IDR_PIC_ID = 0x5 DECODER_OPTION_LTR_MARKING_FLAG = 0x6 DECODER_OPTION_LTR_MARKED_FRAME_NUM = 0x7 DECODER_OPTION_ERROR_CON_IDC = 0x8 DECODER_OPTION_TRACE_LEVEL = 0x9 DECODER_OPTION_TRACE_CALLBACK = 0xa DECODER_OPTION_TRACE_CALLBACK_CONTEXT = 0xb DECODER_OPTION_GET_STATISTICS = 0xc DECODER_OPTION_GET_SAR_INFO = 0xd DECODER_OPTION_PROFILE = 0xe DECODER_OPTION_LEVEL = 0xf DECODER_OPTION_STATISTICS_LOG_INTERVAL = 0x10 DECODER_OPTION_IS_REF_PIC = 0x11 DECODER_OPTION_NUM_OF_FRAMES_REMAINING_IN_BUFFER = 0x12 DECODER_OPTION_NUM_OF_THREADS = 0x13 )
View Source
const ( ERROR_CON_DISABLE = 0x0 ERROR_CON_FRAME_COPY = 0x1 ERROR_CON_SLICE_COPY = 0x2 ERROR_CON_FRAME_COPY_CROSS_IDR = 0x3 ERROR_CON_SLICE_COPY_CROSS_IDR = 0x4 ERROR_CON_SLICE_COPY_CROSS_IDR_FREEZE_RES_CHANGE = 0x5 ERROR_CON_SLICE_MV_COPY_CROSS_IDR = 0x6 ERROR_CON_SLICE_MV_COPY_CROSS_IDR_FREEZE_RES_CHANGE = 0x7 )
View Source
const ( FEEDBACK_NON_VCL_NAL = 0x0 FEEDBACK_VCL_NAL = 0x1 FEEDBACK_UNKNOWN_NAL = 0x2 )
View Source
const ( NON_VIDEO_CODING_LAYER = 0x0 VIDEO_CODING_LAYER = 0x1 )
View Source
const ( SPATIAL_LAYER_0 = 0x0 SPATIAL_LAYER_1 = 0x1 SPATIAL_LAYER_2 = 0x2 SPATIAL_LAYER_3 = 0x3 SPATIAL_LAYER_ALL = 0x4 )
View Source
const ( VIDEO_BITSTREAM_AVC = 0x0 VIDEO_BITSTREAM_SVC = 0x1 VIDEO_BITSTREAM_DEFAULT = 0x1 )
View Source
const ( NO_RECOVERY_REQUSET = 0x0 LTR_RECOVERY_REQUEST = 0x1 IDR_RECOVERY_REQUEST = 0x2 NO_LTR_MARKING_FEEDBACK = 0x3 LTR_MARKING_SUCCESS = 0x4 LTR_MARKING_FAILED = 0x5 )
View Source
const ( RC_QUALITY_MODE = 0x0 RC_BITRATE_MODE = 0x1 RC_BUFFERBASED_MODE = 0x2 RC_TIMESTAMP_MODE = 0x3 RC_BITRATE_MODE_POST_SKIP = 0x4 RC_OFF_MODE = -0x1 )
View Source
const ( PRO_UNKNOWN = 0x0 PRO_BASELINE = 0x42 PRO_MAIN = 0x4d PRO_EXTENDED = 0x58 PRO_HIGH = 0x64 PRO_HIGH10 = 0x6e PRO_HIGH422 = 0x7a PRO_HIGH444 = 0x90 PRO_CAVLC444 = 0xf4 PRO_SCALABLE_BASELINE = 0x53 PRO_SCALABLE_HIGH = 0x56 )
View Source
const ( LEVEL_UNKNOWN = 0x0 LEVEL_1_0 = 0xa LEVEL_1_B = 0x9 LEVEL_1_1 = 0xb LEVEL_1_2 = 0xc LEVEL_1_3 = 0xd LEVEL_2_0 = 0x14 LEVEL_2_1 = 0x15 LEVEL_2_2 = 0x16 LEVEL_3_0 = 0x1e LEVEL_3_1 = 0x1f LEVEL_3_2 = 0x20 LEVEL_4_0 = 0x28 LEVEL_4_1 = 0x29 LEVEL_4_2 = 0x2a LEVEL_5_0 = 0x32 LEVEL_5_1 = 0x33 LEVEL_5_2 = 0x34 )
View Source
const ( WELS_LOG_QUIET = 0x0 WELS_LOG_ERROR = 0x1 WELS_LOG_WARNING = 0x2 WELS_LOG_INFO = 0x4 WELS_LOG_DEBUG = 0x8 WELS_LOG_DETAIL = 0x10 WELS_LOG_RESV = 0x20 WELS_LOG_LEVEL_COUNT = 0x6 WELS_LOG_DEFAULT = 0x2 )
View Source
const ( SM_SINGLE_SLICE = 0x0 SM_FIXEDSLCNUM_SLICE = 0x1 SM_RASTER_SLICE = 0x2 SM_SIZELIMITED_SLICE = 0x3 SM_RESERVED = 0x4 )
View Source
const ( VF_COMPONENT = 0x0 VF_PAL = 0x1 VF_NTSC = 0x2 VF_SECAM = 0x3 VF_MAC = 0x4 VF_UNDEF = 0x5 VF_NUM_ENUM = 0x6 )
View Source
const ( CP_RESERVED0 = 0x0 CP_BT709 = 0x1 CP_UNDEF = 0x2 CP_RESERVED3 = 0x3 CP_BT470M = 0x4 CP_BT470BG = 0x5 CP_SMPTE170M = 0x6 CP_SMPTE240M = 0x7 CP_FILM = 0x8 CP_BT2020 = 0x9 CP_NUM_ENUM = 0xa )
View Source
const ( TRC_RESERVED0 = 0x0 TRC_BT709 = 0x1 TRC_UNDEF = 0x2 TRC_RESERVED3 = 0x3 TRC_BT470M = 0x4 TRC_BT470BG = 0x5 TRC_SMPTE170M = 0x6 TRC_SMPTE240M = 0x7 TRC_LINEAR = 0x8 TRC_LOG100 = 0x9 TRC_LOG316 = 0xa TRC_IEC61966_2_4 = 0xb TRC_BT1361E = 0xc TRC_IEC61966_2_1 = 0xd TRC_BT2020_10 = 0xe TRC_BT2020_12 = 0xf TRC_NUM_ENUM = 0x10 )
View Source
const ( CM_GBR = 0x0 CM_BT709 = 0x1 CM_UNDEF = 0x2 CM_RESERVED3 = 0x3 CM_FCC = 0x4 CM_BT470BG = 0x5 CM_SMPTE170M = 0x6 CM_SMPTE240M = 0x7 CM_YCGCO = 0x8 CM_BT2020NC = 0x9 CM_BT2020C = 0xa CM_NUM_ENUM = 0xb )
View Source
const ( ASP_UNSPECIFIED = 0x0 ASP_1x1 = 0x1 ASP_12x11 = 0x2 ASP_10x11 = 0x3 ASP_16x11 = 0x4 ASP_40x33 = 0x5 ASP_24x11 = 0x6 ASP_20x11 = 0x7 ASP_32x11 = 0x8 ASP_80x33 = 0x9 ASP_18x11 = 0xa ASP_15x11 = 0xb ASP_64x33 = 0xc ASP_160x99 = 0xd ASP_EXT_SAR = 0xff )
View Source
const ( CAMERA_VIDEO_REAL_TIME = 0x0 SCREEN_CONTENT_REAL_TIME = 0x1 CAMERA_VIDEO_NON_REAL_TIME = 0x2 SCREEN_CONTENT_NON_REAL_TIME = 0x3 INPUT_CONTENT_TYPE_ALL = 0x4 )
View Source
const ( LOW_COMPLEXITY = 0x0 MEDIUM_COMPLEXITY = 0x1 HIGH_COMPLEXITY = 0x2 )
View Source
const ( CONSTANT_ID = 0x0 INCREASING_ID = 0x1 SPS_LISTING = 0x2 SPS_LISTING_AND_PPS_INCREASING = 0x3 SPS_PPS_LISTING = 0x6 )
View Source
const ( MAX_TEMPORAL_LAYER_NUM = 4 MAX_SPATIAL_LAYER_NUM = 4 MAX_QUALITY_LAYER_NUM = 4 MAX_LAYER_NUM_OF_FRAME = 128 MAX_NAL_UNITS_IN_LAYER = 128 MAX_RTP_PAYLOAD_LEN = 1000 AVERAGE_RTP_PAYLOAD_LEN = 800 AUTO_REF_PIC_COUNT = -1 UNSPECIFIED_BIT_RATE = 0 )
View Source
const ( VideoFormatRGB = 0x1 VideoFormatRGBA = 0x2 VideoFormatRGB555 = 0x3 VideoFormatRGB565 = 0x4 VideoFormatBGR = 0x5 VideoFormatBGRA = 0x6 VideoFormatABGR = 0x7 VideoFormatARGB = 0x8 VideoFormatYUY2 = 0x14 VideoFormatYVYU = 0x15 VideoFormatUYVY = 0x16 VideoFormatI420 = 0x17 VideoFormatYV12 = 0x18 VideoFormatInternal = 0x19 VideoFormatNV12 = 0x1a VideoFormatVFlip = 0x80000000 )
View Source
const ( VideoFrameTypeInvalid = 0x0 VideoFrameTypeIDR = 0x1 VideoFrameTypeI = 0x2 VideoFrameTypeP = 0x3 VideoFrameTypeSkip = 0x4 VideoFrameTypeIPMixed = 0x5 )
View Source
const ( CmResultSuccess = 0x0 CmInitParaError = 0x1 CmUnknownReason = 0x2 CmMallocMemeError = 0x3 CmInitExpected = 0x4 CmUnsupportedData = 0x5 )
View Source
const ( DEBLOCKING_IDC_0 = 0x0 DEBLOCKING_IDC_1 = 0x1 DEBLOCKING_IDC_2 = 0x2 )
View Source
const ( ET_NONE = 0x0 ET_IP_SCALE = 0x1 ET_FMO = 0x2 ET_IR_R1 = 0x4 ET_IR_R2 = 0x8 ET_IR_R3 = 0x10 ET_FEC_HALF = 0x20 ET_FEC_FULL = 0x40 ET_RFS = 0x80 )
View Source
const ( FRAME_NUM_PARAM_SET = -1 FRAME_NUM_IDR = 0 DEBLOCKING_OFFSET = 6 DEBLOCKING_OFFSET_MINUS = -6 )
View Source
const ( OPENH264_MAJOR = 2 OPENH264_MINOR = 4 OPENH264_REVISION = 1 OPENH264_RESERVED = 2401 )
Variables ¶
View Source
var WelsCreateDecoder func(**ISVCDecoder) int
View Source
var WelsCreateSVCEncoder func(**ISVCEncoder) int
View Source
var WelsDestroyDecoder func(*ISVCDecoder) int
View Source
var WelsDestroySVCEncoder func(*ISVCEncoder) int
View Source
var WelsGetCodecVersionEx func(*OpenH264Version) int
Functions ¶
Types ¶
type ISVCDecoder ¶
type ISVCDecoder struct {
// contains filtered or unexported fields
}
func (*ISVCDecoder) DecodeFrame2 ¶
func (v *ISVCDecoder) DecodeFrame2(pSrc []byte, iSrcLen int, ppDst *[3][]byte, pDstInfo *SBufferInfo) int
func (*ISVCDecoder) DecodeFrameNoDelay ¶
func (v *ISVCDecoder) DecodeFrameNoDelay(pSrc []byte, iSrcLen int, ppDst *[3][]byte, pDstInfo *SBufferInfo) int
func (*ISVCDecoder) DecodeParser ¶
func (v *ISVCDecoder) DecodeParser(pSrc []byte, iSrcLen int, pDstInfo *SParserBsInfo) int
func (*ISVCDecoder) FlushFrame ¶
func (v *ISVCDecoder) FlushFrame(ppDst *[3][]byte, pDstInfo *SBufferInfo) int
func (*ISVCDecoder) Initialize ¶
func (v *ISVCDecoder) Initialize(p *SDecodingParam) int
func (*ISVCDecoder) Uninitialize ¶
func (v *ISVCDecoder) Uninitialize() int
type ISVCDecoderVtbl ¶
type ISVCEncoder ¶
type ISVCEncoder struct {
// contains filtered or unexported fields
}
func (*ISVCEncoder) EncodeFrame ¶
func (v *ISVCEncoder) EncodeFrame(kpSrcPic *SSourcePicture, pBsInfo *SFrameBSInfo) int
func (*ISVCEncoder) EncodeParameterSets ¶
func (v *ISVCEncoder) EncodeParameterSets(pBsInfo *SFrameBSInfo) int
func (*ISVCEncoder) ForceIntraFrame ¶
func (v *ISVCEncoder) ForceIntraFrame(bIDR bool) int
func (*ISVCEncoder) GetDefaultParams ¶
func (v *ISVCEncoder) GetDefaultParams(p *SEncParamExt) int
func (*ISVCEncoder) Initialize ¶
func (v *ISVCEncoder) Initialize(p *SEncParamBase) int
func (*ISVCEncoder) InitializeExt ¶
func (v *ISVCEncoder) InitializeExt(p *SEncParamExt) int
func (*ISVCEncoder) Uninitialize ¶
func (v *ISVCEncoder) Uninitialize() int
type ISVCEncoderVtbl ¶
type OpenH264Version ¶
func WelsGetCodecVersion ¶
func WelsGetCodecVersion() (ver OpenH264Version)
type SBitrateInfo ¶
type SBufferInfo ¶
type SBufferInfo struct {
IBufferStatus int32
UiInBsTimeStamp uint64
UiOutYuvTimeStamp uint64
UsrData [20]byte
PDst [3]*uint8
}
func (*SBufferInfo) UsrData_sSystemBuffer ¶
func (v *SBufferInfo) UsrData_sSystemBuffer() *SSysMEMBuffer
type SDecoderCapability ¶
type SDecoderStatistics ¶
type SDecoderStatistics struct {
UiWidth uint32
UiHeight uint32
FAverageFrameSpeedInMs float32
FActualAverageFrameSpeedInMs float32
UiDecodedFrameCount uint32
UiResolutionChangeTimes uint32
UiIDRCorrectNum uint32
UiAvgEcRatio uint32
UiAvgEcPropRatio uint32
UiEcIDRNum uint32
UiEcFrameNum uint32
UiIDRLostNum uint32
UiFreezingIDRNum uint32
UiFreezingNonIDRNum uint32
IAvgLumaQp int32
ISpsReportErrorNum int32
ISubSpsReportErrorNum int32
IPpsReportErrorNum int32
ISpsNoExistNalNum int32
ISubSpsNoExistNalNum int32
IPpsNoExistNalNum int32
UiProfile uint32
UiLevel uint32
ICurrentActiveSpsId int32
ICurrentActivePpsId int32
IStatisticsLogInterval uint32
}
type SDecodingParam ¶
type SDeliveryStatus ¶
type SDumpLayer ¶
type SEncParamBase ¶
type SEncParamExt ¶
type SEncParamExt struct {
IUsageType uint32
IPicWidth int32
IPicHeight int32
ITargetBitrate int32
IRCMode int32
FMaxFrameRate float32
ITemporalLayerNum int32
ISpatialLayerNum int32
SSpatialLayers [4]SSpatialLayerConfig
IComplexityMode uint32
UiIntraPeriod uint32
INumRefFrame int32
ESpsPpsIdStrategy uint32
BPrefixNalAddingCtrl bool
BEnableSSEI bool
BSimulcastAVC bool
IPaddingFlag int32
IEntropyCodingModeFlag int32
BEnableFrameSkip bool
IMaxBitrate int32
IMaxQp int32
IMinQp int32
UiMaxNalSize uint32
BEnableLongTermReference bool
ILTRRefNum int32
ILtrMarkPeriod uint32
IMultipleThreadIdc uint16
BUseLoadBalancing bool
ILoopFilterDisableIdc int32
ILoopFilterAlphaC0Offset int32
ILoopFilterBetaOffset int32
BEnableDenoise bool
BEnableBackgroundDetection bool
BEnableAdaptiveQuant bool
BEnableFrameCroppingFlag bool
BEnableSceneChangeDetect bool
BIsLosslessLink bool
BFixRCOverShoot bool
IIdrBitrateRatio int32
}
type SEncoderStatistics ¶
type SEncoderStatistics struct {
UiWidth uint32
UiHeight uint32
FAverageFrameSpeedInMs float32
FAverageFrameRate float32
FLatestFrameRate float32
UiBitRate uint32
UiAverageFrameQP uint32
UiInputFrameCount uint32
UiSkippedFrameCount uint32
UiResolutionChangeTimes uint32
UiIDRReqNum uint32
UiIDRSentNum uint32
UiLTRSentNum uint32
IStatisticsTs int64
ITotalEncodedBytes uint32
ILastStatisticsBytes uint32
ILastStatisticsFrameCount uint32
Pad_cgo_0 [4]byte
}
type SFrameBSInfo ¶
type SFrameBSInfo struct {
ILayerNum int32
SLayerInfo [128]SLayerBSInfo
EFrameType uint32
IFrameSizeInBytes int32
UiTimeStamp int64
}
type SLTRConfig ¶
type SLTRMarkingFeedback ¶
type SLTRRecoverRequest ¶
type SLayerBSInfo ¶
type SLevelInfo ¶
type SParserBsInfo ¶
type SProfileInfo ¶
type SRateThresholds ¶
type SSliceArgument ¶
type SSourcePicture ¶
type SSpatialLayerConfig ¶
type SSpatialLayerConfig struct {
IVideoWidth int32
IVideoHeight int32
FFrameRate float32
ISpatialBitrate int32
IMaxSpatialBitrate int32
UiProfileIdc uint32
UiLevelIdc uint32
IDLayerQp int32
SSliceArgument SSliceArgument
BVideoSignalTypePresent bool
UiVideoFormat uint8
BFullRange bool
BColorDescriptionPresent bool
UiColorPrimaries uint8
UiTransferCharacteristics uint8
UiColorMatrix uint8
BAspectRatioPresent bool
EAspectRatio uint32
SAspectRatioExtWidth uint16
SAspectRatioExtHeight uint16
}
type SSysMEMBuffer ¶
type SVideoProperty ¶
type SVuiSarInfo ¶
Click to show internal directories.
Click to hide internal directories.