diff --git a/examples/decodebin/main.go b/examples/decodebin/main.go index d4c71e9..bfa6ce6 100644 --- a/examples/decodebin/main.go +++ b/examples/decodebin/main.go @@ -135,8 +135,11 @@ func handleMessage(msg *gst.Message) error { return nil } -func runPipeline(pipeline *gst.Pipeline) error { +func runPipeline(loop *gst.MainLoop, pipeline *gst.Pipeline) error { + defer loop.Quit() + pipeline.SetState(gst.StatePlaying) + defer pipeline.Destroy() bus := pipeline.GetPipelineBus() @@ -165,6 +168,6 @@ func main() { if err != nil { return err } - return runPipeline(pipeline) + return runPipeline(loop, pipeline) }) } diff --git a/gst/gst_structure.go b/gst/gst_structure.go index a0e3ec3..db10d61 100644 --- a/gst/gst_structure.go +++ b/gst/gst_structure.go @@ -15,6 +15,7 @@ import "C" import ( "errors" "fmt" + "os" "reflect" "sync" "unsafe" @@ -67,7 +68,9 @@ func MarshalStructure(data interface{}) *Structure { for i := 0; i < valsOf.NumField(); i++ { gval := valsOf.Field(i).Interface() fieldName := typeOf.Field(i).Name - st.SetValue(fieldName, gval) + if err := st.SetValue(fieldName, gval); err != nil { + fmt.Fprintf(os.Stderr, "Failed to set %v for %s", gval, fieldName) + } } return st }