Hi
I'm trying to use Udo Richter's plugin to play .ts recordings in vdr-1.6.0 (http://www.udo-richter.de/vdr/patches.en.html) but it breaks a couple of plugins
streamdev plugin: <snip> server/recplayer.c: In member function âuint64_t cRecPlayer::positionFromFrameNumber(uint32_t)â: server/recplayer.c:253: error: no matching function for call to âcIndexFile::Get(int, uchar*, int*)â ../../../include/vdr/recording.h:229: note: candidates are: bool cIndexFile::Get(int, uint16_t*, off_t*, uchar*, int*) ../../../include/vdr/recording.h:231: note: int cIndexFile::Get(uint16_t, off_t) make: *** [server/recplayer.o] Error 1
radio plugin: <snip> g++ -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses -fPIC -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"radio"' -I../../../include -I/include radio.c radio.c: In member function âvirtual bool cPluginRadio::Start()â: radio.c:493: error: cannot allocate an object of abstract type âcRadioAudioâ radioaudio.h:71: note: because the following virtual functions are pure within âcRadioAudioâ: ../../../include/vdr/audio.h:27: note: virtual void cAudio::PlayTs(const uchar*, int) make: *** [radio.o] Error 1
Has anyone resolved this?
Thx
Hi,
On Wed, 7 Apr 2010 18:52:20 +1200, Simon Baxter wrote
I'm trying to use Udo Richter's plugin to play .ts recordings in vdr- 1.6.0 (http://www.udo-richter.de/vdr/patches.en.html) but it breaks a couple of plugins
streamdev plugin:
<snip> server/recplayer.c: In member function âuint64_t cRecPlayer::positionFromFrameNumber(uint32_t)â: server/recplayer.c:253: error: no matching function for call to âcIndexFile::Get(int, uchar*, int*)â ../../../include/vdr/recording.h:229: note: candidates are: bool cIndexFile::Get(int, uint16_t*, off_t*, uchar*, int*) ../../../include/vdr/recording.h:231: note: int cIndexFile::Get(uint16_t, off_t) make: *** [server/recplayer.o] Error 1
in streamdev's server/recplayer.c, replacing "#if {API,VDR}VERSNUM >= 10703" by "#if 1" and "#if APIVERSNUM < 10703" by "#if 0" should do the trick.
Regards, Frank
in streamdev's server/recplayer.c, replacing "#if {API,VDR}VERSNUM >= 10703" by "#if 1" and "#if APIVERSNUM < 10703" by "#if 0" should do the trick.
Have I got this wrong?
[root@freddy server]# diff recplayer.c recplayer.c.orig 37c37 < #if 1 ---
#if VDRVERSNUM >= 10703
61c61 < #if 0 ---
#if APIVERSNUM < 10703
102c102 < #if 1 ---
#if APIVERSNUM >= 10703
138c138 < #if 0 ---
#if APIVERSNUM < 10703
245c245 < #if 1 ---
#if VDRVERSNUM >= 10703
On Mon, 12 Apr 2010 21:55:20 +1200, Simon Baxter wrote
Have I got this wrong?
[root@freddy server]# diff recplayer.c recplayer.c.orig 37c37
< #if 1
#if VDRVERSNUM >= 10703
61c61
< #if 0
#if APIVERSNUM < 10703
102c102
< #if 1
#if APIVERSNUM >= 10703
138c138
< #if 0
#if APIVERSNUM < 10703
245c245
< #if 1
#if VDRVERSNUM >= 10703
Should be fine - is it still failing?
Regards, Frank
Should be fine - is it still failing?
yes, the streamdev compile now fails with with:
server/recplayer.c: In constructor âcRecPlayer::cRecPlayer(const cRecording*)â: server/recplayer.c:38: error: âconst class cRecordingâ has no member named âIsPesRecordingâ server/recplayer.c: In member function âuint64_t cRecPlayer::positionFromFrameNumber(uint32_t)â: server/recplayer.c:253: error: no matching function for call to âcIndexFile::Get(int, uint16_t*, off_t*)â ../../../include/vdr/recording.h:215: note: candidates are: bool cIndexFile::Get(int, uchar*, int*, uchar*, int*) ../../../include/vdr/recording.h:217: note: int cIndexFile::Get(uchar, int) make[1]: *** [server/recplayer.o] Error 1 make[1]: Leaving directory `/root/vdr-1.6.0/PLUGINS/src/streamdev'
(on an off topic, I've never worked out why gcc puts â instead of ' - gcc seems to be the only thing that does it!)
Hi
This is an off topic answer!
Am Montag, 12. April 2010 schrieb Simon Baxter:
Should be fine - is it still failing?
yes, the streamdev compile now fails with with:
server/recplayer.c: In constructor âcRecPlayer::cRecPlayer(const cRecording*)â: server/recplayer.c:38: error: âconst class cRecordingâ has no member named âIsPesRecordingâ server/recplayer.c: In member function âuint64_t cRecPlayer::positionFromFrameNumber(uint32_t)â: server/recplayer.c:253: error: no matching function for call to âcIndexFile::Get(int, uint16_t*, off_t*)â ../../../include/vdr/recording.h:215: note: candidates are: bool cIndexFile::Get(int, uchar*, int*, uchar*, int*) ../../../include/vdr/recording.h:217: note: int cIndexFile::Get(uchar, int) make[1]: *** [server/recplayer.o] Error 1 make[1]: Leaving directory `/root/vdr-1.6.0/PLUGINS/src/streamdev'
(on an off topic, I've never worked out why gcc puts â instead of ' - gcc seems to be the only thing that does it!)
I don't know why, but it seems GCC tries to localize the error messages. I noticed that using:
shell prompt$ LANG=C make <whatever>
gives error messages that are plain ASCII and readable :)
Regards Dieter
Hi
This is an off topic answer!
Am Montag, 12. April 2010 schrieb Simon Baxter:
(on an off topic, I've never worked out why gcc puts â instead of ' - gcc seems to be the only thing that does it!)
I don't know why, but it seems GCC tries to localize the error messages. I noticed that using:
shell prompt$ LANG=C make <whatever>
gives error messages that are plain ASCII and readable :)
Regards Dieter
Thanks
On Tue, 13 Apr 2010 06:42:49 +1200, Simon Baxter wrote
yes, the streamdev compile now fails with with:
server/recplayer.c: In constructor âcRecPlayer::cRecPlayer(const cRecording*)â: server/recplayer.c:38: error: âconst class cRecordingâ has no member named âIsPesRecordingâ server/recplayer.c: In member function
The tsplay patch adds this member to VDR's cRecording class. So probably the header files are not up-to-date. Try a "make include-dir" in the VDR source directory, then recompile streamdev.
Regards, Frank
The tsplay patch adds this member to VDR's cRecording class. So probably the header files are not up-to-date. Try a "make include-dir" in the VDR source directory, then recompile streamdev.
Nope, same problem:
make include-dir make plugins <snip> server/recplayer.c: In constructor 'cRecPlayer::cRecPlayer(const cRecording*)': server/recplayer.c:38: error: 'const class cRecording' has no member named 'IsPesRecording' server/recplayer.c: In member function 'uint64_t cRecPlayer::positionFromFrameNumber(uint32_t)': server/recplayer.c:253: error: no matching function for call to 'cIndexFile::Get(int, uint16_t*, off_t*)' ../../../include/vdr/recording.h:215: note: candidates are: bool cIndexFile::Get(int, uchar*, int*, uchar*, int*) ../../../include/vdr/recording.h:217: note: int cIndexFile::Get(uchar, int) make[1]: *** [server/recplayer.o] Error 1 make[1]: Leaving directory `/root/vdr-1.6.0/PLUGINS/src/streamdev'
On Tue, 13 Apr 2010 21:58:16 +1200, Simon Baxter wrote
The tsplay patch adds this member to VDR's cRecording class. So probably the header files are not up-to-date. Try a "make include-dir" in the VDR source directory, then recompile streamdev.
Nope, same problem:
make include-dir make plugins
<snip> server/recplayer.c: In constructor 'cRecPlayer::cRecPlayer(const cRecording*)': server/recplayer.c:38: error: 'const class cRecording' has no member named 'IsPesRecording' server/recplayer.c: In member function 'uint64_t cRecPlayer::positionFromFrameNumber(uint32_t)': server/recplayer.c:253: error: no matching function for call to 'cIndexFile::Get(int, uint16_t*, off_t*)' ../../../include/vdr/recording.h:215: note: candidates are: bool cIndexFile::Get(int, uchar*, int*, uchar*, int*) ../../../include/vdr/recording.h:217: note: int cIndexFile::Get(uchar, int) make[1]: *** [server/recplayer.o] Error 1 make[1]: Leaving directory `/root/vdr-1.6.0/PLUGINS/src/streamdev'
Then please check VDR's recording.h. The missing IsPesRecording member function and the parameter type mismatch of cIndexFile::Get both indicate that recording.h is unpatched.
In vdr-1.6.0-2-tsplay-0.1.diff you will find the modifications to recording.h starting at line 1376.
Regards, Frank
Then please check VDR's recording.h. The missing IsPesRecording member function and the parameter type mismatch of cIndexFile::Get both indicate that recording.h is unpatched.
In vdr-1.6.0-2-tsplay-0.1.diff you will find the modifications to recording.h starting at line 1376.
Sorry Frank - definitely patched. I just tried cleaning and recompiling everything, don't seem to be getting the IsPesRecording function error, but am still getting the cIndexFile mismatch:
server/recplayer.c: In member function 'uint64_t cRecPlayer::positionFromFrameNumber(uint32_t)': server/recplayer.c:253: error: no matching function for call to 'cIndexFile::Get(int, uchar*, int*)' ../../../include/vdr/recording.h:229: note: candidates are: bool cIndexFile::Get(int, uint16_t*, off_t*, uchar*, int*) ../../../include/vdr/recording.h:231: note: int cIndexFile::Get(uint16_t, off_t) make: *** [server/recplayer.o] Error 1
I don't get it - it's calling a Get(int, uchar*, int*), which are defined Get(int, uint16_t*, off_t*, uchar*, int*) ??
On Wed, 14 Apr 2010 07:37:37 +1200, Simon Baxter wrote
Sorry Frank - definitely patched. I just tried cleaning and recompiling everything, don't seem to be getting the IsPesRecording function error, but am still getting the cIndexFile mismatch:
server/recplayer.c: In member function 'uint64_t cRecPlayer::positionFromFrameNumber(uint32_t)': server/recplayer.c:253: error: no matching function for call to 'cIndexFile::Get(int, uchar*, int*)' ../../../include/vdr/recording.h:229: note: candidates are: bool cIndexFile::Get(int, uint16_t*, off_t*, uchar*, int*) ../../../include/vdr/recording.h:231: note: int cIndexFile::Get(uint16_t, off_t) make: *** [server/recplayer.o] Error 1
I don't get it - it's calling a Get(int, uchar*, int*), which are defined Get(int, uint16_t*, off_t*, uchar*, int*) ??
Great - almost there. Before your cleanup, the compiler complained about
no matching function for call to 'cIndexFile::Get(int, uint16_t*, off_t*)'
now it's
no matching function for call to 'cIndexFile::Get(int, uchar*, int*)'
So this time the "#if VDRVERSNUM >= 10703" in streamdev's server/recplayer.c wasn't changed or not changed correctly. It should read "#if 1".
I attached a patch for streamdev, making it automatically detect the tsplay patch. Can you give it a try? Apparently you are using a patched streamdev. According to one of your previous mails there's one '#if' more. Please modify this additional '#if' as in the patch.
Regards, Frank
Am 14.04.2010 09:24, schrieb Frank Schmirler:
I attached a patch for streamdev, making it automatically detect the tsplay patch. Can you give it a try?
-#if VDRVERSNUM >= 10703 +#if VDRVERSNUM >= 10703 || defined(MAXVIDEOFILESIZETS)
Hey, good idea to use this #define for detection!
I didn't really notice this topic until now, because of the misleading TS Play Plugin - not Patch.
I already did plan to add some version detection to the tsplay patch, I just didn't do it until now. I'll upload a 0.2 version with detection plus some patches ASAP, which is hopefully on weekend.
Cheers,
Udo