OpusTodo: Difference between revisions

From XiphWiki
Jump to navigation Jump to search
(update for 1.1.2)
Line 12: Line 12:
== Website ==
== Website ==
* De-uglify webpage - some suggestions:
* De-uglify webpage - some suggestions:
** write about codecs obsoleted by OPUS (Speex, CELT, Vorbis(?), and the prop. ones)
** write about codecs obsoleted by OPUS (Speex, CELT, Vorbis(?) and the proprietary ones)
** write about implementations (libopus encoder/decoder, libavcodec decoder, any others?)
** write about implementations (libopus encoder/decoder, libavcodec decoder, any others?)
** comparison table (Opus, Vorbis, Speex, ..., MP5) of features (channels, freq, bits per sample, license, language (C89), integer impl. (Vorbis decoder only, Opus YES, ...)
** [https://en.wikipedia.org/wiki/Comparison_of_audio_coding_formats audio codec comparison table] (Opus, Vorbis, Speex, ..., MP5) of features (channels, freq, bits per sample, license, language (C89), integer impl. (Vorbis decoder only, Opus YES, ...)
** future use in video files (Theora? Dirac? WebM? other future codecs...)
** future use in video files (Theora? Dirac? WebM? other future codecs...)
** audio files for storage (like Vorbis, no raw Opus defined, only inside OGG), ...  
** audio files for storage (like Vorbis, no raw Opus defined, only inside OGG), ...  

Revision as of 03:09, 13 January 2016

For 1.1.3

  • aarch64 and AVX optimizations

For 1.2

  • Low bitrate quality improvements

Spec

  • Ogg mapping. See [IETF draft]
  • Matroska mapping. See: MatroskaOpus And firefox/ffmpeg implementation
  • RTP payload format. Mono/stereo mapping is complete [RFC 7587], no multichannel mapping yet.

Website

  • De-uglify webpage - some suggestions:
    • write about codecs obsoleted by OPUS (Speex, CELT, Vorbis(?) and the proprietary ones)
    • write about implementations (libopus encoder/decoder, libavcodec decoder, any others?)
    • audio codec comparison table (Opus, Vorbis, Speex, ..., MP5) of features (channels, freq, bits per sample, license, language (C89), integer impl. (Vorbis decoder only, Opus YES, ...)
    • future use in video files (Theora? Dirac? WebM? other future codecs...)
    • audio files for storage (like Vorbis, no raw Opus defined, only inside OGG), ...
  • Promotional material (some nice free/public-domain sounds/radio stations in Opus format)

Other

  • Oggz-validate (should also validate opus toc)

Opus-tools

  • Port opusdec to libopusfile/libopusurl.
  • A simple real time streaming example tool
    • Start with opusrtp.c in opus-tools
    • Make opusrtp rtp://example.com:5431/ listen to that host and port and mux packets from there. Generalize the cpac bases --sniff implementation
    • Make sending similarly generic. Maybe just opusrtp source.opus -o rtp://example.com:5431/ to send source.opus out to the destination?
    • Make --sniff save one file per
    • Implement DTLS-SRTP. See webrtc.
    • audio capture/encode, decode/playback?
    • Parse and act on sdp for convenience and testing.
  • EBU R128/Replaygain (half done— needs a gain tool)

Surround work

  • Apply spreading to energy masking
  • More conservative energy masking (not just mean difference) and dynalloc
  • Allow SILK/hybrid on center channel for voice?

Psychoacoustic stuff

  • Adaptive width narrowing and forced intensity stereo bands

Optimisations

  • Vectorising comb_filter()
  • Use 16-bit mul plus shift in denormalise_bands()
  • Optimise MDCT somehow

Third-Party tool enhancements

Future work

  • psymodel based VBR
  • Remove copy in inverse MDCT
  • Save some float<->int conversions
  • Improvements to LP mode CBR (greg has some code)
  • Unconstrained SILK VBR
  • Better handling for the case where FEC has a different bandwidth than the current mode
  • PLC transitions on unprotected SILK-SILK bandwidth changes?
  • Figure out how to use speech/music detection optimally
    • find optimal switching time (low energy/tonality)
  • Improve variable frame size