OggOpus/testvectors

From XiphWiki
Revision as of 15:47, 25 April 2016 by Derf (talk | contribs) (Comment data shorter than the packet is allowed (RFC 7845 Section 5.2))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to 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)

Greg is collecting a draft file set at https://people.xiph.org/~greg/opus_testvectors/


  • 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 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
  • first data granulepos too small
  • preskip > final granulepos