Skip to content

Commit

Permalink
Add ParseLaunch method
Browse files Browse the repository at this point in the history
  • Loading branch information
michalderkacz committed May 20, 2013
1 parent 57445c4 commit eb5ba67
Showing 1 changed file with 17 additions and 4 deletions.
21 changes: 17 additions & 4 deletions element.go
Expand Up @@ -7,8 +7,8 @@ package gst
import "C"

import (
"unsafe"
"github.com/ziutek/glib"
"unsafe"
)

type State C.GstState
Expand Down Expand Up @@ -103,15 +103,14 @@ func (e *Element) SetState(state State) StateChangeReturn {
return StateChangeReturn(C.gst_element_set_state(e.g(), C.GstState(state)))
}

func (e *Element) GetState(timeout_ns int64) (state, pending State,
ret StateChangeReturn) {
func (e *Element) GetState(timeout_ns int64) (state, pending State,
ret StateChangeReturn) {
ret = StateChangeReturn(C.gst_element_get_state(
e.g(), state.g(), pending.g(), C.GstClockTime(timeout_ns),
))
return
}


func (e *Element) AddPad(p *Pad) bool {
return C.gst_element_add_pad(e.g(), p.g()) != 0
}
Expand Down Expand Up @@ -160,3 +159,17 @@ func ElementFactoryMake(factory_name, name string) *Element {
e.SetPtr(glib.Pointer(C.gst_element_factory_make(fn, n)))
return e
}

func ParseLaunch(pipeline_description string) (*Element, error) {
pd := (*C.gchar)(C.CString(pipeline_description))
defer C.free(unsafe.Pointer(pd))
e := new(Element)
var Cerr *C.GError
e.SetPtr(glib.Pointer(C.gst_parse_launch(pd, &Cerr)))
if Cerr != nil {
err := *(*glib.Error)(unsafe.Pointer(Cerr))
C.g_error_free(Cerr)
return nil, &err
}
return e, nil
}

0 comments on commit eb5ba67

Please sign in to comment.