summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormethodus <methodus@web.de>2012-10-27 06:43:02 +0200
committermethodus <methodus@web.de>2012-10-27 06:43:02 +0200
commit1b5a8fd308b133924f59210509e2bc822f57c2e0 (patch)
tree5ea28162a5e2eca4945cd6588d3eff18aa80e26b
parentf998c951d2a67fd6cdff53c0bd3eef90560331e4 (diff)
downloadvdr-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.ecpp2
-rw-r--r--plugins/provider/recProvider/recProvider.cpp21
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;
}