diff options
author | Frank Schmirler <vdr@schmirler.de> | 2010-12-02 09:44:53 +0100 |
---|---|---|
committer | Frank Schmirler <vdr@schmirler.de> | 2010-12-02 09:44:53 +0100 |
commit | 008ea7f151dd84b314062a272ad61448f51df605 (patch) | |
tree | f239ede406d0c0bb1bf5e9d2b08a37027c14e635 /server/recplayer.h | |
parent | 7254a6752808830d5fc133e5362da6c47f3f84ff (diff) | |
download | vdr-plugin-streamdev-008ea7f151dd84b314062a272ad61448f51df605.tar.gz vdr-plugin-streamdev-008ea7f151dd84b314062a272ad61448f51df605.tar.bz2 |
Snapshot 2009-07-01
Diffstat (limited to 'server/recplayer.h')
-rw-r--r-- | server/recplayer.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/server/recplayer.h b/server/recplayer.h new file mode 100644 index 0000000..3da6c89 --- /dev/null +++ b/server/recplayer.h @@ -0,0 +1,63 @@ +/* + Copyright 2004-2005 Chris Tallon + + This file is part of VOMP. + + VOMP is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + VOMP is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with VOMP; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#ifndef RECPLAYER_H +#define RECPLAYER_H + +#include <stdio.h> +#include <vdr/recording.h> + +#include "server/streamer.h" + +class Segment +{ + public: + uint64_t start; + uint64_t end; +}; + +class RecPlayer +{ + public: + RecPlayer(cRecording* rec); + ~RecPlayer(); + uint64_t getLengthBytes(); + uint32_t getLengthFrames(); + unsigned long getBlock(unsigned char* buffer, uint64_t position, unsigned long amount); + int openFile(int index); + uint64_t getLastPosition(); + cRecording* getCurrentRecording(); + void scan(); + uint64_t positionFromFrameNumber(uint32_t frameNumber); + uint32_t frameNumberFromPosition(uint64_t position); + bool getNextIFrame(uint32_t frameNumber, uint32_t direction, uint64_t* rfilePosition, uint32_t* rframeNumber, uint32_t* rframeLength); + + private: + cRecording* recording; + cIndexFile* indexFile; + FILE* file; + int fileOpen; + Segment* segments[1000]; + uint64_t totalLength; + uint64_t lastPosition; + uint32_t totalFrames; +}; + +#endif |