mirror of
https://github.com/qrtc/ffmpeg-dev-go.git
synced 2025-10-05 07:37:20 +08:00
2023-10-22 11:46:19 CST W43D0
This commit is contained in:
82
avutil_bprint.go
Normal file
82
avutil_bprint.go
Normal file
@@ -0,0 +1,82 @@
|
||||
package ffmpeg
|
||||
|
||||
/*
|
||||
#include <libavutil/bprint.h>
|
||||
|
||||
void av_bprintf_wrap(AVBPrint *buf, const char *fmt) {
|
||||
av_bprintf(buf, fmt, NULL);
|
||||
}
|
||||
*/
|
||||
import "C"
|
||||
import (
|
||||
"fmt"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type AVBPrint C.struct_AVBPrint
|
||||
|
||||
const (
|
||||
AV_BPRINT_SIZE_UNLIMITED = C.AV_BPRINT_SIZE_UNLIMITED
|
||||
AV_BPRINT_SIZE_AUTOMATIC = C.AV_BPRINT_SIZE_AUTOMATIC
|
||||
AV_BPRINT_SIZE_COUNT_ONLY = C.AV_BPRINT_SIZE_COUNT_ONLY
|
||||
)
|
||||
|
||||
// AvBprintInit initializes a print buffer.
|
||||
func AvBprintInit(buf *AVBPrint, sizeInit, sizeMax uint32) {
|
||||
C.av_bprint_init((*C.struct_AVBPrint)(buf), (C.uint)(sizeInit), (C.uint)(sizeMax))
|
||||
}
|
||||
|
||||
// AvBprintInitForBuffer initializes a print buffer using a pre-existing buffer.
|
||||
func AvBprintInitForBuffer(buf *AVBPrint, buffer *int8, size uint32) {
|
||||
C.av_bprint_init_for_buffer((*C.struct_AVBPrint)(buf), (*C.char)(buffer), (C.uint)(size))
|
||||
}
|
||||
|
||||
// AvBprintf appends a formatted string to a print buffer.
|
||||
func AvBprintf(buf *AVBPrint, _fmt string, va ...any) {
|
||||
strPtr, strFunc := StringCasting(fmt.Sprintf(_fmt, va...))
|
||||
defer strFunc()
|
||||
C.av_bprintf_wrap((*C.struct_AVBPrint)(buf), (*C.char)(strPtr))
|
||||
}
|
||||
|
||||
// NONEED: av_vbprintf
|
||||
|
||||
// AvBprintChars appends char c n times to a print buffer.
|
||||
func AvBprintChars(buf *AVBPrint, c int8, n uint32) {
|
||||
C.av_bprint_chars((*C.struct_AVBPrint)(buf), (C.char)(c), (C.uint)(n))
|
||||
}
|
||||
|
||||
// AvBprintAppendData appends data to a print buffer.
|
||||
func AvBprintAppendData(buf *AVBPrint, data *int8, size uint32) {
|
||||
C.av_bprint_append_data((*C.struct_AVBPrint)(buf), (*C.char)(data), (C.uint)(size))
|
||||
}
|
||||
|
||||
// NONEED: av_bprint_strftime
|
||||
|
||||
// AvBprintGetBuffer allocates bytes in the buffer for external use.
|
||||
func AvBprintGetBuffer(buf *AVBPrint, size uint32, mem **uint8, actualSize *uint32) {
|
||||
C.av_bprint_get_buffer((*C.struct_AVBPrint)(buf), (C.uint)(size),
|
||||
(**C.uint8_t)(unsafe.Pointer(mem)), (*C.uint)(actualSize))
|
||||
}
|
||||
|
||||
// AvBprintClear resets the string to "" but keep internal allocated data.
|
||||
func AvBprintClear(buf *AVBPrint) {
|
||||
C.av_bprint_clear((*C.struct_AVBPrint)(buf))
|
||||
}
|
||||
|
||||
// AvBprintIsComplete tests if the print buffer is complete (not truncated).
|
||||
func AvBprintIsComplete(buf *AVBPrint) int32 {
|
||||
return (int32)(C.av_bprint_is_complete((*C.struct_AVBPrint)(buf)))
|
||||
}
|
||||
|
||||
// AvBprintFinalize finalizes a print buffer.
|
||||
func AvBprintFinalize(buf *AVBPrint, retStr **int8) int32 {
|
||||
return (int32)(C.av_bprint_finalize((*C.struct_AVBPrint)(buf),
|
||||
(**C.char)(unsafe.Pointer(retStr))))
|
||||
}
|
||||
|
||||
// AvBprintEscape escapes the content in src and append it to dstbuf.
|
||||
func AvBprintEscape(dstbuf *AVBPrint, src, specialChars *int8, mode AVEscapeMode, flags int32) {
|
||||
C.av_bprint_escape((*C.struct_AVBPrint)(dstbuf),
|
||||
(*C.char)(src), (*C.char)(specialChars),
|
||||
(C.enum_AVEscapeMode)(mode), (C.int)(flags))
|
||||
}
|
Reference in New Issue
Block a user