PageRenderTime 40ms CodeModel.GetById 14ms RepoModel.GetById 1ms app.codeStats 0ms

/src/main/scala/dk/mehmedbasic/audiobook/conversion/ConverterFactory.scala

https://bitbucket.org/mehmedbasic/scalaudiobookconverter
Scala | 44 lines | 29 code | 9 blank | 6 comment | 3 complexity | debdeb7e84a628523f1c69fc375fed80 MD5 | raw file
  1. package dk.mehmedbasic.audiobook.conversion
  2. import java.io.{FileInputStream, BufferedInputStream, File}
  3. import javazoom.jl.decoder.{Header, Bitstream}
  4. /**
  5. * A factory for creating converters.
  6. *
  7. * @author Jesenko Mehmedbasic
  8. * created 19-01-13, 14:21
  9. */
  10. class ConverterFactory(inputFile: File, finishListener: (String, File) => Unit) {
  11. val conversionType: ConversionType = ConversionType.Joining
  12. def determineConfig(file: File): AudioConfig = {
  13. try {
  14. val sourceStream: BufferedInputStream = new BufferedInputStream(new FileInputStream(file))
  15. val stream: Bitstream = new Bitstream(sourceStream)
  16. val header: Header = stream.readFrame
  17. val channels = if ((header.mode == Header.SINGLE_CHANNEL)) {
  18. 1
  19. } else {
  20. 2
  21. }
  22. stream.close()
  23. AudioConfig(channels, header.frequency())
  24. } catch {
  25. case e: Exception => {
  26. throw new RuntimeException(e)
  27. }
  28. }
  29. }
  30. def createConverter(): Runnable = {
  31. val config: AudioConfig = determineConfig(inputFile)
  32. val inputAudio: AudioFile = new AudioFile(inputFile, config)
  33. new JoiningAudioConverter(inputAudio, config, finishListener)
  34. }
  35. }