!7 set flag OpusFromStream_debug. set flag OggStreamPage_debug. cm TestOpusFromStream > DynPrintLog { S oggSnippetID = #1400517; transient SimulatedPartialInputStream in; transient OpusFromStream opusReader; transient L samples; // We simulate bytes trickling in with these variables switchable int firstChunk = 0; switchable int chunkSize = 512; start-thread { File f = loadLibrary(#1400517); printFileInfo(f); in = new SimulatedPartialInputStream(bufferedFileInputStream(f, OpusFromStream.bufferSizeNeeded())); in.cutOffPoint = firstChunk; samples = new L; temp opusReader = new OpusFromStream(in, 1); int safety = 0; while true { if (safety++ >= 1000) fail("SAFETY"); var samples = opusReader.nextSamples(); if (samples == null && in.streamEnded()) { print("Stream ended: " + in); break; } if (samples == null) in.cutOffPoint += chunkSize; print("samples", samples); addIfNotNull(TestOpusFromStream.this.samples, samples); } print("Iterations: " + safety); File wavFile = programFile("output.wav"); multiShortArraysToWAVE(samples, wavFile, format := javaSound_opusMono()); printFileInfo(wavFile); assertEqualsVerbose(355244L, fileSize(wavFile)); showGraph(); } void showGraph { var pcm = random(samples); if (empty(pcm)) ret; print("Chose PCM: " + l(pcm)); dm_showImageAs("Decoded Audio Sample", shortArrayToGraph(pcm)); } }