forked from lijo-jose/gst
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathbuffer.go
95 lines (72 loc) · 2.52 KB
/
buffer.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package gst
/*
#include <stdlib.h>
#include <gst/gstbuffer.h>
void _golang_gst_set_dts( GstBuffer *buffer, guint64 value ) {
GST_BUFFER_DTS(buffer) = value;
}
void _golang_gst_set_pts( GstBuffer *buffer, guint64 value ) {
GST_BUFFER_PTS(buffer) = value;
}
void _golang_gst_set_duration( GstBuffer *buffer, guint64 value ) {
GST_BUFFER_DURATION(buffer) = value;
}
void _golang_gst_set_offset( GstBuffer *buffer, guint64 value ) {
GST_BUFFER_OFFSET(buffer) = value;
}
void _golang_gst_set_offset_end( GstBuffer *buffer, guint64 value ) {
GST_BUFFER_OFFSET_END(buffer) = value;
}
*/
import "C"
import (
"unsafe"
)
type GstBufferStruct C.GstBuffer
type Buffer struct {
GstBuffer *GstBufferStruct
}
func NewBuffer() *Buffer {
buffer := new(Buffer)
buffer.GstBuffer = (*GstBufferStruct)(C.gst_buffer_new())
return buffer
}
func NewBufferAllocate(size uint) *Buffer {
buffer := new(Buffer)
buffer.GstBuffer = (*GstBufferStruct)(C.gst_buffer_new_allocate(nil, C.gsize(size), nil))
return buffer
}
func (this *Buffer) GetSize() uint {
return (uint)(C.gst_buffer_get_size((*C.GstBuffer)(this.GstBuffer)))
}
func (this *Buffer) AppendMemory(memory *Memory) {
C.gst_buffer_append_memory((*C.GstBuffer)(this.GstBuffer), (*C.GstMemory)(memory))
}
func (this *Buffer) MemSet(offset uint, val byte, size uint) int {
return (int)(C.gst_buffer_memset((*C.GstBuffer)(this.GstBuffer), C.gsize(offset), C.guint8(val), C.gsize(size)))
}
func (this *Buffer) FillWithGoSlice(data []byte) int {
dataLength := uint(len(data))
return (int)(C.gst_buffer_fill((*C.GstBuffer)(this.GstBuffer), C.gsize(0), (C.gconstpointer)(C.CBytes(data)), C.gsize(dataLength)))
}
func (this *Buffer) Fill(offset uint, src unsafe.Pointer, size uint) int {
return (int)(C.gst_buffer_fill((*C.GstBuffer)(this.GstBuffer), C.gsize(offset), C.gconstpointer(src), C.gsize(size)))
}
func (this *Buffer) SetDTS(value uint64) {
C._golang_gst_set_dts((*C.GstBuffer)(this.GstBuffer), C.guint64(value))
}
func (this *Buffer) SetPTS(value uint64) {
C._golang_gst_set_pts((*C.GstBuffer)(this.GstBuffer), C.guint64(value))
}
func (this *Buffer) SetDuration(value uint64) {
C._golang_gst_set_duration((*C.GstBuffer)(this.GstBuffer), C.guint64(value))
}
func (this *Buffer) SetOffset(value uint64) {
C._golang_gst_set_offset((*C.GstBuffer)(this.GstBuffer), C.guint64(value))
}
func (this *Buffer) SetOffsetEnd(value uint64) {
C._golang_gst_set_offset_end((*C.GstBuffer)(this.GstBuffer), C.guint64(value))
}
func (this *Buffer) Unref() {
C.gst_buffer_unref((*C.GstBuffer)(this.GstBuffer))
}