/src/main/scala/dk/mehmedbasic/audiobook/conversion/ConverterFactory.scala
Scala | 44 lines | 29 code | 9 blank | 6 comment | 3 complexity | debdeb7e84a628523f1c69fc375fed80 MD5 | raw file
- package dk.mehmedbasic.audiobook.conversion
- import java.io.{FileInputStream, BufferedInputStream, File}
- import javazoom.jl.decoder.{Header, Bitstream}
- /**
- * A factory for creating converters.
- *
- * @author Jesenko Mehmedbasic
- * created 19-01-13, 14:21
- */
- class ConverterFactory(inputFile: File, finishListener: (String, File) => Unit) {
- val conversionType: ConversionType = ConversionType.Joining
- def determineConfig(file: File): AudioConfig = {
- try {
- val sourceStream: BufferedInputStream = new BufferedInputStream(new FileInputStream(file))
- val stream: Bitstream = new Bitstream(sourceStream)
- val header: Header = stream.readFrame
- val channels = if ((header.mode == Header.SINGLE_CHANNEL)) {
- 1
- } else {
- 2
- }
- stream.close()
- AudioConfig(channels, header.frequency())
- } catch {
- case e: Exception => {
- throw new RuntimeException(e)
- }
- }
- }
- def createConverter(): Runnable = {
- val config: AudioConfig = determineConfig(inputFile)
- val inputAudio: AudioFile = new AudioFile(inputFile, config)
- new JoiningAudioConverter(inputAudio, config, finishListener)
- }
- }