Added configurable buffer size.

This commit is contained in:
Rolf Ahrenberg 2007-09-15 15:38:38 +00:00
parent 7f4bcb76e2
commit 8d6f72ca5d
8 changed files with 130 additions and 9 deletions

View File

@ -1,7 +1,7 @@
# #
# Makefile for a Video Disk Recorder plugin # Makefile for a Video Disk Recorder plugin
# #
# $Id: Makefile,v 1.2 2007/09/14 15:44:25 rahrenbe Exp $ # $Id: Makefile,v 1.3 2007/09/15 15:38:38 rahrenbe Exp $
# Debugging on/off # Debugging on/off
IPTV_DEBUG = 1 IPTV_DEBUG = 1
@ -57,7 +57,7 @@ endif
### The object files (add further files here): ### The object files (add further files here):
OBJS = $(PLUGIN).o device.o streamer.o protocoludp.o OBJS = $(PLUGIN).o config.o setup.o device.o streamer.o protocoludp.o
### The main target: ### The main target:

17
config.c Normal file
View File

@ -0,0 +1,17 @@
/*
* config.c: IPTV plugin for the Video Disk Recorder
*
* See the README file for copyright information and how to reach the author.
*
* $Id: config.c,v 1.1 2007/09/15 15:38:38 rahrenbe Exp $
*/
#include "common.h"
#include "config.h"
cIptvConfig IptvConfig;
cIptvConfig::cIptvConfig(void)
: bufferSizeMB(8)
{
}

27
config.h Normal file
View File

@ -0,0 +1,27 @@
/*
* config.h: IPTV plugin for the Video Disk Recorder
*
* See the README file for copyright information and how to reach the author.
*
* $Id: config.h,v 1.1 2007/09/15 15:38:38 rahrenbe Exp $
*/
#ifndef __IPTV_CONFIG_H
#define __IPTV_CONFIG_H
#include <vdr/menuitems.h>
#include "config.h"
class cIptvConfig
{
protected:
unsigned int bufferSizeMB;
public:
cIptvConfig();
unsigned int GetBufferSizeMB(void) { return bufferSizeMB; }
void SetBufferSizeMB(unsigned int Size) { bufferSizeMB = Size; }
};
extern cIptvConfig IptvConfig;
#endif // __IPTV_CONFIG_H

View File

