Check out my blog!
tinyzimmer / go-gst Goto Github PK
View Code? Open in Web Editor NEWThis project forked from go-gst/go-gst
Gstreamer bindings and utilities for golang
License: GNU Lesser General Public License v2.1
This project forked from go-gst/go-gst
Gstreamer bindings and utilities for golang
License: GNU Lesser General Public License v2.1
Check out my blog!
So based on the current appsrc example, I have been working on tweaking it to use NewBufferFromBytes based on the precalculated pixel buffer.
The updated NeedDataFunc is as shown below.
src.SetCallbacks(&app.SourceCallbacks{
NeedDataFunc: func(self *app.Source, _ uint) {
// If we've reached the end of the palette, end the stream.
if i == len(palette) {
src.EndStream()
return
}
fmt.Println("Producing frame:", i)
// Produce an image frame for this iteration.
pixels := produceImageFrame(palette[i], width, height)
// Create a buffer that can hold exactly one video RGBA frame.
//buf := gst.NewBufferWithSize(videoInfo.Size())
buf := gst.NewBufferFromBytes(pixels)
buf.SetPresentationTimestamp(time.Duration(i) * 500 * time.Millisecond)
buf.Map(gst.MapRead) //in-place of the slow WriteData call.
// Push the buffer onto the pipeline.
self.PushBuffer(buf)
i++
},
})
When I ran this, I realized the Memory footprint of the program was steadily increasing as the number of rendered frames was increasing. Am I using this wrappers wrongly?
I was under the impression that just like usual, calling PushBuffer on the buffer would take ownership of the buffer and free it eventually. Any idea? I looked into the function, to me it looks like the gstreamer C function is also being called as expected.
The reason I want to avoid WriteData call is its too slow for my purposes.
At the first, thanks for very useful GStreamer binding for golang.
In my case, I must create and delete gst pipelines in runtime. According to the GStreamer documentation, I must call gst_object_unref for unnecessary pipelines for freeing resources.
When I call pipeline.Unref(), I get following error:
GLib-GObject-CRITICAL **: 11:54:51.773: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
Do you have any ideas how it can be resolved?
Thanks
Hi,
we're trying to change the wave property of audiotestsrc but we always get the error
Invalid type gint for property wave
which is true, because he want's the GstAudioTestSrcWave
.
Is there a way to get this to work ?
propertyType, err := audiotestsrcElement.GetPropertyType("wave")
if err != nil {
return nil, err
}
err = audiotestsrcElement.Set("wave", 5)
if err != nil {
return nil, err
}
Hi.
I'm trying to follow this tutorial using go-gst.
When I try to set the playbin flags, I always get "Invalid type guint for property flags".
Is there a workaround to the type restriction set by the SetProperty
method, or is a proper enum for GstPlayFlags
needed here?
A minimal example of my issue follows:
package main
import (
"fmt"
"github.com/tinyzimmer/go-glib/glib"
"github.com/tinyzimmer/go-gst/gst"
)
func main() {
gst.Init(nil)
mainLoop := glib.NewMainLoop(glib.MainContextDefault(), false)
playbin, err := gst.NewElementWithName("playbin", "my-playbin")
if err != nil {
panic(err)
}
if playbin == nil {
panic("Not all elements could be created")
}
flags, err := playbin.GetProperty("flags")
if err != nil {
panic(err)
}
flagstype, err := playbin.GetPropertyType("flags")
if err != nil {
panic(err)
}
fmt.Println("flags type:", flagstype.Name())
fmt.Println("flags value:", flags)
iflags := flags.(uint)
iflags = iflags &^ (1 << 0) // no video
iflags = iflags | (1 << 1) // yes audio
iflags = iflags &^ (1 << 2) // no text
fmt.Println("new flags value:", iflags)
err = playbin.Set("flags", iflags)
if err != nil {
panic(err)
}
playbin.Set("uri", "https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.ogv")
bus := playbin.GetBus()
state := gst.StatePlaying
if err := playbin.SetState(state); err != nil {
panic(err)
}
bus.AddWatch(func(msg *gst.Message) bool {
return true
})
mainLoop.Run()
bus.RemoveWatch()
state = gst.StateNull
playbin.SetState(state)
}
You can increase the rank of a decoder so that it takes precedence over others... think hardware decoder vs software...
gst_plugin_feature_set_rank
https://gstreamer.freedesktop.org/documentation/gstreamer/gstpluginfeature.html?gi-language=c
Would be great to be able to set a higher ranking on a hardware decoder/encoder...
https://gstreamer.freedesktop.org/documentation/tutorials/playback/hardware-accelerated-video-decoding.html?gi-language=c
https://developer.ridgerun.com/wiki/index.php/GStreamer_modify_the_elements_rank
Hey,
I am using rawvideoparse and one thing, I have to do, is setting the property format
. However, when i try to set this, all i get is Invalid type gint for property format
i set this with:
err = videoparse.SetProperty("format", video.FormatBGRA)
if err != nil {
log.Println(err)
}
(i have to set this as a property, not as capability)
I also have a similar problem with the framerate. it needs to be a GstFraction
, so i used
err = videoparse.SetProperty("framerate", gst.Fraction(50,1))
and all i get is Unable to perform type conversion
Am I doing something wrong?
I am trying to make an customized video player using this project with gotk4 , I could not make it work , tried gotk4-gstreamer as well , still no avail .
Could you give me some directions and guidelines on this , I want to use this project to process rtsp streams and output gtk4paintablesinks , then feed it to gotk4 for final UI customization . Here is a discussion as well .
Or do you happen to know any golang GUI toolkit could fit my purpose better or easier ?
Thank you .
ld: library not found for -lgstvideo-1.0
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I'm running on mac, gstreamer and the plugins are installed via brew
β― pkg-config --cflags gstreamer-video-1.0
-I/opt/homebrew/Cellar/libffi/3.4.2/include -I/opt/homebrew/Cellar/gst-plugins-base/1.20.2/include/gstreamer-1.0 -I/opt/homebrew/Cellar/orc/0.4.32/include/orc-0.4 -I/opt/homebrew/Cellar/gstreamer/1.20.2/include/gstreamer-1.0 -I/opt/homebrew/Cellar/glib/2.72.1/include -I/opt/homebrew/Cellar/glib/2.72.1/include/glib-2.0 -I/opt/homebrew/Cellar/glib/2.72.1/lib/glib-2.0/include -I/opt/homebrew/opt/gettext/include -I/opt/homebrew/Cellar/pcre/8.45/include
But tinyzimmer/go-gst
can't find gstvideo-1.0
and I'm a little lost as to what's missing and why....
Can you help?
I have been having troubles with run my go project with JetBrains Goland.
When I click run it fails. Here is the log I have.
Could someone of you guys help me to figure out what happens and how to fix this?
MacOS Big Sur
Is it possible that I forgot to setup linker or something?
Thanks in advance
cd /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst
pkg-config --cflags -- gstreamer-1.0
pkg-config --libs -- gstreamer-1.0
TERM='dumb' CGO_LDFLAGS='"-g" "-O2" "-lm" "-L/usr/local/Cellar/gstreamer/1.18.4/lib" "-L/usr/local/Cellar/glib/2.68.3/lib" "-L/usr/local/opt/gettext/lib" "-lgstreamer-1.0" "-lgobject-2.0" "-lglib-2.0" "-lintl"' /Users/alex/gosdk/go1.16.5/pkg/tool/darwin_amd64/cgo -objdir $WORK/b235/ -importpath github.com/tinyzimmer/go-gst/gst -- -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I $WORK/b235/ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable ./c_util.go ./cgo_exports.go ./constants.go ./gst_allocator.go ./gst_bin.go ./gst_bin_exports.go ./gst_bin_impl.go ./gst_buffer.go ./gst_buffer_list.go ./gst_buffer_pool.go ./gst_bus.go ./gst_caps.go ./gst_caps_features.go ./gst_child_proxy.go ./gst_child_proxy_exports.go ./gst_clock.go ./gst_context.go ./gst_debug.go ./gst_device.go ./gst_element.go ./gst_element_class.go ./gst_element_exports.go ./gst_element_factory.go ./gst_element_impl.go ./gst_errors.go ./gst_event.go ./gst_event_constructors.go ./gst_ghost_pad.go ./gst_init.go ./gst_mapinfo.go ./gst_memory.go ./gst_message.go ./gst_message_constructors.go ./gst_meta.go ./gst_mini_object.go ./gst_object.go ./gst_pad.go ./gst_pad_exports.go ./gst_pad_template.go ./gst_param_flags.go ./gst_pipeline.go ./gst_plugin.go ./gst_plugin_feature.go ./gst_protection.go ./gst_query.go ./gst_registry.go ./gst_sample.go ./gst_segment.go ./gst_stream.go ./gst_stream_collection.go ./gst_structure.go ./gst_system_clock.go ./gst_tag_list.go ./gst_tag_setter.go ./gst_toc.go ./gst_toc_setter.go ./gst_uri_handler.go ./gst_uri_handler_exports.go ./gst_values.go ./gst_wrappers.go ./pkg_config.go
cd $WORK/b235
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x001.o -c _cgo_export.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x002.o -c c_util.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x003.o -c cgo_exports.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x004.o -c constants.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x005.o -c gst_allocator.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x006.o -c gst_bin.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x007.o -c gst_bin_exports.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x008.o -c gst_bin_impl.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x009.o -c gst_buffer.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x010.o -c gst_buffer_list.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x011.o -c gst_buffer_pool.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x012.o -c gst_bus.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x013.o -c gst_caps.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x014.o -c gst_caps_features.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x015.o -c gst_child_proxy.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x016.o -c gst_child_proxy_exports.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x017.o -c gst_clock.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x018.o -c gst_context.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x019.o -c gst_debug.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x020.o -c gst_device.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x021.o -c gst_element.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x022.o -c gst_element_class.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x023.o -c gst_element_exports.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x024.o -c gst_element_factory.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x025.o -c gst_element_impl.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x026.o -c gst_errors.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x027.o -c gst_event.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x028.o -c gst_event_constructors.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x029.o -c gst_ghost_pad.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x030.o -c gst_init.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x031.o -c gst_mapinfo.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x032.o -c gst_memory.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x033.o -c gst_message.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x034.o -c gst_message_constructors.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x035.o -c gst_meta.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x036.o -c gst_mini_object.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x037.o -c gst_object.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x038.o -c gst_pad.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x039.o -c gst_pad_exports.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x040.o -c gst_pad_template.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x041.o -c gst_param_flags.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x042.o -c gst_pipeline.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x043.o -c gst_plugin.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x044.o -c gst_plugin_feature.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x045.o -c gst_protection.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x046.o -c gst_query.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x047.o -c gst_registry.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x048.o -c gst_sample.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x049.o -c gst_segment.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x050.o -c gst_stream.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x051.o -c gst_stream_collection.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x052.o -c gst_structure.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x053.o -c gst_system_clock.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x054.o -c gst_tag_list.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x055.o -c gst_tag_setter.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x056.o -c gst_toc.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x057.o -c gst_toc_setter.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x058.o -c gst_uri_handler.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x059.o -c gst_uri_handler_exports.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x060.o -c gst_values.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x061.o -c gst_wrappers.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_x062.o -c pkg_config.cgo2.c
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -I/usr/local/Cellar/libffi/3.3_3/include -I/usr/local/Cellar/gstreamer/1.18.4/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.68.3/include -I/usr/local/Cellar/glib/2.68.3/include/glib-2.0 -I/usr/local/Cellar/glib/2.68.3/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -I ./ -O0 -g -Wno-deprecated-declarations -Wno-format-security -g -Wall -Wno-unused-variable -o ./_cgo_main.o -c _cgo_main.c
cd /Users/alex/work/development/go/kcm/stream_client
TERM='dumb' clang -I /Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst -fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=$WORK/b235=/tmp/go-build -gno-record-gcc-switches -fno-common -o $WORK/b235/_cgo_.o $WORK/b235/_cgo_main.o $WORK/b235/_x001.o $WORK/b235/_x002.o $WORK/b235/_x003.o $WORK/b235/_x004.o $WORK/b235/_x005.o $WORK/b235/_x006.o $WORK/b235/_x007.o $WORK/b235/_x008.o $WORK/b235/_x009.o $WORK/b235/_x010.o $WORK/b235/_x011.o $WORK/b235/_x012.o $WORK/b235/_x013.o $WORK/b235/_x014.o $WORK/b235/_x015.o $WORK/b235/_x016.o $WORK/b235/_x017.o $WORK/b235/_x018.o $WORK/b235/_x019.o $WORK/b235/_x020.o $WORK/b235/_x021.o $WORK/b235/_x022.o $WORK/b235/_x023.o $WORK/b235/_x024.o $WORK/b235/_x025.o $WORK/b235/_x026.o $WORK/b235/_x027.o $WORK/b235/_x028.o $WORK/b235/_x029.o $WORK/b235/_x030.o $WORK/b235/_x031.o $WORK/b235/_x032.o $WORK/b235/_x033.o $WORK/b235/_x034.o $WORK/b235/_x035.o $WORK/b235/_x036.o $WORK/b235/_x037.o $WORK/b235/_x038.o $WORK/b235/_x039.o $WORK/b235/_x040.o $WORK/b235/_x041.o $WORK/b235/_x042.o $WORK/b235/_x043.o $WORK/b235/_x044.o $WORK/b235/_x045.o $WORK/b235/_x046.o $WORK/b235/_x047.o $WORK/b235/_x048.o $WORK/b235/_x049.o $WORK/b235/_x050.o $WORK/b235/_x051.o $WORK/b235/_x052.o $WORK/b235/_x053.o $WORK/b235/_x054.o $WORK/b235/_x055.o $WORK/b235/_x056.o $WORK/b235/_x057.o $WORK/b235/_x058.o $WORK/b235/_x059.o $WORK/b235/_x060.o $WORK/b235/_x061.o $WORK/b235/_x062.o -g -O2 -lm -L/usr/local/Cellar/gstreamer/1.18.4/lib -L/usr/local/Cellar/glib/2.68.3/lib -L/usr/local/opt/gettext/lib -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -lintl
# github.com/tinyzimmer/go-gst/gst
Undefined symbols for architecture x86_64:
"_bufferIsWritable", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_bufferIsWritable in _x009.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_bufferIsWritable)
"_bufferListIsWritable", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_bufferListIsWritable in _x010.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_bufferListIsWritable)
"_bufferPoolIsFlushing", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_bufferPoolIsFlushing in _x011.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_bufferPoolIsFlushing)
"_capsIsWritable", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_capsIsWritable in _x013.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_capsIsWritable)
"_contextIsWritable", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_contextIsWritable in _x018.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_contextIsWritable)
"_copyToc", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_copyToc in _x056.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_copyToc, __cgo_9fe65b6dd3a1_Cfunc_copyTocEntry )
"_copyTocEntry", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_copyTocEntry in _x056.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_copyTocEntry)
"_getBufferValue", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_getBufferValue in _x061.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_getBufferValue)
"_glistNext", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_glistNext in _x056.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_glistNext)
"_gstElementIsURIHandler", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_gstElementIsURIHandler in _x021.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_gstElementIsURIHandler)
"_gstObjectFlagIsSet", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_gstObjectFlagIsSet in _x021.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_gstObjectFlagIsSet)
"_makeBufferListWritable", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_makeBufferListWritable in _x010.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_makeBufferListWritable)
"_makeBufferWritable", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_makeBufferWritable in _x009.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_makeBufferWritable)
"_makeCapsWritable", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_makeCapsWritable in _x013.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_makeCapsWritable)
"_makeContextWritable", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_makeContextWritable in _x018.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_makeContextWritable)
"_makeTagListWritable", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_makeTagListWritable in _x054.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_makeTagListWritable)
"_makeTocEntryWritable", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_makeTocEntryWritable in _x056.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_makeTocEntryWritable)
"_makeTocWritable", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_makeTocWritable in _x056.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_makeTocWritable)
"_sizeOfGCharArray", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_sizeOfGCharArray in _x011.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_sizeOfGCharArray)
"_tagListIsWritable", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_tagListIsWritable in _x054.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_tagListIsWritable)
"_toGstAllocator", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstAllocator in _x005.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstAllocator)
"_toGstBin", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstBin in _x006.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstBin, __cgo_9fe65b6dd3a1_Cfunc_toGstBinClass )
"_toGstBinClass", referenced from:
_binParentAddElement in _x006.o
_binParentDeepElementAdded in _x006.o
_binParentDeepElementRemoved in _x006.o
_binParentDoLatency in _x006.o
_binParentElementAdded in _x006.o
_binParentElementRemoved in _x006.o
_binParentHandleMessage in _x006.o
...
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstBinClass)
"_toGstBuffer", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstBuffer in _x009.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstBufferList, __cgo_9fe65b6dd3a1_Cfunc_toGstBufferPool , __cgo_9fe65b6dd3a1_Cfunc_toGstBuffer )
"_toGstBufferList", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstBufferList in _x010.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstBufferList)
"_toGstBufferPool", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstBufferPool in _x011.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstBufferPool)
"_toGstBus", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstBus in _x012.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstBus)
"_toGstCaps", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstCaps in _x013.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstCaps, __cgo_9fe65b6dd3a1_Cfunc_toGstCapsFeatures )
"_toGstCapsFeatures", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstCapsFeatures in _x014.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstCapsFeatures)
"_toGstChildProxy", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstChildProxy in _x015.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstChildProxy)
"_toGstClock", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstClock in _x017.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstClock)
"_toGstContext", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstContext in _x018.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstContext)
"_toGstDevice", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstDevice in _x020.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstDevice)
"_toGstElement", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstElement in _x021.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstElementFactory, __cgo_9fe65b6dd3a1_Cfunc_toGstElementClass , __cgo_9fe65b6dd3a1_Cfunc_toGstElement )
"_toGstElementClass", referenced from:
_elementParentPostMessage in _x021.o
_elementParentChangeState in _x021.o
__cgo_9fe65b6dd3a1_Cfunc_toGstElementClass in _x022.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstElementClass)
"_toGstElementFactory", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstElementFactory in _x024.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstElementFactory)
"_toGstEvent", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstEvent in _x027.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstEvent)
"_toGstGhostPad", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstGhostPad in _x029.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstGhostPad)
"_toGstMemory", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstMemory in _x032.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstMemory)
"_toGstMessage", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstMessage in _x033.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstMessage)
"_toGstMeta", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstMeta in _x035.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstMeta)
"_toGstMiniObject", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstMiniObject in _x036.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstMiniObject)
"_toGstObject", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstObject in _x021.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstObject)
"_toGstPad", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstPad in _x029.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstPad, __cgo_9fe65b6dd3a1_Cfunc_toGstPadTemplate )
"_toGstPadTemplate", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstPadTemplate in _x040.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstPadTemplate)
"_toGstPipeline", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstPipeline in _x042.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstPipeline)
"_toGstPlugin", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstPlugin in _x043.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstPluginFeature, __cgo_9fe65b6dd3a1_Cfunc_toGstPlugin )
"_toGstPluginFeature", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstPluginFeature in _x044.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstPluginFeature)
"_toGstProxyPad", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstProxyPad in _x029.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstProxyPad)
"_toGstQuery", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstQuery in _x046.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstQuery)
"_toGstRegistry", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstRegistry in _x047.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstRegistry)
"_toGstSample", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstSample in _x048.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstSample)
"_toGstStream", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstStream in _x050.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstStream, __cgo_9fe65b6dd3a1_Cfunc_toGstStreamCollection )
"_toGstStreamCollection", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstStreamCollection in _x051.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstStreamCollection)
"_toGstStructure", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstStructure in _x052.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstStructure)
"_toGstTagList", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstTagList in _x054.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstTagList)
"_toGstURIHandler", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toGstURIHandler in _x021.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toGstURIHandler)
"_toTagSetter", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toTagSetter in _x021.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toTagSetter)
"_toTocSetter", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_toTocSetter in _x021.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_toTocSetter)
"_tocEntryRef", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_tocEntryRef in _x056.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_tocEntryRef)
"_tocEntryUnref", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_tocEntryUnref in _x056.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_tocEntryUnref)
"_tocRef", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_tocRef in _x056.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_tocRef)
"_tocUnref", referenced from:
__cgo_9fe65b6dd3a1_Cfunc_tocUnref in _x056.o
(maybe you meant: __cgo_9fe65b6dd3a1_Cfunc_tocUnref)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
# github.com/tinyzimmer/go-gst/gst
/Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_debug.go:14:63: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
/Users/alex/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_debug.go:14:63: note: treat the string as an argument to avoid this
Compilation finished with exit code 2
(This is perhaps more of a gstreamer question than a go-gst question, but since you appear to be deeply familiar with gstreamer maybe you can nudge me in the good direction...)
I have a Go project using gstreamer with multiple video tracks using push-mode "appsrc" components entering an "mpegtsmuxer" component and then some other stuff after it. The pipeline works but I want to be able to change which appsrc elements are connected while the full pipeline is streaming/active. (There is always at least 1 appsrc active.)
Do you think it's doable? I can do it with full separate pipelines but I wanted to do it "the gstreamer way". I tried to understand these articles:
https://gstreamer.freedesktop.org/documentation/application-development/advanced/pipeline-manipulation.html
https://gstreamer.freedesktop.org/documentation/application-development/advanced/dparams.html
and it seems like I should be able to "unlink" the pads if I understood the gist of it.
However, when I try unlinking my appsrc's src
pad from the mpegtsmuxer's sink_X
my entire pipeline kinda stops. Any idea what I may be missing? I tried sending EOS on the element before unlinking and it didn't help either.
Willing to contribute an example sample to the repo if I succeed at figuring out the correct approach.
Building a project which depends on go-gst with this command:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o main .
results in the following errors:
../../../go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_message_stringer.go:17:10: undefined: Message
../../../go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_message_stringer.go:21:7: undefined: MessageEOS
../../../go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_message_stringer.go:24:7: undefined: MessageInfo
../../../go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_message_stringer.go:27:7: undefined: MessageWarning
../../../go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_message_stringer.go:30:7: undefined: MessageError
../../../go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_message_stringer.go:33:7: undefined: MessageTag
../../../go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_message_stringer.go:40:7: undefined: MessageBuffering
../../../go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_message_stringer.go:51:7: undefined: MessageStateChanged
../../../go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_message_stringer.go:55:7: undefined: MessageStateDirty
../../../go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_message_stringer.go:58:7: undefined: MessageStepDone
../../../go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_message_stringer.go:58:7: too many errors
Hi, I have created a new element for rtspsrc and set the protocols to tcp. From the rtsp server logs, it is still using UDP protocol to fetch the video stream. Is the rtspsrc element supported? How can we set its protocols?
Codes:
src, err := gst.NewElement("rtspsrc") if err != nil { return nil, err } src.Set("protocols", "tcp")
RTSP logs:
rtsp-simple-server_1 | 2022/06/10 06:35:35 INF [RTSP] [session 896969789] is reading from path 'final_new.h264', 1 track with UDP
rtsp-simple-server_1 | 2022/06/10 06:35:43 INF [RTSP] [session 896969789] destroyed (teared down by 10.72.4.66:47506)
rtsp-simple-server_1 | 2022/06/10 06:35:43 INF [RTSP] [conn 10.72.4.66:47506] closed (EOF)
Hi,
I am checking memory allocation & release with debug/pprof
tool.
And I found that heap profiler indicates following heap stack.
0: 0 [2: 48] @ 0x4613e53 0x45e5fe9 0x481deb1 0x4076681
# 0x4613e52 github.com/tinyzimmer/go-gst/gst.NewBufferFromBytes.func1+0x52 /Users/bkim/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_buffer.go:101
# 0x45e5fe8 github.com/tinyzimmer/go-gst/gst.NewBufferFromBytes+0x48 /Users/bkim/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_buffer.go:101
This is because Extract() returns C.GoBytes()
which underlying array is a copy of the array in C area.
And I couldn't find anywhere doing free
for it.
Please help me whether or not I have right understanding.
Lines 387 to 394 in 5437f8a
Hi,
I usually create a pipeline with: gst.NewPipeline(id)
.
Now i would like to create a pipeline with gst.NewPipelineFromString
and still give it a specific id, is that possible?
Hello, i have a pipeline receive from rtspsrc and record to multi file by using splitmuxing:
rtspsrc location="__URL__" name=demux is-live=true demux. ! queue ! application/x-rtp ! rtph264depay ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,is-live=true ! x264enc bitrate=1024 speed-preset=ultrafast interlaced=true key-int-max=20 tune=zerolatency byte-stream=true name=encoder ! tee name=video_tee ! queue ! video/x-h264,stream-format=byte-stream ! h264parse ! appsink name=videosink sync=false video_tee. ! queue ! h264parse ! splitmuxsink name=splitmuxsink muxer=matroskamux location="/videos/record_%d.mkv"
i want to rename recording files to time.Now().UnixNano(). So i use format-location callback:
element, _ :=pipeline.GetElementByName("splitmuxsink")
element.Connect("format-location", func(
this *gst.Element, index uint,
) string {
return fmt.Sprintf("/videos/%v.mkv", time.Now().UnixNano())
})
The pipeline creates new file as I return in the callback but then crashes immediately. Can you help me find the problem, thanks!
So that we can list devices gstreamer has access to
It encounters panic when accessing unexported fields of struct at reflect used by GetStructure().UnmarshallInto()
.
In my case, I need to get GstRTPPacketLost event. So I need to define type struct in go area in order to extract GstStructure values from gst into go area.
type GstRTPPacketLostEvent struct {
Seqnum uint
Timestamp uint64
Duration uint64
Retry uint
}
...ommitted
var packetLostEvent GstRTPPacketLostEvent
if err := ev.GetStructure().UnmarshalInto(&packetLostEvent); err != nil {
logger.Tracef("[src %s] pktlost_probe / cloud not parse RTPPacketLostEvent", s.ID())
return gst.PadProbePass
}
...
However it could not get value of each field from GstStructure of GstRTPPacketLost because the field of GstRTPPacketLost is in lowercase whereas the type struct what I defined in go area is starting with upper case for exporting out of struct.
I mean, it has not found any matching field in GstRTPPacketLost GstStructure from the type struct I defined above.
event = gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM,
gst_structure_new ("GstRTPPacketLost",
"seqnum", G_TYPE_UINT, (guint) seqnum,
"timestamp", G_TYPE_UINT64, timestamp,
"duration", G_TYPE_UINT64, duration,
"retry", G_TYPE_UINT, num_rtx_retry, NULL));
So I redefined the type struct in go area having filed in lower case only, which results in panic since reflect doesn't allow to set on unexported fields, this causes panic.
type GstRTPPacketLostEvent struct {
seqnum uint
timestamp uint64
duration uint64
retry uint
}
panic: reflect: reflect.Value.Set using value obtained using unexported field
goroutine 17 [running, locked to thread]:
reflect.flag.mustBeAssignableSlow(0xc314f2)
/usr/local/go/src/reflect/value.go:259 +0xc5
reflect.flag.mustBeAssignable(...)
/usr/local/go/src/reflect/value.go:249
reflect.Value.Set({0xcb4c80, 0xc000412840, 0x6}, {0xcb4c80, 0x157f428, 0xcb4c80})
/usr/local/go/src/reflect/value.go:1899 +0x6a
github.com/tinyzimmer/go-gst/gst.(*Structure).UnmarshalInto(0xe3980e, {0xc92660, 0xc000412840})
/home/bkim/git/mpod/vendor/github.com/tinyzimmer/go-gst/gst/gst_structure.go:89 +0x3c6
I figured out an workaround by lowering fieldName
then set on UnmarshalInto
.
However this is limited to cover only lower case of field name.
func (s *Structure) UnmarshalInto(data interface{}) error {
rv := reflect.ValueOf(data)
if rv.Kind() != reflect.Ptr || rv.IsNil() {
return errors.New("Data is invalid (nil or non-pointer)")
}
val := reflect.ValueOf(data).Elem()
nVal := rv.Elem()
for i := 0; i < val.NumField(); i++ {
nvField := nVal.Field(i)
fieldName := val.Type().Field(i).Name
val, err := s.GetValue(strings.ToLower(fieldName))
if err == nil {
nvField.Set(reflect.ValueOf(val))
}
}
return nil
}
I am now figuring out better way for this..
Hello, i'm trying to add custom meta data into a buffer and have a problem calling RegisterAPIType .
When I do something like
t := gst.RegisterAPIType("NewObjectType", []string{"sometag"} )
the calling program crashes (no stack).
I think gcharStrings has a few major problems
func gcharStrings(strs []string) **C.gchar {
gcharSlc := make([]*C.gchar, len(strs)) // <- shouldn't it be alloced by the c allocator ? also, it won't be nil terminated
for _, s := range strs {
cStr := C.CString(s)
defer C.free(unsafe.Pointer(cStr)) // <- this will cause the pointed array of char to be freed before we even use the array
gcharSlc = append(gcharSlc, cStr)
}
return &gcharSlc[0]
}
this gcharStrings() function is also called by FilterProtectionSystemByDecryptors() and SelectProtectionSystem()
I am also confused by the fact that the caller calls C.free on the returned object which is &gcharSlc[0]..
Line 38 in fb84a4c
Saw compiler warning
.../go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_pad.go:38:100: warning: all paths through this function will call itself [-Winfinite-recursion]
Should this be
# Line 37-38 of gst/gst_pad.go
gboolean
cgoGstPadActivateModeFunction (GstPad * pad, GstObject * parent, GstPadMode mode, gboolean active) { return goGstPadActivateModeFunction(pad, parent, mode, active); }
Keep getting error:
~/work/go-gst/examples$ go run playbin/main.go
# github.com/tinyzimmer/go-gst/gst
../gst/constants.go:335:40: could not determine kind of name for C.GST_MESSAGE_DEVICE_CHANGED
../gst/constants.go:832:30: could not determine kind of name for C.GST_QUERY_BITRATE
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev are installed. What else do I miss?
Hi, I wanted to use a "level " plugin in a pipe line.
This plugin sends Element messages with information in a structure.
Unfortunately Message.GetStructure only returns a Structure on Info, Error, and Warning Message but doesn't call
gst_message_get_structure for the other message types.
If you have a buffer with non interleaved audio inside it, you need to add meta data to the buffer to say it's not interleaved and how to deal with it...
gst_buffer_add_audio_meta
https://gstreamer.freedesktop.org/documentation/audio/gstaudiometa.html?gi-language=c#GstAudioMeta
Hi all, I'm new on gst, and I wanna to control the volume of voice stream when playing, I know there's some function like gst_stream_volume_set_volume
in C Library, but have no idea how to work with go-gst, can any one give me some help?
I start the pipeline by following code to transfer mp3 to g.711, send result over udp/rtp:
cmd := []string{
"filesrc location=" + mediaPath,
"decodebin",
"audioconvert",
"volume volume=0.1",
"audioresample",
"clocksync",
"mulawenc",
"rtppcmupay",
"udpsink host=" + ip,
}
pipeline, err := gst.NewPipelineFromString(strings.Join(cmd, " ! "))
if err != nil {
log.Errorf("failed to generate pipeline, err: %s", err)
return err
}
if err := pipeline.SetState(gst.StatePlaying); err != nil {
return err
}
// Do something to control the volume of pipeline
I find something similiar, but its interface...
When I tried to get the Basic tutorial 1: Hello World example to run, I get the following error message:
Given string is too short for a pipeline: playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm
The example can be found here:
https://gstreamer.freedesktop.org/documentation/tutorials/basic/hello-world.html?gi-language=c
I guess the reason is that the string is always expected to include an exclamation mark ?
if len(strings.Split(launchv, "!")) < 2 {
return nil, fmt.Errorf("Given string is too short for a pipeline: %s", launchv)
}
The string given to the launch command is: "playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm"
Hi, I'm using the code found in the readme.md for the watcher of the pipeline bus, and when the watcher receives a message of type gst.MessageTag message, memory goes wrong, and "warning" are outputted to the console:
[audiosink] TAG - taglist, language-code=(string)en, bitrate=(uint)64000;
[audiosink] TAG - taglist, language-code=(string)en, bitrate=(uint)64000;
[audiosink] TAG - taglist, language-code=(string)en, bitrate=(uint)64000;
(gobot-newapi.exe:24688): GStreamer-CRITICAL **: 15:57:15.482: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
(gobot-newapi.exe:24688): GStreamer-CRITICAL **: 15:57:15.483: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
(i just create a simple pipeline connected to an appsink
pipelineStr := "filesrc location=./Dweebs.movie.mp4 ! decodebin ! audioconvert ! volume volume=0.01 ! audio/x-raw,channels=2 ! opusenc ! appsink name=audiosink"
gst.NewPipelineFromString(pipelineStr)
add a callback to the sink that does the pullSample, and the same AddWatch.. as you do in your example...
if I insist, the program eventually crashes.
Tried with other pipelines, and noticed the same behavior.
Just excluding the gst.MessageTag from the switch in the watcher, (ie the stringer is not called on those messages) I have no issue.
I could try to do a clean sample for that, if that's not clear enough, but you should reproduce easily.
Vmware fusion + WIN10 + MingW + Gstreamer1.8.x + golang 1.16.x
exe crash and got error:
signal arrived during external code execution
I found the error string from signal_windows.go
Please help!
./launch.exe autovideosrc ! videoconvert ! decodebin ! autovideosink autoaudiosrc! audioresample ! audioconvert ! decodebin ! autoaudiosink
[autoaudiosink0-actual-sink-wasapi] STATE-CHANGED - State changed from NULL to READY
[autoaudiosink0] STATE-CHANGED - State changed from NULL to READY
[autovideosink0] NEED-CONTEXT - Element needs context
[autovideosink0] HAVE-CONTEXT - Received context of type gst.d3d11.device.handle
[d3d11videosink0] STATE-CHANGED - State changed from NULL to READY
[d3d11upload0] STATE-CHANGED - State changed from NULL to READY
[autovideosink0-actual-sink-d3d11video] STATE-CHANGED - State changed from NULL to READY
[autovideosink0] STATE-CHANGED - State changed from NULL to READY
[typefind] STATE-CHANGED - State changed from NULL to READY
[decodebin1] STATE-CHANGED - State changed from NULL to READY
[audioconvert0] STATE-CHANGED - State changed from NULL to READY
[audioresample0] STATE-CHANGED - State changed from NULL to READY
[autoaudiosrc0-actual-src-wasap] STATE-CHANGED - State changed from NULL to READY
[autoaudiosrc0] STATE-CHANGED - State changed from NULL to READY
[typefind] STATE-CHANGED - State changed from NULL to READY
[decodebin0] STATE-CHANGED - State changed from NULL to READY
[videoconvert0] STATE-CHANGED - State changed from NULL to READY
[autovideosrc0-actual-src-ksvide] STATE-CHANGED - State changed from NULL to READY
[autovideosrc0] STATE-CHANGED - State changed from NULL to READY
[pipeline0] STATE-CHANGED - State changed from NULL to READY
[d3d11upload0] STATE-CHANGED - State changed from READY to PAUSED
[typefind] STATE-CHANGED - State changed from READY to PAUSED
[audioconvert0] STATE-CHANGED - State changed from READY to PAUSED
[audioresample0] STATE-CHANGED - State changed from READY to PAUSED
Exception 0xc0000005 0x0 0xfffffffffffffc07 0x7ffd033d6c3b
PC=0x7ffd033d6c3b
signal arrived during external code execution
runtime.cgocall(0x7ff68f720b10, 0xc0000cd4c0)
C:/Program Files/Go/src/runtime/cgocall.go:156 +0x4a fp=0xc0000cd498 sp=0xc0000cd460 pc=0x7ff68f64424a
github.com/tinyzimmer/go-gst/gst._Cfunc_free(0x25e41574320)
_cgo_gotypes.go:2429 +0x4e fp=0xc0000cd4c0 sp=0xc0000cd498 pc=0x7ff68f6fbb0e
github.com/tinyzimmer/go-gst/gst.(*Object).GetName.func2.1()
C:/Users/adam/go/src/pion/go-gst/gst/gst_object.go:39 +0x3b fp=0xc0000cd4f8 sp=0xc0000cd4c0 pc=0x7ff68f70f3db
github.com/tinyzimmer/go-gst/gst.(*Object).GetName(0x7ff68f791564)
C:/Users/adam/go/src/pion/go-gst/gst/gst_object.go:40 +0x6c fp=0xc0000cd538 sp=0xc0000cd4f8 pc=0x7ff68f70f2cc
github.com/tinyzimmer/go-gst/gst.(*Message).String(0xc000032000)
C:/Users/adam/go/src/pion/go-gst/gst/gst_message_stringer.go:79 +0xd5a fp=0xc0000cd738 sp=0xc0000cd538 pc=0x7ff68f6fab1a
fmt.(*pp).handleMethods(0xc00008c8f0, 0xd0280)
C:/Program Files/Go/src/fmt/print.go:626 +0x383 fp=0xc0000cd9e8 sp=0xc0000cd738 pc=0x7ff68f6dae03
fmt.(*pp).printArg(0xc00008c8f0, {0x7ff68f786780, 0xc0000ce140}, 0x76)
C:/Program Files/Go/src/fmt/print.go:709 +0x693 fp=0xc0000cda88 sp=0xc0000cd9e8 pc=0x7ff68f6db9b3
fmt.(*pp).doPrintln(0xc00008c8f0, {0xc0000cdb88, 0x1, 0x0})
C:/Program Files/Go/src/fmt/print.go:1169 +0x149 fp=0xc0000cdaf8 sp=0xc0000cda88 pc=0x7ff68f6df149
fmt.Fprintln({0x7ff68f7bbe60, 0xc0000ce008}, {0xc0000cdb88, 0x1, 0x1})
C:/Program Files/Go/src/fmt/print.go:264 +0x4f fp=0xc0000cdb48 sp=0xc0000cdaf8 pc=0x7ff68f6d89cf
fmt.Println(...)
C:/Program Files/Go/src/fmt/print.go:274
main.runPipeline.func1(0xc0000ce140)
C:/Users/adam/go/src/pion/go-gst/examples/launch/main.go:46 +0x190 fp=0xc0000cdbe8 sp=0xc0000cdb48 pc=0x7ff68f719ad0
github.com/tinyzimmer/go-gst/gst.goBusFunc(0x1, 0x25e41518890, 0xc000032000)
C:/Users/adam/go/src/pion/go-gst/gst/cgo_exports.go:128 +0x7d fp=0xc0000cdc18 sp=0xc0000cdbe8 pc=0x7ff68f70455d
_cgoexp_aa7f20127082_goBusFunc(0xdff1fff7c0)
_cgo_gotypes.go:17353 +0x2c fp=0xc0000cdc40 sp=0xc0000cdc18 pc=0x7ff68f716bec
runtime.cgocallbackg1(0x7ff68f716bc0, 0xc0000cde00, 0x0)
C:/Program Files/Go/src/runtime/cgocall.go:306 +0x29a fp=0xc0000cdd10 sp=0xc0000cdc40 pc=0x7ff68f64479a
runtime.cgocallbackg(0xc000032000, 0x300000002, 0xc000032000)
C:/Program Files/Go/src/runtime/cgocall.go:232 +0x106 fp=0xc0000cdda8 sp=0xc0000cdd10 pc=0x7ff68f644426
runtime.cgocallbackg(0x7ff68f716bc0, 0xdff1fff7c0, 0x0)
:1 +0x36 fp=0xc0000cddd0 sp=0xc0000cdda8 pc=0x7ff68f6a2396
runtime.cgocallback(0x7ff68f6442ac, 0x7ff68f71c1f0, 0xc0000cde60)
C:/Program Files/Go/src/runtime/asm_amd64.s:915 +0xd7 fp=0xc0000cddf8 sp=0xc0000cddd0 pc=0x7ff68f6a0237
runtime.systemstack_switch()
C:/Program Files/Go/src/runtime/asm_amd64.s:350 fp=0xc0000cde00 sp=0xc0000cddf8 pc=0x7ff68f69e0e0
runtime.cgocall(0x7ff68f71c1f0, 0xc0000cde60)
C:/Program Files/Go/src/runtime/cgocall.go:166 +0xac fp=0xc0000cde38 sp=0xc0000cde00 pc=0x7ff68f6442ac
github.com/tinyzimmer/go-glib/glib._Cfunc_g_main_loop_run(0x25e1a435aa0)
_cgo_gotypes.go:2825 +0x52 fp=0xc0000cde60 sp=0xc0000cde38 pc=0x7ff68f6e3492
github.com/tinyzimmer/go-glib/glib.(*MainLoop).Run.func1(0xc0000ce070)
C:/Users/adam/go/pkg/mod/github.com/tinyzimmer/[email protected]/glib/gmainloop.go:53 +0x46 fp=0xc0000cde98 sp=0xc0000cde60 pc=0x7ff68f6e6e46
github.com/tinyzimmer/go-glib/glib.(*MainLoop).Run(0xc000088390)
C:/Users/adam/go/pkg/mod/github.com/tinyzimmer/[email protected]/glib/gmainloop.go:53 +0x19 fp=0xc0000cdeb0 sp=0xc0000cde98 pc=0x7ff68f6e6dd9
github.com/tinyzimmer/go-glib/glib.(*MainLoop).RunError(...)
C:/Users/adam/go/pkg/mod/github.com/tinyzimmer/[email protected]/glib/gmainloop.go:59
main.runPipeline(0xc0000aa300)
C:/Users/adam/go/src/pion/go-gst/examples/launch/main.go:55 +0x126 fp=0xc0000cdef8 sp=0xc0000cdeb0 pc=0x7ff68f7198c6
main.main.func1(0x25e1a42f380)
C:/Users/adam/go/src/pion/go-gst/examples/launch/main.go:60 +0x19 fp=0xc0000cdf10 sp=0xc0000cdef8 pc=0x7ff68f719b79
github.com/tinyzimmer/go-gst/examples.RunLoop(0x7ff68f79bb30)
C:/Users/adam/go/src/pion/go-gst/examples/common.go:28 +0x5d fp=0xc0000cdf68 sp=0xc0000cdf10 pc=0x7ff68f6ec7bd
main.main()
C:/Users/adam/go/src/pion/go-gst/examples/launch/main.go:59 +0x25 fp=0xc0000cdf80 sp=0xc0000cdf68 pc=0x7ff68f719b45
runtime.main()
C:/Program Files/Go/src/runtime/proc.go:255 +0x217 fp=0xc0000cdfe0 sp=0xc0000cdf80 pc=0x7ff68f678657
runtime.goexit()
C:/Program Files/Go/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc0000cdfe8 sp=0xc0000cdfe0 pc=0x7ff68f6a0481
rax 0x25e41571b00
rbx 0xfffffffffffffbff
rcx 0x2810
rdi 0x0
rsi 0x25e1a3a0000
rbp 0x0
rsp 0xdff1fff500
r8 0x7e684525
r9 0x0
r10 0x25e40ed0668
r11 0x0
r12 0x0
r13 0x25e41574320
r14 0x25e41574310
r15 0x1
rip 0x7ffd033d6c3b
rflags 0x10286
cs 0x33
fs 0x53
gs 0x2b
Gstreamer's documentation allowed set property "muxer' for elelment "splitmuxsink".
But I got error in this code example:
pipeline, _ := gst.NewPipeline("")
splitMux, _ := gst.NewElement("splitmuxsink")
mux, _ := gst.NewElement("mp4mux")
splitMux.Set("muxer", mux)
err: fatal error: checkptr: pointer arithmetic result points to invalid allocation
I have tried other uses as well:
splitMux.Set("muxer", mux.GObject())
splitMux.Set("muxer", *mux)
but I also get errors (but different ones)
Does this library allow me to do what I want? When using the C language, I can do this easily.
if err := sp.pipLine.SetState(gst.StatePlaying); err != nil {
zlog.Errorf(sp.Ctx, "set state playing error: %s", err.Error())
}
buf := gst.NewBufferWithSize(0)
if _, err := sp.appSrc.Emit("push-buffer", buf); err != nil {
zlog.Errorf(sp.Ctx, "push buffer error:%s", err.Error())
}
buf := gst.NewBufferWithSize(int64(len(data)))
buf.FillBytes(0, data)
if _, err := sp.appSrc.Emit("push-buffer", buf); err != nil {
zlog.Infof(sp.Ctx, "push-buffer err %s", err.Error())
}
log: "push buffer error invalid GValue "
Hello, I am attempting to do streaming uploads to gcp storage using an appsink. This code works with smaller files, however the appsink never writes until the EOS is received. I'm wondering if there is a way to make the appsink use the callback intermittently?
I assumed it was a queue/buffer issue and have messed with the sizing there, but no luck.
asink.SetCallbacks(&app.SinkCallbacks{
EOSFunc: func(sink *app.Sink) {
// Signal the pipeline that we've completed EOS.
// (this should not be required, need to investigate)
// pipeline.GetPipelineBus().Post(gst.NewEOSMessage(appSink))
},
NewSampleFunc: func(sink *app.Sink) gst.FlowReturn {
// Pull the sample that triggered this callback
sample := sink.PullSample()
if sample == nil {
return gst.FlowEOS
}
// Retrieve the buffer from the sample
buffer := sample.GetBuffer()
if buffer == nil {
return gst.FlowError
}
fmt.Printf("Writing chunk\n")
if _, err = io.Copy(wc, buffer.Reader()); err != nil {
fmt.Errorf("io.Copy: %v", err)
}
fmt.Printf("%v uploaded to %v.\n", object, bucket)
return gst.FlowOK
},
})
Thanks!
Wonderful project to learn and try gstreamer , more examples will be much appreciated .
Thanks
I'm getting a runtime error for an invalid memory address.
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x5d1e74]
goroutine 191 [running]:
github.com/tinyzimmer/go-gst/gst.(*Sample).Instance.func1(0xc001265ca0?)
/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_sample.go:34 +0x14
github.com/tinyzimmer/go-gst/gst.(*Sample).Instance(0x7f5b6804d350?)
/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_sample.go:34 +0x19
github.com/tinyzimmer/go-gst/gst.(*Sample).GetCaps.func1(0xc001265ec0?)
/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_sample.go:60 +0x19
github.com/tinyzimmer/go-gst/gst.(*Sample).GetCaps(0x4b78a5?)
/go/pkg/mod/github.com/tinyzimmer/[email protected]/gst/gst_sample.go:60 +0x19
Looking into gst_sample.go
line 34
and 60
is:
Line 34 here:
// Instance returns the underlying *GstSample instance. func (s *Sample) Instance() *C.GstSample { return C.toGstSample(unsafe.Pointer(s.sample)) }
Line 60 here:
// GetCaps returns the caps associated with this sample. Take a ref if you need to hold on to them // longer then the life of the sample. func (s *Sample) GetCaps() *Caps { return FromGstCapsUnsafeNone(unsafe.Pointer(C.gst_sample_get_caps(s.Instance()))) }
How is it possible that the line 34 and 60 is causing this? I haven't found a way to replicate it, but this happens after running my application after a few hours consistently.
I believe the lines of code that may cause the above is as follows:
go_sample := sink.PullSample()
go_caps_format := my_sample.GetCaps().GetStructureAt(0)
Hi, I really would like to contribute to this project, but I am fairly new to using cgo and to contributing on Github in general.
I am trying to implement the function gst_element_get_parent
or gst_element_get_parent
.
The reason is the following.
I have added an event probe to the pipeline and want to update a table with all the elements and the states.
The content of the table should look like this:
type GstElementState struct {
Pipeline string `json:"pipeline"`
ParentBin string `json:"parentBin"`
Element string `json:"element"`
OldState string `json:"oldState"`
NewState string `json:"newState"`
Timestamp string `json:"timestamp"`
}
parentBin should be the name of the parent of the element (if there is one).
For that matter, I've already added a Src method in gst_message.go
func (m *Message) Src() *Object { return wrapObject(toGObject(unsafe.Pointer(m.Instance().src))) }
This seems to work, although I am not sure if this is the right way to do it.
Then I tried to implement the gst_element_get_parent
but failed with:
could not determine kind of name for C.gst_element_get_parent
I guess this has something to do with the fact that this is c macro?
Then I tried to implement C.gst_object_get_parent like this:
func (e *Element) GetParent() *Element {
elem := C.gst_object_get_parent(e.Instance())
if elem == nil {
return nil
}
return FromGstElementUnsafeFull(unsafe.Pointer(elem))
}
But it seems there are type issues.
Some help would be much appreciated, even if it's just some links where to best learn more about this stuff.
Thanks!
There seems to be a memory leak (or unbounded memory growth) when using and appsink
element and mapping a new sample's buffer but not copying the data out. This can be reproduced using the appsink example, and changing to the videotestsrc
, as follows :
func createPipeline() (*gst.Pipeline, error) {
gst.Init(nil)
pipeline, err := gst.NewPipeline("")
if err != nil {
return nil, err
}
src, err := gst.NewElement("videotestsrc")
if err != nil {
return nil, err
}
// Should this actually be a *gst.Element that produces an Appsink interface like the
// rust examples?
sink, err := app.NewAppSink()
if err != nil {
return nil, err
}
pipeline.AddMany(src, sink.Element)
src.Link(sink.Element)
// Tell the appsink what format we want. It will then be the audiotestsrc's job to
// provide the format we request.
// This can be set after linking the two objects, because format negotiation between
// both elements will happen during pre-rolling of the pipeline.
sink.SetCaps(gst.NewCapsFromString(
"video/x-raw",
))
// Getting data out of the appsink is done by setting callbacks on it.
// The appsink will then call those handlers, as soon as data is available.
sink.SetCallbacks(&app.SinkCallbacks{
// Add a "new-sample" callback
NewSampleFunc: func(sink *app.Sink) gst.FlowReturn {
// Pull the sample that triggered this callback
sample := sink.PullSample()
if sample == nil {
return gst.FlowEOS
}
// Retrieve the buffer from the sample
buffer := sample.GetBuffer()
if buffer == nil {
return gst.FlowError
}
// At this point, buffer is only a reference to an existing memory region somewhere.
// When we want to access its content, we have to map it while requesting the required
// mode of access (read, read/write).
//
// We also know what format to expect because we set it with the caps. So we convert
// the map directly to signed 16-bit little-endian integers.
buffer.Map(gst.MapRead)
defer buffer.Unmap()
return gst.FlowOK
},
})
return pipeline, nil
}
The main change from this
samples := buffer.Map(gst.MapRead).AsInt16LESlice()
defer buffer.Unmap()
to this
buffer.Map(gst.MapRead)
defer buffer.Unmap()
By not calling AsInt16LESlice()
(or any of the other methods that make a copy of the data, e.g. Bytes()
), the memory will grow.
I'm trying to get zero-copy access to the underlying data, as follows:
mapinfo := buffer.Map(gst.MapRead)
defer buffer.Unmap()
data := unsafe.Slice((*byte)(mapinfo.Data()), mapinfo.Size())
i.e. at the end of an pipeline , i would display the results(video or audio) in a window with possible sinks (glimagesink possible ? ) rather than save it to disk .
thanks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.