Hi, as many may have noticed, development of the MP3/MPlayer plugin is somewhat stuck. This is partly due to lack of time, but also due to missing motivation.
However, some changes already have been done. I don't want to hold them back any longer but most of them are only roughly tested, so that I don't want to make a full release.
I decided to put a pre-release on my homepage at http://www.muempf.de/down/vdr-mp3-0.9.15pre4.tar.gz
Please refer to the HISTORY file for changes. NOTE: this is a BETA release! If you don't dare to try it, please give feedback (positive or negative).
I'm going to update the pre-release version as necessary. You can check at http://www.muempf.de/down.html for new versions too.
Regards.
On Sat, 2006-04-01 at 15:53 +0000, Stefan Huelswitt wrote:
I decided to put a pre-release on my homepage at http://www.muempf.de/down/vdr-mp3-0.9.15pre4.tar.gz
Please refer to the HISTORY file for changes. NOTE: this is a BETA release! If you don't dare to try it, please give feedback (positive or negative).
I dare, but here's some feedback anyway :)
It probably isn't a surprise, but the NPTL problems with the mp3 plugin are still present just like before: songs start to play, but while they're playing, every remote control button press takes something like 10+ seconds before anything happens.
Anyone have ideas how to fix this? Note that it's only the mp3 plugin (and muggle, but that's a bit OT), the mplayer plugin works fine with NPTL. On Fedora Core 5, the old LD_ASSUME_KERNEL=... trick for disabling NPTL at runtime is no longer feasibly available and I guess other distros will follow down that path soon, and some may alredy have.
The "Eject" string seems to be untranslated, fix attached.
On 01 Apr 2006 Ville Skyttä vskytta@gmail.com wrote:
It probably isn't a surprise, but the NPTL problems with the mp3 plugin are still present just like before: songs start to play, but while they're playing, every remote control button press takes something like 10+ seconds before anything happens.
Anyone have ideas how to fix this?
No, I don't have any idea. And I don't have any NTPL enabled system running here (yeah, quite outdated systems), so that I cannot debug it myself.
I guess that the problem is somehow related to inter-thread communication (mutex or condcvar). Someone would have to insert a lot of debug output and watch what happens and where it looses the time.
The "Eject" string seems to be untranslated, fix attached.
Right, thanks.
Regards.
Ville Skyttä schrieb:
It probably isn't a surprise, but the NPTL problems with the mp3 plugin are still present just like before: songs start to play, but while they're playing, every remote control button press takes something like 10+ seconds before anything happens.
Anyone have ideas how to fix this? Note that it's only the mp3 plugin (and muggle, but that's a bit OT), the mplayer plugin works fine with NPTL. On Fedora Core 5, the old LD_ASSUME_KERNEL=... trick for disabling NPTL at runtime is no longer feasibly available and I guess other distros will follow down that path soon, and some may alredy have.
I'm also running NTPL only systems (glibc-2.4, everything compiled with gcc-4,1, binutils-2.16.1) and I have absolutely no problem with the mp3-plugin. Reactions on Key presses are shown immediately (lirc-0.8.0).
regards Alfred
Ville Skyttä wrote:
On Sat, 2006-04-01 at 15:53 +0000, Stefan Huelswitt wrote:
I decided to put a pre-release on my homepage at http://www.muempf.de/down/vdr-mp3-0.9.15pre4.tar.gz
Please refer to the HISTORY file for changes. NOTE: this is a BETA release! If you don't dare to try it, please give feedback (positive or negative).
I dare, but here's some feedback anyway :)
It probably isn't a surprise, but the NPTL problems with the mp3 plugin are still present just like before: songs start to play, but while they're playing, every remote control button press takes something like 10+ seconds before anything happens.
Same here, but just noticed something.
When progress bar is visible and I press OK, playing time stops instantly but progress bar has that 10s delay before it disappears.
So it registers key presses instantly, but takes 10s to act.
On Sat, 01 Apr 2006 15:53:11 +0000, Stefan Huelswitt wrote:
Hi, as many may have noticed, development of the MP3/MPlayer plugin is somewhat stuck. This is partly due to lack of time, but also due to missing motivation.
However, some changes already have been done. I don't want to hold them back any longer but most of them are only roughly tested, so that I don't want to make a full release.
I decided to put a pre-release on my homepage at http://www.muempf.de/down/vdr-mp3-0.9.15pre4.tar.gz
Please refer to the HISTORY file for changes. NOTE: this is a BETA release! If you don't dare to try it, please give feedback (positive or negative).
I'm going to update the pre-release version as necessary. You can check at http://www.muempf.de/down.html for new versions too.
Regards.
Dear Stefan,
I've tested your version and found that the mplayer volume fix does not work. The attached patch makes it *really* work (well at least it is working here :)
On another issue how is the status stuff supposed to work ? Will it display the play position ?
Soeren.
--- ../mp3-0.9.15pre4/player-mplayer.c 2006-04-01 17:22:47.000000000 +0200 +++ PLUGINS/src/mplayer-0.9.15pre4/player-mplayer.c 2006-04-05 08:42:56.000000000 +0200 @@ -45,8 +45,6 @@
//#define DEBUG_SLAVE
-#define MPLAYER_VOL_STEP 3.0 - const char *MPlayerCmd = "mplayer.sh"; int MPlayerAid=-1;
@@ -67,7 +65,7 @@ // convert according cDvbDevice::SetVolumeDevice(); // take into account that VDR does non-linear changes, while // MPlayer does linear volume changes. - Volume=(float)(2*volume-volume*volume/255)/2.55; + Volume=((float)(2*volume-volume*volume/255))/2.56; Mute=mute; changed=false; Unlock(); @@ -543,23 +541,18 @@
void cMPlayerPlayer::SetMPlayerVolume(void) { - float mpNewVol; bool mute; Lock(); - if(status->GetVolume(mpNewVol,mute)) { + if(status->GetVolume(mpVolume,mute)) { if(mute) { if(!mpMute) { MPlayerControl("mute"); mpMute=true; } } else { if(mpMute) { MPlayerControl("mute"); mpMute=false; } - const int dir=mpNewVol>=mpVolume ? 1 : -1; - while(fabs(mpNewVol-mpVolume)>=(MPLAYER_VOL_STEP/2)) { - MPlayerControl("volume %d",dir); + MPlayerControl("volume %f 1",mpVolume); mpMute=false; - mpVolume+=MPLAYER_VOL_STEP * (float)dir; - } } - d(printf("mplayer: mpNewVol=%.2f mpVolume=%.2f mpMute=%d\n",mpNewVol,mpVolume,mpMute)) + d(printf("mplayer: mpVolume=%.2f mpMute=%d\n",mpVolume,mpMute)) } Unlock(); }
On 05 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
I've tested your version and found that the mplayer volume fix does not work. The attached patch makes it *really* work (well at least it is working here :)
I'm a bit confused now. I have a possible response that the current code IS working (with a very little change though, the fix is in pre5).
I checked MPlayer 1.0pre2 (which I'm using), pre6 and pre7try2 and none of them seem to support a float argument with "volume" (MP_CMD_ARG_INT in input/input.c).
What version are you using? Is there any documentation about a float argument?
Regards.
On Wed, 05 Apr 2006 18:04:24 +0000, Stefan Huelswitt wrote:
On 05 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
I've tested your version and found that the mplayer volume fix does not work. The attached patch makes it *really* work (well at least it is working here :)
I'm a bit confused now. I have a possible response that the current code IS working (with a very little change though, the fix is in pre5).
Hmmhh I can assure you that it works here and was completely messed up (*here*) up before...
I checked MPlayer 1.0pre2 (which I'm using), pre6 and pre7try2 and none of them seem to support a float argument with "volume" (MP_CMD_ARG_INT in input/input.c).
What version are you using?
Indeed I am using todays mplayer cvs and did not check how it that was dealt with in older versions... however the set absolute value seems to be in older versions...
input/input.c:69: { MP_CMD_VOLUME, "volume", 1, { { MP_CMD_ARG_FLOAT,{0} }, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },
mplayer:1967: // Audio { "volume", mp_property_volume, CONF_TYPE_FLOAT, M_OPT_RANGE, 0, 100, NULL },
This suggests that you should use the 'set absolute value feature' and %d and round() the value to be backwards compatible...
Is there any documentation about a float argument?
basically lines 1967 and 2048 ff. in mplayer.c in mplayer cvs... and line 69 in input/input.c
Sorry for the confusion I've caused...
All the best, Soeren.
On 05 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On Wed, 05 Apr 2006 18:04:24 +0000, Stefan Huelswitt wrote:
What version are you using?
Indeed I am using todays mplayer cvs and did not check how it that was dealt with in older versions... however the set absolute value seems to be in older versions...
input/input.c:69: { MP_CMD_VOLUME, "volume", 1, { { MP_CMD_ARG_FLOAT,{0} }, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },
mplayer:1967: // Audio { "volume", mp_property_volume, CONF_TYPE_FLOAT, M_OPT_RANGE, 0, 100, NULL },
This suggests that you should use the 'set absolute value feature' and %d and round() the value to be backwards compatible...
OK, I learned that even my mplayer version seems to support "set absolute volumen", but haven't tried out that. It's more elegant solution anyways.
What I still don't understand is, why the code doesn't works for you. Even CVS version should still support inc/dec volumen. And stepsize is still 3, too.
Regards.
On Wed, 05 Apr 2006 20:32:04 +0000, Stefan Huelswitt wrote:
On 05 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On Wed, 05 Apr 2006 18:04:24 +0000, Stefan Huelswitt wrote:
[...]
This suggests that you should use the 'set absolute value feature' and %d and round() the value to be backwards compatible...
OK, I learned that even my mplayer version seems to support "set absolute volumen", but haven't tried out that. It's more elegant solution anyways.
What I still don't understand is, why the code doesn't works for you. Even CVS version should still support inc/dec volumen. And stepsize is still 3, too.
Well I don't know, but well it is basically the only thing that is changed so there might have been a bug in there. Anyway just use the set absolute volume version and voila done :)
On another issue how is that display status stuff supposed to work ?
Which patches need to be applied and what will it display ?
All the best, Soeren
On 06 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On another issue how is that display status stuff supposed to work ?
What are you talking about?
Regards.
On Thu, 06 Apr 2006 15:06:27 +0000, Stefan Huelswitt wrote:
On 06 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On another issue how is that display status stuff supposed to work ?
What are you talking about?
The OSD that displays status information (name of the file, length of file (hours:minutes:seconds), play position)...
Soeren
On 06 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On Thu, 06 Apr 2006 15:06:27 +0000, Stefan Huelswitt wrote:
On 06 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On another issue how is that display status stuff supposed to work ?
What are you talking about?
The OSD that displays status information (name of the file, length of file (hours:minutes:seconds), play position)...
Do you mean the progress display? Can you please elaborate on your problem.
Regards.
Stefan Huelswitt wrote:
On 06 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On Thu, 06 Apr 2006 15:06:27 +0000, Stefan Huelswitt wrote:
On 06 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On another issue how is that display status stuff supposed to work ?
What are you talking about?
The OSD that displays status information (name of the file, length of file (hours:minutes:seconds), play position)...
Do you mean the progress display? Can you please elaborate on your problem.
I have noticed that the mplayer progress bar displays fine when using my Nexus in hardware mode, but when I use the mplayer plugin with Xine, the progress bar is not displayed.
BR.
On 07 Apr 2006 "C.Y.M" syphir@syphir.sytes.net wrote:
I have noticed that the mplayer progress bar displays fine when using my Nexus in hardware mode, but when I use the mplayer plugin with Xine, the progress bar is not displayed.
May be xine doesn't support the necessary slave cmds? (see my answer to Soeren)
Regards.
C.Y.M wrote:
Stefan Huelswitt wrote:
On 06 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On Thu, 06 Apr 2006 15:06:27 +0000, Stefan Huelswitt wrote:
On 06 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On another issue how is that display status stuff supposed to work ?
What are you talking about?
The OSD that displays status information (name of the file, length of file (hours:minutes:seconds), play position)...
Do you mean the progress display? Can you please elaborate on your problem.
I have noticed that the mplayer progress bar displays fine when using my Nexus in hardware mode, but when I use the mplayer plugin with Xine, the progress bar is not displayed.
I have discovered the reason why VDR's seek bar does not display when using the xine plugin. When I call mplayer in xine, I must use the "-fs" or full screen switch or else nothing is displayed on the tv (sound but no video). For some reason, this is preventing VDR's seek bar from displaying. When I hit FF/RW, I still have mplayer's status seek bar. But when I push the "ok" button, I do not get VDR's seek bar. Removing "-fs" from the cmd line shows VDR's seek bar and the movie plays, but it is not visible on the tv. Any ideas?
BR.
On 11 Apr 2006 "C.Y.M" syphir@syphir.sytes.net wrote:
Removing "-fs" from the cmd line shows VDR's seek bar and the movie plays, but it is not visible on the tv. Any ideas?
I would start mplayer from commandline with same options as from mplayer.sh. Once with "-fs", once without. Compare mplayer output. Let me know the differences.
Regards.
Hi. I've just compiled the new release available, and it compiled ok but gave me this error:
Plugin mp3: make[1]: Entering directory `/home/vdruser/vdr-1.3.46/PLUGINS/src/mp3-0.9.15pre10' make[1]: Leaving directory `/home/vdruser/vdr-1.3.46/PLUGINS/src/mp3-0.9.15pre10' make[1]: Entering directory `/home/vdruser/vdr-1.3.46/PLUGINS/src/mp3-0.9.15pre10' g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include mp3.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include i18n.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include data.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include menu.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include data-mp3.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include setup-mp3.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include player-mp3.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include stream.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include network.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include decoder.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include decoder-mp3.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include decoder-mp3-stream.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include decoder-snd.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include decoder-ogg.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -shared mp3.o i18n.o data.o menu.o data-mp3.o setup-mp3.o player-mp3.o stream.o network.o decoder.o decoder-mp3.o decoder-mp3-stream.o decoder-snd.o decoder-ogg.o -lz -lmad -lid3tag -lsndfile -lvorbisfile -lvorbis -o libvdr-mp3.so g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include mplayer.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include setup-mplayer.c g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DAPIVERSNUM=10346 -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include player-mplayer.c player-mplayer.c: In member function 'bool cMPlayerPlayer::Fork()': player-mplayer.c:396: warning: missing sentinel in function call g++ -fPIC -g -O2 -Wall -Woverloaded-virtual -shared mplayer.o i18n.o data.o menu.o setup-mplayer.o player-mplayer.o -o libvdr-mplayer.so make[1]: Leaving directory `/home/vdruser/vdr-1.3.46/PLUGINS/src/mp3-0.9.15pre10'
Just an FYI - I'll see if it works...
On 29 Apr 2006 "Simon Baxter" linuxtv@nzbaxters.com wrote:
I've just compiled the new release available, and it compiled ok but gave me this error:
[...]
player-mplayer.c: In member function 'bool cMPlayerPlayer::Fork()': player-mplayer.c:396: warning: missing sentinel in function call
Ville Skyttä suggested to change the line from
execle("/bin/sh","sh","-c",cmd,0,environ);
to
execle("/bin/sh","sh","-c",cmd,NULL,environ);
(appearently this is a problem with recent gcc versions only)
Regards.
Stefan Huelswitt wrote:
Ville Skyttä suggested to change the line from
execle("/bin/sh","sh","-c",cmd,0,environ);
to
execle("/bin/sh","sh","-c",cmd,NULL,environ);
From execle man page: The list of arguments must be terminated by a NULL pointer, and, since these are variadic functions, this pointer must be cast (char *) NULL.
Based on that, correct would be: execle("/bin/sh","sh","-c",cmd,(char*)NULL,environ);
Cheers,
Udo
On 06 May 2006 Udo Richter udo_richter@gmx.de wrote:
Stefan Huelswitt wrote:
Ville Skyttä suggested to change the line from
execle("/bin/sh","sh","-c",cmd,0,environ);
to
execle("/bin/sh","sh","-c",cmd,NULL,environ);
From execle man page: The list of arguments must be terminated by a NULL pointer, and, since these are variadic functions, this pointer must be cast (char *) NULL.
Based on that, correct would be: execle("/bin/sh","sh","-c",cmd,(char*)NULL,environ);
Well, normaly NULL is defined as (void *)0, which is a pointer...
As I don't have gcc 4.x running I need a confirmation from someone with gcc 4.x that this is still ok.
Regards.
On Sun, 2006-05-07 at 09:07 +0000, Stefan Huelswitt wrote:
On 06 May 2006 Udo Richter udo_richter@gmx.de wrote:
Based on that, correct would be: execle("/bin/sh","sh","-c",cmd,(char*)NULL,environ);
Well, normaly NULL is defined as (void *)0, which is a pointer...
As I don't have gcc 4.x running I need a confirmation from someone with gcc 4.x that this is still ok.
With the cast added, it still compiles without warnings here using g++ 4.1.0.
s.huelswitt@gmx.de (Stefan Huelswitt) wrote:
Well, normaly NULL is defined as (void *)0, which is a pointer...
only in C. in C++ NULL == 0.
stddef.h:
#ifndef __cplusplus #define NULL ((void *)0) #else /* C++ */ #define NULL 0
As I don't have gcc 4.x running I need a confirmation from someone with gcc 4.x that this is still ok.
i don't think this definition has changed.
clemens
On 07 May 2006 Clemens Kirchgatterer clemens@1541.org wrote:
s.huelswitt@gmx.de (Stefan Huelswitt) wrote:
Well, normaly NULL is defined as (void *)0, which is a pointer...
only in C. in C++ NULL == 0.
stddef.h:
#ifndef __cplusplus #define NULL ((void *)0) #else /* C++ */ #define NULL 0
This cannot be true.
If NULL == 0 for C++ it should make no difference, but gcc4 complains with 0 but not with NULL. So there is a differnce.
Regards.
On Sun, 2006-05-07 at 10:32 +0000, Stefan Huelswitt wrote:
If NULL == 0 for C++ it should make no difference, but gcc4 complains with 0 but not with NULL. So there is a differnce.
I think it has something to do with integers vs pointers and 64-bit archs. Some info eg. here: http://www.linuxonly.nl/docs/sentinel/ . g++ 4.1.0 complains about use of 0 as the sentinel on both i386 and x86_64 here though, and using NULL on neither.
s.huelswitt@gmx.de (Stefan Huelswitt) wrote:
On 07 May 2006 Clemens Kirchgatterer clemens@1541.org wrote:
s.huelswitt@gmx.de (Stefan Huelswitt) wrote:
Well, normaly NULL is defined as (void *)0, which is a pointer...
only in C. in C++ NULL == 0.
stddef.h:
#ifndef __cplusplus #define NULL ((void *)0) #else /* C++ */ #define NULL 0
This cannot be true.
If NULL == 0 for C++ it should make no difference, but gcc4 complains with 0 but not with NULL. So there is a differnce.
no. the prototyp of the function in question is:
unistd.h: extern int execle (__const char *__path, __const char *__arg, ...)
so the compiler really has no clue what the type of the ... args should be. the reason for the warning and now i can only guess, as i'm to lazy to look up the code, comes from some compiler dependent, maybe broken variable argument type checking. try the following test program (compile with g++ -Wall test.cpp) :
#include <cstdio>
void bar(char *baz) { }
int main(int argc, char **argv) { char *foo = NULL;
printf("%s", foo); printf("%s", NULL); printf("%s", 0);
bar(foo); bar(NULL); bar(0);
return (0); }
my compiler (g++ 3.3.6) throws warnings at the printfs with NULL and 0, though it shouldn't. the calls to bar() are completely legal and do not bother him (rightly). there is really no differnce between 0 and NULL in C++ and its usage is a matter of taste. the warnings gcc 4 throws on this variable arguments list are, IMHO, weaknesses in its vargs typechecking and i would not work around it.
best regards ... clemens
Taking into account what Ville and you said, I now changed the code to (char *)0, which should be OK for any case.
Regards.
- Added SVDR and service support to MP3 and MPlayer plugin. Based on a
patches
provided by Olivier Jacques and Holger Brunn.
Stefan,
Thanks to have integrated the service support. It works great for local files. But a "filename" like a URI (http://zdpub.vo.llnwd.net/o2/dltv/episode44/dl.tv.044.m4v or rtsp://....../) will not pass "realpath". Same for GuessType and Exists.
What is the best way to handle this in mplayer plugin? Creating a new - temporary - source?
Olivier.
On 08 May 2006 "Olivier Jacques" oliviervdr@free.fr wrote:
- Added SVDR and service support to MP3 and MPlayer plugin. Based on a
patches
provided by Olivier Jacques and Holger Brunn.
Stefan,
Thanks to have integrated the service support. It works great for local files. But a "filename" like a URI (http://zdpub.vo.llnwd.net/o2/dltv/episode44/dl.tv.044.m4v or rtsp://....../) will not pass "realpath". Same for GuessType and Exists.
What is the best way to handle this in mplayer plugin? Creating a new - temporary - source?
Sorry, but this is beyond the means of the plugin at the moment.
If you want to come up with a solution, I'll gladly accept it as long as all features are accessible from the OSD as well.
Regards.
[...]
What is the best way to handle this in mplayer plugin?
Creating a new
- temporary - source?
Sorry, but this is beyond the means of the plugin at the moment.
If you want to come up with a solution, I'll gladly accept it as long as all features are accessible from the OSD as well.
At the end, this is "just" passing the URI to mplayer.sh and have the whole thing controlled by the Mplayer plugin. mplayer.sh archives.depechemode.com/depechemode/video/exclusives/sufferwell_sims320.mov
I made it work in the previous patch of the mplayer plugin by creating a new source: cFileSource *src=new cFileSource(base,"Item to play",false);
"base" containing the protocol (http, rtsp, ...)
Then playing the file is done by: cFileObj *item=new cFileObj(src,"",pch,otFile); cMPlayerControl::SetFile(item,false); cControl::Launch(new cMPlayerControl);
"pch" containing the url, like "archives.depechemode.com/depechemode/video/exclusives/sufferwell_sims320.mo v"
This is probably not fully aligned with how the Mplayer plugin is designed as everything goes through sources :) Maybe creating a new file object type (like otFile) will be the answer. The original patch is at: http://famillejacques.free.fr/vdr/vod/
Thanks, Olivier.
On Thu, 06 Apr 2006 19:51:21 +0000, Stefan Huelswitt wrote:
On 06 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On Thu, 06 Apr 2006 15:06:27 +0000, Stefan Huelswitt wrote:
On 06 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On another issue how is that display status stuff supposed to work ?
What are you talking about?
The OSD that displays status information (name of the file, length of file (hours:minutes:seconds), play position)...
Do you mean the progress display?
Most likely - yes.
Can you please elaborate on your problem.
Well it is not there... Basically the OSD is missing in the lower 1/3rd of the screen... That is why I am asking what I have to do to activate it (if there is any...)
Soeren
On Fri, 07 Apr 2006 06:26:49 +0200 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On Thu, 06 Apr 2006 19:51:21 +0000, Stefan Huelswitt wrote:
On 06 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On Thu, 06 Apr 2006 15:06:27 +0000, Stefan Huelswitt wrote:
On 06 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On another issue how is that display status stuff supposed to work ?
What are you talking about?
The OSD that displays status information (name of the file, length of file (hours:minutes:seconds), play position)...
Do you mean the progress display?
Most likely - yes.
Can you please elaborate on your problem.
Well it is not there... Basically the OSD is missing in the lower 1/3rd of the screen... That is why I am asking what I have to do to activate it (if there is any...)
MPlayer only has the progress bar in the center of the screen and optionally some textual information on the top. You are thinking about VDR's normal OSD, which is not available with the MPlayer plugin. It would be possible to add an externally controlled OSD layer to MPlayer through the bmovl(2) filter, but that would require a lot of new code to the MPlayer plugin.
--Niko
On 07 Apr 2006 Niko Mikkila nm@phnet.fi wrote:
MPlayer only has the progress bar in the center of the screen and optionally some textual information on the top. You are thinking about VDR's normal OSD, which is not available with the MPlayer plugin.
This is NOT true.
On Fri, 7 Apr 2006 16:43:18 +0000 (UTC) s.huelswitt@gmx.de (Stefan Huelswitt) wrote:
On 07 Apr 2006 Niko Mikkila nm@phnet.fi wrote:
MPlayer only has the progress bar in the center of the screen and optionally some textual information on the top. You are thinking about VDR's normal OSD, which is not available with the MPlayer plugin.
This is NOT true.
Ok, so how is the OSD drawn? It doesn't work with Dxr3 output either.
--Niko
On 07 Apr 2006 Niko Mikkila nm@phnet.fi wrote:
On Fri, 7 Apr 2006 16:43:18 +0000 (UTC) s.huelswitt@gmx.de (Stefan Huelswitt) wrote:
On 07 Apr 2006 Niko Mikkila nm@phnet.fi wrote:
MPlayer only has the progress bar in the center of the screen and optionally some textual information on the top. You are thinking about VDR's normal OSD, which is not available with the MPlayer plugin.
This is NOT true.
Ok, so how is the OSD drawn? It doesn't work with Dxr3 output either.
It's drawn the same way any other VDR OSD is drawn. Of course it's tested with DVB output only, so I cannot comment on dxr3 output. And there are some prerequisites, see my answer to Soeren.
Regards.
On Fri, 7 Apr 2006 17:21:35 +0000 (UTC) s.huelswitt@gmx.de (Stefan Huelswitt) wrote:
On 07 Apr 2006 Niko Mikkila nm@phnet.fi wrote:
On Fri, 7 Apr 2006 16:43:18 +0000 (UTC) s.huelswitt@gmx.de (Stefan Huelswitt) wrote:
On 07 Apr 2006 Niko Mikkila nm@phnet.fi wrote:
MPlayer only has the progress bar in the center of the screen and optionally some textual information on the top. You are thinking about VDR's normal OSD, which is not available with the MPlayer plugin.
This is NOT true.
Ok, so how is the OSD drawn? It doesn't work with Dxr3 output either.
It's drawn the same way any other VDR OSD is drawn. Of course it's tested with DVB output only, so I cannot comment on dxr3 output. And there are some prerequisites, see my answer to Soeren.
I doubt VDR OSD has currently any chance of working along with MPlayer for anything else than the FF cards. That's because usually MPlayer either uses a different output window than the process that displays VDR's OSD, or MPlayer reserves the output device so that nothing can be drawn on top unless it is done through MPlayer itself. Apparently the FF cards let multiple processes write to the OSD layer (or MPlayer is set to not use the OSD), but for Dxr3, the Dxr3 plugin closes its output completely while MPlayer is running to let MPlayer access the device.
With the various X output methods, it would also be possible to overlay an OSD window on top of the MPlayer window, but the Xine plugin does not support that since its OSD is drawn by Xine. Also softdevice suffers from the same issue. Of course, using MPlayer with these software decoders has other problems too, which is why there are alternative systems for video file playback.
--Niko
On 07 Apr 2006 Niko Mikkila nm@phnet.fi wrote:
I doubt VDR OSD has currently any chance of working along with MPlayer for anything else than the FF cards. That's because usually MPlayer either uses a different output window than the process that displays VDR's OSD, or MPlayer reserves the output device so that nothing can be drawn on top unless it is done through MPlayer itself. Apparently the FF cards let multiple processes write to the OSD layer (or MPlayer is set to not use the OSD), but for Dxr3, the Dxr3 plugin closes its output completely while MPlayer is running to let MPlayer access the device.
The point seems to be that the OSD is drawn through /dev/dvb/adapterX/osd while the playback from mplayer is through /dev/dvb/adapterX/video+audio. OSD device is not closed by VDR while mplayer is running. AFAIK mplayer is not able to use hardware OSD.
Regards.
On 07 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On Thu, 06 Apr 2006 19:51:21 +0000, Stefan Huelswitt wrote:
Do you mean the progress display?
Most likely - yes.
Can you please elaborate on your problem.
Well it is not there... Basically the OSD is missing in the lower 1/3rd of the screen... That is why I am asking what I have to do to activate it (if there is any...)
It is definitely there ;)
It's activated with "ok" as the normal VDR progress display, but there are some prerequisites for it to actualy work:
- Slavemode has to be enabled. - The plugin has to have information about the length of the file and the current replay position. This information has to be passed by mplayer. There are two possible ways (which are used concurrently): * The slave commands "get_time_length" & "get_percent_pos" have to return usefull values. This doesn't seems to be true for all kind of video codes (e.g. mpg works fine). * You have to apply the slavemode patch from the patches directory to mplayer. The patch outputs some internal values to stdout which are parsed by the plugin.
Regards.
On Fri, 07 Apr 2006 16:41:25 +0000, Stefan Huelswitt wrote:
On 07 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
On Thu, 06 Apr 2006 19:51:21 +0000, Stefan Huelswitt wrote:
[the OSD]
It is definitely there ;)
It's activated with "ok" as the normal VDR progress display, but there are some prerequisites for it to actualy work:
- Slavemode has to be enabled.
- The plugin has to have information about the length of the file and the current replay position. This information has to be passed by mplayer. There are two possible ways (which are used concurrently):
- The slave commands "get_time_length" & "get_percent_pos" have to return usefull values. This doesn't seems to be true for all kind of video codes (e.g. mpg works fine).
- You have to apply the slavemode patch from the patches directory to mplayer. The patch outputs some internal values to stdout which are parsed by the plugin.
Well and there is the problem, I am doing all this and don't get a OSD... any ideas on how to debug this ?
Soeren
On 08 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
Well and there is the problem, I am doing all this and don't get a OSD... any ideas on how to debug this ?
Well, I would add additional debug output to cMPlayerControl::ShowProgress() (in mplayer.c) and to cMPlayerPlayer::GetIndex() (in player-mplayer.c) first.
If GetIndex() doesn't delivers counting values, you have to debug in cMPlayerPlayer::Action().
You can enable DEBUG_SLAVE in player-mplayer.c too (additional output about slave cmd responses).
Regards.
On Sat, 08 Apr 2006 09:37:48 +0000, Stefan Huelswitt wrote:
On 08 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
Well and there is the problem, I am doing all this and don't get a OSD... any ideas on how to debug this ?
Well, I would add additional debug output to cMPlayerControl::ShowProgress() (in mplayer.c) and to cMPlayerPlayer::GetIndex() (in player-mplayer.c) first.
If GetIndex() doesn't delivers counting values, you have to debug in cMPlayerPlayer::Action().
You can enable DEBUG_SLAVE in player-mplayer.c too (additional output about slave cmd responses).
OK, after messing around for some hours in your code, I've found that the bug is that there is no bug, but one should *NOT* call mplayer with --really-quiet if one expects that to work... It is now working nicely (including resume which was also not working because of that).
I then went further through your code and I think it is a good idea to have the same menu-buttons as are shown in the recordings menu, i.e. the blue button should be 'info' and not AID ... for that issue when a movie is played it would be nice to get the green button (displaying audio) to work somehow... do you know if that is possible or is it occupied by vdr somehow ?
For the info button it would be nice to see filename.mpg -> filename.{txt,nfo} files to be parsed too.
As this is trivial todo, I added this to cMenuMPlayBrowse::Summary right after the int fd=open(sum,O_RDONLY); call:
if (fd==-1) { sum[strlen(sum)-strlen(".summary")]='_'; char* p=rindex(sum,'.'); if (p) { p[1]='t'; p[2]='x'; p[3]='t'; p[4]='\0';
fd=open(sum,O_RDONLY);
if (fd==-1) { p[1]='n'; p[2]='f'; p[3]='o'; p[4]='\0';
fd=open(sum,O_RDONLY); } } }
and also to the exclude list:
static const char *excl_br[] = { ".*","*.summary","*.txt","*.nfo",0 };
however that one does only work after choosing browse, as excl=0 in cMenuMPlayBrowse::cMenuMPlayBrowse() to fix this I added NewDir(0) there as:
cMenuMPlayBrowse::cMenuMPlayBrowse(void) :cMenuBrowse(MPlaySources.GetSource(),false,false,tr("MPlayer browser")) { static const char *excl_br[] = { ".*","*.summary","*.txt","*.nfo",0 }; excl=excl_br; sourcing=aidedit=false; NewDir(0); SetButtons(); }
So far so good, the only two things I'm missing now is visualization in mp3 playback, like in the nullsoft visualization plugins... (has there been any work done on this ? Where would be the audio-hooks, can one display images already ?) and the up/down keys act strangely in the mp3 mode (up moves down in the list and down rewinds)
Soeren.
Hi Stefan,
One thing I'm missing from mplayer: possibility to change subtitles.
There can be multiple subtitles available but if the default is incorrect then I need to modify the subtitles file to get the correct one.
Br, Pasi
Pasi Juppo wrote:
Hi Stefan,
One thing I'm missing from mplayer: possibility to change subtitles.
There can be multiple subtitles available but if the default is incorrect then I need to modify the subtitles file to get the correct one.
Key commands can be changed from the mplayer plugin setup, so you could add "sub_select" command to some key.
On 08 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
I then went further through your code and I think it is a good idea to have the same menu-buttons as are shown in the recordings menu, i.e. the blue button should be 'info' and not AID ... for that issue when a movie
Ok, but where to put AID then?
is played it would be nice to get the green button (displaying audio) to work somehow... do you know if that is possible or is it occupied by vdr somehow ?
There is one problem with that: we don't have information about available audio tracks in the video file.
For the info button it would be nice to see filename.mpg -> filename.{txt,nfo} files to be parsed too.
Ok, added in pre10.
however that one does only work after choosing browse, as excl=0 in cMenuMPlayBrowse::cMenuMPlayBrowse() to fix this I added NewDir(0) there as:
Ah, that's ugly. currentdir hasn't necessarily to be 0. Fixed in pre10.
and the up/down keys act strangely in the mp3 mode (up moves down in the list and down rewinds)
Actually the function of the up/down keys is the same regardless if the playlist windows is open or not: "Up" moves to the _next_ song in the list. "Down" moves to the _previous_ song in the list.
As this is intuitive when the playlist windows is closed, it might be irritating when it's open, as moving to the next song implies that the current song marker moves down.
Regards.
On Tue, 25 Apr 2006 17:31:11 +0000, Stefan Huelswitt wrote:
Hi Stefan,
I just now found the time to upgrade to vdr-1.4 & mp3/mplayer pre10.
On 08 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
I then went further through your code and I think it is a good idea to have the same menu-buttons as are shown in the recordings menu, i.e. the blue button should be 'info' and not AID ... for that issue when a movie
Ok, but where to put AID then?
I would only allow selecting a different AID while the file is played... as below...
is played it would be nice to get the green button (displaying audio) to work somehow... do you know if that is possible or is it occupied by vdr somehow ?
There is one problem with that: we don't have information about available audio tracks in the video file.
well we can easily identify it using mplayer... i.e. one could require a script that displays the aid (one by line) that appear in a file, like:
#!/bin/sh mplayer -identify -frames 0 "$1" -vo null -ao null 2>/dev/null|grep ID_AUDIO_ID | cut -d '=' -f2
that however won't work if the available audio streams change over time ...
For the info button it would be nice to see filename.mpg -> filename.{txt,nfo} files to be parsed too.
Ok, added in pre10.
you made it work for filename.mpg.{txt,nfo,summary} ...
how about making it also work for filename.{txt,nfo,summary} (the new part to mplayer.c is between BEGIN/END)
for(int i=0; exts[i]; i++) { char buff[4096]; snprintf(buff,sizeof(buff),"%s%s",item->FullPath(),exts[i]);
int fd=open(buff,O_RDONLY);
/////////////BEGIN///// // if moviefile.type.ext does not exist check for moviefile.ext if(fd<0) { snprintf(buff,sizeof(buff),"%s",item->FullPath()); char* p= rindex(buff, '.'); if (p) snprintf(p,sizeof(buff)-strlen(buff)-1,"%s",exts[i]); fd=open(buff,O_RDONLY); } /////////////END//////
if(fd>=0) { int r=read(fd,buff,sizeof(buff)-1); close(fd); if(r>0) { buff[r]=0; return AddSubMenu(new cMenuText(tr("Summary"),buff)); } } } }
Else I can confirm that volume control now works/ the .txt/.summary/.nfo files are filtered out correctly...
and the up/down keys act strangely in the mp3 mode (up moves down in the list and down rewinds)
Actually the function of the up/down keys is the same regardless if the playlist windows is open or not: "Up" moves to the _next_ song in the list. "Down" moves to the _previous_ song in the list.
As this is intuitive when the playlist windows is closed, it might be irritating when it's open, as moving to the next song implies that the current song marker moves down.
Its confusing... not sure whether it was better if f2/f3 would switch the song prev/next if the playlist is not open... or whether down always moves to the next song...
Actually I just realized that as soon as a song ends (and the next is supposed to start) the mp3 plugin hangs... When I background vdr (ctrl+z) and fg it, it starts to play again. It happens with and w/o export LD_ASSUME_KERNEL=2.4.1 ... I am attaching the backtraces...
#0 0xb7f1d436 in __lll_mutex_lock_wait () from /lib/tls/libpthread.so.0 #1 0xb7f1a893 in _L_mutex_lock_26 () from /lib/tls/libpthread.so.0 #2 0x08202004 in __JCR_LIST__ () #3 0xb7f1f2e3 in __pthread_mutex_cond_lock () from /lib/tls/libpthread.so.0 #4 0xb7f1a7e4 in pthread_mutex_lock () from /lib/tls/libpthread.so.0 #5 0xb7f1a7e4 in pthread_mutex_lock () from /lib/tls/libpthread.so.0 #6 0xb731a48e in cMP3Control::ShowStatus (this=0x811ca2a, force=252) at mp3.c:350 #7 0x086c7e3c in ?? () #8 0x0820c250 in cControl::control () #9 0x08202004 in __JCR_LIST__ () #10 0xbf970ae8 in ?? () #11 0xb73500c0 in __JCR_LIST__ () from /usr/local/lib/libvdr-mp3.so.1.4.0 #12 0x00000006 in ?? () #13 0xb731bfbb in cMP3Control::ProcessKey (this=0x3, Key=135383594) at mp3.c:796 #14 0x08126a7b in main (argc=16, argv=0xbf970e64) at vdr.c:1007 (gdb) bt all No symbol "all" in current context. (gdb) help bt Print backtrace of all stack frames, or innermost COUNT frames. With a negative argument, print outermost -COUNT frames. Use of the 'full' qualifier also prints the values of the local variables.
(gdb) bt full #0 0xb7f1d436 in __lll_mutex_lock_wait () from /lib/tls/libpthread.so.0 No symbol table info available. #1 0xb7f1a893 in _L_mutex_lock_26 () from /lib/tls/libpthread.so.0 No symbol table info available. #2 0x08202004 in __JCR_LIST__ () No symbol table info available. #3 0xb7f1f2e3 in __pthread_mutex_cond_lock () from /lib/tls/libpthread.so.0 No symbol table info available. #4 0xb7f1a7e4 in pthread_mutex_lock () from /lib/tls/libpthread.so.0 No symbol table info available. #5 0xb7f1a7e4 in pthread_mutex_lock () from /lib/tls/libpthread.so.0 No symbol table info available. #6 0xb731a48e in cMP3Control::ShowStatus (this=0x811ca2a, force=252) at mp3.c:350 No locals. #7 0x086c7e3c in ?? () No symbol table info available. #8 0x0820c250 in cControl::control () No symbol table info available. #9 0x08202004 in __JCR_LIST__ () No symbol table info available. #10 0xbf970ae8 in ?? () No symbol table info available. #11 0xb73500c0 in __JCR_LIST__ () from /usr/local/lib/libvdr-mp3.so.1.4.0 No symbol table info available. #12 0x00000006 in ?? () No symbol table info available. #13 0xb731bfbb in cMP3Control::ProcessKey (this=0x3, Key=135383594) at mp3.c:796 No locals. #14 0x08126a7b in main (argc=16, argv=0xbf970e64) at vdr.c:1007 LatencyTime = -4 Interact = (class cOsdObject *) 0x86c7bb8 key = kRight state = osContinue savedTm = {c_iflag = 1286, c_oflag = 6149, c_cflag = 2237, c_lflag = 35387, c_line = 0 '\0', c_cc = "\003\034\177\b\004\000\000\000\021\023\032\000\022\017\027\026", '\0' <repeats 15 times>, c_ispeed = 13, c_ospeed = 13} HasStdin = true StartedAsRoot = false VdrUser = 0x0 SVDRPport = 2001 AudioCommand = 0x0 ConfigDirectory = 0xbf971ac7 "/etc/vdr" EpgDataFileName = 0xbf971ada "/var/cache/vdr/epg.data" DisplayHelp = false DisplayVersion = false DaemonMode = false SysLogTarget = 8 MuteAudio = false WatchdogTimeout = 180 Terminal = 0x0 Shutdown = 0xbf971b09 "/bin/true" UseKbd = true LircDevice = 0x81caa65 "/dev/lircd" ---Type <return> to continue, or q <return> to quit--- RcuDevice = 0x0 PluginManager = {_vptr.cPluginManager = 0x81e0b20, static pluginManager = 0xbf970d60, directory = 0x8211d68 "/usr/local/lib", lastHousekeeping = 1146912094, nextHousekeeping = -1, dlls = {<cList<cDll>> = {<cListBase> = {_vptr.cListBase = 0x81e0ba0, objects = 0x8212820, lastObject = 0x8211d40, count = 6}, <No data fields>}, <No data fields>}} ExitCode = 0 long_options = {{name = 0x81ae4a0 "audio", has_arg = 1, flag = 0x0, val = 97}, {name = 0x81ca9e2 "buffer", has_arg = 1, flag = 0x0, val = 98}, { name = 0x81ca9e9 "config", has_arg = 1, flag = 0x0, val = 99}, {name = 0x81ca9f0 "daemon", has_arg = 0, flag = 0x0, val = 100}, {name = 0x81ca9f7 "device", has_arg = 1, flag = 0x0, val = 68}, {name = 0x81ca9fe "epgfile", has_arg = 1, flag = 0x0, val = 69}, {name = 0x81caa06 "grab", has_arg = 1, flag = 0x0, val = 103}, { name = 0x81caa0b "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x81caa10 "lib", has_arg = 1, flag = 0x0, val = 76}, {name = 0x81caa14 "lirc", has_arg = 2, flag = 0x0, val = 364}, {name = 0x813c413 "log", has_arg = 1, flag = 0x0, val = 108}, {name = 0x81c6ce8 "mute", has_arg = 0, flag = 0x0, val = 109}, {name = 0x81caa19 "no-kbd", has_arg = 0, flag = 0x0, val = 366}, {name = 0x81caa20 "plugin", has_arg = 1, flag = 0x0, val = 80}, {name = 0x81caa27 "port", has_arg = 1, flag = 0x0, val = 112}, { name = 0x81caa2c "rcu", has_arg = 2, flag = 0x0, val = 370}, {name = 0x81caa30 "record", has_arg = 1, flag = 0x0, val = 114}, {name = 0x81caa37 "shutdown", has_arg = 1, flag = 0x0, val = 115}, {name = 0x81caa40 "terminal", has_arg = 1, flag = 0x0, val = 116}, {name = 0x81caa49 "user", has_arg = 1, flag = 0x0, val = 117}, { name = 0x81a993a "version", has_arg = 0, flag = 0x0, val = 86}, {name = 0x81caa4e "vfat", has_arg = 0, flag = 0x0, val = 374}, {name = 0x81ad8b5 "video", has_arg = 1, flag = 0x0, val = 118}, {name = 0x81caa53 "watchdog", has_arg = 1, flag = 0x0, val = 119}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}} c = -4 LangEnv = 0xb7f20b7c "x�" Menu = (class cOsdObject *) 0x0 LastChannel = 13 LastTimerChannel = -1 PreviousChannel = {1, 13} PreviousChannelIndex = 1 LastChannelChanged = 1146912256 LastActivity = 1146912421 LastCamMenu = 1146912102 MaxLatencyTime = 12 ForceShutdown = false UserShutdown = false TimerInVpsMargin = false IsInfoMenu = false
GNU gdb 6.3-debian Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-linux". (gdb) attach 5750 Attaching to process 5750 Using host libthread_db library "/lib/tls/libthread_db.so.1". warning: could not load vsyscall page because no executable was specified warning: try using the "file" command first Reading symbols from /usr/local/stow/vdr-1.4.0/bin/vdr...done. Reading symbols from /usr/lib/libjpeg.so.62...done. Loaded symbols for /usr/lib/libjpeg.so.62 Reading symbols from /lib/tls/libpthread.so.0...done. [Thread debugging using libthread_db enabled] [New Thread -1211166592 (LWP 5750)] [New Thread -1286734928 (LWP 8266)] [New Thread -1263187024 (LWP 8265)] [New Thread -1267381328 (LWP 5883)] [New Thread -1273676880 (LWP 5767)] [New Thread -1256625232 (LWP 5764)] [New Thread -1252430928 (LWP 5763)] [New Thread -1248236624 (LWP 5762)] [New Thread -1243907152 (LWP 5761)] [New Thread -1239712848 (LWP 5760)] [New Thread -1231324240 (LWP 5758)] [New Thread -1235518544 (LWP 5757)] Loaded symbols for /lib/tls/libpthread.so.0 Reading symbols from /lib/tls/libdl.so.2...done. Loaded symbols for /lib/tls/libdl.so.2 Reading symbols from /lib/libcap.so.1...done. Loaded symbols for /lib/libcap.so.1 Reading symbols from /usr/lib/libstdc++.so.5...done. Loaded symbols for /usr/lib/libstdc++.so.5 Reading symbols from /lib/tls/libm.so.6...done. Loaded symbols for /lib/tls/libm.so.6 Reading symbols from /lib/libgcc_s.so.1...done. Loaded symbols for /lib/libgcc_s.so.1 Reading symbols from /lib/tls/libc.so.6...done. Loaded symbols for /lib/tls/libc.so.6 Reading symbols from /lib/ld-linux.so.2...done. Loaded symbols for /lib/ld-linux.so.2 Reading symbols from /usr/local/lib/libvdr-dvd.so.1.4.0...done. Loaded symbols for /usr/local/lib/libvdr-dvd.so.1.4.0 Reading symbols from /usr/lib/libdvdnav.so.4...done. Loaded symbols for /usr/lib/libdvdnav.so.4 Reading symbols from /usr/lib/liba52-0.7.4.so...done. Loaded symbols for /usr/lib/liba52-0.7.4.so Reading symbols from /usr/local/lib/libvdr-burn.so.1.4.0...done. Loaded symbols for /usr/local/lib/libvdr-burn.so.1.4.0 Reading symbols from /usr/lib/libImlib2.so.1...done. Loaded symbols for /usr/lib/libImlib2.so.1 Reading symbols from /usr/lib/libcdio.so.3...done. Loaded symbols for /usr/lib/libcdio.so.3 Reading symbols from /usr/lib/libfreetype.so.6...done. Loaded symbols for /usr/lib/libfreetype.so.6 Reading symbols from /usr/lib/libz.so.1...done. Loaded symbols for /usr/lib/libz.so.1 Reading symbols from /usr/X11R6/lib/libX11.so.6...done. Loaded symbols for /usr/X11R6/lib/libX11.so.6 Reading symbols from /usr/X11R6/lib/libXext.so.6...done. Loaded symbols for /usr/X11R6/lib/libXext.so.6 Reading symbols from /usr/local/lib/libvdr-skinelchi.so.1.4.0...done. Loaded symbols for /usr/local/lib/libvdr-skinelchi.so.1.4.0 Reading symbols from /usr/lib/libMagick++.so.6...done. Loaded symbols for /usr/lib/libMagick++.so.6 Reading symbols from /usr/lib/libWand.so.6...done. Loaded symbols for /usr/lib/libWand.so.6 Reading symbols from /usr/lib/libMagick.so.6...done. Loaded symbols for /usr/lib/libMagick.so.6 Reading symbols from /usr/lib/liblcms.so.1...done. Loaded symbols for /usr/lib/liblcms.so.1 Reading symbols from /usr/lib/libtiff.so.4...done. Loaded symbols for /usr/lib/libtiff.so.4 Reading symbols from /usr/lib/libjasper-1.701.so.1...done. Loaded symbols for /usr/lib/libjasper-1.701.so.1 Reading symbols from /usr/lib/libpng12.so.0...done. Loaded symbols for /usr/lib/libpng12.so.0 Reading symbols from /usr/X11R6/lib/libdpstk.so.1...done. Loaded symbols for /usr/X11R6/lib/libdpstk.so.1 Reading symbols from /usr/X11R6/lib/libdps.so.1...done. Loaded symbols for /usr/X11R6/lib/libdps.so.1 Reading symbols from /usr/X11R6/lib/libXt.so.6...done. Loaded symbols for /usr/X11R6/lib/libXt.so.6 Reading symbols from /usr/X11R6/lib/libSM.so.6...done. Loaded symbols for /usr/X11R6/lib/libSM.so.6 Reading symbols from /usr/X11R6/lib/libICE.so.6...done. Loaded symbols for /usr/X11R6/lib/libICE.so.6 Reading symbols from /lib/libbz2.so.1.0...done. Loaded symbols for /lib/libbz2.so.1.0 Reading symbols from /usr/lib/libxml2.so.2...done. Loaded symbols for /usr/lib/libxml2.so.2 Reading symbols from /usr/local/lib/libvdr-mp3.so.1.4.0...done. Loaded symbols for /usr/local/lib/libvdr-mp3.so.1.4.0 Reading symbols from /usr/lib/libmad.so.0...done. Loaded symbols for /usr/lib/libmad.so.0 Reading symbols from /usr/lib/libid3tag.so.0...done. Loaded symbols for /usr/lib/libid3tag.so.0 Reading symbols from /usr/lib/libsndfile.so.1...done. Loaded symbols for /usr/lib/libsndfile.so.1 Reading symbols from /usr/lib/libvorbisfile.so.3...done. Loaded symbols for /usr/lib/libvorbisfile.so.3 Reading symbols from /usr/lib/libvorbis.so.0...done. Loaded symbols for /usr/lib/libvorbis.so.0 Reading symbols from /usr/lib/libogg.so.0...done. Loaded symbols for /usr/lib/libogg.so.0 Reading symbols from /usr/local/lib/libvdr-mplayer.so.1.4.0...done. Loaded symbols for /usr/local/lib/libvdr-mplayer.so.1.4.0 Reading symbols from /usr/local/lib/libvdr-image.so.1.4.0...done. Loaded symbols for /usr/local/lib/libvdr-image.so.1.4.0 Reading symbols from /usr/lib/libavcodec.so.0...done. Loaded symbols for /usr/lib/libavcodec.so.0 Reading symbols from /usr/lib/libexif.so.12...done. Loaded symbols for /usr/lib/libexif.so.12 Reading symbols from /usr/lib/libmp3lame.so.0...done. Loaded symbols for /usr/lib/libmp3lame.so.0 Reading symbols from /usr/lib/libfaad.so.0...done. Loaded symbols for /usr/lib/libfaad.so.0 Reading symbols from /usr/lib/libvorbisenc.so.2...done. Loaded symbols for /usr/lib/libvorbisenc.so.2 Reading symbols from /usr/lib/libfaac.so.0...done. Loaded symbols for /usr/lib/libfaac.so.0 Reading symbols from /usr/lib/libxvidcore.so.4...done. Loaded symbols for /usr/lib/libxvidcore.so.4 Reading symbols from /usr/lib/libtheora.so.0...done. Loaded symbols for /usr/lib/libtheora.so.0 Reading symbols from /usr/lib/libavutil.so.0...done. Loaded symbols for /usr/lib/libavutil.so.0 Reading symbols from /usr/lib/libpostproc.so.0.0.1...done. Loaded symbols for /usr/lib/libpostproc.so.0.0.1 Reading symbols from /usr/lib/libmp4v2.so.0...done. Loaded symbols for /usr/lib/libmp4v2.so.0 Reading symbols from /usr/lib/libdvdcss.so.2...done. Loaded symbols for /usr/lib/libdvdcss.so.2 Reading symbols from /lib/tls/libnss_compat.so.2...done. Loaded symbols for /lib/tls/libnss_compat.so.2 Reading symbols from /lib/tls/libnsl.so.1...done. Loaded symbols for /lib/tls/libnsl.so.1 Reading symbols from /lib/tls/libnss_nis.so.2...done. Loaded symbols for /lib/tls/libnss_nis.so.2 Reading symbols from /lib/tls/libnss_files.so.2...done. Loaded symbols for /lib/tls/libnss_files.so.2 0xb7f1d436 in __lll_mutex_lock_wait () from /lib/tls/libpthread.so.0 (gdb) bt #0 0xb7f1d436 in __lll_mutex_lock_wait () from /lib/tls/libpthread.so.0 #1 0xb7f1a893 in _L_mutex_lock_26 () from /lib/tls/libpthread.so.0 #2 0x0861b3c8 in ?? () #3 0xb73500c0 in __JCR_LIST__ () from /usr/local/lib/libvdr-mp3.so.1.4.0 #4 0xbf970ae8 in ?? () #5 0xb732ae01 in cPlayManager::Next (this=0x8119ef8) at player-mp3.c:1067 #6 0x08119eb2 in cMutex::Lock (this=0x8202004) at thread.c:190 #7 0xb732d248 in cMP3Player::Play (this=0x86c5f88) at thread.h:91 #8 0xb731bf17 in cMP3Control::ProcessKey (this=0x86c6228, Key=kUp) at mp3.c:816 #9 0x08126a7b in main (argc=16, argv=0xbf970e64) at vdr.c:1007 (gdb) bt full #0 0xb7f1d436 in __lll_mutex_lock_wait () from /lib/tls/libpthread.so.0 No symbol table info available. #1 0xb7f1a893 in _L_mutex_lock_26 () from /lib/tls/libpthread.so.0 No symbol table info available. #2 0x0861b3c8 in ?? () No symbol table info available. #3 0xb73500c0 in __JCR_LIST__ () from /usr/local/lib/libvdr-mp3.so.1.4.0 No symbol table info available. #4 0xbf970ae8 in ?? () No symbol table info available. #5 0xb732ae01 in cPlayManager::Next (this=0x8119ef8) at player-mp3.c:1067 lock = {mutex = 0x1676, locked = 124} ni = 141320100 n = (class cSong *) 0x8119ef8 #6 0x08119eb2 in cMutex::Lock (this=0x8202004) at thread.c:190 No locals. #7 0xb732d248 in cMP3Player::Play (this=0x86c5f88) at thread.h:91 No locals. #8 0xb731bf17 in cMP3Control::ProcessKey (this=0x86c6228, Key=kUp) at mp3.c:816 No locals. #9 0x08126a7b in main (argc=16, argv=0xbf970e64) at vdr.c:1007 LatencyTime = -4 Interact = (class cOsdObject *) 0x86c6228 key = kUp state = osContinue savedTm = {c_iflag = 1286, c_oflag = 6149, c_cflag = 2237, c_lflag = 35387, c_line = 0 '\0', c_cc = "\003\034\177\b\004\000\000\000\021\023\032\000\022\017\027\026", '\0' <repeats 15 times>, c_ispeed = 13, c_ospeed = 13} HasStdin = true StartedAsRoot = false VdrUser = 0x0 SVDRPport = 2001 AudioCommand = 0x0 ConfigDirectory = 0xbf971ac7 "/etc/vdr" EpgDataFileName = 0xbf971ada "/var/cache/vdr/epg.data" DisplayHelp = false DisplayVersion = false DaemonMode = false SysLogTarget = 8 MuteAudio = false WatchdogTimeout = 180 Terminal = 0x0 Shutdown = 0xbf971b09 "/bin/true" UseKbd = true LircDevice = 0x81caa65 "/dev/lircd" RcuDevice = 0x0 PluginManager = {_vptr.cPluginManager = 0x81e0b20, static pluginManager = 0xbf970d60, directory = 0x8211d68 "/usr/local/lib", lastHousekeeping = 1146912094, nextHousekeeping = -1, dlls = {<cList<cDll>> = {<cListBase> = {_vptr.cListBase = 0x81e0ba0, objects = 0x8212820, lastObject = 0x8211d40, count = 6}, <No data fields>}, <No data fields>}} ExitCode = 0 long_options = {{name = 0x81ae4a0 "audio", has_arg = 1, flag = 0x0, val = 97}, {name = 0x81ca9e2 "buffer", has_arg = 1, flag = 0x0, val = 98}, { name = 0x81ca9e9 "config", has_arg = 1, flag = 0x0, val = 99}, {name = 0x81ca9f0 "daemon", has_arg = 0, flag = 0x0, val = 100}, {name = 0x81ca9f7 "device", has_arg = 1, flag = 0x0, val = 68}, {name = 0x81ca9fe "epgfile", has_arg = 1, flag = 0x0, val = 69}, {name = 0x81caa06 "grab", has_arg = 1, flag = 0x0, val = 103}, { ---Type <return> to continue, or q <return> to quit---q name = 0x81caa0b "help"Quit (gdb) bt full >/tmp/bug A syntax error in expression, near `>/tmp/bug '. (gdb) help bt full Print backtrace of all stack frames, or innermost COUNT frames. With a negative argument, print outermost -COUNT frames. Use of the 'full' qualifier also prints the values of the local variables.
(gdb) bt #0 0xb7f1d436 in __lll_mutex_lock_wait () from /lib/tls/libpthread.so.0 #1 0xb7f1a893 in _L_mutex_lock_26 () from /lib/tls/libpthread.so.0 #2 0x0861b3c8 in ?? () #3 0xb73500c0 in __JCR_LIST__ () from /usr/local/lib/libvdr-mp3.so.1.4.0 #4 0xbf970ae8 in ?? () #5 0xb732ae01 in cPlayManager::Next (this=0x8119ef8) at player-mp3.c:1067 #6 0x08119eb2 in cMutex::Lock (this=0x8202004) at thread.c:190 #7 0xb732d248 in cMP3Player::Play (this=0x86c5f88) at thread.h:91 #8 0xb731bf17 in cMP3Control::ProcessKey (this=0x86c6228, Key=kUp) at mp3.c:816 #9 0x08126a7b in main (argc=16, argv=0xbf970e64) at vdr.c:1007 (gdb) bt full #0 0xb7f1d436 in __lll_mutex_lock_wait () from /lib/tls/libpthread.so.0 No symbol table info available. #1 0xb7f1a893 in _L_mutex_lock_26 () from /lib/tls/libpthread.so.0 No symbol table info available. #2 0x0861b3c8 in ?? () No symbol table info available. #3 0xb73500c0 in __JCR_LIST__ () from /usr/local/lib/libvdr-mp3.so.1.4.0 No symbol table info available. #4 0xbf970ae8 in ?? () No symbol table info available. #5 0xb732ae01 in cPlayManager::Next (this=0x8119ef8) at player-mp3.c:1067 lock = {mutex = 0x1676, locked = 124} ni = 141320100 n = (class cSong *) 0x8119ef8 #6 0x08119eb2 in cMutex::Lock (this=0x8202004) at thread.c:190 No locals. #7 0xb732d248 in cMP3Player::Play (this=0x86c5f88) at thread.h:91 No locals. #8 0xb731bf17 in cMP3Control::ProcessKey (this=0x86c6228, Key=kUp) at mp3.c:816 No locals. #9 0x08126a7b in main (argc=16, argv=0xbf970e64) at vdr.c:1007 LatencyTime = -4 Interact = (class cOsdObject *) 0x86c6228 key = kUp state = osContinue savedTm = {c_iflag = 1286, c_oflag = 6149, c_cflag = 2237, c_lflag = 35387, c_line = 0 '\0', c_cc = "\003\034\177\b\004\000\000\000\021\023\032\000\022\017\027\026", '\0' <repeats 15 times>, c_ispeed = 13, c_ospeed = 13} HasStdin = true StartedAsRoot = false VdrUser = 0x0 SVDRPport = 2001 AudioCommand = 0x0 ConfigDirectory = 0xbf971ac7 "/etc/vdr" EpgDataFileName = 0xbf971ada "/var/cache/vdr/epg.data" DisplayHelp = false DisplayVersion = false DaemonMode = false SysLogTarget = 8 MuteAudio = false WatchdogTimeout = 180 Terminal = 0x0 Shutdown = 0xbf971b09 "/bin/true" UseKbd = trues. LircDevice = 0x81caa65 "/dev/lircd" RcuDevice = 0x0 PluginManager = {_vptr.cPluginManager = 0x81e0b20, static pluginManager = 0xbf970d60, directory = 0x8211d68 "/usr/local/lib", lastHousekeeping = 1146912094, nextHousekeeping = -1, dlls = {<cList<cDll>> = {<cListBase> = {_vptr.cListBase = 0x81e0ba0, objects = 0x8212820, lastObject = 0x8211d40, count = 6}, <No data fields>}, <No data fields>}} ExitCode = 0 long_options = {{name = 0x81ae4a0 "audio", has_arg = 1, flag = 0x0, val = 97}, {name = 0x81ca9e2 "buffer", has_arg = 1, flag = 0x0, val = 98}, { name = 0x81ca9e9 "config", has_arg = 1, flag = 0x0, val = 99}, {name = 0x81ca9f0 "daemon", has_arg = 0, flag = 0x0, val = 100}, {name = 0x81ca9f7 "device", has_arg = 1, flag = 0x0, val = 68}, {name = 0x81ca9fe "epgfile", has_arg = 1, flag = 0x0, val = 69}, {name = 0x81caa06 "grab", has_arg = 1, flag = 0x0, val = 103}, { ---Type <return> to continue, or q <return> to quit--- name = 0x81caa0b "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x81caa10 "lib", has_arg = 1, flag = 0x0, val = 76}, {name = 0x81caa14 "lirc", has_arg = 2, flag = 0x0, val = 364}, {name = 0x813c413 "log", has_arg = 1, flag = 0x0, val = 108}, {name = 0x81c6ce8 "mute", has_arg = 0, flag = 0x0, val = 109}, {name = 0x81caa19 "no-kbd", has_arg = 0, flag = 0x0, val = 366}, {name = 0x81caa20 "plugin", has_arg = 1, flag = 0x0, val = 80}, {name = 0x81caa27 "port", has_arg = 1, flag = 0x0, val = 112}, { name = 0x81caa2c "rcu", has_arg = 2, flag = 0x0, val = 370}, {name = 0x81caa30 "record", has_arg = 1, flag = 0x0, val = 114}, {name = 0x81caa37 "shutdown", has_arg = 1, flag = 0x0, val = 115}, {name = 0x81caa40 "terminal", has_arg = 1, flag = 0x0, val = 116}, {name = 0x81caa49 "user", has_arg = 1, flag = 0x0, val = 117}, { name = 0x81a993a "version", has_arg = 0, flag = 0x0, val = 86}, {name = 0x81caa4e "vfat", has_arg = 0, flag = 0x0, val = 374}, {name = 0x81ad8b5 "video", has_arg = 1, flag = 0x0, val = 118}, {name = 0x81caa53 "watchdog", has_arg = 1, flag = 0x0, val = 119}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}} c = -4 LangEnv = 0xb7f20b7c "x�" Menu = (class cOsdObject *) 0x0 LastChannel = 13 LastTimerChannel = -1 PreviousChannel = {1, 13} PreviousChannelIndex = 1 LastChannelChanged = 1146913394 LastActivity = 1146913513 LastCamMenu = 1146912102 MaxLatencyTime = 108 ForceShutdown = false UserShutdown = false TimerInVpsMargin = false IsInfoMenu = false (gdb) quit
Soeren.
On 05 Apr 2006 Soeren Sonnenburg vdr-ml@nn7.de wrote:
I've tested your version and found that the mplayer volume fix does not work. The attached patch makes it *really* work (well at least it is working here :)
Can you please check if pre6 is fine for you? (it contains a modified version of your code)
Regards.
Stefan Huelswitt wrote:
I decided to put a pre-release on my homepage at http://www.muempf.de/down/vdr-mp3-0.9.15pre4.tar.gz
Hello Stefan - I have one bug report for the mp3-plugin.
If I use "Background mode - Live" setting to play mp3's I will always get annoying clipping of the sound (every second or so). If I select the "Black" setting for the Background Mode the clipping dissappears.
My System: -AMD Duron 1600Mhz -Technotrend DVB-C rev2.1 -Using SP-DIF output of the FF card -Suse 10.0 -Suse Kernel 2.6.13-15.8 -Suse provided DVB drivers -gcc version 4.0.2 20050901 (prerelease) (SUSE Linux) -glibc-2.3.5-40 -vdr-1.3.46 -mp3-0.9.15pre5
The problem also occurs with (on the same system) vdr-1.3.34 and mp3-0.9.13.
Has anyone else experienced this problem or any ideas how to diagnose the problem further...?
Br, Risto Pajula
On 10 Apr 2006 Risto Pajula rippe@surfeu.fi wrote:
If I use "Background mode - Live" setting to play mp3's I will always get annoying clipping of the sound (every second or so). If I select the "Black" setting for the Background Mode the clipping dissappears.
[...]
Has anyone else experienced this problem or any ideas how to diagnose the problem further...?
No, I haven't heard about such a problem.
As it works in "black" mode, I guess it's a DVB driver/firmware problem. The only difference between both mode is the way how the video device is setup.
Which firmware version do you use? May be you can try a newer firmware e.g. 2623-f3.
Regards.