@ -3,10 +3,11 @@
* *
* See the README file for copyright information and how to reach the author. * See the README file for copyright information and how to reach the author.
* *
* $Id: device.c,v 1.12 2007/09/15 15:02:33 rahrenbe Exp $ * $Id: device.c,v 1.13 2007/09/15 15:38:38 rahrenbe Exp $
*/ */
#include "common.h" #include "common.h"
#include "config.h"
#include "device.h" #include "device.h"
#define IPTV_MAX_DEVICES 8 #define IPTV_MAX_DEVICES 8
@ -22,7 +23,7 @@ cIptvDevice::cIptvDevice(unsigned int Index)
mutex() mutex()
{ {
debug("cIptvDevice::cIptvDevice(%d)\n", deviceIndex); debug("cIptvDevice::cIptvDevice(%d)\n", deviceIndex);
tsBuffer = new cRingBufferLinear(MEGABYTE(8), TS_SIZE * 2, false, "IPTV"); tsBuffer = new cRingBufferLinear(MEGABYTE(IptvConfig.GetBufferSizeMB()), TS_SIZE * 2, false, "IPTV");
//tsBuffer->SetTimeouts(100, 100); //tsBuffer->SetTimeouts(100, 100);
pUdpProtocol = new cIptvProtocolUdp(); pUdpProtocol = new cIptvProtocolUdp();
//pRtspProtocol = new cIptvProtocolRtsp(); //pRtspProtocol = new cIptvProtocolRtsp();

12
iptv.c
View File

@ -3,12 +3,14 @@
* *
* See the README file for copyright information and how to reach the author. * See the README file for copyright information and how to reach the author.
* *
* $Id: iptv.c,v 1.2 2007/09/15 15:02:33 rahrenbe Exp $ * $Id: iptv.c,v 1.3 2007/09/15 15:38:38 rahrenbe Exp $
*/ */
#include <getopt.h> #include <getopt.h>
#include <vdr/plugin.h> #include <vdr/plugin.h>
#include "common.h" #include "common.h"
#include "config.h"
#include "setup.h"
#include "device.h" #include "device.h"
static const char *VERSION = "0.0.1"; static const char *VERSION = "0.0.1";
@ -145,14 +147,18 @@ cMenuSetupPage *cPluginIptv::SetupMenu(void)
{ {
debug("cPluginIptv::SetupMenu()\n"); debug("cPluginIptv::SetupMenu()\n");
// Return a setup menu in case the plugin supports one. // Return a setup menu in case the plugin supports one.
return NULL; return new cIptvPluginSetup();
} }
bool cPluginIptv::SetupParse(const char *Name, const char *Value) bool cPluginIptv::SetupParse(const char *Name, const char *Value)
{ {
debug("cPluginIptv::SetupParse()\n"); debug("cPluginIptv::SetupParse()\n");
// Parse your own setup parameters and store their values. // Parse your own setup parameters and store their values.
return false; if (!strcasecmp(Name, "BufferSize"))
IptvConfig.SetBufferSizeMB(atoi(Value));
else
return false;
return true;
} }
bool cPluginIptv::Service(const char *Id, void *Data) bool cPluginIptv::Service(const char *Id, void *Data)

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: VDR 1.5.7\n" "Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: Rolf Ahrenberg\n" "Report-Msgid-Bugs-To: Rolf Ahrenberg\n"
"POT-Creation-Date: 2007-08-12 23:22+0300\n" "POT-Creation-Date: 2007-09-15 18:35+0300\n"
"PO-Revision-Date: 2007-08-12 23:22+0300\n" "PO-Revision-Date: 2007-08-12 23:22+0300\n"
"Last-Translator: Rolf Ahrenberg\n" "Last-Translator: Rolf Ahrenberg\n"
"Language-Team: <vdr@linuxtv.org>\n" "Language-Team: <vdr@linuxtv.org>\n"
@ -15,6 +15,10 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: iptv.c:15 #: iptv.c:17
msgid "Experiment the IPTV" msgid "Experiment the IPTV"
msgstr "Koe IPTV:n ihmeellinen maailma" msgstr "Koe IPTV:n ihmeellinen maailma"
#: setup.c:23
msgid "Buffer size [MB]"
msgstr "Puskurin koko [MB]"

38
setup.c Normal file
View File

@ -0,0 +1,38 @@
/*
* setup.c: IPTV plugin for the Video Disk Recorder
*
* See the README file for copyright information and how to reach the author.
*
* $Id: setup.c,v 1.1 2007/09/15 15:38:38 rahrenbe Exp $
*/
#include "common.h"
#include "config.h"
#include "setup.h"
cIptvPluginSetup::cIptvPluginSetup(void)
{
bufferSize = IptvConfig.GetBufferSizeMB();
Setup();
}
void cIptvPluginSetup::Setup(void)
{
int current = Current();
Clear();
Add(new cMenuEditIntItem(tr("Buffer size [MB]"), &bufferSize, 0, 16));
SetCurrent(Get(current));
Display();
}
eOSState cIptvPluginSetup::ProcessKey(eKeys Key)
{
eOSState state = cMenuSetupPage::ProcessKey(Key);
return state;
}
void cIptvPluginSetup::Store(void)
{
SetupStore("BufferSize", bufferSize);
IptvConfig.SetBufferSizeMB(bufferSize);
}

28
setup.h Normal file
View File

@ -0,0 +1,28 @@
/*
* setup.h: IPTV plugin for the Video Disk Recorder
*
* See the README file for copyright information and how to reach the author.
*
* $Id: setup.h,v 1.1 2007/09/15 15:38:38 rahrenbe Exp $
*/
#ifndef __IPTV_SETUP_H
#define __IPTV_SETUP_H
#include <vdr/menuitems.h>
class cIptvPluginSetup : public cMenuSetupPage
{
private:
int bufferSize;
virtual void Setup(void);
protected:
virtual eOSState ProcessKey(eKeys Key);
virtual void Store(void);
public:
cIptvPluginSetup();
};
#endif // __IPTV_SETUP_H