GithubHelp home page GithubHelp logo

Comments (1)

lherman-cs avatar lherman-cs commented on August 19, 2024

@at-wat about this issue, I was thinking to create a meta transformer which will return the same data, but it'll listen to changes in the data itself, and will inform the caller through a callback. So, in a sketch, it will like like the following:

// not really sure what to call this..
type VideoPropertyOnChange func(prev, current prop.Media)

func NewVideoPropertyListener(onChange VideoPropertyOnChange) video.TransformFunc {
  var prevProp, currentProp prop.Media
  return video.TransformFunc(func(r video.Reader) video.Reader {
    return func() (img image.Image, err error) {
      img, err = r.Read()
      if err == nil {
        // detect changes here
        // store the currentProp to preProp, and get the currentProp
        onChange(prevProp, currentProp)
      }
      return
    }
  })
}

For getting the first property, the caller just needs to wait for the first callback to get called. Since the data flows after the callback is called, the caller will have a chance to pre-setup things. A useful thing from this property is probably when we want to adjust an encoder. Instead of initializing the encoder manually, we would simply listen to this callback and have a flag to mark the first callback. For the rest of callbacks, it would be just adjusting the existing encoding session.

Overall, I think this approach is somewhat similar to Gstreamer's Autoplugging, https://gstreamer.freedesktop.org/documentation/application-development/advanced/autoplugging.html?gi-language=python.

What do you think about this approach?

from mediadevices.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.