Difference between revisions of "OpusTodo"

From XiphWiki
Jump to: navigation, search
(38 intermediate revisions by 6 users not shown)
Line 1: Line 1:
== Code ==
+
== 1.1-beta ==
  
=== For IETF draft ===
+
* Tune mode switching decisions
* Code cleanup (any left?)
+
** Use SILK up to higher rates on voice
* Multi-channel signalling (done, needs more testing)
+
** Adapt stereo SILK/CELT threshold based on stereo width
* Make opus-compare fail for single seriously trashed frames
+
* Tune hybrid rate allocation
 +
* Figure out how to use speech/music detection optimally
 +
** find optimal switching time (low energy/tonality)
 +
* Improve variable frame size
 +
* Tune transient detector?
 +
* Use ALLOC in tonality analysis
 +
* LOTS of testing
  
== SILK issues ==
+
== Lower priority ==
* CLANG ARITHMETIC UNDEFINED at <silk/decode_core.c, (108:40)> : Op: *, Reason : Signed Multiplication Overflow, BINARY OPERATION: left (int32): 916258817 right (int32): -3
+
* CLANG ARITHMETIC UNDEFINED at <silk/decode_core.c, (108:40)> : Op: +, Reason : Signed Addition Overflow, BINARY OPERATION: left (int32): -418535217 right (int32): -1832517634
+
<!-- ./test_opus voip 48000 2 32000 -bandwidth WB -framesize 10 /home/gmaxwell/big-fb.sw /dev/null -->
+
* CLANG ARITHMETIC UNDEFINED at <silk/LPC_analysis_filter.c, (68:25)> : Op: +, Reason : Signed Addition Overflow, BINARY OPERATION: left (int32): -2053682997 right (int32): -96356645
+
* CLANG ARITHMETIC UNDEFINED at <silk/LPC_analysis_filter.c, (67:25)> : Op: +, Reason : Signed Addition Overflow, BINARY OPERATION: left (int32): 2144927654 right (int32): 9275188
+
* CLANG ARITHMETIC UNDEFINED at <silk/LPC_analysis_filter.c, (63:21)> : Op: +, Reason : Signed Addition Overflow, BINARY OPERATION: left (int32): -1503335005 right (int32): -978520921
+
* CLANG ARITHMETIC UNDEFINED at <silk/LPC_analysis_filter.c, (64:21)> : Op: +, Reason : Signed Addition Overflow, BINARY OPERATION: left (int32): 1813111370 right (int32): 545673470
+
* CLANG ARITHMETIC UNDEFINED at <silk/LPC_analysis_filter.c, (65:21)> : Op: +, Reason : Signed Addition Overflow, BINARY OPERATION: left (int32): 2121005902 right (int32): 274731600
+
* CLANG ARITHMETIC UNDEFINED at <silk/LPC_analysis_filter.c, (72:21)> : Op: -, Reason : Signed Subtraction Overflow, BINARY OPERATION: left (int32): -79495168 right (int32): 2131398803
+
<!-- voip 16000 2 16000 -framesize 20 /home/gmaxwell/big-fb.sw /dev/null -->
+
* silk warning: comparison is always true due to limited range of data type with assert
+
* Activity interface / silk_toc (currently unreachable)
+
  
=== Later ===
+
* Handle packets with PLC frames followed by FEC
* Usable command-line tools (<s>opus is a major regression from libcelt right now</s>)
+
* Better handling for the case where FEC has a different bandwidth than the current mode
* Smart automatic mode decision
+
* PLC transitions on unprotected SILK-SILK bandwidth changes?
* psymodel based VBR
+
* Remove copy in inverse MDCT
+
* Save some float<->int conversions
+
  
 
== Spec ==
 
== Spec ==
 +
* Ogg mapping. See [[http://tools.ietf.org/html/draft-ietf-codec-oggopus IETF draft]]
 +
* Matroska mapping. See: [[MatroskaOpus]]
 +
* RTP payload format See [[http://tools.ietf.org/html/draft-spittka-payload-rtp-opus IETF draft]]
  
* Finish codec draft
+
== Website ==
* Ogg mapping (including multi-channel). See: [[OggOpus]]
+
* 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), ...  
* RTP payload format
+
* Promotional material (some nice free or Public domain sounds in Opus format)
  
 
== Other ==
 
== Other ==
  
* Logo
 
* Test vectors
 
* Listening tests
 
* Documentation (at a minimum every exported symbol should have complete and accurate documentation)
 
* Add content to opus-codec.org
 
 
* Oggz-validate (should also validate opus toc)
 
* Oggz-validate (should also validate opus toc)
** The above documentation
 
** Presentations
 
** Examples and test results  (hyperlink to Monty's demo, gmaxwell's HA results page, etc)
 
* Useful example software (e.g. streaming software that works correctly) (opus-tools in xiph git)
 
** <s>Support for resampling in tools</s>
 
  
== Third party software ==
+
== Opus-tools ==
* Support in ekiga
+
* A simple real time streaming example tool
* Support in mumble
+
* Replaygain (half done— needs a gain tool)
* Support in asterisk
+
 
* Support in firefox (rtcweb and in ogg)
+
== Experiments ==
* Support in VLC
+
 
* Support in ogg123
+
* Test exp_analysis and void_my_warranty.patch
* Support in ffmpeg
+
 
* Support in rockbox
+
 
* Support in foobar2000
+
== Future work ==
* Support in gstreamer
+
* Smart automatic mode decision
* Support in mplayer
+
* psymodel based VBR
* Support in xmms
+
* Remove copy in inverse MDCT
* Support in oggdsf
+
* Save some float<->int conversions
* Support in xiphqt
+
* Improvements to LP mode CBR (greg has some code)

Revision as of 10:58, 12 March 2013

1.1-beta

  • Tune mode switching decisions
    • Use SILK up to higher rates on voice
    • Adapt stereo SILK/CELT threshold based on stereo width
  • Tune hybrid rate allocation
  • Figure out how to use speech/music detection optimally
    • find optimal switching time (low energy/tonality)
  • Improve variable frame size
  • Tune transient detector?
  • Use ALLOC in tonality analysis
  • LOTS of testing

Lower priority

  • Handle packets with PLC frames followed by FEC
  • Better handling for the case where FEC has a different bandwidth than the current mode
  • PLC transitions on unprotected SILK-SILK bandwidth changes?

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

  • A simple real time streaming example tool
  • Replaygain (half done— needs a gain tool)

Experiments

  • Test exp_analysis and void_my_warranty.patch


Future work

  • Smart automatic mode decision
  • psymodel based VBR
  • Remove copy in inverse MDCT
  • Save some float<->int conversions
  • Improvements to LP mode CBR (greg has some code)