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