Hi Alexandru,
2012/4/24 Alexandru Matei <[email protected]>:
> I still get empty source ids if I use the code below.
In fact, what happens is that your transition is not called at all,
right? At least that's what I observed in my tests: I had forgotten
that transitions are not used for track sensitive switches. Indeed,
they don't make sense in that case, the track from source a is already
finished.
Therefore I will propose a simpler solution, which has the
disadvantage of requiring more coding skills. So I'll provide you with
the code (copying verbatim the script that worked for me, and should
be easy to adapt). The idea is to keep in a reference (memory cell)
the id of the previous source, update it using on_track, and reload
when it changes.
small1 = playlist(id="small1","~/media/audio/jazz")
small2 = playlist(id="small2","~/media/audio/misc")
def reload_transition(a,b)
log("a is #{source.id(a)}, b is #{source.id(b)}")
b
end
playlists = switch([({0m-44m},small1),
({36m-50m},small2)])
def reload_on_change(s)
last_seen = ref("")
def handler(m)
id = m["source"]
old_id = !last_seen
if old_id != id then
last_seen := id
if old_id != "" then
log("Reloading #{old_id}...")
list.iter(log,server.execute("#{old_id}.reload"))
end
end
end
on_track(handler,s)
end
playlists = reload_on_change(playlists)
output.icecast(%vorbis,mount="test.ogg",fallible=true,playlists)
> Anyway, I followed your advice and managed to make the transition function.
> I would have never tried to make a function with three parameters for a
> transition because in the doc I read:
> transitions ([(source('a),source('a))->source('a)] – defaults to []):
> Transition functions, padded with fun (x,y) -> y functions.
> I think the documentation needs to be improved.
Well, we may document more the language and type system, but there's
nothing we can do about (source('a),source('a))->source('a):
transitions have to take only two arguments and return a source. The
fact that you can create a function with two arguments from one with
three arguments doesn't change this. To make an analogy, type int
contains 0, 1, 2, etc. but also 1+1...
Cheers,
David
PS:
> This was my mistake. To be sure that nothing bad happens because one source
> is mono and another one stereo I added audio_to_stereo to all my playlists.
> small_playlist = audio_to_stereo(id="small_stereo",
> playlist("..../small.txt")) -> Wrong.
Sounds like a good fix. Why did you write "Wrong"?
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users