From XiphWiki
< OggOpus
Revision as of 15:02, 9 December 2011 by Rillian (talk | contribs) (Note we should test duration calculation features)
Jump to: navigation, search

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
      • Totally silent multichannel (Should this one be invalid?)
    • Multichannel with repeated channels (i.e. one stream used for multiple channels)
    • 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.
  • Files with non-zero initial granulepos, pre-skip, trimmed last page to check duration calculation

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