MP3/MPlayer pre-release

Message ID pan.2006.04.05.13.00.39.282692@nn7.de
State New
Headers

Commit Message

Soeren Sonnenburg April 5, 2006, 1 p.m. UTC
  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.
  

Comments

Stefan Huelswitt April 5, 2006, 6:04 p.m. UTC | #1
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.
  
Soeren Sonnenburg April 5, 2006, 7:17 p.m. UTC | #2
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.
  
Stefan Huelswitt April 5, 2006, 8:32 p.m. UTC | #3
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.
  
Soeren Sonnenburg April 6, 2006, 5:39 a.m. UTC | #4
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
  
Stefan Huelswitt April 6, 2006, 3:06 p.m. UTC | #5
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.
  
Soeren Sonnenburg April 6, 2006, 7:25 p.m. UTC | #6
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
  
Stefan Huelswitt April 6, 2006, 7:51 p.m. UTC | #7
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.
  
C.Y.M April 6, 2006, 10:08 p.m. UTC | #8
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.
  
Soeren Sonnenburg April 7, 2006, 4:26 a.m. UTC | #9
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
  
Niko Mikkila April 7, 2006, 5:26 a.m. UTC | #10
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
  
Stefan Huelswitt April 7, 2006, 4:41 p.m. UTC | #11
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.
  
Stefan Huelswitt April 7, 2006, 4:42 p.m. UTC | #12
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.
  
Stefan Huelswitt April 7, 2006, 4:43 p.m. UTC | #13
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.
  
Niko Mikkila April 7, 2006, 5:05 p.m. UTC | #14
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
  
Stefan Huelswitt April 7, 2006, 5:21 p.m. UTC | #15
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.
  
Niko Mikkila April 7, 2006, 5:43 p.m. UTC | #16
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
  
Stefan Huelswitt April 7, 2006, 6:24 p.m. UTC | #17
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.
  
Soeren Sonnenburg April 8, 2006, 6:25 a.m. UTC | #18
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
  
Stefan Huelswitt April 8, 2006, 9:37 a.m. UTC | #19
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.
  
Soeren Sonnenburg April 8, 2006, 12:10 p.m. UTC | #20
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.
  
Pasi Juppo April 8, 2006, 5:39 p.m. UTC | #21
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
  
Anssi Hannula April 8, 2006, 6:42 p.m. UTC | #22
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.
  
Stefan Huelswitt April 10, 2006, 6:25 p.m. UTC | #23
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.
  
C.Y.M April 11, 2006, 12:24 p.m. UTC | #24
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.
  
Stefan Huelswitt April 11, 2006, 5:42 p.m. UTC | #25
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.
  
Stefan Huelswitt April 25, 2006, 5:31 p.m. UTC | #26
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.
  
Linux TV April 29, 2006, 4:36 p.m. UTC | #27
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...
  
Stefan Huelswitt May 6, 2006, 8:36 a.m. UTC | #28
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.
  
Soeren Sonnenburg May 6, 2006, 5:29 p.m. UTC | #29
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.
  
Udo Richter May 6, 2006, 6:55 p.m. UTC | #30
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
  
Stefan Huelswitt May 7, 2006, 9:07 a.m. UTC | #31
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.
  
Ville Skyttä May 7, 2006, 9:24 a.m. UTC | #32
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.
  
Clemens Kirchgatterer May 7, 2006, 10:22 a.m. UTC | #33
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
  
Stefan Huelswitt May 7, 2006, 10:32 a.m. UTC | #34
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.
  
Ville Skyttä May 7, 2006, 1:25 p.m. UTC | #35
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.
  
Clemens Kirchgatterer May 7, 2006, 1:35 p.m. UTC | #36
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
  
Stefan Huelswitt May 7, 2006, 2:44 p.m. UTC | #37
Taking into account what Ville and you said, I now changed the
code to (char *)0, which should be OK for any case.

Regards.
  
Clemens Kirchgatterer May 7, 2006, 3 p.m. UTC | #38
s.huelswitt@gmx.de (Stefan Huelswitt) wrote:

> Taking into account what Ville and you said, I now changed the
> code to (char *)0, which should be OK for any case.

maybe (char *)NULL, if you prefer NULL for pointers as i do ;-)

best regards ...
clemens
  
Olivier Jacques May 7, 2006, 10:44 p.m. UTC | #39
> - 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.
  
Stefan Huelswitt May 8, 2006, 7:59 p.m. UTC | #40
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.
  
Olivier Jacques May 10, 2006, 6:18 a.m. UTC | #41
> [...]
> > 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.
  

Patch

--- ../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();
 }