OpusTodo: Difference between revisions

From XiphWiki
Jump to navigation Jump to search
No edit summary
(→‎Experiments: I believe these branches are obsolete post-1.1)
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== For 1.1-final ==
== For 1.1.1 ==
 
* Unconstrained SILK VBR
* Surround improvements
** Stand-alone MDCT
** Better channel masking
** Per-channel surround mode selection (i.e. allow SILK mode for centre channel)
* ARM/Neon optimizations
* Make tonality analysis available in fixed point (even if code is still float)
* Testing, especially
** CVBR
** Smaller frame sizes


== Spec ==
== Spec ==
* Ogg mapping. See [[http://tools.ietf.org/html/draft-ietf-codec-oggopus IETF draft]]
* Ogg mapping. See [[http://tools.ietf.org/html/draft-ietf-codec-oggopus IETF draft]]
* Matroska mapping. See: [[MatroskaOpus]]
* Matroska mapping. See: [[MatroskaOpus]] And firefox/ffmpeg implementation
* RTP payload format See [[http://tools.ietf.org/html/draft-spittka-payload-rtp-opus IETF draft]]
* RTP payload format See [[http://tools.ietf.org/html/draft-spittka-payload-rtp-opus IETF draft]]


Line 25: Line 16:


== Opus-tools ==
== Opus-tools ==
* Port opusdec to libopusfile/libopusurl.
* A simple real time streaming example tool
* A simple real time streaming example tool
** Start with opusrtp.c in [https://git.xiph.org/?p=opus-tools.git opus-tools]
** Start with opusrtp.c in [https://git.xiph.org/?p=opus-tools.git opus-tools]
Line 45: Line 37:


* Adaptive width narrowing and forced intensity stereo bands
* Adaptive width narrowing and forced intensity stereo bands
== Experiments ==
* Test exp_analysis and void_my_warranty.patch


== Optimisations ==
== Optimisations ==
Line 55: Line 43:
* Use 16-bit mul plus shift in denormalise_bands()
* Use 16-bit mul plus shift in denormalise_bands()
* Optimise MDCT somehow
* Optimise MDCT somehow
* Merge ARM optimisations
* Merge MIPS optimisations


== Future work ==
== Future work ==

Revision as of 09:50, 27 January 2014

For 1.1.1

  • Unconstrained SILK VBR

Spec

Website

  • De-uglify webpage - some suggestions: write about codecs obsoleted by OPUS (Speex, CELT, Vorbis(?), and the prop. ones), write about implementations (is there only one so far?), 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 or Public domain sounds 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.
  • 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
  • Merge MIPS optimisations

Future work

  • psymodel based VBR
  • Remove copy in inverse MDCT
  • Save some float<->int conversions
  • Improvements to LP mode CBR (greg has some code)
  • 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