From: Matthias K. <Mat...@ur...> - 2007-05-18 14:40:25
|
Hi, assuming that xine_t is a global xine engine object where at most one shoul= d=20 exist it is impossible to use more than one stream at the same time. Simple test: create xine_t create two xine_stream_t let both start playback pause one of them =3D> both will pause I identified two problems so far why this doesn't work: 1. xine_t keeps the clock, not the stream. So you you set the speed to paus= ed=20 the one and only global clock will be set to paused =3D> for all streams in= the=20 app 2. xine_t keeps the port_ticket which apparently blocks all streams too, wh= en=20 the speed is set to paused. I have a working patch for moving the clock to xine_stream_s (except for th= e=20 dxr3 subdir). I started to move the port_ticket to the stream as well, but got stuck at t= he=20 post plugins. So my questions: =2D Should the above problem be fixed or should xine simply not support mul= tiple=20 independent streams? =2D How to fix it? Did I take the right direction in moving the clock and t= icket=20 to the stream? =2D Who has more experience with this stuff and can help me there? PS: If you want to see the patch let me know. But I think it's rather=20 boring... :) =2D-=20 ________________________________________________________ Matthias Kretz (Germany) <>< http://Vir.homelinux.org/ Mat...@gm..., kr...@kd..., Mat...@ur... |
From: Maximilian S. <max...@bu...> - 2007-05-19 09:24:03
|
Matthias Kretz schrieb: > Hi, > > assuming that xine_t is a global xine engine object where at most one should > exist it is impossible to use more than one stream at the same time. > > Simple test: > create xine_t > create two xine_stream_t > let both start playback > pause one of them > => both will pause > > I identified two problems so far why this doesn't work: > 1. xine_t keeps the clock, not the stream. So you you set the speed to paused > the one and only global clock will be set to paused => for all streams in the > app > 2. xine_t keeps the port_ticket which apparently blocks all streams too, when > the speed is set to paused. > > I have a working patch for moving the clock to xine_stream_s (except for the > dxr3 subdir). > I started to move the port_ticket to the stream as well, but got stuck at the > post plugins. > > So my questions: > - Should the above problem be fixed or should xine simply not support multiple > independent streams? > - How to fix it? Did I take the right direction in moving the clock and ticket > to the stream? > - Who has more experience with this stuff and can help me there? > > PS: If you want to see the patch let me know. But I think it's rather > boring... :) This is something that I would be interested as well. Specifically I need this behaviour in oxine to change the background image of an audio-only stream without first stopping playback. At the moment calling xine_play on the new background stream will cause the possibly paused main stream to start playing again. So to the questions. Yes it would be a good idea to support multiple independent streams. Cheers, Maximilian -- Bamberger Str. 8 | 10777 Berlin | (0 30) 217 77 07 | msc...@bu... |
From: Thibaut M. <thi...@gm...> - 2007-05-22 14:38:06
|
Hi, On 5/18/07, Matthias Kretz <Mat...@ur...> wrote: > Hi, > > assuming that xine_t is a global xine engine object where at most one should > exist it is impossible to use more than one stream at the same time. > > Simple test: > create xine_t > create two xine_stream_t > let both start playback > pause one of them > => both will pause > > I identified two problems so far why this doesn't work: > 1. xine_t keeps the clock, not the stream. So you you set the speed to paused > the one and only global clock will be set to paused => for all streams in the > app > > 2. xine_t keeps the port_ticket which apparently blocks all streams too, when > the speed is set to paused. > > I have a working patch for moving the clock to xine_stream_s (except for the > dxr3 subdir). (dxr3 does ugly stuff...) Sometimes it's interesting to attach 2 streams to the same clock, i think about subtitle files for example, this feature should not be removed. The xine_stream_master_slave function could attach the slave stream to the master clock. > I started to move the port_ticket to the stream as well, but got stuck at the > post plugins. > > So my questions: > - Should the above problem be fixed or should xine simply not support multiple > independent streams? This new feature would be cool ;-) > - How to fix it? Did I take the right direction in moving the clock and ticket > to the stream? I believe it's the right direction, but you should keep the ability to attach at least 2 streams to the same clock. > - Who has more experience with this stuff and can help me there? Michael, Miguel, busy people... > PS: If you want to see the patch let me know. But I think it's rather > boring... :) I want to see, put it somewhere. Do you have some frontend code to test the patch ? cheers, Thibaut |
From: Matthias K. <Mat...@ur...> - 2007-05-22 16:09:18
|
On Tuesday 22 May 2007, Thibaut Mattern wrote: > (dxr3 does ugly stuff...) Yeah. :( > Sometimes it's interesting to attach 2 streams to the same clock, i > think about subtitle files for example, this feature should not be > removed. > The xine_stream_master_slave function could attach the slave stream to > the master clock. Right. A master-slave stream combination needs to use the same clock. What= =20 about the port_ticket? The ports of the streams are still independent, but = I=20 have no idea what the ticket _really_ does. > > - How to fix it? Did I take the right direction in moving the clock and > > ticket to the stream? > > I believe it's the right direction, but you should keep the ability to > attach at least 2 streams to the same clock. > > > - Who has more experience with this stuff and can help me there? > > Michael, Miguel, busy people... > > > PS: If you want to see the patch let me know. But I think it's rather > > boring... :) > > I want to see, put it somewhere. Consider it proof of concept quality:=20 http://vir.homelinux.org/clock_ticket_per_stream.diff > Do you have some frontend code to test the patch ? Yes. Are you prepared to compile latest kdelibs and kdemultimedia/phonon-xi= ne?=20 I have a test program where you can instanciate as many streams and outputs= =20 as you want and connect them arbitrarily. Here's an old screenshot of the=20 test-program: http://vir.homelinux.org/blog/uploads/Phonon/sftp-phonon.png =2D-=20 ________________________________________________________ Matthias Kretz (Germany) <>< http://Vir.homelinux.org/ Mat...@gm..., kr...@kd..., Mat...@ur... |
From: Matthias K. <Mat...@ur...> - 2007-05-31 14:24:02
Attachments:
independent_streams.patch
|
Hi, attached you'll find a patch that moves clock and port_ticket from xine_s to xine_stream_s in order to allow independent streams. The patch works for me so far but there might be problems: - many structs hold a list of streams, where the code that I ported then only works with the clock/ticket of the first stream of the list. As I don't understand what a list of streams is used for I didn't touch it. - post plugins only touch the ticket now when they're opened. I have no idea whether that might introduce problems - I disabled dxr3 from compilation - the change is source incompatible (and therefore of course binary incompatible) -- ________________________________________________________ Matthias Kretz (Germany) <>< http://Vir.homelinux.org/ Mat...@gm..., kr...@kd..., Mat...@ur... |
From: Darren S. <li...@yo...> - 2007-05-31 15:40:06
|
I demand that Matthias Kretz may or may not have written... [snip] > The patch works for me so far but there might be problems: [snip] > - I disabled dxr3 from compilation NACK. (I don't use dxr3, but neither do I want it apparently arbitrarily disabled.) > - the change is source incompatible (and therefore of course binary > incompatible) That automatically makes it 1.2 material. If you can rebase against xine-lib-1.2 and, ideally, break it up into a series of smaller patches, each individually documented, that'd help... -- | Darren Salt | linux or ds at | nr. Ashington, | Toon | RISC OS, Linux | youmustbejoking,demon,co,uk | Northumberland | Army | + Use more efficient products. Use less. BE MORE ENERGY EFFICIENT. I am Moderator of Borg. Resistance is futile. You will obey. |
From: Matthias K. <Mat...@ur...> - 2007-05-31 16:17:54
|
On Thursday 31 May 2007, Darren Salt wrote: > I demand that Matthias Kretz may or may not have written... > > - I disabled dxr3 from compilation > > NACK. (I don't use dxr3, but neither do I want it apparently arbitrarily > disabled.) It's not that arbitrary. The dxr3 code accesses the clock at some places th= at=20 I have not been able to port. So in order to test the concept I had to=20 disable dxr3. I need help with porting it. If nobody can help me there then= =20 please say so and I'll abandon this patch > > - the change is source incompatible (and therefore of course binary > > incompatible) > > That automatically makes it 1.2 material. If you can rebase against > xine-lib-1.2 and, ideally, break it up into a series of smaller patches, > each individually documented, that'd help... OK, working on it now. =2D-=20 ________________________________________________________ Matthias Kretz (Germany) <>< http://Vir.homelinux.org/ Mat...@gm..., kr...@kd..., Mat...@ur... |