Encoder.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. require( 'chai' ).should();
  2. var ogg = require( 'ogg' );
  3. var util = require( 'util' );
  4. var opus = require( '../' );
  5. var path = require( 'path' );
  6. var streamEqual = require( 'stream-equal' );
  7. var fs = require( 'fs' );
  8. describe( 'Encoder', function() {
  9. var SERIALNO = 1;
  10. [ 'random', 'sine' ].forEach( function( file ) {
  11. [ 8000, 48000 ].forEach( function( hz ) {
  12. [ 1, 2 ].forEach( function( channels ) {
  13. it( util.format(
  14. 'should encode %d Hz, %d channel %s audio',
  15. hz, channels, file ),
  16. function( done ) {
  17. var inputPath = path.join(
  18. path.basename( __dirname ),
  19. 'data',
  20. util.format( '%s.raw', file ) );
  21. var input = fs.createReadStream( inputPath );
  22. var refPath = path.join(
  23. path.basename( __dirname ),
  24. 'data',
  25. util.format( '%s-%d-%d-%d.opus',
  26. file, hz, channels, 20 ) );
  27. var reference = fs.createReadStream( refPath );
  28. var bytes = hz * 20 / 1000;
  29. var encoder = new opus.Encoder( hz, channels, bytes );
  30. var oggEncoder = new ogg.Encoder();
  31. input.pipe( encoder ).pipe( oggEncoder.stream( SERIALNO ) );
  32. streamEqual( oggEncoder, reference, function( err, equal ) {
  33. if( err )
  34. throw err;
  35. equal.should.be.true;
  36. done();
  37. } );
  38. } );
  39. } ) } ) } );
  40. } );