mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-29 08:21:12 +02:00
-add record option for teletext & dvbsub pids
This commit is contained in:
committed by
[CST] Focus
parent
cca6d898c8
commit
b2241df43d
@@ -944,6 +944,9 @@ menu.hint_record_apid_std Schließt bei einer Aufnahme die durch den Sender defi
|
||||
menu.hint_record_apids Konfigurieren Sie die Tonspuren für die Aufnahme
|
||||
menu.hint_record_apply Hiermit werden die Aufnahmeoptionen übernommen
|
||||
menu.hint_record_chandir Diese Option speichert Aufnahmen mit dem Namen des Kanals in ein eigenes Verzeichnis
|
||||
menu.hint_record_data Dataspuren ( Teletext, Untertitel) für die Aufnahme
|
||||
menu.hint_record_data_dvbsub Untertitel Spur zu Aufnehme Hinzufügen
|
||||
menu.hint_record_data_vtxt Teletext Spur zu Aufnehme Hinzufügen
|
||||
menu.hint_record_dir Wählen Sie das Aufnahmeverzeichnis
|
||||
menu.hint_record_end Wählen Sie zwischen max. Aufnahmezeit oder einem Aufnahmeende anhand der EPG-Daten
|
||||
menu.hint_record_slow_warn Zeige Warnung, wenn der Aufnahmepuffer zu überlaufen droht
|
||||
@@ -1515,7 +1518,9 @@ recordingmenu.apids Tonspuren
|
||||
recordingmenu.apids_ac3 AC3 Tonspuren aufnehmen
|
||||
recordingmenu.apids_alt Alternative Tonspuren aufn.
|
||||
recordingmenu.apids_std Standard Tonspur aufnehmen
|
||||
recordingmenu.datapdis Dataspuren
|
||||
recordingmenu.defdir Aufnahmeverzeichnis
|
||||
recordingmenu.dvbsub_pids Untertitel aufnahmen
|
||||
recordingmenu.end_of_recording_epg EPG aktuelles Event
|
||||
recordingmenu.end_of_recording_max max. Aufnahmezeit
|
||||
recordingmenu.end_of_recording_name Ende der Sofortaufnahme
|
||||
@@ -1537,6 +1542,7 @@ recordingmenu.slow_warn Warnung bei langsamen Aufnahmemedien
|
||||
recordingmenu.timeshift Timeshift
|
||||
recordingmenu.tsdir Timeshift Aufnahmeverzeichnis
|
||||
recordingmenu.vcr Videorekorder
|
||||
recordingmenu.vtxt_pid Teletext aufnehmen
|
||||
recordingmenu.zap_on_announce Umschalten bei Ankündigung
|
||||
recordtimer.announce Die Aufnahme beginnt in wenigen Minuten.
|
||||
repeatblocker.hint_1 Mindestzeit (in ms) zwischen 2 Tastendrücken
|
||||
|
@@ -952,6 +952,9 @@ menu.hint_record_apid_std Record first audio pid
|
||||
menu.hint_record_apids Configure audio pids to record
|
||||
menu.hint_record_apply Apply record options
|
||||
menu.hint_record_chandir Create directory with name of channel\nto store recording
|
||||
menu.hint_record_data Record (VideoText, subtitles) data streams
|
||||
menu.hint_record_data_dvbsub subtitle stream
|
||||
menu.hint_record_data_vtxt VideoText stream
|
||||
menu.hint_record_dir Select directory to store recordings
|
||||
menu.hint_record_end Stop direct record after max. time\nor after current event end time
|
||||
menu.hint_record_slow_warn Show warning, when record buffer is close to overflow
|
||||
@@ -1532,7 +1535,9 @@ recordingmenu.apids Audio streams
|
||||
recordingmenu.apids_ac3 record AC3 streams
|
||||
recordingmenu.apids_alt record alternative streams
|
||||
recordingmenu.apids_std record standard stream
|
||||
recordingmenu.datapdis Data streams
|
||||
recordingmenu.defdir Recording directory
|
||||
recordingmenu.dvbsub_pids record dvbsub stream
|
||||
recordingmenu.end_of_recording_epg EPG act. Event
|
||||
recordingmenu.end_of_recording_max max. Recordingtime
|
||||
recordingmenu.end_of_recording_name Endtime of Recording
|
||||
@@ -1554,6 +1559,7 @@ recordingmenu.slow_warn Enable slow record warning
|
||||
recordingmenu.timeshift Timeshift
|
||||
recordingmenu.tsdir Timeshift directory
|
||||
recordingmenu.vcr vcr
|
||||
recordingmenu.vtxt_pid record teletext
|
||||
recordingmenu.zap_on_announce zap on recording announce
|
||||
recordtimer.announce Recording starts in a few minutes
|
||||
repeatblocker.hint_1 Shortest time (in ms) to recognize 2 keystrokes
|
||||
|
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
Copyright (c) 2004 gmo18t, Germany. All rights reserved.
|
||||
Copyright (C) 2012 CoolStream International Ltd
|
||||
Copyright (C) 2013 Jacek Jendrzej
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published
|
||||
@@ -124,8 +125,15 @@ CGenPsi::CGenPsi()
|
||||
nba = 0;
|
||||
vpid = 0;
|
||||
vtype = 0;
|
||||
|
||||
vtxtpid = 0;
|
||||
vtxtlang[0] = 'g';
|
||||
vtxtlang[1] = 'e';
|
||||
vtxtlang[2] = 'r';
|
||||
memset(apid, 0, sizeof(apid));
|
||||
memset(atypes, 0, sizeof(atypes));
|
||||
nsub = 0;
|
||||
memset(dvbsubpid, 0, sizeof(dvbsubpid));
|
||||
}
|
||||
|
||||
uint32_t CGenPsi::calc_crc32psi(uint8_t *dst, const uint8_t *src, uint32_t len)
|
||||
@@ -147,7 +155,7 @@ uint32_t CGenPsi::calc_crc32psi(uint8_t *dst, const uint8_t *src, uint32_t len)
|
||||
return crc;
|
||||
}
|
||||
|
||||
void CGenPsi::addPid(uint16_t pid, uint16_t pidtype, short isAC3)
|
||||
void CGenPsi::addPid(uint16_t pid, uint16_t pidtype, short isAC3, const char *data)
|
||||
{
|
||||
switch(pidtype)
|
||||
{
|
||||
@@ -165,8 +173,22 @@ void CGenPsi::addPid(uint16_t pid, uint16_t pidtype, short isAC3)
|
||||
nba++;
|
||||
break;
|
||||
case EN_TYPE_TELTEX:
|
||||
vtxtpid = pid;
|
||||
if(data != NULL){
|
||||
vtxtlang[0] = data[0];
|
||||
vtxtlang[1] = data[1];
|
||||
vtxtlang[2] = data[2];
|
||||
}
|
||||
break;
|
||||
case EN_TYPE_DVBSUB:
|
||||
dvbsubpid[nsub] = pid;
|
||||
if(data != NULL){
|
||||
dvbsublang[nsub][0] = data[0];
|
||||
dvbsublang[nsub][1] = data[1];
|
||||
dvbsublang[nsub][2] = data[2];
|
||||
}
|
||||
nsub++;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -232,6 +254,8 @@ int CGenPsi::genpsi(int fd)
|
||||
|
||||
//-- (II) build PAT --
|
||||
data_len = COPY_TEMPLATE(pkt, pkt_pat);
|
||||
// pkt[0xf]= 0xE0 | (pmtpid>>8);
|
||||
// pkt[0x10] = pmtpid & 0xFF;
|
||||
//-- calculate CRC --
|
||||
calc_crc32psi(&pkt[data_len], &pkt[OFS_HDR_2], data_len-OFS_HDR_2 );
|
||||
//-- write TS packet --
|
||||
@@ -241,6 +265,12 @@ int CGenPsi::genpsi(int fd)
|
||||
data_len = COPY_TEMPLATE(pkt, pkt_pmt);
|
||||
//-- adjust len dependent to count of audio streams --
|
||||
data_len += (SIZE_STREAM_TAB_ROW * (nba-1));
|
||||
if(vtxtpid){
|
||||
data_len += (SIZE_STREAM_TAB_ROW * (1))+10;//add teletext row length
|
||||
}
|
||||
if(nsub){
|
||||
data_len += ((SIZE_STREAM_TAB_ROW+10) * nsub);//add dvbsub row length
|
||||
}
|
||||
patch_len = data_len - OFS_HDR_2 + 1;
|
||||
pkt[OFS_HDR_2+1] |= (patch_len>>8);
|
||||
pkt[OFS_HDR_2+2] = (patch_len & 0xFF);
|
||||
@@ -266,13 +296,61 @@ int CGenPsi::genpsi(int fd)
|
||||
pkt[ofs+3] = 0xF0;
|
||||
pkt[ofs+4] = 0x00;
|
||||
}
|
||||
|
||||
//teletext
|
||||
if(vtxtpid){
|
||||
ofs += SIZE_STREAM_TAB_ROW;
|
||||
pkt[ofs] = 0x06; //teletext stream type;
|
||||
pkt[ofs+1] = 0xE0 | vtxtpid>>8;
|
||||
pkt[ofs+2] = vtxtpid&0xff;
|
||||
pkt[ofs+3] = 0xf0;
|
||||
pkt[ofs+4] = 0x0A; // ES_info_length
|
||||
pkt[ofs+5] = 0x52; //DVB-DescriptorTag: 82 (0x52) [= stream_identifier_descriptor]
|
||||
pkt[ofs+6] = 0x01; // descriptor_length
|
||||
pkt[ofs+7] = 0x03; //component_tag
|
||||
pkt[ofs+8] = 0x56; // DVB teletext tag
|
||||
pkt[ofs+9] = 0x05; // descriptor length
|
||||
pkt[ofs+10] = vtxtlang[0]; //language code[0]
|
||||
pkt[ofs+11] = vtxtlang[1]; //language code[1]
|
||||
pkt[ofs+12] = vtxtlang[2]; //language code[2]
|
||||
pkt[ofs+13] = (/*descriptor_magazine_number*/ 0x01 & 0x06) | ((/*descriptor_type*/ 0x01 << 3) & 0xF8);
|
||||
pkt[ofs+14] = 0x00 ; //Teletext_page_number
|
||||
}
|
||||
|
||||
//dvbsub
|
||||
for (i=0; i<nsub; i++)
|
||||
{
|
||||
ofs += SIZE_STREAM_TAB_ROW;
|
||||
if(i > 0 || vtxtpid)
|
||||
ofs += 10;
|
||||
|
||||
pkt[ofs] = 0x06;//subtitle stream type;
|
||||
pkt[ofs+1] = 0xE0 | dvbsubpid[i]>>8;
|
||||
pkt[ofs+2] = dvbsubpid[i] & 0xFF;
|
||||
pkt[ofs+3] = 0xF0;
|
||||
pkt[ofs+4] = 0x0A; // es info length
|
||||
pkt[ofs+5] = 0x59; // DVB sub tag
|
||||
pkt[ofs+6] = 0x08; // descriptor length
|
||||
pkt[ofs+7] = dvbsublang[i][0]; //language code[0]
|
||||
pkt[ofs+8] = dvbsublang[i][1]; //language code[1]
|
||||
pkt[ofs+9] = dvbsublang[i][2]; //language code[2]
|
||||
pkt[ofs+10] = 0x20; //subtitle_stream.subtitling_type
|
||||
pkt[ofs+11] = 0x01>>8; //composition_page_id
|
||||
pkt[ofs+12] = 0x01&0xff; //composition_page_id
|
||||
pkt[ofs+13] = 0x01>>8; //ancillary_page_id
|
||||
pkt[ofs+14] = 0x01&0xff; //ancillary_page_id
|
||||
}
|
||||
|
||||
//-- calculate CRC --
|
||||
calc_crc32psi(&pkt[data_len], &pkt[OFS_HDR_2], data_len-OFS_HDR_2 );
|
||||
//-- write TS packet --
|
||||
write(fd, pkt, SIZE_TS_PKT);
|
||||
|
||||
//-- finish --
|
||||
vpid=0;
|
||||
nba=0;
|
||||
nsub = 0;
|
||||
vtxtpid = 0;
|
||||
fdatasync(fd);
|
||||
return 1;
|
||||
}
|
||||
|
@@ -28,21 +28,26 @@
|
||||
#define EN_TYPE_TELTEX 0x02
|
||||
#define EN_TYPE_PCR 0x03
|
||||
#define EN_TYPE_AVC 0x04
|
||||
#define EN_TYPE_DVBSUB 0x06
|
||||
|
||||
class CGenPsi
|
||||
{
|
||||
private:
|
||||
short nba;
|
||||
short nba, nsub;
|
||||
uint16_t vpid;
|
||||
uint8_t vtype;
|
||||
uint16_t vtxtpid;
|
||||
char vtxtlang[3];
|
||||
uint16_t apid[10];
|
||||
short atypes[10];
|
||||
uint16_t dvbsubpid[10];
|
||||
char dvbsublang[10][3];
|
||||
static int copy_template(uint8_t *dst, uint8_t *src, int len);
|
||||
uint32_t calc_crc32psi(uint8_t *dst, const uint8_t *src, uint32_t len);
|
||||
|
||||
public:
|
||||
CGenPsi();
|
||||
void addPid(uint16_t pid,uint16_t pidtype, short isAC3);
|
||||
void addPid(uint16_t pid,uint16_t pidtype, short isAC3, const char *data = NULL);
|
||||
int genpsi(int fd);
|
||||
};
|
||||
#endif
|
||||
|
@@ -72,7 +72,7 @@ extern "C" {
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
CRecordInstance::CRecordInstance(const CTimerd::RecordingInfo * const eventinfo, std::string &dir, bool timeshift, bool stream_vtxt_pid, bool stream_pmt_pid)
|
||||
CRecordInstance::CRecordInstance(const CTimerd::RecordingInfo * const eventinfo, std::string &dir, bool timeshift, bool stream_vtxt_pid, bool stream_pmt_pid, bool stream_subtitle_pids )
|
||||
{
|
||||
channel_id = eventinfo->channel_id;
|
||||
epgid = eventinfo->epgID;
|
||||
@@ -86,6 +86,8 @@ CRecordInstance::CRecordInstance(const CTimerd::RecordingInfo * const eventinfo,
|
||||
|
||||
StreamVTxtPid = stream_vtxt_pid;
|
||||
StreamPmtPid = stream_pmt_pid;
|
||||
StreamSubtitlePids = stream_subtitle_pids;
|
||||
|
||||
Directory = dir;
|
||||
autoshift = timeshift;
|
||||
numpids = 0;
|
||||
@@ -167,10 +169,26 @@ record_error_msg_t CRecordInstance::Start(CZapitChannel * channel)
|
||||
apids[numpids++] = recMovieInfo->audioPids[i].epgAudioPid;
|
||||
psi.addPid(recMovieInfo->audioPids[i].epgAudioPid, EN_TYPE_AUDIO, recMovieInfo->audioPids[i].atype);
|
||||
}
|
||||
if ((StreamVTxtPid) && (allpids.PIDs.vtxtpid != 0)){
|
||||
apids[numpids++] = allpids.PIDs.vtxtpid;
|
||||
psi.addPid(allpids.PIDs.vtxtpid, EN_TYPE_TELTEX, 0, channel->getTeletextLang());
|
||||
}
|
||||
if (StreamSubtitlePids){
|
||||
for (int i = 0 ; i < (int)channel->getSubtitleCount() ; ++i) {
|
||||
CZapitAbsSub* s = channel->getChannelSub(i);
|
||||
if (s->thisSubType == CZapitAbsSub::DVB) {
|
||||
if(i>9)//max sub pids
|
||||
break;
|
||||
|
||||
CZapitDVBSub* sd = reinterpret_cast<CZapitDVBSub*>(s);
|
||||
apids[numpids++] = sd->pId;
|
||||
psi.addPid( sd->pId, EN_TYPE_DVBSUB, 0, sd->ISO639_language_code.c_str() );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
psi.genpsi(fd);
|
||||
|
||||
if ((StreamVTxtPid) && (allpids.PIDs.vtxtpid != 0))
|
||||
apids[numpids++] = allpids.PIDs.vtxtpid;
|
||||
|
||||
if ((StreamPmtPid) && (allpids.PIDs.pmtpid != 0))
|
||||
apids[numpids++] = allpids.PIDs.pmtpid;
|
||||
@@ -669,6 +687,7 @@ CRecordManager::CRecordManager()
|
||||
{
|
||||
StreamVTxtPid = false;
|
||||
StreamPmtPid = false;
|
||||
StreamSubtitlePids = false;
|
||||
StopSectionsd = false;
|
||||
//recordingstatus = 0;
|
||||
recmap.clear();
|
||||
@@ -882,7 +901,7 @@ bool CRecordManager::Record(const CTimerd::RecordingInfo * const eventinfo, cons
|
||||
else
|
||||
newdir = Directory;
|
||||
|
||||
inst = new CRecordInstance(eventinfo, newdir, timeshift, StreamVTxtPid, StreamPmtPid);
|
||||
inst = new CRecordInstance(eventinfo, newdir, timeshift, StreamVTxtPid, StreamPmtPid, StreamSubtitlePids);
|
||||
|
||||
inst->frontend = frontend;
|
||||
error_msg = inst->Record();
|
||||
|
@@ -83,6 +83,7 @@ class CRecordInstance
|
||||
time_t epg_time;
|
||||
time_t start_time;
|
||||
bool StreamVTxtPid;
|
||||
bool StreamSubtitlePids;
|
||||
bool StreamPmtPid;
|
||||
unsigned short apids[REC_MAX_APIDS];
|
||||
unsigned int numpids;
|
||||
@@ -107,7 +108,7 @@ class CRecordInstance
|
||||
record_error_msg_t Start(CZapitChannel * channel);
|
||||
void WaitRecMsg(time_t StartTime, time_t WaitTime);
|
||||
public:
|
||||
CRecordInstance(const CTimerd::RecordingInfo * const eventinfo, std::string &dir, bool timeshift = false, bool stream_vtxt_pid = false, bool stream_pmt_pid = false);
|
||||
CRecordInstance(const CTimerd::RecordingInfo * const eventinfo, std::string &dir, bool timeshift = false, bool stream_vtxt_pid = false, bool stream_pmt_pid = false, bool stream_subtitle_pids = false);
|
||||
~CRecordInstance();
|
||||
|
||||
record_error_msg_t Record();
|
||||
@@ -146,6 +147,7 @@ class CRecordManager : public CMenuTarget /*, public CChangeObserver*/
|
||||
std::string Directory;
|
||||
std::string TimeshiftDirectory;
|
||||
bool StreamVTxtPid;
|
||||
bool StreamSubtitlePids;
|
||||
bool StreamPmtPid;
|
||||
bool StopSectionsd;
|
||||
int last_mode;
|
||||
@@ -201,11 +203,12 @@ class CRecordManager : public CMenuTarget /*, public CChangeObserver*/
|
||||
bool RunStartScript(void);
|
||||
bool RunStopScript(void);
|
||||
|
||||
void Config(const bool stopsectionsd, const bool stream_vtxt_pid, const bool stream_pmt_pid)
|
||||
void Config(const bool stopsectionsd, const bool stream_vtxt_pid, const bool stream_pmt_pid, bool stream_subtitle_pids )
|
||||
{
|
||||
StopSectionsd = stopsectionsd;
|
||||
StreamVTxtPid = stream_vtxt_pid;
|
||||
StreamPmtPid = stream_pmt_pid;
|
||||
StopSectionsd = stopsectionsd;
|
||||
StreamVTxtPid = stream_vtxt_pid;
|
||||
StreamSubtitlePids = stream_subtitle_pids;
|
||||
StreamPmtPid = stream_pmt_pid;
|
||||
};
|
||||
void SetDirectory(const char * const directory) { Directory = directory; };
|
||||
void SetTimeshiftDirectory(const char * const directory) { TimeshiftDirectory = directory; };
|
||||
|
@@ -229,6 +229,13 @@ int CRecordSetup::showRecordSetup()
|
||||
mf->setHint("", LOCALE_MENU_HINT_RECORD_APIDS);
|
||||
recordingSettings->addItem(mf);
|
||||
|
||||
//datasettings
|
||||
CMenuWidget recordingaDataSettings(LOCALE_MAINSETTINGS_RECORDING, NEUTRINO_ICON_SETTINGS, width, MN_WIDGET_ID_RECORDSETUP_DATASETTINGS);
|
||||
showRecordDataSetup(&recordingaDataSettings);
|
||||
mf = new CMenuForwarder(LOCALE_RECORDINGMENU_DATAPIDS, true, NULL, &recordingaDataSettings, NULL, CRCInput::RC_1);
|
||||
mf->setHint("", LOCALE_MENU_HINT_RECORD_DATA);
|
||||
recordingSettings->addItem(mf);
|
||||
|
||||
int res = recordingSettings->exec(NULL, "");
|
||||
delete recordingSettings;
|
||||
return res;
|
||||
@@ -291,6 +298,22 @@ void CRecordSetup::showRecordAudioSetup(CMenuWidget *menu_audiosettings)
|
||||
menu_audiosettings->addItem(aoj3);
|
||||
}
|
||||
|
||||
void CRecordSetup::showRecordDataSetup(CMenuWidget *menu_datasettings)
|
||||
{
|
||||
//recording data pids
|
||||
|
||||
//teletext pids
|
||||
CMenuOptionChooser* doj1 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_VTXT_PID, &g_settings.recording_stream_vtxt_pid, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this);
|
||||
CMenuOptionChooser* doj2 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_DVBSUB_PIDS, &g_settings.recording_stream_subtitle_pids, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this);
|
||||
|
||||
doj1->setHint("", LOCALE_MENU_HINT_RECORD_DATA_VTXT);
|
||||
doj2->setHint("", LOCALE_MENU_HINT_RECORD_DATA_DVBSUB);
|
||||
|
||||
menu_datasettings->addIntroItems(LOCALE_RECORDINGMENU_DATAPIDS);
|
||||
menu_datasettings->addItem(doj1);
|
||||
menu_datasettings->addItem(doj2);
|
||||
}
|
||||
|
||||
void CRecordSetup::showRecordTimeShiftSetup(CMenuWidget *menu_ts)
|
||||
{
|
||||
menu_ts->addIntroItems(LOCALE_RECORDINGMENU_TIMESHIFT);
|
||||
|
@@ -44,6 +44,8 @@ class CRecordSetup : public CMenuTarget, public CChangeObserver
|
||||
int showRecordSetup();
|
||||
void showRecordTimerSetup(CMenuWidget *menu_timersettings);
|
||||
void showRecordAudioSetup(CMenuWidget *menu_audiosettings);
|
||||
void showRecordDataSetup(CMenuWidget *menu_datasettings);
|
||||
|
||||
void showRecordTimeShiftSetup(CMenuWidget *menu_ts);
|
||||
|
||||
public:
|
||||
|
@@ -587,6 +587,7 @@ int CNeutrinoApp::loadSetup(const char * fname)
|
||||
g_settings.shutdown_timer_record_type = configfile.getBool("shutdown_timer_record_type" , false);
|
||||
|
||||
g_settings.recording_stream_vtxt_pid = configfile.getBool("recordingmenu.stream_vtxt_pid" , false);
|
||||
g_settings.recording_stream_subtitle_pids = configfile.getBool("recordingmenu.stream_subtitle_pids", false);
|
||||
g_settings.recording_stream_pmt_pid = configfile.getBool("recordingmenu.stream_pmt_pid" , false);
|
||||
g_settings.recording_choose_direct_rec_dir = configfile.getInt32( "recording_choose_direct_rec_dir", 0 );
|
||||
g_settings.recording_epg_for_filename = configfile.getBool("recording_epg_for_filename" , true);
|
||||
@@ -1014,17 +1015,18 @@ void CNeutrinoApp::saveSetup(const char * fname)
|
||||
configfile.setInt32 ("recording_type", g_settings.recording_type);
|
||||
configfile.setBool ("recording_stopsectionsd" , g_settings.recording_stopsectionsd );
|
||||
|
||||
configfile.setInt32 ("recording_audio_pids_default" , g_settings.recording_audio_pids_default);
|
||||
configfile.setInt32 ("recording_audio_pids_default" , g_settings.recording_audio_pids_default );
|
||||
configfile.setBool ("recording_zap_on_announce" , g_settings.recording_zap_on_announce );
|
||||
configfile.setBool ("shutdown_timer_record_type" , g_settings.shutdown_timer_record_type );
|
||||
configfile.setBool ("shutdown_timer_record_type" , g_settings.shutdown_timer_record_type );
|
||||
|
||||
configfile.setBool ("recordingmenu.stream_vtxt_pid" , g_settings.recording_stream_vtxt_pid );
|
||||
configfile.setBool ("recordingmenu.stream_pmt_pid" , g_settings.recording_stream_pmt_pid );
|
||||
configfile.setBool ("recordingmenu.stream_subtitle_pids" , g_settings.recording_stream_subtitle_pids );
|
||||
configfile.setBool ("recordingmenu.stream_pmt_pid" , g_settings.recording_stream_pmt_pid );
|
||||
configfile.setInt32 ("recording_choose_direct_rec_dir" , g_settings.recording_choose_direct_rec_dir);
|
||||
configfile.setBool ("recording_epg_for_filename" , g_settings.recording_epg_for_filename );
|
||||
configfile.setBool ("recording_epg_for_end" , g_settings.recording_epg_for_end );
|
||||
configfile.setBool ("recording_save_in_channeldir" , g_settings.recording_save_in_channeldir );
|
||||
configfile.setBool ("recording_slow_warning" , g_settings.recording_slow_warning );
|
||||
configfile.setBool ("recording_save_in_channeldir" , g_settings.recording_save_in_channeldir );
|
||||
configfile.setBool ("recording_slow_warning" , g_settings.recording_slow_warning );
|
||||
|
||||
// default plugin for movieplayer
|
||||
configfile.setString ( "movieplayer_plugin", g_settings.movieplayer_plugin );
|
||||
@@ -1626,7 +1628,7 @@ void CNeutrinoApp::InitZapper()
|
||||
void CNeutrinoApp::setupRecordingDevice(void)
|
||||
{
|
||||
CRecordManager::getInstance()->SetDirectory(g_settings.network_nfs_recordingdir);
|
||||
CRecordManager::getInstance()->Config(g_settings.recording_stopsectionsd, g_settings.recording_stream_vtxt_pid, g_settings.recording_stream_pmt_pid);
|
||||
CRecordManager::getInstance()->Config(g_settings.recording_stopsectionsd, g_settings.recording_stream_vtxt_pid, g_settings.recording_stream_pmt_pid, g_settings.recording_stream_subtitle_pids);
|
||||
}
|
||||
|
||||
static void CSSendMessage(uint32_t msg, uint32_t data)
|
||||
|
@@ -82,6 +82,7 @@ enum MN_WIDGET_ID
|
||||
MN_WIDGET_ID_RECORDSETUP_TIMESHIFT,
|
||||
MN_WIDGET_ID_RECORDSETUP_TIMERSETTINGS,
|
||||
MN_WIDGET_ID_RECORDSETUP_AUDIOSETTINGS,
|
||||
MN_WIDGET_ID_RECORDSETUP_DATASETTINGS,
|
||||
|
||||
//vfd setup
|
||||
MN_WIDGET_ID_VFDSETUP,
|
||||
|
@@ -979,6 +979,9 @@ typedef enum
|
||||
LOCALE_MENU_HINT_RECORD_APIDS,
|
||||
LOCALE_MENU_HINT_RECORD_APPLY,
|
||||
LOCALE_MENU_HINT_RECORD_CHANDIR,
|
||||
LOCALE_MENU_HINT_RECORD_DATA,
|
||||
LOCALE_MENU_HINT_RECORD_DATA_DVBSUB,
|
||||
LOCALE_MENU_HINT_RECORD_DATA_VTXT,
|
||||
LOCALE_MENU_HINT_RECORD_DIR,
|
||||
LOCALE_MENU_HINT_RECORD_END,
|
||||
LOCALE_MENU_HINT_RECORD_SLOW_WARN,
|
||||
@@ -1559,6 +1562,8 @@ typedef enum
|
||||
LOCALE_RECORDINGMENU_APIDS_AC3,
|
||||
LOCALE_RECORDINGMENU_APIDS_ALT,
|
||||
LOCALE_RECORDINGMENU_APIDS_STD,
|
||||
LOCALE_RECORDINGMENU_DATAPIDS,
|
||||
LOCALE_RECORDINGMENU_DVBSUB_PIDS,
|
||||
LOCALE_RECORDINGMENU_DEFDIR,
|
||||
LOCALE_RECORDINGMENU_END_OF_RECORDING_EPG,
|
||||
LOCALE_RECORDINGMENU_END_OF_RECORDING_MAX,
|
||||
@@ -1581,6 +1586,7 @@ typedef enum
|
||||
LOCALE_RECORDINGMENU_TIMESHIFT,
|
||||
LOCALE_RECORDINGMENU_TSDIR,
|
||||
LOCALE_RECORDINGMENU_VCR,
|
||||
LOCALE_RECORDINGMENU_VTXT_PID,
|
||||
LOCALE_RECORDINGMENU_ZAP_ON_ANNOUNCE,
|
||||
LOCALE_RECORDTIMER_ANNOUNCE,
|
||||
LOCALE_REPEATBLOCKER_HINT_1,
|
||||
|
@@ -979,6 +979,9 @@ const char * locale_real_names[] =
|
||||
"menu.hint_record_apids",
|
||||
"menu.hint_record_apply",
|
||||
"menu.hint_record_chandir",
|
||||
"menu.hint_record_data",
|
||||
"menu.hint_record_data_dvbsub",
|
||||
"menu.hint_record_data_vtxt",
|
||||
"menu.hint_record_dir",
|
||||
"menu.hint_record_end",
|
||||
"menu.hint_record_slow_warn",
|
||||
@@ -1559,6 +1562,8 @@ const char * locale_real_names[] =
|
||||
"recordingmenu.apids_ac3",
|
||||
"recordingmenu.apids_alt",
|
||||
"recordingmenu.apids_std",
|
||||
"recordingmenu.datapdis",
|
||||
"recordingmenu.dvbsub_pids",
|
||||
"recordingmenu.defdir",
|
||||
"recordingmenu.end_of_recording_epg",
|
||||
"recordingmenu.end_of_recording_max",
|
||||
@@ -1581,6 +1586,7 @@ const char * locale_real_names[] =
|
||||
"recordingmenu.timeshift",
|
||||
"recordingmenu.tsdir",
|
||||
"recordingmenu.vcr",
|
||||
"recordingmenu.vtxt_pid",
|
||||
"recordingmenu.zap_on_announce",
|
||||
"recordtimer.announce",
|
||||
"repeatblocker.hint_1",
|
||||
|
@@ -334,14 +334,15 @@ struct SNeutrinoSettings
|
||||
int recording_audio_pids_std;
|
||||
int recording_audio_pids_alt;
|
||||
int recording_audio_pids_ac3;
|
||||
int recording_stream_vtxt_pid;
|
||||
int recording_stream_pmt_pid;
|
||||
int recording_stream_vtxt_pid;
|
||||
int recording_stream_subtitle_pids;
|
||||
int recording_stream_pmt_pid;
|
||||
int recording_choose_direct_rec_dir;
|
||||
int recording_epg_for_filename;
|
||||
int recording_epg_for_end;
|
||||
int recording_save_in_channeldir;
|
||||
int recording_zap_on_announce;
|
||||
int recording_slow_warning;
|
||||
int recording_zap_on_announce;
|
||||
int recording_slow_warning;
|
||||
int shutdown_timer_record_type;
|
||||
|
||||
int filesystem_is_utf8;
|
||||
|
Reference in New Issue
Block a user