diff options
author | methodus <methodus@web.de> | 2012-10-27 06:43:02 +0200 |
---|---|---|
committer | methodus <methodus@web.de> | 2012-10-27 06:43:02 +0200 |
commit | 1b5a8fd308b133924f59210509e2bc822f57c2e0 (patch) | |
tree | 5ea28162a5e2eca4945cd6588d3eff18aa80e26b | |
parent | f998c951d2a67fd6cdff53c0bd3eef90560331e4 (diff) | |
download | vdr-plugin-upnp-1b5a8fd308b133924f59210509e2bc822f57c2e0.tar.gz vdr-plugin-upnp-1b5a8fd308b133924f59210509e2bc822f57c2e0.tar.bz2 |
Fixed seeking in recordings with more than one file.
-rw-r--r-- | httptnt/resourceStreamer.ecpp | 2 | ||||
-rw-r--r-- | plugins/provider/recProvider/recProvider.cpp | 21 |
2 files changed, 9 insertions, 14 deletions
diff --git a/httptnt/resourceStreamer.ecpp b/httptnt/resourceStreamer.ecpp index ecb3eae..9579fe6 100644 --- a/httptnt/resourceStreamer.ecpp +++ b/httptnt/resourceStreamer.ecpp @@ -67,8 +67,6 @@ int doRequest(tnt::HttpReply reply, tnt::HttpRequest request, std::string object if(to <= 0 || to > contentLength) to = contentLength; length = to - from; hasRange = true; - - cerr << from << " - " << to << "/" << contentLength << endl; std::stringstream contentRangeHeader; contentRangeHeader << "bytes " << from << "-" << to << "/" << contentLength; diff --git a/plugins/provider/recProvider/recProvider.cpp b/plugins/provider/recProvider/recProvider.cpp index 4e331bf..22fc5eb 100644 --- a/plugins/provider/recProvider/recProvider.cpp +++ b/plugins/provider/recProvider/recProvider.cpp @@ -238,20 +238,17 @@ public: return false; } - if(!OpenFile(1)) return false; - size_t size = 0; - while(true){ - fseek(fileFD, 0, SEEK_END); - size = ftell(fileFD); - if(offset < size){ - return fseek(fileFD, offset, SEEK_SET) == 0; - } else { - offset -= size; - if(OpenNext()) return false; - } + unsigned int i = 0; + for(; i < offsets.size(); ++i){ + if(offset < offsets[i]) + break; + else + offset -= offsets[i]; } + if(i >= offsets.size()) return false; + if(!OpenFile(i+1)) return false; - return false; + return fseek(fileFD, offset, SEEK_SET) == 0; } |