summaryrefslogtreecommitdiff
path: root/music.cpp
diff options
context:
space:
mode:
authorJon Bergli Heier <snakebite@jvnv.net>2011-01-02 22:17:26 +0100
committerJon Bergli Heier <snakebite@jvnv.net>2011-01-02 22:17:40 +0100
commit237c3e226b7c2ac391b0e8d354e5fc6f587a41ba (patch)
treee1f0c89792e2baccb1d1ed21b913445d6e330715 /music.cpp
parentb72175dab679c14be80b6e5db7129f8d3b518079 (diff)
Use a filtering_istream with custom filters to chain file -> decoder -> encoder.
Diffstat (limited to 'music.cpp')
-rw-r--r--music.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/music.cpp b/music.cpp
index ec2f537..9892526 100644
--- a/music.cpp
+++ b/music.cpp
@@ -132,16 +132,15 @@ void MusicTrack::render(HTTP::Connection::p req, HTTPResponse& res) {
Tag *t = new ID3Tag(path.string());
delete t;
- fs::ifstream is(path, std::ios::binary | std::ios::in);
-
if(req->args.count("decoder") && req->args.count("encoder")) {
DecoderBase *d = decoder::get_decoder(req->args["decoder"]);
EncoderBase *e = encoder::get_encoder(req->args["encoder"]);
- Transcoder t(is, res, *d, *e);
+ Transcoder t(path.string(), res, *d, *e);
t.run();
delete d;
delete e;
} else {
+ fs::ifstream is(path, std::ios::in | std::ios::binary);
is.seekg(0, std::ios::end);
res.add_header("content-length", boost::str(boost::format("%d") % is.tellg()));
is.seekg(0, std::ios::beg);