summaryrefslogtreecommitdiff
path: root/plugins/provider/recProvider
diff options
context:
space:
mode:
authormethodus <methodus@web.de>2012-10-15 07:31:26 +0200
committermethodus <methodus@web.de>2012-10-15 07:31:26 +0200
commit6ceb9fdba8785f791b790e0a987a4bfea5cf431d (patch)
treef808c350599b36a37cadf19b3ad913aa1053267e /plugins/provider/recProvider
parente57c713c24464c73f6cccf0d042b8e63688a65b7 (diff)
downloadvdr-plugin-upnp-6ceb9fdba8785f791b790e0a987a4bfea5cf431d.tar.gz
vdr-plugin-upnp-6ceb9fdba8785f791b790e0a987a4bfea5cf431d.tar.bz2
First success to stream recordings. However, seeking and different play speeds do not work, yet.
Diffstat (limited to 'plugins/provider/recProvider')
-rw-r--r--plugins/provider/recProvider/recProvider.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/plugins/provider/recProvider/recProvider.cpp b/plugins/provider/recProvider/recProvider.cpp
index 55d465c..c7e5b1e 100644
--- a/plugins/provider/recProvider/recProvider.cpp
+++ b/plugins/provider/recProvider/recProvider.cpp
@@ -57,25 +57,23 @@ private:
}
bool OpenFile(int i = 1){
- static int fileNumber = i;
-
- if(fileNumber != i && fileFD){
+ if(currentFileNumber != i && fileFD){
CloseFile();
}
char fileBuf[1024]; strncpy(fileBuf, filename.c_str(), 1024);
char* pFileNumber = fileBuf + strlen(fileBuf);
- sprintf(pFileNumber, "/%05d.ts", fileNumber);
+ sprintf(pFileNumber, "/%05d.ts", i);
fileFD = fopen(fileBuf, "r");
if(!fileFD) return false;
-
currentFileNumber = i;
+
return true;
}
bool OpenNext(){
- return OpenFile(++currentFileNumber);
+ return OpenFile(currentFileNumber+1);
}
bool ScanFiles(){
@@ -93,6 +91,7 @@ public:
RecProvider()
: fileFD(NULL)
, currentFileNumber(1)
+ , lastFileNumber(1)
, offsets(65536)
{
}
@@ -189,8 +188,12 @@ public:
return true;
}
+ virtual bool Seekable() const {
+ return true;
+ }
+
virtual bool Open(const string& uri){
- filename = uri.substr(6);
+ filename = string(VideoDirectory) + "/" + uri.substr(6);
currentFileNumber = 1;
return ScanFiles();
}
@@ -198,13 +201,11 @@ public:
virtual size_t Read(char* buf, size_t bufLen){
if(!fileFD) return -1;
- char secondBuf[bufLen];
-
size_t bytesRead = 0;
- bytesRead += fread(secondBuf, 1, bufLen, fileFD);
+ bytesRead += fread(buf, 1, bufLen, fileFD);
if(bytesRead != bufLen && OpenNext()){
- bytesRead += fread(secondBuf + bytesRead, 1, bufLen - bytesRead, fileFD);
+ bytesRead += fread(buf + bytesRead, 1, bufLen - bytesRead, fileFD);
}
return bytesRead;