diff --git a/examples/appsink/main.go b/examples/appsink/main.go index f11731e..0a13f75 100644 --- a/examples/appsink/main.go +++ b/examples/appsink/main.go @@ -23,6 +23,8 @@ func createPipeline() (*gst.Pipeline, error) { 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 diff --git a/examples/appsrc/main.go b/examples/appsrc/main.go new file mode 100644 index 0000000..776a4f0 --- /dev/null +++ b/examples/appsrc/main.go @@ -0,0 +1,41 @@ +package main + +import ( + "github.com/tinyzimmer/go-gst/gst" + "github.com/tinyzimmer/go-gst/gst/app" +) + +func createPipeline() (*gst.Pipeline, error) { + gst.Init(nil) + + pipeline, err := gst.NewPipeline("") + if err != nil { + return nil, err + } + + // Should this actually be a *gst.Element that produces an Appsrc interface like the + // rust examples? + src, err := app.NewAppSrc() + if err != nil { + return nil, err + } + + elems, err := gst.NewElementMany("videoconvert", "autovideosink") + if err != nil { + return nil, err + } + + // Place the app source at the top of the element list for linking + elems = append([]*gst.Element{src.Element}, elems...) + + pipeline.AddMany(elems...) + gst.ElementLinkMany(elems...) + + // TODO: need to implement video + + return pipeline, nil +} + +func main() { + +}