Code Monkey home page Code Monkey logo

jopus's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

jopus's Issues

Implement seeking

Opus supports some great seeking capabilities, but none of that is yet exposed. It would be best if this library were to support queries to "op_seekable", and "op_pcm_seek".Opus supports some great seeking capabilities, but none of that is yet exposed. It would be best if this library were to support queries to "op_seekable", and "op_pcm_seek".

Convert to one single shared object

Currently, the build process creates "libopus", "libopusfile" and "libjopus". jopus relies on the other two, but the other two are not used by anything else. Worse, the Android NDK process requires that shared libraries be built from very specific sources by the Android tool, so having three shared libraries is impractical at best.

Instead, the build process ought to create a single "libjopus", which includes all the code from opusfile and opus.

Implement HTTP streaming

libopusfile (which this library depends heavily upon) supports "op_open_http", which reads compressed Opus data from an abstract HTTP/1.1+ URL. This allows really cool cases where an HTTP stream is downloaded and decoded on-the-fly, rather than requiring it be on file.

This library ought to have an interface "OpusSource" defined, which specifies an "open", "read", "getFormat", "getSamples", and "close" methods. JOpusFile ought to implement that interface, and so too should another implementation which uses op_open_http.

Implement streaming from memory

libopusfile (which this library depends heavily upon) supports "op_open_memory", which reads compressed Opus data directly from a memory stream. This allows much greater flexibility for downstream caching or live-consumption.

This library ought to have an interface "OpusSource" defined, which specifies an "open", "read", "getFormat", "getSamples", and "close" methods. JOpusFile ought to implement that interface, and so too should another implementation which uses op_open_memory.

Subclassing OpusDecodable

Hi!

I am receiving an Opus stream on a Java server (through a WebSocket) and I want do decode it in realtime.

So can I just subclass OpusDecodable and implement read() and close()? It seems like it to me but I'm not sure about things like wrapperPointer.

Thanks for advice

Edit: Oh, seems I completely misunderstood the read() method. I thought it gets a byte from a stream but it does something else completely...

Add Windows build script

Right now, only POSIX-compliant systems can build this package. That's fine for most applications, but if someone really wants to ship to clients, Windows support is a must.

Add in steps to compile via mingw gcc and dllwrap.

Implement missing metadata

This library pulls some information from OpusHead for use in constructing an AudioFormat object that describes the Opus stream. But there is other information which is useful to consumers, notably "version", and "stream_count".

It's also advisable to expose wrapper methods for the following native functions (see this link)

"op_raw_total"
"op_pcm_total"
"op_bitrate" / "op_bitrate_instant"

Implement tag support

Opus files can have metadata tags associated with them - typically for purposes like tagging track #, artist, genre, album, cover art, etc. opusfile supports reading this data, but this library doesn't yet wrap that functionality.

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.