diff -Nru vdr-plugin-burn-0.1.0~pre21/adaptor.h vdr-plugin-burn-0.2.2/adaptor.h --- vdr-plugin-burn-0.1.0~pre21/adaptor.h 2006-09-16 18:33:36.000000000 +0000 +++ vdr-plugin-burn-0.2.2/adaptor.h 2009-05-01 17:34:06.000000000 +0000 @@ -8,6 +8,7 @@ #ifndef VDR_BURN_ADAPTOR_H #define VDR_BURN_ADAPTOR_H +#include #include #include #include diff -Nru vdr-plugin-burn-0.1.0~pre21/buffers.c vdr-plugin-burn-0.2.2/buffers.c --- vdr-plugin-burn-0.1.0~pre21/buffers.c 2006-09-16 15:22:00.000000000 +0000 +++ vdr-plugin-burn-0.2.2/buffers.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#define KILOBYTE(x) ((x) * 1024) -#define MEGABYTE(x) (KILOBYTE(x) * 1024) - -struct chain_buffer -{ - char *data; - int used, size; - - struct chain_buffer *next; -}; - -int main() -{ - struct chain_buffer *first = NULL, *last = NULL; - int size = 0; - fd_set rfds, wfds; - int eof = 0; - - fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK); - fcntl(STDOUT_FILENO, F_SETFL, O_NONBLOCK); - - while (!eof) { - FD_ZERO(&rfds); - FD_ZERO(&wfds); - - if (size < MEGABYTE(32)) - FD_SET(STDIN_FILENO, &rfds); - - if (first != NULL) - FD_SET(STDOUT_FILENO, &wfds); - - select(STDOUT_FILENO + 1, &rfds, &wfds, NULL, NULL); - - if (FD_ISSET(STDIN_FILENO, &rfds)) { - struct chain_buffer *next = - (struct chain_buffer*)malloc(sizeof(struct chain_buffer)); - int r; - - memset(next, 0, sizeof(struct chain_buffer)); - next->data = (char*)malloc(sizeof(char) * BUFSIZ); - if ((r = read(STDIN_FILENO, next->data, BUFSIZ)) > 0) { - next->size = r; - size += r; - next->data = (char*)realloc(next->data, sizeof(char) * r); - - if (first == NULL) - first = last = next; - else { - last->next = next; - last = next; - } - } else if (r < 0) { - fprintf(stderr, "Read error: %m\n"); - exit(1); - } else - eof = 1; - } - - if (FD_ISSET(STDOUT_FILENO, &wfds)) { - int w; - - if ((w = write(STDOUT_FILENO, first->data + first->used, - first->size - first->used)) >= 0) { - first->used += w; - - if (first->used == first->size) { - free(first->data); - size -= first->size; - - if (first->next == NULL) { - free(first); - first = last = NULL; - } else { - struct chain_buffer *next = first->next; - free(first); - first = next; - } - } - } else if (w < 0) { - fprintf(stderr, "Write error: %m\n"); - exit(1); - } - } - } - exit(0); -} diff -Nru vdr-plugin-burn-0.1.0~pre21/build.bat vdr-plugin-burn-0.2.2/build.bat --- vdr-plugin-burn-0.1.0~pre21/build.bat 2006-08-06 15:32:05.000000000 +0000 +++ vdr-plugin-burn-0.2.2/build.bat 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -set PATH=D:\cygwin\bin -ssh root@192.168.1.104 bin/chrootbuild.sh burn %* diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/counters/CVS/Entries vdr-plugin-burn-0.2.2/burn/counters/CVS/Entries --- vdr-plugin-burn-0.1.0~pre21/burn/counters/CVS/Entries 2006-06-07 18:59:48.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/counters/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -/standard/1.1/Tue Jun 6 19:33:04 2006// -D diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/counters/CVS/Repository vdr-plugin-burn-0.2.2/burn/counters/CVS/Repository --- vdr-plugin-burn-0.1.0~pre21/burn/counters/CVS/Repository 2006-06-06 19:33:14.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/counters/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -burn/burn/counters diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/counters/CVS/Root vdr-plugin-burn-0.2.2/burn/counters/CVS/Root --- vdr-plugin-burn-0.1.0~pre21/burn/counters/CVS/Root 2006-06-06 19:33:14.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/counters/CVS/Root 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -:pserver:lordjaxom@vdr-developer.org:/var/cvsroot diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/CVS/Entries vdr-plugin-burn-0.2.2/burn/CVS/Entries --- vdr-plugin-burn-0.1.0~pre21/burn/CVS/Entries 2006-08-26 20:04:58.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -D/counters//// -/menu-bg.png/1.4/Fri Aug 11 20:56:58 2006/-kb/ -/menu-button.png/1.4/Fri Aug 11 20:56:58 2006/-kb/ -/menu-silence.mp2/1.4/Fri Aug 11 20:56:58 2006/-kb/ -/ProjectX.ini/1.2/Fri Aug 18 20:27:52 2006// -D/fonts//// diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/CVS/Entries.Extra vdr-plugin-burn-0.2.2/burn/CVS/Entries.Extra --- vdr-plugin-burn-0.1.0~pre21/burn/CVS/Entries.Extra 2006-08-26 20:04:58.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/CVS/Entries.Extra 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -D/counters//// -/menu-bg.png//// -/menu-button.png//// -/menu-silence.mp2//// -/ProjectX.ini//// -D/fonts//// diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/CVS/Entries.Extra.Old vdr-plugin-burn-0.2.2/burn/CVS/Entries.Extra.Old --- vdr-plugin-burn-0.1.0~pre21/burn/CVS/Entries.Extra.Old 2006-08-26 20:03:48.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/CVS/Entries.Extra.Old 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -D/counters//// -/menu-bg.png//// -/menu-button.png//// -/menu-silence.mp2//// -/ProjectX.ini//// -/helmetr.ttf//// -D/fonts//// diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/CVS/Entries.Old vdr-plugin-burn-0.2.2/burn/CVS/Entries.Old --- vdr-plugin-burn-0.1.0~pre21/burn/CVS/Entries.Old 2006-08-26 20:03:48.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/CVS/Entries.Old 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -D/counters//// -/menu-bg.png/1.4/Fri Aug 11 20:56:58 2006/-kb/ -/menu-button.png/1.4/Fri Aug 11 20:56:58 2006/-kb/ -/menu-silence.mp2/1.4/Fri Aug 11 20:56:58 2006/-kb/ -/ProjectX.ini/1.2/Fri Aug 18 20:27:52 2006// -/helmetr.ttf/-1.4/dummy timestamp/-kb/ -D/fonts//// diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/CVS/Repository vdr-plugin-burn-0.2.2/burn/CVS/Repository --- vdr-plugin-burn-0.1.0~pre21/burn/CVS/Repository 2006-01-14 17:13:12.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -burn/burn diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/CVS/Root vdr-plugin-burn-0.2.2/burn/CVS/Root --- vdr-plugin-burn-0.1.0~pre21/burn/CVS/Root 2006-01-14 17:13:12.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/CVS/Root 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -:pserver:lordjaxom@vdr-developer.org:/var/cvsroot diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/fonts/CVS/Entries vdr-plugin-burn-0.2.2/burn/fonts/CVS/Entries --- vdr-plugin-burn-0.1.0~pre21/burn/fonts/CVS/Entries 2006-08-26 20:04:59.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/fonts/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -D/ttf-bitstream-vera-1.10//// -/Vera.ttf/1.1/Wed Apr 16 14:02:14 2003/-kb/ diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/fonts/CVS/Entries.Extra vdr-plugin-burn-0.2.2/burn/fonts/CVS/Entries.Extra --- vdr-plugin-burn-0.1.0~pre21/burn/fonts/CVS/Entries.Extra 2006-08-26 20:04:59.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/fonts/CVS/Entries.Extra 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -D/ttf-bitstream-vera-1.10//// -/Vera.ttf//// diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/fonts/CVS/Entries.Extra.Old vdr-plugin-burn-0.2.2/burn/fonts/CVS/Entries.Extra.Old --- vdr-plugin-burn-0.1.0~pre21/burn/fonts/CVS/Entries.Extra.Old 2006-08-26 20:04:13.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/fonts/CVS/Entries.Extra.Old 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -/Vera.ttf//// -D/ttf-bitstream-vera-1.10//// diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/fonts/CVS/Entries.Old vdr-plugin-burn-0.2.2/burn/fonts/CVS/Entries.Old --- vdr-plugin-burn-0.1.0~pre21/burn/fonts/CVS/Entries.Old 2006-08-26 20:04:13.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/fonts/CVS/Entries.Old 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -/Vera.ttf/0/dummy timestamp/-kb/ -D/ttf-bitstream-vera-1.10//// diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/fonts/CVS/Repository vdr-plugin-burn-0.2.2/burn/fonts/CVS/Repository --- vdr-plugin-burn-0.1.0~pre21/burn/fonts/CVS/Repository 2006-08-26 20:03:48.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/fonts/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -burn/burn/fonts diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/fonts/CVS/Root vdr-plugin-burn-0.2.2/burn/fonts/CVS/Root --- vdr-plugin-burn-0.1.0~pre21/burn/fonts/CVS/Root 2006-08-26 20:03:48.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/fonts/CVS/Root 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -:pserver:lordjaxom@vdr-developer.org:/var/cvsroot diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries vdr-plugin-burn-0.2.2/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries --- vdr-plugin-burn-0.1.0~pre21/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries 2006-08-26 20:05:01.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -/COPYRIGHT.TXT/1.1/Sat Aug 26 17:40:36 2006// -D diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries.Extra vdr-plugin-burn-0.2.2/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries.Extra --- vdr-plugin-burn-0.1.0~pre21/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries.Extra 2006-08-26 20:05:01.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries.Extra 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -/COPYRIGHT.TXT//// diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries.Extra.Old vdr-plugin-burn-0.2.2/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries.Extra.Old --- vdr-plugin-burn-0.1.0~pre21/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries.Extra.Old 2006-08-26 20:04:22.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries.Extra.Old 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -/COPYRIGHT.TXT//// diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries.Old vdr-plugin-burn-0.2.2/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries.Old --- vdr-plugin-burn-0.1.0~pre21/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries.Old 2006-08-26 20:04:22.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/fonts/ttf-bitstream-vera-1.10/CVS/Entries.Old 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -/COPYRIGHT.TXT/0/dummy timestamp// -D diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/fonts/ttf-bitstream-vera-1.10/CVS/Repository vdr-plugin-burn-0.2.2/burn/fonts/ttf-bitstream-vera-1.10/CVS/Repository --- vdr-plugin-burn-0.1.0~pre21/burn/fonts/ttf-bitstream-vera-1.10/CVS/Repository 2006-08-26 20:04:13.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/fonts/ttf-bitstream-vera-1.10/CVS/Repository 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -burn/burn/fonts/ttf-bitstream-vera-1.10 diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/fonts/ttf-bitstream-vera-1.10/CVS/Root vdr-plugin-burn-0.2.2/burn/fonts/ttf-bitstream-vera-1.10/CVS/Root --- vdr-plugin-burn-0.1.0~pre21/burn/fonts/ttf-bitstream-vera-1.10/CVS/Root 2006-08-26 20:04:13.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/fonts/ttf-bitstream-vera-1.10/CVS/Root 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -:pserver:lordjaxom@vdr-developer.org:/var/cvsroot diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/ProjectX.ini vdr-plugin-burn-0.2.2/burn/ProjectX.ini --- vdr-plugin-burn-0.1.0~pre21/burn/ProjectX.ini 2006-08-18 20:27:52.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/ProjectX.ini 2010-02-21 09:18:07.000000000 +0000 @@ -6,9 +6,6 @@ SubtitlePanel.SubpictureColorModel=YLE SubtitlePanel.SubtitleExportFormat=SON SubtitlePanel.SubtitleExportFormat_2=SUP -SubtitlePanel.TtxPage1=149 -SubtitlePanel.TtxPage2=150 -SubtitlePanel.TtxPage3=777 # MessagePanel MessagePanel.logRDS=0 diff -Nru vdr-plugin-burn-0.1.0~pre21/burn/vdrburn-dvd.conf vdr-plugin-burn-0.2.2/burn/vdrburn-dvd.conf --- vdr-plugin-burn-0.1.0~pre21/burn/vdrburn-dvd.conf 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn/vdrburn-dvd.conf 2011-10-08 12:28:55.000000000 +0000 @@ -0,0 +1,5 @@ +# settings for vdrburn-dvd.sh + +# Java and Project X +#export JAVA_EXE=/usr/bin/java +export PROJECTX_JAR=/usr/share/java/ProjectX.jar diff -Nru vdr-plugin-burn-0.1.0~pre21/burn.c vdr-plugin-burn-0.2.2/burn.c --- vdr-plugin-burn-0.1.0~pre21/burn.c 2006-09-16 18:33:36.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn.c 2013-02-17 16:52:01.000000000 +0000 @@ -9,7 +9,6 @@ #include "burn.h" #include "gdwrapper.h" -#include "i18n.h" #include "logger-vdr.h" #include "manager.h" #include "menuburn.h" @@ -22,15 +21,33 @@ #include #include +// plugin needs VDR 1.6.0 or 1.7.11+ +#if VDRVERSNUM < 10600 +#error This plugin requires VDR 1.6.0 or VDR 1.7.11+ +#endif + + +#if VDRVERSNUM >= 10699 +#if VDRVERSNUM <= 10710 +#error This plugin requires VDR 1.6.0 or VDR 1.7.11+ +#endif +#endif + +#ifdef TTXT_SUBTITLES +#warning Compiling WITH teletext subtitle support +#else +#warning Compiling WITHOUT teletext subtitle support +#endif + namespace vdr_burn { using namespace std; using proctools::format; - const char* plugin::VERSION = "0.1.0-pre21"; - const char* plugin::DESCRIPTION = "Versatile convert-and-burn plugin"; - const char* plugin::MAINMENUENTRY = "Create DVDs"; + const char* plugin::VERSION = "0.2.2"; + const char* plugin::DESCRIPTION = trNOOP("Versatile convert-and-burn plugin"); + const char* plugin::MAINMENUENTRY = tr("Create DVDs"); string plugin::m_configPath; @@ -45,11 +62,10 @@ string plugin::get_character_encoding() { -#ifdef UTF8PATCH - return "utf8"; -#else - return tr("iso8859-15"); -#endif + if (cCharSetConv::SystemCharacterTable()) + return cCharSetConv::SystemCharacterTable(); + else + return "utf-8"; } const char *plugin::CommandLineHelp() @@ -84,7 +100,6 @@ manager::start(); logger_vdr::start(); - RegisterI18n( i18n::get_phrases() ); gdwrapper::setup::set_font_path( m_configPath + "/fonts" ); if ( !skin_list::get().load( get_config_path() ) ) return false; diff -Nru vdr-plugin-burn-0.1.0~pre21/burn-mrpi-0.3.diff vdr-plugin-burn-0.2.2/burn-mrpi-0.3.diff --- vdr-plugin-burn-0.1.0~pre21/burn-mrpi-0.3.diff 2006-09-10 17:19:21.000000000 +0000 +++ vdr-plugin-burn-0.2.2/burn-mrpi-0.3.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,510 +0,0 @@ -diff -urN burn-cvs/i18n.c burn-cvs-mrpi-0.3/i18n.c ---- burn-cvs/i18n.c 2006-08-22 21:36:52.000000000 +0200 -+++ burn-cvs-mrpi-0.3/i18n.c 2006-08-28 00:54:38.000000000 +0200 -@@ -2643,6 +2643,58 @@ - #endif - #endif - }, -+ { "Offer animated menus", -+ "Animierte Mens anbieten", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+#if VDRVERSNUM >= 10300 -+ "", -+ "", -+ "", -+ "", -+#if VDRVERSNUM >= 10342 -+ "", -+#endif -+#endif -+ }, -+ { "Animate menus", -+ "Animierte Mens", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+ "", -+#if VDRVERSNUM >= 10300 -+ "", -+ "", -+ "", -+ "", -+#if VDRVERSNUM >= 10342 -+ "", -+#endif -+#endif -+ }, - { "DMH-archive", - "DMH-Archiv", - "", -diff -urN burn-cvs/jobs.c burn-cvs-mrpi-0.3/jobs.c ---- burn-cvs/jobs.c 2006-08-25 20:15:57.000000000 +0200 -+++ burn-cvs-mrpi-0.3/jobs.c 2006-08-28 00:56:10.000000000 +0200 -@@ -218,6 +218,7 @@ - job::options::options( void ): - diskType( setup::get().DiskType ), - dmhArchiveMode( setup::get().DmhArchiveMode ), -+ menuAnimation( setup::get().MenuAnimation ), - storeMode( setup::get().StoreMode ), - skinIndex( setup::get().SkinIndex ), - chaptersMode( setup::get().ChaptersMode ), -@@ -237,6 +238,7 @@ - return strcmp( title, other.title ) == 0 && - diskType == other.diskType && - dmhArchiveMode == other.dmhArchiveMode && -+ menuAnimation == other.menuAnimation && - storeMode == other.storeMode && - skinIndex == other.skinIndex && - chaptersMode == other.chaptersMode && -diff -urN burn-cvs/jobs.h burn-cvs-mrpi-0.3/jobs.h ---- burn-cvs/jobs.h 2006-08-11 22:37:23.000000000 +0200 -+++ burn-cvs-mrpi-0.3/jobs.h 2006-08-28 01:00:39.000000000 +0200 -@@ -83,6 +83,7 @@ - std::string get_ignored_cids(void) const; - std::string get_movie_path(void) const; - std::string get_menu_background(int Page) const; -+ std::string get_menu_bg_template(int Page) const; - std::string get_buttons_normal(void) const; - std::string get_buttons_highlight(int Page) const; - std::string get_menu_mpeg(int Page) const; -@@ -115,6 +116,12 @@ - } - - inline -+ std::string recording::get_menu_bg_template(int page) const -+ { -+ return proctools::format("{0}/menu-template-{1}.png") % m_paths.data % page; -+ } -+ -+ inline - std::string recording::get_buttons_normal(void) const - { - return proctools::format("{0}/menu-buttons-ns.png") % m_paths.data; -@@ -144,6 +151,7 @@ - char title[JOBNAMELEN + 1]; - int diskType; - int dmhArchiveMode; -+ int menuAnimation; - int storeMode; - int skinIndex; - int chaptersMode; -@@ -196,6 +204,7 @@ - const char* get_title(void) const { return m_options.title; } - disktype get_disk_type(void) const { return disktype( m_options.diskType ); } - bool get_dmh_archive_mode(void) const { return m_options.dmhArchiveMode; } -+ bool get_menu_animation(void) const { return m_options.menuAnimation; } - storemode get_store_mode(void) const { return storemode( m_options.storeMode ); } - chaptersmode get_chapters_mode(void) const { return chaptersmode( m_options.chaptersMode ); } - disksize get_disk_size(void) const { return disksize( m_options.diskSize ); } -@@ -208,6 +217,7 @@ - - std::string get_iso_path(void) const; - std::string get_menu_background(int Page) const; -+ std::string get_menu_bg_template(int Page) const; - std::string get_buttons_normal(void) const; - std::string get_buttons_highlight(int Page) const; - std::string get_menu_mpeg(int Page) const; -@@ -229,6 +239,12 @@ - } - - inline -+ std::string job::get_menu_bg_template(int page) const -+ { -+ return proctools::format("{0}/menu-template-{1}.png") % m_paths.data % page; -+ } -+ -+ inline - std::string job::get_buttons_normal(void) const - { - return proctools::format("{0}/menu-buttons-ns.png") % m_paths.data; -diff -urN burn-cvs/Makefile burn-cvs-mrpi-0.3/Makefile ---- burn-cvs/Makefile 2006-08-27 20:23:11.000000000 +0200 -+++ burn-cvs-mrpi-0.3/Makefile 2006-08-28 03:10:08.000000000 +0200 -@@ -16,7 +16,7 @@ - ### The C++ compiler and options: - - CXX ?= g++ --CXXFLAGS ?= -O3 -Wall -Woverloaded-virtual -fPIC -+CXXFLAGS ?= -O3 -Wall -Woverloaded-virtual -fpermissive -fPIC - - ### The directory environment: - -diff -urN burn-cvs/menuburn.c burn-cvs-mrpi-0.3/menuburn.c ---- burn-cvs/menuburn.c 2006-08-27 20:22:40.000000000 +0200 -+++ burn-cvs-mrpi-0.3/menuburn.c 2006-08-28 01:02:52.000000000 +0200 -@@ -428,6 +428,9 @@ - if (m_options.diskType == disktype_archive || m_options.dmhArchiveMode) - add_label( format( "{0}:\t{1}" ) % tr("Archive-ID") % job::get_archive_id(), true); - -+ if (setup::get().OfferMenuAnimation) -+ add_item(tr("Animate menus"), m_options.menuAnimation); -+ - if (m_options.diskType == disktype_dvd_menu && skin_list::get().size() > 1) - add_item( tr("Skin"), m_options.skinIndex, skin_list::get().size(), skin_list::get().get_strings() ); - -diff -urN burn-cvs/render.c burn-cvs-mrpi-0.3/render.c ---- burn-cvs/render.c 2006-08-26 22:02:04.000000000 +0200 -+++ burn-cvs-mrpi-0.3/render.c 2006-08-28 19:21:48.000000000 +0200 -@@ -37,10 +37,17 @@ - bool renderer::CreateMainMenuPage(int Page, int Count) - { - int first = Page * m_job.get_skin().get_main_menu_titles().size(); -+ std::string bgImage; - -- image menuPage( 720, 576, true ); -+ image menuPage( 720, 576 ); -+ -+ if( m_job.get_menu_animation() ) -+ bgImage = m_job.get_skin().get_bg_template(); -+ else -+ bgImage = m_job.get_skin().get_background(); -+ -+ image background( bgImage ); - -- image background( m_job.get_skin().get_background() ); - menuPage.draw_image( point( 0, 0 ), background ); - - menuPage.draw_text( m_job.get_skin().get_main_menu_header(), convert_to_utf8( m_job.get_title() ) ); -@@ -56,7 +63,16 @@ - ++it, ++rec) - menuPage.draw_text( it->region, convert_to_utf8( rec->get_name() ) ); - -- menuPage.save( m_job.get_menu_background( Page ) ); -+ if( m_job.get_menu_animation() ) { -+ menuPage.save( m_job.get_menu_bg_template( Page ) ); -+ image mPage( 720, 576 ); -+ image bg( m_job.get_skin().get_background() ); -+ mPage.draw_image( point( 0, 0 ), bg ); -+ mPage.save( m_job.get_menu_background( Page ) ); -+ } -+ else -+ menuPage.save( m_job.get_menu_background( Page ) ); -+ - return true; - } - -@@ -95,11 +111,15 @@ - - bool renderer::CreateMainMenu( chain_vdr& chain ) - { -+ string renderType = "render"; -+ char pageString[5]; -+ - int count = m_job.get_recordings().size() / m_job.get_skin().get_main_menu_titles().size(); - if (m_job.get_recordings().size() % m_job.get_skin().get_main_menu_titles().size() > 0) - ++count; - - for (int page = 0; page < count; ++page) { -+ sprintf( pageString, "%d", page ); - if (!CreateMainMenuPage(page, count) || - !CreateMainMenuButtons(page, count)) - return false; -@@ -108,8 +128,13 @@ - conf.write(page); - - // TODO: move rendering into chain -- shellprocess render( "render", shellescape( "vdrburn-dvd.sh" ) + "render" ); -+ if( m_job.get_menu_animation() ) -+ renderType = "renderanimated"; -+ -+ shellprocess render( "render", shellescape( "vdrburn-dvd.sh" ) + renderType ); -+ render.put_environment("MENU_BACK_TEMPLATE", m_job.get_menu_bg_template(page)); - render.put_environment("MENU_BACKGROUND", m_job.get_menu_background(page)); -+ render.put_environment("MENU_FRAMES_DIR", m_job.get_paths().data + "/frames-" + pageString ); - render.put_environment("MENU_SOUNDTRACK", plugin::get_config_path() + "/menu-silence.mp2"); - render.put_environment("MENU_XML", conf.get_xml_path(page)); - render.put_environment("MENU_M2V", m_job.get_paths().data + "/menu-background.m2v"); -@@ -127,17 +152,24 @@ - - bool renderer::CreateTitleMenuPage(int &Lines, int Page) - { -- image menuPage( 720, 576, true ); -+ image menuPage( 720, 576 ); -+ std::string bgImage; -+ -+ if( m_job.get_menu_animation() ) -+ bgImage = m_job.get_skin().get_bg_template(); -+ else -+ bgImage = m_job.get_skin().get_background(); -+ -+ image background( bgImage ); - -- image background( m_job.get_skin().get_background() ); - menuPage.draw_image( point( 0, 0 ), background ); - - menuPage.draw_text( m_job.get_skin().get_title_menu_header(), convert_to_utf8( m_current->get_name() ) ); - menuPage.draw_text( m_job.get_skin().get_title_menu_play().region, convert_to_utf8( tr("Play movie") ) ); - - // Create "Back"-Button unless SkipMainmenu or if there are other tracks - if( !m_job.get_options().SkipMainmenu || m_job.get_recordings().size() > 1 ) - menuPage.draw_text( m_job.get_skin().get_title_menu_exit().region, convert_to_utf8( tr("Back") ) ); - - Lines = menuPage.draw_text( m_job.get_skin().get_title_menu_text(), convert_to_utf8( m_current->get_summary() ), Lines ); - -@@ -143,7 +178,16 @@ - if (Page > 0) - menuPage.draw_text( m_job.get_skin().get_title_menu_previous().region, convert_to_utf8( tr("Previous page") ) ); - -- menuPage.save( m_current->get_menu_background(Page) ); -+ if( m_job.get_menu_animation() ) { -+ menuPage.save( m_current->get_menu_bg_template(Page) ); -+ image mPage( 720, 576 ); -+ image bg( m_job.get_skin().get_background() ); -+ mPage.draw_image( point( 0, 0 ), bg ); -+ mPage.save( m_current->get_menu_background( Page ) ); -+ } -+ else -+ menuPage.save( m_current->get_menu_background(Page) ); -+ - return true; - } - -@@ -183,9 +228,12 @@ - bool renderer::CreateTitleMenu( chain_vdr& chain ) - { - /* Still quite ugly, but how else?? */ -+ string renderType = "render"; - int lines = 0, page = 0; -+ char pageString[5]; - - while (lines != -1) { -+ sprintf( pageString, "%d", page ); - if (!CreateTitleMenuPage(lines, page) || - !CreateTitleMenuButtons(lines, page)) - return false; -@@ -194,8 +242,13 @@ - conf.write(page); - - // TODO move rendering into chain -- shellprocess render( "render", shellescape( "vdrburn-dvd.sh" ) + "render" ); -+ if( m_job.get_menu_animation() ) -+ renderType = "renderanimated"; -+ -+ shellprocess render( "render", shellescape( "vdrburn-dvd.sh" ) + renderType ); -+ render.put_environment("MENU_BACK_TEMPLATE", m_current->get_menu_bg_template(page)); - render.put_environment("MENU_BACKGROUND", m_current->get_menu_background(page)); -+ render.put_environment("MENU_FRAMES_DIR", m_current->get_paths().data + "/frames-" + pageString ); - render.put_environment("MENU_SOUNDTRACK", string( plugin::get_config_path() ) + "/menu-silence.mp2"); - render.put_environment("MENU_XML", conf.get_xml_path(page)); - render.put_environment("MENU_MPEG", m_current->get_menu_mpeg(page)); -diff -urN burn-cvs/setup.c burn-cvs-mrpi-0.3/setup.c ---- burn-cvs/setup.c 2006-08-11 22:37:23.000000000 +0200 -+++ burn-cvs-mrpi-0.3/setup.c 2006-08-28 01:24:38.000000000 +0200 -@@ -92,11 +92,13 @@ - PROCTOOLS_INIT_PROPERTY( OfferDiskSize, 1 ), - PROCTOOLS_INIT_PROPERTY( OfferStoreMode, 1 ), - PROCTOOLS_INIT_PROPERTY( OfferDmhArchiveMode, 1 ), -+ PROCTOOLS_INIT_PROPERTY( OfferMenuAnimation, 1 ), - PROCTOOLS_INIT_PROPERTY( DiskType, disktype_dvd_menu ), - PROCTOOLS_INIT_PROPERTY( SkinIndex, 0 ), - PROCTOOLS_INIT_PROPERTY( ChaptersMode, chaptersmode_10 ), - PROCTOOLS_INIT_PROPERTY( StoreMode, storemode_burn ), - PROCTOOLS_INIT_PROPERTY( DmhArchiveMode, 1 ), -+ PROCTOOLS_INIT_PROPERTY( MenuAnimation, 1 ), - PROCTOOLS_INIT_PROPERTY( DiskSize, disksize_singlelayer ), - PROCTOOLS_INIT_PROPERTY( CustomDiskSize, 200 ), - PROCTOOLS_INIT_PROPERTY( BurnSpeed, 0 ), -@@ -148,6 +150,7 @@ - Add(new cMenuEditBoolItem(tr("Offer disk size"), &m_data.OfferDiskSize)); - Add(new cMenuEditBoolItem(tr("Offer cutting"), &m_data.OfferCutOnDemux)); - Add(new cMenuEditBoolItem(tr("Offer DMH-archive"), &m_data.OfferDmhArchiveMode)); -+ Add(new cMenuEditBoolItem(tr("Offer animated menus"), &m_data.OfferMenuAnimation)); - - Add(new menu::text_item(tr("--- Defaults ---------------------------------------------------------"))); - Add(new cMenuEditStraItem(tr("Disk type"), &m_data.DiskType, disktype_count, -@@ -173,6 +176,7 @@ - Add(new menu::speed_edit_item(tr("Burn speed"), m_data.BurnSpeed)); - Add(new cMenuEditBoolItem(tr("Cut"), &m_data.CutOnDemux)); - Add(new cMenuEditBoolItem(tr("DMH-archive"), &m_data.DmhArchiveMode)); -+ Add(new cMenuEditBoolItem(tr("Animate menus"), &m_data.MenuAnimation)); - } - - void cBurnMenuSetupPage::Store(void) -diff -urN burn-cvs/setup.h burn-cvs-mrpi-0.3/setup.h ---- burn-cvs/setup.h 2006-08-11 22:37:23.000000000 +0200 -+++ burn-cvs-mrpi-0.3/setup.h 2006-08-28 01:26:23.000000000 +0200 -@@ -46,11 +46,13 @@ - proctools::property OfferDiskSize; - proctools::property OfferStoreMode; - proctools::property OfferDmhArchiveMode; -+ proctools::property OfferMenuAnimation; - proctools::property DiskType; - proctools::property SkinIndex; - proctools::property ChaptersMode; - proctools::property StoreMode; - proctools::property DmhArchiveMode; -+ proctools::property MenuAnimation; - proctools::property DiskSize; - proctools::property CustomDiskSize; - proctools::property BurnSpeed; -diff -urN burn-cvs/skins.c burn-cvs-mrpi-0.3/skins.c ---- burn-cvs/skins.c 2006-08-26 21:59:45.000000000 +0200 -+++ burn-cvs-mrpi-0.3/skins.c 2006-08-28 00:35:39.000000000 +0200 -@@ -34,13 +34,15 @@ - // --- skin --------------------------------------------------------------- - - std::string skin::default_background; -+ std::string skin::default_bg_template; - std::string skin::default_button; - -- skin::skin(const std::string& name, const std::string& background, -+ skin::skin(const std::string& name, const std::string& background, const std::string& bg_template, - const std::string& button_, bool default_): - m_default( default_ ), - m_name( name ), - m_background( background.empty() ? default_background : background ), -+ m_bg_template( bg_template.empty() ? default_bg_template : bg_template ), - m_button( button_.empty() ? default_button : button_ ), - m_mainMenuHeader( rectangle( 90, 52, 450, 30 ), font_spec( "Vera", 16 ), - color( 0xff, 0xff, 0xff ) ), -@@ -75,14 +77,15 @@ - color( 0xff, 0xff, 0xff ) ) ) ); - - replace(m_name.begin(), m_name.end(), '_', ' '); -- logger::debug(format("loaded skin {0} using {1} and {2}") -- % m_name % m_background % m_button); -+ logger::debug(format("loaded skin {0} using {1}, {2} and {3}") -+ % m_name % m_background % m_bg_template % m_button); - } - -- void skin::set_defaults(const std::string& background, -+ void skin::set_defaults(const std::string& background, const std::string& bg_template, - const std::string& button) - { - default_background = background; -+ default_bg_template = bg_template; - default_button = button; - } - -@@ -130,14 +133,15 @@ - bool skin_list::load( const std::string& path ) - { - string background = check_skin_files( path, "menu-bg", true ); -+ string bg_template = check_skin_files( path, "menu-template", true ); - string button = check_skin_files( path, "menu-button", true ); - -- if (background.empty() || button.empty()) -+ if (background.empty() || bg_template.empty() || button.empty()) - return false; - -- skin::set_defaults(background, button); -+ skin::set_defaults(background, bg_template, button); - -- insert(end(), skin(tr("Default"), string(), string(), true)); -+ insert(end(), skin(tr("Default"), string(), string(), string(), true)); - - string skinPath = format("{0}/skins") % path; - cReadDir dir( skinPath.c_str() ); -@@ -146,11 +150,12 @@ - if ( ent->d_name[0] == '.' ) // hide dotfiles, '.' and '..' - continue; - -- background = check_skin_files( format( "{0}/{1}" ) % skinPath % ent->d_name, "menu-bg" ); -- button = check_skin_files( format( "{0}/{1}" ) % skinPath % ent->d_name, "menu-button" ); -+ background = check_skin_files( format( "{0}/{1}" ) % skinPath % ent->d_name, "menu-bg" ); -+ bg_template = check_skin_files( format( "{0}/{1}" ) % skinPath % ent->d_name, "menu-template" ); -+ button = check_skin_files( format( "{0}/{1}" ) % skinPath % ent->d_name, "menu-button" ); - -- if ( !background.empty() || !button.empty() ) -- insert( end(), skin( ent->d_name, background, button ) ); -+ if ( !background.empty() || !bg_template.empty() || !button.empty() ) -+ insert( end(), skin( ent->d_name, background, bg_template, button ) ); - } - sort( begin(), end() ); - -diff -urN burn-cvs/skins.h burn-cvs-mrpi-0.3/skins.h ---- burn-cvs/skins.h 2006-08-26 21:59:45.000000000 +0200 -+++ burn-cvs-mrpi-0.3/skins.h 2006-08-28 00:35:39.000000000 +0200 -@@ -29,11 +29,13 @@ - - private: - static std::string default_background; -+ static std::string default_bg_template; - static std::string default_button; - - bool m_default; - std::string m_name; - std::string m_background; -+ std::string m_bg_template; - std::string m_button; - - gdwrapper::text_spec m_mainMenuHeader; -@@ -49,13 +51,14 @@ - gdwrapper::text_spec m_titleMenuText; - - public: -- skin(const std::string& name, const std::string& background, -+ skin(const std::string& name, const std::string& background, const std::string& bg_template, - const std::string& button_, bool default_ = false); - -- static void set_defaults(const std::string& background, const std::string& button); -+ static void set_defaults(const std::string& background, const std::string& bg_template, const std::string& button); - - const std::string& get_name(void) const { return m_name; } - const std::string& get_background(void) const { return m_background; } -+ const std::string& get_bg_template(void) const { return m_bg_template; } - - const gdwrapper::text_spec& get_main_menu_header( void ) const { return m_mainMenuHeader; } - const button& get_main_menu_previous( void ) const { return m_mainMenuPrevious; } -diff -urN burn-cvs/vdrburn-dvd.sh burn-cvs-mrpi-0.3/vdrburn-dvd.sh ---- burn-cvs/vdrburn-dvd.sh 2006-08-27 20:33:45.000000000 +0200 -+++ burn-cvs-mrpi-0.3/vdrburn-dvd.sh 2006-08-28 19:53:31.000000000 +0200 -@@ -48,6 +48,35 @@ - spumux -v 2 "$MENU_XML" > "$MENU_MPEG" - ;; - -+ renderanimated) -+ FADE_FRAMES=35 -+ PRE_FRAMES=5 -+ # XXX TODO !!!! -+ -+ mkdir "$MENU_FRAMES_DIR" -+ -+ echo "BACK_TEMPLATE: $MENU_BACK_TEMPLATE" -+ for i in `seq 0 $FADE_FRAMES`; -+ do -+ composite -quality 100 -dissolve $(( ($i * 100) / $FADE_FRAMES )) "$MENU_BACK_TEMPLATE" "$MENU_BACKGROUND" "$MENU_FRAMES_DIR/vdrburn-menu-out-$(($i + $PRE_FRAMES)).png" -+ done -+ -+ # create the pre-frames from the first fade-frame ("... -dissolve 0 ...") -+ for i1 in `seq 0 $(($PRE_FRAMES - 1))`; -+ do -+ ln -sf "$MENU_FRAMES_DIR/vdrburn-menu-out-$PRE_FRAMES.png" "$MENU_FRAMES_DIR/vdrburn-menu-out-$i1.png" -+ done -+ -+ # make the last three frames identical - for interlaced outputs -+ ln -sf "$MENU_FRAMES_DIR/vdrburn-menu-out-$(($PRE_FRAMES + $FADE_FRAMES)).png" "$MENU_FRAMES_DIR/vdrburn-menu-out-$(($PRE_FRAMES + $FADE_FRAMES + 1)).png" -+ ln -sf "$MENU_FRAMES_DIR/vdrburn-menu-out-$(($PRE_FRAMES + $FADE_FRAMES)).png" "$MENU_FRAMES_DIR/vdrburn-menu-out-$(($PRE_FRAMES + $FADE_FRAMES + 2)).png" -+ -+ png2yuv -j "$MENU_FRAMES_DIR/vdrburn-menu-out-%d.png" -f 25 -I p -L 0 | \ -+ mpeg2enc -f 8 -n p -o "$MENU_M2V" -+ mplex -f 8 -o /dev/stdout "$MENU_M2V" "$MENU_SOUNDTRACK" | \ -+ spumux -v 2 "$MENU_XML" > "$MENU_MPEG" -+ ;; -+ - demux) - IGNORE="" - if [ ! -z $IGNORE_TRACKS ]; then diff -Nru vdr-plugin-burn-0.1.0~pre21/chain-dvd.c vdr-plugin-burn-0.2.2/chain-dvd.c --- vdr-plugin-burn-0.1.0~pre21/chain-dvd.c 2006-09-16 18:33:36.000000000 +0000 +++ vdr-plugin-burn-0.2.2/chain-dvd.c 2011-12-27 15:38:28.000000000 +0000 @@ -50,7 +50,9 @@ void chain_dvd::process_line(const string& line) { - static const string px_found_id( "-> found PES-ID " ); + static const string px_found_id( "++> " ); + static const string px_found_pid( ": PID " ); + static const string px_found_pesid( " / PesID " ); static const string stat_vobu( "STAT: VOBU " ); static const string stat_fixing( "STAT: fixing VOBU at " ); static const string burn_done( "% done, estimate finish" ); @@ -58,21 +60,48 @@ switch (m_step) { case build: { - if (line.substr(0, px_found_id.length()) == px_found_id) { - istringstream parser( line.substr(px_found_id.length()) ); - int cid; - parser >> setbase(16) >> cid; + // [demux] ++> Mpg Video: PID 0x006E / PesID 0xE0 / SubID 0x00 : + // [demux] ++> AC3/DTS Audio: PID 0x007D / PesID 0xBD / SubID 0x00 : + // [demux] ++> Teletext: PID 0x0082 / PesID 0xBD / SubID 0x10 : + // [demux] ++> Mpg Audio: PID 0x0079 / PesID 0xC1 / SubID 0x00 : + // [demux] ++> Mpg Audio: PID 0x0078 / PesID 0xC0 / SubID 0x00 : + // [demux] ++> Subpicture: PID 0x0083 / PesID 0xBD / SubID 0x20 : - logger::info( str( boost::format( "px found id: 0x%02x" ) % cid ) ); - if (cid >= 0xc0 && cid <= 0xdf) { // audio stream + if (line.substr(0, px_found_id.length()) == px_found_id) { + size_t found = line.find(px_found_pid); + string type = line.substr (px_found_id.length(), found - px_found_id.length()); + logger::info( str( boost::format( "px found type: %s" ) % type) ); + + istringstream pidparser( line.substr(found + px_found_pid.length()) ); + int pid; + pidparser >> setbase(16) >> pid; + + found = line.find(px_found_pesid); + istringstream pesidparser( line.substr(found + px_found_pesid.length()) ); + int pesid; + pesidparser >> setbase(16) >> pesid; + + if (pesid >= 0xe0 && pesid <= 0xef) { // video stream + //m_currentRecording->set_track_path( pid ? pid : pesid, "vdrsync.mpv"); + logger::info( str( boost::format( "px found id: 0x%04x/0x%02x, vdrsync.mpv" ) % pid % pesid ) ); + } + else if (pesid >= 0xc0 && pesid <= 0xdf) { ostringstream filename; filename << "vdrsync"; - if (m_pxAudioIndex > 0) - filename << m_pxAudioIndex; + if (m_pxAudioIndex > 0) { + filename << "-" << setw(2) << setfill('0') << m_pxAudioIndex+1; + } filename << ".mpa"; - m_currentRecording->set_track_path(cid, filename.str()); + m_currentRecording->set_track_path( pid ? pid : pesid, filename.str()); + logger::info( str( boost::format( "px found id: 0x%04x/0x%02x, %s" ) % pid % pesid % filename.str()) ); ++m_pxAudioIndex; } + else if (pesid == 0xbd && string::npos != type.find ("AC3", 0)) { // private stream + m_currentRecording->set_track_path( pid ? pid : pesid, "vdrsync.ac3"); + logger::info( str( boost::format( "px found id: 0x%04x/0x%02x, vdrsync.ac3" ) % pid % pesid ) ); + } + //else + // logger::info( str( boost::format( "px found id: 0x%04x/0x%02x (unhandled)" ) % pid % pesid ) ); } else if (line.substr(0, stat_vobu.length()) == stat_vobu) { if (!elapsed_since(m_lastProgress, 1)) @@ -133,7 +162,7 @@ { if (proc->return_status() == process::ok) { // positive return - if (proc->name() == "demux" && global_setup().DemuxType == demuxtype_projectx) + if (proc->name() == "demux") prepare_mplex(); else if (proc->name() == "mplex") { m_lastRecSize = m_currentRecording->get_tracks_size(); @@ -142,19 +171,24 @@ // prevent this to happen again when author quits before mplex ++m_currentRecording; if (m_currentRecording != get_recordings().end()) - prepare_recording(); + prepare_demux(); } } else if (proc->name() == "author") { m_step = burn; +#ifndef ENABLE_DMH_ARCHIVE + return prepare_burning(); +#else if(get_job().get_dmh_archive_mode()) { - m_currentRecording = get_recordings().begin(); - return prepare_dmh_archive(); + m_currentRecording = get_recordings().begin(); + return prepare_dmh_archive(); } else { - // no DMH-archive wanted, so go directly to burning - return prepare_burning(); + // no DMH-archive wanted, so go directly to burning + return prepare_burning(); } +#endif } +#ifdef ENABLE_DMH_ARCHIVE else if (proc->name() == "dmharchive") { ++m_currentRecording; if (m_currentRecording != get_recordings().end()) { @@ -166,6 +200,7 @@ else if (proc->name() == "archivemark") { return prepare_burning(); } +#endif return true; } @@ -190,7 +225,6 @@ make_dir(rec.get_paths().data); // fifos for video track and muxed movie - make_fifo(rec.get_video_track_path()); make_fifo(rec.get_movie_path()); make_fifo(rec.get_requant_path()); @@ -200,7 +234,6 @@ bind( &chain_dvd::make_fifo, this, bind( &recording::get_track_path, rec, _1 ) )); - } bool chain_dvd::prepare_job() @@ -211,7 +244,7 @@ // render menu's renderer render_menus( get_job(), *this ); -#warning error handling +#warning error handling render_menus if ( !render_menus() ) { logger::error("rendering menu failed - aborting job"); return false; @@ -222,7 +255,7 @@ xml.write(); // prepare first recording - prepare_recording(); + prepare_demux(); // start authoring shellprocess* author = new shellprocess( "author", shellescape( "vdrburn-dvd.sh" ) + "author" ); @@ -231,29 +264,17 @@ author->put_environment("DVDAUTHOR_PATH", xml.get_author_path()); author->put_environment("ISO_FILE", get_job().get_iso_path()); author->put_environment("DVD_DEVICE", BurnParameters.DvdDevice); + author->put_environment("VIDEO_FORMAT", (25.0 == m_currentRecording->get_FramesPerSecond() ? "PAL" : "NTSC")); add_process(author); return true; } - void chain_dvd::prepare_recording() - { - prepare_demux(); - if (global_setup().DemuxType != demuxtype_projectx) - prepare_mplex(); - } - void chain_dvd::prepare_demux() { - const char* demux_call; - if ( global_setup().DemuxType == demuxtype_projectx ) - demux_call = "demuxpx"; - else - demux_call = "demux"; - m_pxAudioIndex = 0; // processes - shellprocess* demux = new shellprocess( "demux", shellescape( "vdrburn-dvd.sh" ) + demux_call); + shellprocess* demux = new shellprocess( "demux", shellescape( "vdrburn-dvd.sh" ) + "demux" ); demux->put_environment("RECORDING_PATH", m_currentRecording->get_filename()); demux->put_environment("IGNORE_TRACKS", m_currentRecording->get_ignored_cids()); demux->put_environment("USED_TRACKS", m_currentRecording->get_used_cids()); @@ -262,17 +283,23 @@ demux->put_environment("CONFIG_PATH", plugin::get_config_path()); if (get_job().get_cut_on_demux() && prepare_cutmarks()) demux->put_environment("USE_CUTTING", "1"); +#ifdef TTXT_SUBTITLES + demux->put_environment("TTXT_OPTS", m_currentRecording->get_TtxtPageOpts()); +#endif add_process(demux); } void chain_dvd::prepare_mplex() { + // insert requant step if required if (get_job().get_requant_factor() > 1) { const char* requant_call; if ( global_setup().RequantType == requanttype_transcode ) requant_call = "tcrequant"; - else + else if ( global_setup().RequantType == requanttype_metakine ) requant_call = "requant"; + else + requant_call = "lxrequant"; shellprocess* requant = new shellprocess( "requant", shellescape( "vdrburn-dvd.sh" ) + requant_call ); requant->put_environment("VIDEO_FILE", m_currentRecording->get_video_track_path()); @@ -282,8 +309,34 @@ add_process(requant); } + /// subtitle handling + const_track_filter subtitleTracks( m_currentRecording->get_tracks(), track_info::streamtype_subtitle, track_predicate::used ); + int subtitletrack_no = 0; + const_track_filter::iterator subtitleTrack = subtitleTracks.begin(); + while (subtitleTrack != subtitleTracks.end()) { + make_fifo( m_currentRecording->get_subtitle_path(subtitletrack_no) ); + shellprocess* subtitle = new shellprocess( str ( boost::format( "subtitle%d" ) % subtitletrack_no), shellescape( "vdrburn-dvd.sh" ) + "subtitle" ); + subtitle->put_environment("NUMBER", subtitletrack_no); + if (subtitleTrack->subtitle.type == track_info::subtitletype_teletext) + subtitle->put_environment("TTXTPAGE", subtitleTrack->subtitle.teletextpage); + subtitle->put_environment("MPEG_DATA_PATH", m_currentRecording->get_paths().data); + subtitle->put_environment("SPUMUX_FILE", m_currentRecording->get_spumux_path(subtitletrack_no)); + subtitle->put_environment("MOVIE_FILE", m_currentRecording->get_subtitle_path(subtitletrack_no)); + subtitleTrack++; + subtitle->put_environment("SUBTITLED_FILE", + (subtitleTrack == subtitleTracks.end()) + ? m_currentRecording->get_movie_path() + : m_currentRecording->get_subtitle_path(subtitletrack_no+1)); + add_process(subtitle); + subtitletrack_no++; + } + shellprocess* mplex = new shellprocess( "mplex", shellescape( "vdrburn-dvd.sh" ) + "mplex" ); - mplex->put_environment("MOVIE_FILE", m_currentRecording->get_movie_path()); + mplex->put_environment("MOVIE_FILE", + subtitleTracks.begin() != subtitleTracks.end() + ? m_currentRecording->get_subtitle_path(0) + : m_currentRecording->get_movie_path()); + mplex->put_environment("MPEG_DATA_PATH", m_currentRecording->get_paths().data); mplex->put_environment("MPEG_TMP_PATH", m_currentRecording->get_paths().temp); mplex->put_environment("VIDEO_FILE", @@ -365,13 +418,7 @@ case storemode_burn: { - const char* burn_call; - if (get_job().get_disk_size() == disksize_cdr) - burn_call = "burndircd"; - else - burn_call = "burndir"; - - shellprocess* burn = new shellprocess( "burn", shellescape( "vdrburn-dvd.sh" ) + burn_call ); + shellprocess* burn = new shellprocess( "burn", shellescape( "vdrburn-dvd.sh" ) + "burndir" ); burn->put_environment("DVDAUTHOR_PATH", dvdauthor_xml::get_author_path(get_job())); burn->put_environment("DVD_DEVICE", BurnParameters.DvdDevice); burn->put_environment("BURN_SPEED", global_setup().BurnSpeed); @@ -393,13 +440,7 @@ pipe->put_environment("DISC_ID", get_job().get_volume_id()); add_process(pipe); - const char* burn_call; - if (get_job().get_disk_size() == disksize_cdr) - burn_call = "burnisocd"; - else - burn_call = "burniso"; - - shellprocess* burn = new shellprocess( "burn", shellescape( "vdrburn-dvd.sh" ) + burn_call ); + shellprocess* burn = new shellprocess( "burn", shellescape( "vdrburn-dvd.sh" ) + "burniso" ); burn->put_environment("DVD_DEVICE", BurnParameters.DvdDevice); burn->put_environment("ISO_PIPE", fifofmt.str()); burn->put_environment("BURN_SPEED", global_setup().BurnSpeed); @@ -413,26 +454,42 @@ bool chain_dvd::prepare_cutmarks() { - if (global_setup().DemuxType == demuxtype_vdrsync) - return true; - cMarks marks; +#if VDRVERSNUM >= 10703 + if (!marks.Load(m_currentRecording->get_filename().c_str(), m_currentRecording->get_FramesPerSecond(), m_currentRecording->get_PesRecording()) || !marks.Count()) + return false; + + cIndexFile ifile( m_currentRecording->get_filename().c_str(), false, m_currentRecording->get_PesRecording() ); +#else if (!marks.Load(m_currentRecording->get_filename().c_str()) || !marks.Count()) return false; + cIndexFile ifile( m_currentRecording->get_filename().c_str(), false); +#endif + // convert marks to bytepos - cIndexFile ifile( m_currentRecording->get_filename().c_str(), false ); ofstream cutfile( str( boost::format("%s/px.cut") % m_currentRecording->get_paths().data ).c_str() ); for (cMark *mark = marks.First(); mark != 0; mark = marks.Next(mark)) { +#if VDRVERSNUM >= 10721 + int pos = mark->Position(); +#else int pos = mark->position; +#endif +#if VDRVERSNUM >= 10703 + uint16_t filenumber; + off_t offset; + ifile.Get(pos, &filenumber, &offset); +#else uchar filenumber; int offset; ifile.Get(pos, &filenumber, &offset, 0, 0); +#endif uint64_t bytepos = offset; - boost::format filefmt( "%s/%03d.vdr" ); + boost::format filefmt( m_currentRecording->get_PesRecording() ? "%s/%03d.vdr" : "%s/%05d.ts" ); + for (int i = 1; i < filenumber; ++i) { boost::format vdrfile( filefmt ); vdrfile % m_currentRecording->get_filename() % i; @@ -451,6 +508,7 @@ return true; } +#ifdef ENABLE_DMH_ARCHIVE bool chain_dvd::prepare_dmh_archive() { shellprocess* dmharchive = new shellprocess( "dmharchive", shellescape( "vdrburn-dvd.sh" ) + "dmharchive" ); @@ -475,4 +533,5 @@ add_process(archivemark); return true; } +#endif } diff -Nru vdr-plugin-burn-0.1.0~pre21/chain-dvd.h vdr-plugin-burn-0.2.2/chain-dvd.h --- vdr-plugin-burn-0.1.0~pre21/chain-dvd.h 2006-09-16 18:33:36.000000000 +0000 +++ vdr-plugin-burn-0.2.2/chain-dvd.h 2011-08-05 19:21:58.000000000 +0000 @@ -28,14 +28,15 @@ void create_files(const recording& rec); bool prepare_job(); - void prepare_recording(); void prepare_demux(); void prepare_mplex(); bool prepare_device(); bool prepare_burning(); bool prepare_cutmarks(); +#ifdef ENABLE_DMH_ARCHIVE bool prepare_dmh_archive(); bool prepare_archive_mark(); +#endif private: friend class chain_vdr; diff -Nru vdr-plugin-burn-0.1.0~pre21/chain-vdr.c vdr-plugin-burn-0.2.2/chain-vdr.c --- vdr-plugin-burn-0.1.0~pre21/chain-vdr.c 2006-09-16 16:55:15.000000000 +0000 +++ vdr-plugin-burn-0.2.2/chain-vdr.c 2011-10-08 09:44:36.000000000 +0000 @@ -1,6 +1,5 @@ #include "chain-vdr.h" #include "chain-dvd.h" -#include "chain-archive.h" #include "logger-vdr.h" #include "setup.h" #include "menuburn.h" @@ -13,6 +12,10 @@ #include #include +#ifdef ENABLE_DMH_ARCHIVE +#include "chain-archive.h" +#endif + namespace vdr_burn { @@ -25,9 +28,7 @@ chain_vdr::chain_vdr(const string& name, job& job_): chain(name), -#if VDRVERSNUM >= 10300 cThread("burn: subprocess watcher"), -#endif m_job( job_ ), m_paths( create_temp_path( BurnParameters.TempPath ), create_temp_path( BurnParameters.DataPath ) ), m_progress(0), @@ -37,15 +38,18 @@ { job_.set_paths(m_paths); logger_vdr::set_logfile( get_log_path() ); + logger::debug(format ("writing detail log to {0}") % get_log_path()); } chain_vdr::~chain_vdr() { stop(); - if (return_status() != process::ok) - execute( shellescape( "rm" ) + "-rf" + m_job.get_iso_path() ); - execute( shellescape( "rm" ) + "-rf" + m_paths.temp ); - execute( shellescape( "rm" ) + "-rf" + m_paths.data ); + if (!BurnParameters.KeepTempFiles) { + if (return_status() != process::ok) + execute( shellescape( "rm" ) + "-rf" + m_job.get_iso_path() ); + execute( shellescape( "rm" ) + "-rf" + m_paths.temp ); + execute( shellescape( "rm" ) + "-rf" + m_paths.data ); + } } chain_vdr* chain_vdr::create_chain(job& job) @@ -54,7 +58,9 @@ case disktype_dvd_menu: case disktype_dvd_nomenu: return new chain_dvd(job); +#ifdef ENABLE_DMH_ARCHIVE case disktype_archive: return new chain_archive(job); +#endif } logger::error( "chain_vdr::create_chain requested for unknown disktype" ); @@ -94,6 +100,7 @@ if (global_setup().PreserveLogFiles) { string target = BurnParameters.IsoPath.empty() ? BurnParameters.TempPath : BurnParameters.IsoPath; + logger::debug(format ("moving detail log to {0}/vdrburn-{1}.log") % target % m_job.get_title() ); execute( shellescape( "cp" ) + get_log_path() + str( format( "{0}/vdrburn-{1}.log" ) % target % m_job.get_title() ) ); } @@ -101,19 +108,7 @@ void chain_vdr::Action() { -#if VDRVERSNUM < 10300 - logger::info(format("subprocess watcher thread started (pid={0})") - % getpid()); - setpriority(PRIO_PROCESS, 0, 19); -#else SetPriority(19); -#endif - run(); - -#if VDRVERSNUM < 10300 - logger::info(format("subprocess watcher thread stopped (pid={0})") - % getpid()); -#endif } }; diff -Nru vdr-plugin-burn-0.1.0~pre21/clean.bat vdr-plugin-burn-0.2.2/clean.bat --- vdr-plugin-burn-0.1.0~pre21/clean.bat 2006-06-15 10:41:22.000000000 +0000 +++ vdr-plugin-burn-0.2.2/clean.bat 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -set PATH=D:\cygwin\bin -ssh root@192.168.1.104 bin/chrootclean.sh burn diff -Nru vdr-plugin-burn-0.1.0~pre21/common.c vdr-plugin-burn-0.2.2/common.c --- vdr-plugin-burn-0.1.0~pre21/common.c 2006-09-16 18:33:36.000000000 +0000 +++ vdr-plugin-burn-0.2.2/common.c 2012-12-24 08:55:36.000000000 +0000 @@ -2,7 +2,7 @@ * See the files COPYING and README for copyright information and how to reach * the author. * - * $Id: common.c,v 1.28 2006/09/16 18:33:36 lordjaxom Exp $ + * $Id: common.c,v 1.29 2006/10/01 21:22:27 lordjaxom Exp $ */ #include "burn.h" @@ -35,18 +35,27 @@ // --- disktype ----------------------------------------------------------- const char* disktype_strings[disktype_count] = - { "DVD with menus", "DVD without menus", "Archive disk" }; +#ifdef ENABLE_DMH_ARCHIVE + { tr("DVD with menus"), tr("DVD without menus"), tr("Archive disk") }; +#else + { tr("DVD with menus"), tr("DVD without menus") }; +#endif // --- storemode ---------------------------------------------------------- const char* storemode_strings[storemode_count] = - { "Create ISO only", "Write to Disc", "Create ISO and write" }; + { tr("Create ISO only"), tr("Burn to Disc only"), tr("Create ISO and burn") }; + + // --- skinaspecttype ----------------------------------------------------------- + + const char* skinaspect_strings[skinaspect_count] = + { "16:9", "4:3" }; // --- chaptersmode ------------------------------------------------------- const char* chaptersmode_strings[chaptersmode_count] = - { "No chapters", "Use editing marks", "Every 5 minutes", "Every 10 minutes", - "Every 15 minutes", "Every 30 minutes", "Every hour" }; + { tr("No chapters"), tr("Use editing marks"), tr("Every 5 minutes"), tr("Every 10 minutes"), + tr("Every 15 minutes"), tr("Every 30 minutes"), tr("Every hour") }; const int chaptersmode_intervals[chaptersmode_count] = { -1, -1, 5, 10, 15, 30, 60 }; @@ -54,25 +63,26 @@ // --- disksize ----------------------------------------------------------- const char* disksize_strings[disksize_count] = - { "Single Layer", "Double Layer", "CD-R", "Custom" }; + { tr("Single Layer"), tr("Double Layer"), tr("Custom") }; const int disksize_values[disksize_count] = - { 4472, 7944, 690, -1 }; + { 4472, 7944, -1 }; // --- demuxtype ---------------------------------------------------------- const char* demuxtype_strings[demuxtype_count] = - { "VDRSync", "ProjectX" }; + { tr("ProjectX") }; + //{ tr("VDRSync"), tr("ProjectX") }; // --- requanttype -------------------------------------------------------- const char* requanttype_strings[requanttype_count] = - { "M2VRequantizer", "Transcode" }; + { tr("M2VRequantizer"), tr("Transcode"), tr("lxdvdrip") }; -const char *TitleChars = "abcdefghijklmnopqrstuvwxyz" - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "0123456789" - "äöüÄÖÜß:- "; + // --- titletype -------------------------------------------------------- + + const char* titletype_strings[titletype_count] = + { tr("EPG Title"), tr("EPG Title - Short Text"), tr("EPG Short Text"), tr("Recording") }; int ScanPageCount(const std::string& Path) { @@ -106,6 +116,9 @@ if (current > total) current = total; + if (current < 0) + current = 0; + int l = static_cast(current * (length - 2) / total); ostringstream builder; @@ -116,23 +129,21 @@ return builder.str(); } - void trim_left( std::string& text_, const char* characters_ ) + void trim_left( std::string& text_, const char* characters_, std::string::size_type offset_ ) { - std::string::size_type pos = 0; - do { - while ( strchr( characters_, text_[ pos ] ) != NULL ) - text_.erase( 0, 1 ); - if ( ( pos = text_.find( '~' ) ) != std::string::npos ) - ++pos; - } while ( pos != std::string::npos ); + std::string::size_type pos; + if ( ( pos = text_.find_first_not_of( characters_, offset_ ) ) > 0 ) + text_.erase( offset_, pos - offset_ ); } string get_recording_datetime(const cRecording* recording_, char delimiter) { string title = recording_->Title('\t', false, -1 -#ifdef LIEMIKUUTIO // hatred... HATRED!!! +#ifdef LIEMIKUUTIO +#if LIEMIKUUTIO <= 130 , true #endif +#endif ); string::iterator it = title.begin(); @@ -147,7 +158,7 @@ return title; } -string get_recording_title(const cRecording* recording_, int level) +string get_recording_osd_line(const cRecording* recording_, int level) { stringstream result; string name( recording_->Name() ); @@ -159,14 +170,40 @@ result << get_recording_datetime(recording_); +#ifdef ENABLE_DMH_ARCHIVE ostringstream archivePath; archivePath << recording_->FileName() << "/dvd.vdr"; if (access(archivePath.str().c_str(), F_OK) == 0) result << 'A'; else result << ' '; +#endif + + string RecLength("--"); + +#if VDRVERSNUM >= 10721 + // VDR 1.7.21+ + int minutes = recording_->LengthInSeconds() / 60; + stringstream RecLen; + RecLen << (minutes / 60) << ":" << setw(2) << setfill('0') << (minutes % 60); + + result << '\t' << RecLen.str() << (recording_->IsNew() ? '*' : ' ') << '\t' << name; +#else +#if VDRVERSNUM < 10703 + // VDR 1.6 + cIndexFile *index = new cIndexFile(recording_->FileName(), false); + int minutes = index->Last() < 0 ? -1 : index->Last() / SecondsToFrames(60); +#else + // VDR 1.7.3-1.7.20 + cIndexFile *index = new cIndexFile(recording_->FileName(), false, recording_->IsPesRecording()); + int length = index->Last(); + int minutes = length < 0 ? -1 : length / SecondsToFrames(60, recording_->FramesPerSecond()); +#endif + if (minutes >= 0) + RecLength = string(format( "{0}'") % minutes); - result << (recording_->IsNew() ? '*' : ' ') << '\t' << name; + result << (recording_->IsNew() ? '*' : ' ') << '\t' << RecLength << '\t' << name; +#endif return result.str(); } @@ -177,23 +214,38 @@ break; lastOffset = offset + 1; } - result << "\t\t" << name.substr(lastOffset, offset - lastOffset); + result << "\t\t\t" << name.substr(lastOffset, offset - lastOffset); return result.str(); } -std::string get_recording_description(const cRecording* recording_) +std::string get_recording_event_title(const cRecording* recording_) { -#if VDRVERSNUM < 10300 - if (recording_->Summary() != 0) - return recording_->Summary(); -#else - if (recording_->Info()->Description() != 0) - return recording_->Info()->Description(); - else if (recording_->Info()->ShortText() != 0) + if ((recording_->Info()) && (recording_->Info()->Title())) { + return recording_->Info()->Title(); + } + else return recording_->Name(); +} + +std::string get_recording_event_shorttext(const cRecording* recording_) +{ + if ((recording_->Info()) && (recording_->Info()->ShortText())) { return recording_->Info()->ShortText(); -#endif + } + else return ""; +} + +std::string get_recording_event_description(const cRecording* recording_) +{ + string description; + if (recording_->Info()->ShortText() != 0) { + description += recording_->Info()->ShortText(); + } + if (recording_->Info()->Description() != 0) { + if (!description.empty()) description += "\n\n"; + description += recording_->Info()->Description(); + } - return ""; + return description; } string string_replace( const string& text, char from, char to ) diff -Nru vdr-plugin-burn-0.1.0~pre21/common.h vdr-plugin-burn-0.2.2/common.h --- vdr-plugin-burn-0.1.0~pre21/common.h 2006-09-16 18:33:36.000000000 +0000 +++ vdr-plugin-burn-0.2.2/common.h 2011-09-25 16:00:24.000000000 +0000 @@ -2,7 +2,7 @@ * See the files COPYING and README for copyright information and how to reach * the author. * - * $Id: common.h,v 1.28 2006/09/16 18:33:36 lordjaxom Exp $ + * $Id: common.h,v 1.29 2006/10/01 21:22:27 lordjaxom Exp $ */ #ifndef VDR_BURN_COMMON_H @@ -118,10 +118,16 @@ { disktype_dvd_menu, disktype_dvd_nomenu, +#ifdef ENABLE_DMH_ARCHIVE disktype_archive +#endif }; +#ifdef ENABLE_DMH_ARCHIVE const int disktype_count( disktype_archive + 1 ); +#else + const int disktype_count( disktype_dvd_nomenu + 1 ); +#endif const int disktype_countrequant( disktype_dvd_nomenu + 1 ); extern const char* disktype_strings[disktype_count]; @@ -137,6 +143,17 @@ const int storemode_count( storemode_createburn + 1 ); extern const char* storemode_strings[storemode_count]; + //!--- skinaspect ---------------------------------------------------------- + + enum skinaspect + { + skinaspect_16_9, + skinaspect_4_3 + }; + + const int skinaspect_count( skinaspect_4_3 + 1 ); + extern const char* skinaspect_strings[skinaspect_count]; + //!--- chaptersmode ------------------------------------------------------- enum chaptersmode @@ -160,7 +177,6 @@ { disksize_singlelayer, disksize_doublelayer, - disksize_cdr, disksize_custom }; @@ -172,7 +188,6 @@ enum demuxtype { - demuxtype_vdrsync, demuxtype_projectx }; @@ -184,42 +199,57 @@ enum requanttype { requanttype_metakine, - requanttype_transcode + requanttype_transcode, + requanttype_lxdvdrip, }; - const int requanttype_count = requanttype_transcode + 1; + const int requanttype_count = requanttype_lxdvdrip + 1; extern const char* requanttype_strings[requanttype_count]; -extern const char *TitleChars; + //!--- titletype -------------------------------------------------------- + + enum titletype + { + titletype_epgtitle, + titletype_epgtitleshorttext, + titletype_epgshorttext, + titletype_rectitle, + }; + + const int titletype_count = titletype_rectitle + 1; + extern const char* titletype_strings[titletype_count]; + -int ScanPageCount(const std::string& Path); -std::string progress_bar(double current, double total, int length = 20); - void trim_left( std::string& text_, const char* characters_ ); + int ScanPageCount(const std::string& Path); + std::string progress_bar(double current, double total, int length = 20); + void trim_left( std::string& text_, const char* characters_, std::string::size_type offset_ = 0 ); //!--- recording helper functions ----------------------------------------- std::string get_recording_datetime(const cRecording* recording_, char delimiter = '\t'); - std::string get_recording_title(const cRecording* recording_, int level); - std::string get_recording_description(const cRecording* recording_); + std::string get_recording_osd_line(const cRecording* recording_, int level); + std::string get_recording_event_title(const cRecording* recording_); + std::string get_recording_event_shorttext(const cRecording* recording_); + std::string get_recording_event_description(const cRecording* recording_); std::string get_recording_name(const cRecording* recording); -std::string string_replace( const std::string& text, char from, char to ); -bool elapsed_since(time_t& timestamp, time_t difference); -std::string int_to_string(int value, int base, bool prefix = false); -std::string clean_path_name(const std::string& text); -std::string convert_to_utf8( const std::string& text ); - -template -std::string join_strings(FwdIt first, FwdIt last, Fn func, std::string delimiter) -{ - return proctools::sum(first, last, std::string( "" ), func, delimiter); -} + std::string string_replace( const std::string& text, char from, char to ); + bool elapsed_since(time_t& timestamp, time_t difference); + std::string int_to_string(int value, int base, bool prefix = false); + std::string clean_path_name(const std::string& text); + std::string convert_to_utf8( const std::string& text ); + + template + std::string join_strings(FwdIt first, FwdIt last, Fn func, std::string delimiter) + { + return proctools::sum(first, last, std::string( "" ), func, delimiter); + } -template -size_pair::size_type accumulate_size(FwdIt first, FwdIt last, Fn func) -{ - return proctools::sum( first, last, size_pair::size_type( 0 ), func ); -} + template + size_pair::size_type accumulate_size(FwdIt first, FwdIt last, Fn func) + { + return proctools::sum( first, last, size_pair::size_type( 0 ), func ); + } } diff -Nru vdr-plugin-burn-0.1.0~pre21/config.c vdr-plugin-burn-0.2.2/config.c --- vdr-plugin-burn-0.1.0~pre21/config.c 2006-09-16 18:33:36.000000000 +0000 +++ vdr-plugin-burn-0.2.2/config.c 2010-12-18 12:21:35.000000000 +0000 @@ -101,7 +101,7 @@ for (int i = 0; i < pages; ++i) { m_file << " " << endl; - if (rec->get_summary() == "" && m_job.get_skip_titlemenu()) + if (rec->get_eventDescription() == "" && m_job.get_skip_titlemenu()) m_file << "
jump title 1 chapter 1;
" << endl; else { if ( i == 0) { @@ -115,7 +115,6 @@ << " " << endl; } m_file << " get_menu_mpeg(i) << "\" pause=\"inf\"/>" - // TODO observe pause=inf << endl; if (i > 0) @@ -146,7 +145,7 @@ } m_file << "" << endl; m_file << "" << endl - << " " << endl; + << " " << endl; bool createMenu = (m_job.get_disk_type() == disktype_dvd_menu); if (createMenu) { @@ -157,9 +156,10 @@ m_file << " " << endl << " " << endl << "
" << endl
-				<< "          jump titleset 1 menu;" << endl;
+				<< "          button=g1;g3=0;jump titleset 1 menu;" << endl;
 				m_file << "        
" << endl - << " " << endl + << " " << endl + << " " << endl << "
" << endl << "
" << endl; } @@ -180,7 +180,7 @@ const_track_filter videoTracks( rec->get_tracks(), track_info::streamtype_video, track_predicate::used ); if (videoTracks.begin() != videoTracks.end()) { const track_info& track = *videoTracks.begin(); - m_file << "