1 #include "output-drv.hpp"
8 class output_driver_rawaudio
: public output_driver
11 output_driver_rawaudio(const std::string
& filename
)
14 out
= fopen(filename
.c_str(), "wb");
18 throw std::runtime_error("Unable to open output file");
19 set_audio_callback
<output_driver_rawaudio
>(*this, &output_driver_rawaudio::audio_callback
);
22 ~output_driver_rawaudio()
31 void audio_callback(short left
, short right
)
34 rawdata
[1] = ((unsigned short)left
>> 8) & 0xFF;
35 rawdata
[0] = ((unsigned short)left
) & 0xFF;
36 rawdata
[3] = ((unsigned short)right
>> 8) & 0xFF;
37 rawdata
[2] = ((unsigned short)right
) & 0xFF;
38 if(fwrite(rawdata
, 1, 4, out
) < 4)
39 throw std::runtime_error("Error writing sample to file");
45 class output_driver_rawaudio_factory
: output_driver_factory
48 output_driver_rawaudio_factory()
49 : output_driver_factory("rawaudio")
53 output_driver
& make(const std::string
& type
, const std::string
& name
, const std::string
& parameters
)
56 throw std::runtime_error("rawaudio output does not take parameters");
57 return *new output_driver_rawaudio(name
);