PDA

View Full Version : Tonight's AlienBBC release (v0.4)



Jules Taplin
2004-07-01, 16:06
Heya!

Right. Following some extensive (*grin*) feedback from Mark... I've a stab
at trying to sort some of it out.

Basically... Changes are as follows:

I hope I've fixed the 'dangling alienstream' problem, thanks to inspiration
from the ever brilliant perl cookbook's recipe for opening file without
shell escapes (recipe 19.6, if anybody cares). My current belief is that
this is working now, and we shouldn't see any of the horrible dangling
alienstreams mucking stuff up.

Secondly... on the cosmetic front... I've also made the lists start from the
top again when you navigate into a sub-directory.

Mark... on your other bugs... I can certainly get the Radio 4 Afternoon Play
now, and go between that an Radio 4 Longwave without trauma, so I think I'm
going to declare either a fix or a 'can't reproduce' on both of those
*grin*.

So... version 0.4 is available from the normal place
(http://www.mrtickle.org).

Same again folks... If you can face it, give it a test. To avoid rework,
though... the following is outstanding:

Known Issues:

Issue 3: Stopping a stream using the stop button freezes the server, only a
restart appears to fix this.
Issue 4: Stopping the stream using the power button leave both alienstream
and lame running...
Issue 5(a): Incorrect separation between multiple players
Issue 6: When connected to a stream you can scroll up and down to see the
other streams on the page, but you can't switch to another stream
by pressing play. You have to stop the stream by pressing the left
button then select the new stream and hit play.


Of that lot... I've no idea how to fix issues 3 & 4 - as I've no template
for how this sort of plugin SHOULD work. I think I know what's going on with
Issue 5(a), but I'm amazed anybody even brave enough to _TRY_ to run two
different alienstreams on different players *grin*.


-- Jules

Mark Bennett
2004-07-02, 02:01
Hi Jules,

I've installed 0.4, and been doing some testing this morning. It looks
like you've solved the most significant problem, with both alienstream
and lame getting launched and killed off correctly. This seems to be
true even with multiple players playing different streams!

This means that it's pretty usable and solid now - the rest of the
points so far are down to user interface issues, which can be fixed over
time.

I did notice in testing that the Radio 2 stream (I tested listen live,
which never came up showing connecting - and on subsequent testing
actually kills slimserver, and Soul Solutions, which locked the server)
have some problems.... I suspect that thease are stream problems at
the BBC end, rather than anything else.

Anyay, excellent progress, and let me know if I can help out or do
any more testing for you.

Cheers,
Mark.

Jules Taplin wrote:
> Heya!
>
> Right. Following some extensive (*grin*) feedback from Mark... I've a stab
> at trying to sort some of it out.
>
> Basically... Changes are as follows:
>
> I hope I've fixed the 'dangling alienstream' problem, thanks to inspiration
> from the ever brilliant perl cookbook's recipe for opening file without
> shell escapes (recipe 19.6, if anybody cares). My current belief is that
> this is working now, and we shouldn't see any of the horrible dangling
> alienstreams mucking stuff up.
>
> Secondly... on the cosmetic front... I've also made the lists start from the
> top again when you navigate into a sub-directory.
>
> Mark... on your other bugs... I can certainly get the Radio 4 Afternoon Play
> now, and go between that an Radio 4 Longwave without trauma, so I think I'm
> going to declare either a fix or a 'can't reproduce' on both of those
> *grin*.
>
> So... version 0.4 is available from the normal place
> (http://www.mrtickle.org).
>
> Same again folks... If you can face it, give it a test. To avoid rework,
> though... the following is outstanding:
>
> Known Issues:
>
> Issue 3: Stopping a stream using the stop button freezes the server, only a
> restart appears to fix this.
> Issue 4: Stopping the stream using the power button leave both alienstream
> and lame running...
> Issue 5(a): Incorrect separation between multiple players
> Issue 6: When connected to a stream you can scroll up and down to see the
> other streams on the page, but you can't switch to another stream
> by pressing play. You have to stop the stream by pressing the left
> button then select the new stream and hit play.
>
>
> Of that lot... I've no idea how to fix issues 3 & 4 - as I've no template
> for how this sort of plugin SHOULD work. I think I know what's going on with
> Issue 5(a), but I'm amazed anybody even brave enough to _TRY_ to run two
> different alienstreams on different players *grin*.
>
>
> -- Jules
>
>

Peter Heslin
2004-07-02, 06:58
On Fri, Jul 02, 2004 at 12:06:50AM +0100, Jules Taplin wrote:
> Issue 3: Stopping a stream using the stop button freezes the server, only a
> restart appears to fix this.
>
> Issue 4: Stopping the stream using the power button leave both alienstream
> and lame running...

Try duplicating the 'pause' entry in %functions for 'stop' and
'power_toggle'. This only seems to fix issue 4. I'm not sure why the
server freezes when you hit 'stop'. I never use the stop button, so I
never saw this issue and never bothered putting in a function for it.

Pressing 'stop' does now correctly kill the player and mp3 encoder,
so the callback is called correctly, but then the server crashes.
Does anyone who knows the server architecture well know what happens
in the server after the current mode's callback for 'stop' is invoked?

> Issue 5(a): Incorrect separation between multiple players
> Issue 6: When connected to a stream you can scroll up and down to see the
> other streams on the page, but you can't switch to another stream
> by pressing play. You have to stop the stream by pressing the left
> button then select the new stream and hit play.

Try sticking in

&kill_children($client);

right before

&setup_player($client);

in the 'play' entry in %functions

>
> Of that lot... I've no idea how to fix issues 3 & 4 - as I've no template
> for how this sort of plugin SHOULD work. I think I know what's going on with
> Issue 5(a), but I'm amazed anybody even brave enough to _TRY_ to run two
> different alienstreams on different players *grin*.

Yeah, I never tested alienstream with more than one player trying to
transcode simultaneously, so I would not be at all surprised if it is
broken.

Peter

Peter Heslin
2004-07-02, 07:33
On Fri, Jul 02, 2004 at 02:58:41PM +0100, Peter Heslin wrote:

> Pressing 'stop' does now correctly kill the player and mp3 encoder,
> so the callback is called correctly, but then the server crashes.
> Does anyone who knows the server architecture well know what happens
> in the server after the current mode's callback for 'stop' is invoked?

I figured it out, I think. Add a line to the 'stop' callback to
let the server know that playback has stopped, like so:

'stop' => sub {
my $client = shift;
&kill_children($client);
Slim::Control::Command::execute($client, ['stop']);
Slim::Display::Display::update($client);

where the Slim::Control::Command::execute($client, ['stop']); line
needs to be added to the old code.

I hope this solves most of the issues you mentioned. There are
others, I know.

Peter

Jules Taplin
2004-07-03, 06:28
Fantastic Mark.

That's sounding rather better. The UI bits I'm sure I'll get fixed as I
work out a little better how some of this stuff is supposed to work (It's
the first Plugin I've worked on, after all, and I'm not at all sure that the
central model for it is the correct one).

My major concerns, though, are the bugs that freeze the server. I'm not
quite sure what those are about, but having the server lock up is pretty
darned annoying.

-- Jules

----- Original Message -----
From: "Mark Bennett" <mark (AT) markandliz (DOT) co.uk>
To: "Slim Devices Discussion" <discuss (AT) lists (DOT) slimdevices.com>
Sent: Friday, July 02, 2004 10:01 AM
Subject: [slim] Tonight's AlienBBC release (v0.4)


> Hi Jules,
>
> I've installed 0.4, and been doing some testing this morning. It looks
> like you've solved the most significant problem, with both alienstream
> and lame getting launched and killed off correctly. This seems to be
> true even with multiple players playing different streams!
>
> This means that it's pretty usable and solid now - the rest of the
> points so far are down to user interface issues, which can be fixed over
> time.
>
> I did notice in testing that the Radio 2 stream (I tested listen live,
> which never came up showing connecting - and on subsequent testing
> actually kills slimserver, and Soul Solutions, which locked the server)
> have some problems.... I suspect that thease are stream problems at
> the BBC end, rather than anything else.
>
> Anyay, excellent progress, and let me know if I can help out or do
> any more testing for you.
>
> Cheers,
> Mark.
>
> Jules Taplin wrote:
> > Heya!
> >
> > Right. Following some extensive (*grin*) feedback from Mark... I've a
stab
> > at trying to sort some of it out.
> >
> > Basically... Changes are as follows:
> >
> > I hope I've fixed the 'dangling alienstream' problem, thanks to
inspiration
> > from the ever brilliant perl cookbook's recipe for opening file without
> > shell escapes (recipe 19.6, if anybody cares). My current belief is that
> > this is working now, and we shouldn't see any of the horrible dangling
> > alienstreams mucking stuff up.
> >
> > Secondly... on the cosmetic front... I've also made the lists start from
the
> > top again when you navigate into a sub-directory.
> >
> > Mark... on your other bugs... I can certainly get the Radio 4 Afternoon
Play
> > now, and go between that an Radio 4 Longwave without trauma, so I think
I'm
> > going to declare either a fix or a 'can't reproduce' on both of those
> > *grin*.
> >
> > So... version 0.4 is available from the normal place
> > (http://www.mrtickle.org).
> >
> > Same again folks... If you can face it, give it a test. To avoid rework,
> > though... the following is outstanding:
> >
> > Known Issues:
> >
> > Issue 3: Stopping a stream using the stop button freezes the server,
only a
> > restart appears to fix this.
> > Issue 4: Stopping the stream using the power button leave both
alienstream
> > and lame running...
> > Issue 5(a): Incorrect separation between multiple players
> > Issue 6: When connected to a stream you can scroll up and down to see
the
> > other streams on the page, but you can't switch to another stream
> > by pressing play. You have to stop the stream by pressing the left
> > button then select the new stream and hit play.
> >
> >
> > Of that lot... I've no idea how to fix issues 3 & 4 - as I've no
template
> > for how this sort of plugin SHOULD work. I think I know what's going on
with
> > Issue 5(a), but I'm amazed anybody even brave enough to _TRY_ to run two
> > different alienstreams on different players *grin*.
> >
> >
> > -- Jules
> >
> >

Jules Taplin
2004-07-03, 06:35
Peter! You're about! Marvellous - I wanted to thank you for all the heavy
lifting you've obviously done getting AlienStream to work at all.

I kind of think I've come along and done the fame-and-glory bit on the BBC
side, which is really just a bunch of HTML parsing, and the like.

I'll have a go at integrating your changes - thank you very much.

If I can offer a patch in return, though - AlienStream has a problem where
it won't correctly kill off the alienstream exe if it was launched via a
subshell (which perl will do if it sees any shell metacharacters in the
stream description - a distressingly common occurrance, as far as I can
see).

If you replace the following line (line 176, I think)

$player_pid{$client} = $message_reader{$client}->open("$alienstream
$stream 2>&1 |");

With the following:

print STDERR "AlienStream: error launching $alienstream\n" unless
defined($player_pid{$client} = $message_reader{$client}->open("-|"));

unless($player_pid{$client})
{
print STDERR "Going to call exec with: $alienstream, $stream\n";
exec($alienstream, $stream);
}

I believe all will be well... that works around to force the open to be
backed with exec using explicit parameters, which means a subshell will
never be invoked.


-- Jules

----- Original Message -----
From: "Peter Heslin" <slimp3 (AT) heslin (DOT) eclipse.co.uk>
To: "Slim Devices Discussion" <discuss (AT) lists (DOT) slimdevices.com>
Sent: Friday, July 02, 2004 3:33 PM
Subject: [slim] Tonight's AlienBBC release (v0.4)


> On Fri, Jul 02, 2004 at 02:58:41PM +0100, Peter Heslin wrote:
>
> > Pressing 'stop' does now correctly kill the player and mp3 encoder,
> > so the callback is called correctly, but then the server crashes.
> > Does anyone who knows the server architecture well know what happens
> > in the server after the current mode's callback for 'stop' is invoked?
>
> I figured it out, I think. Add a line to the 'stop' callback to
> let the server know that playback has stopped, like so:
>
> 'stop' => sub {
> my $client = shift;
> &kill_children($client);
> Slim::Control::Command::execute($client, ['stop']);
> Slim::Display::Display::update($client);
>
> where the Slim::Control::Command::execute($client, ['stop']); line
> needs to be added to the old code.
>
> I hope this solves most of the issues you mentioned. There are
> others, I know.
>
> Peter
>
>
>

Peter Heslin
2004-07-06, 16:10
On Sat, Jul 03, 2004 at 02:35:50PM +0100, Jules Taplin wrote:
> Peter! You're about! Marvellous - I wanted to thank you for all the heavy
> lifting you've obviously done getting AlienStream to work at all.

No problem. Sorry that it's a bit rough around the edges.

> I kind of think I've come along and done the fame-and-glory bit on the BBC
> side, which is really just a bunch of HTML parsing, and the like.
>
> I'll have a go at integrating your changes - thank you very much.
>
> If I can offer a patch in return, though - AlienStream has a problem where
> it won't correctly kill off the alienstream exe if it was launched via a
> subshell (which perl will do if it sees any shell metacharacters in the
> stream description - a distressingly common occurrance, as far as I can
> see).
>
> If you replace the following line (line 176, I think)
>
> $player_pid{$client} = $message_reader{$client}->open("$alienstream
> $stream 2>&1 |");
>
> With the following:
>
> print STDERR "AlienStream: error launching $alienstream\n" unless
> defined($player_pid{$client} = $message_reader{$client}->open("-|"));
>
> unless($player_pid{$client})
> {
> print STDERR "Going to call exec with: $alienstream, $stream\n";
> exec($alienstream, $stream);
> }
>
> I believe all will be well... that works around to force the open to be
> backed with exec using explicit parameters, which means a subshell will
> never be invoked.

Good catch. Stick in this line:

open STDERR, ">&STDOUT" or die "Can't dup STDOUT: $!";

just before the call to exec, and you'll still get the buffering
status messages displayed to the client, rather than to the server
stderr.

I've just updated the alienstream plugin with these changes, and one
or two more. You might want to check
http://www.dur.ac.uk/p.j.heslin/amusements/alienstream/version3/AlienStream3.pm

to make sure you have merged all of the changes into AlienBBC.

Peter

Jules Taplin
2004-07-07, 00:29
Cheers Peter.

I'll try to integrate them tonight ;)


-- Jules

----- Original Message -----
From: "Peter Heslin" <slimp3 (AT) heslin (DOT) eclipse.co.uk>
To: "Slim Devices Discussion" <discuss (AT) lists (DOT) slimdevices.com>
Sent: Wednesday, July 07, 2004 12:10 AM
Subject: [slim] Tonight's AlienBBC release (v0.4)


> On Sat, Jul 03, 2004 at 02:35:50PM +0100, Jules Taplin wrote:
> > Peter! You're about! Marvellous - I wanted to thank you for all the
heavy
> > lifting you've obviously done getting AlienStream to work at all.
>
> No problem. Sorry that it's a bit rough around the edges.
>
> > I kind of think I've come along and done the fame-and-glory bit on the
BBC
> > side, which is really just a bunch of HTML parsing, and the like.
> >
> > I'll have a go at integrating your changes - thank you very much.
> >
> > If I can offer a patch in return, though - AlienStream has a problem
where
> > it won't correctly kill off the alienstream exe if it was launched via a
> > subshell (which perl will do if it sees any shell metacharacters in the
> > stream description - a distressingly common occurrance, as far as I can
> > see).
> >
> > If you replace the following line (line 176, I think)
> >
> > $player_pid{$client} = $message_reader{$client}->open("$alienstream
> > $stream 2>&1 |");
> >
> > With the following:
> >
> > print STDERR "AlienStream: error launching $alienstream\n" unless
> > defined($player_pid{$client} = $message_reader{$client}->open("-|"));
> >
> > unless($player_pid{$client})
> > {
> > print STDERR "Going to call exec with: $alienstream, $stream\n";
> > exec($alienstream, $stream);
> > }
> >
> > I believe all will be well... that works around to force the open to be
> > backed with exec using explicit parameters, which means a subshell will
> > never be invoked.
>
> Good catch. Stick in this line:
>
> open STDERR, ">&STDOUT" or die "Can't dup STDOUT: $!";
>
> just before the call to exec, and you'll still get the buffering
> status messages displayed to the client, rather than to the server
> stderr.
>
> I've just updated the alienstream plugin with these changes, and one
> or two more. You might want to check
>
http://www.dur.ac.uk/p.j.heslin/amusements/alienstream/version3/AlienStream3.pm
>
> to make sure you have merged all of the changes into AlienBBC.
>
> Peter
>
>