OggOpus/testvectors: Difference between revisions

From XiphWiki
Jump to navigation Jump to search
No edit summary
(Update proposed tests to match latest header ideas)
Line 3: Line 3:
* All test vectors should be chained files with at least two parts
* All test vectors should be chained files with at least two parts
** Chained file where the second link has no pregap and starts with inter frames (to ensure that decoder state is reset)
** Chained file where the second link has no pregap and starts with inter frames (to ensure that decoder state is reset)
* Pregap (set large pre-gap with a chime "if you just heard a chime, your player is broken")
* Pre-skip (set large pre-skip with a chime "if you just heard a chime, your player is broken")
* Multichannel
* Multichannel
** Multichannel stereo (e.g. mono+mono)
** Multichannel stereo (e.g. mono+mono)
** Multichannel w/pregap and random channel maps
** Multichannel w/pre-skip and random channel maps
** Multichannel with silent channels
** Multichannel with silent channels
** Multichannel with repeated channels (i.e. one stream used for multiple channels)
*** Totally silent multichannel  (Should this one be invalid?)
*** Totally silent multichannel  (Should this one be invalid?)
** Multichannel with 256 channels
** Multichannel with 256 channels
** Mapping tests for the Vorbis mappings (e.g. name of the speaker spoken by each speaker)
** Mapping tests for the Vorbis mappings (e.g. name of the speaker spoken by each speaker)
* Files with replaygain metadata (esp files which are obviously too quiet/loud without applying replaygain)
** Multiple identical ReplayGain comments in OpusTags
** matching unnormalized WAV output.
* Files with crazy input rate.
* Files with crazy input rate.
* Header-gain set very high with a very quiet input (silent if you don't implement header gain).
* Header-gain set very high with a very quiet input (silent if you don't implement header gain).
* Header-gain set very low with an input that will clip a decoder if the header gain is not done internally.
* Header-gain set very low with an input that will clip a decoder if the header gain is not done internally.
* Header-gain set very low, and R128_TRACK_GAIN to normalize it
** matching WAV outputs ... but matching to what?
* Single packet per page
* Single packet per page
* Utterly stuffed pages with constant continued pages
* Utterly stuffed pages with constant continued pages
Line 25: Line 25:
* OpusTags comment values containing very large nonsense comments, duplicate comment values etc.
* OpusTags comment values containing very large nonsense comments, duplicate comment values etc.


* Illegal test vectors that must fail
=== Illegal test vectors that MUST fail ===
** Zero streams (N=0)
* Zero streams (N=0)
** Too many two-output streams
* Too many two-output streams
*** M>N
** M>N
*** M<=N but M+N>255
** M<=N but M+N>255
** Channels mapped to nonexistent stream indices (255 > index >= M+N)
* Channels mapped to nonexistent stream indices (255 > index >= M+N)
** Illegal OpusTags comments
* Illegal OpusTags comments
*** Total length larger or shorter than the packet
** Total length larger or shorter than the packet
*** Illegal field names
** Illegal field names
*** Illegal field contents
** Illegal field contents
*** Illegal field (no "=")
** Illegal field (no "=")
*** Multiple conflicting ReplayGain comments
** Multiple R128_TRACK_GAIN comments (should this be required to fail?)
*** ReplayGain comments containing illegal values
** R128_TRACK_GAIN comments containing illegal values (should this be required to fail?)
**** Weird encodings of correct-looking values?
*** Non-ASCII encodings of correct-looking values
*All GP==0
*All GP==0

Revision as of 13:51, 17 August 2011

This page lists test vectors needed for OggOpus which are specific to the Ogg mapping (separate from the opus bitstream test vectors, though they do some bitstream testing as a side efffect)

  • All test vectors should be chained files with at least two parts
    • Chained file where the second link has no pregap and starts with inter frames (to ensure that decoder state is reset)
  • Pre-skip (set large pre-skip with a chime "if you just heard a chime, your player is broken")
  • Multichannel
    • Multichannel stereo (e.g. mono+mono)
    • Multichannel w/pre-skip and random channel maps
    • Multichannel with silent channels
    • Multichannel with repeated channels (i.e. one stream used for multiple channels)
      • Totally silent multichannel (Should this one be invalid?)
    • Multichannel with 256 channels
    • Mapping tests for the Vorbis mappings (e.g. name of the speaker spoken by each speaker)
  • Files with crazy input rate.
  • Header-gain set very high with a very quiet input (silent if you don't implement header gain).
  • Header-gain set very low with an input that will clip a decoder if the header gain is not done internally.
  • Header-gain set very low, and R128_TRACK_GAIN to normalize it
    • matching WAV outputs ... but matching to what?
  • Single packet per page
  • Utterly stuffed pages with constant continued pages
  • Pages whose contents are entirely and partially dropped frames (len=0) (maybe redundant with bitstream tests)
  • Files with chimes after the end (testing end length chopping)
  • File with all opus modes and frame sizes
  • Stereo files using many mono frames at the beginning/end
  • OpusTags comment values containing very large nonsense comments, duplicate comment values etc.

Illegal test vectors that MUST fail

  • Zero streams (N=0)
  • Too many two-output streams
    • M>N
    • M<=N but M+N>255
  • Channels mapped to nonexistent stream indices (255 > index >= M+N)
  • Illegal OpusTags comments
    • Total length larger or shorter than the packet
    • Illegal field names
    • Illegal field contents
    • Illegal field (no "=")
    • Multiple R128_TRACK_GAIN comments (should this be required to fail?)
    • R128_TRACK_GAIN comments containing illegal values (should this be required to fail?)
      • Non-ASCII encodings of correct-looking values
  • All GP==0