Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: Any need for gszap?



>> > I've seen the EOF problem also. I got the impression that it is
>> > speed
 related, i.e. if there is heavy load on the machine EOF
>> > occurs more
 frequently. Nevertheless if you pipe the stream to a
>> > file and then
 replay, there are no problems. Maybe the driver
>> > replays values <0
 through /dev/dvb/adapter0/dvr0 (don't know if
>> > this is possible)?

I think iv found reason why these EOFs happen(on my system at least).
Iv been doing some extessive tests with my own program that reads data from
/dev/dvb/adapter0/dvr0 and pipes it to mplayer. Now this is what I think
happens:
When you play with say "cat /dev/dvb/adapter0/dvr0 | mplayer -" and move
mplayers window and hold it there for few seconds, you get EOF, right? Now
why this happens is that cat is being blocked(by mplayer) because cats
write/fwrite() doesnt return.
I ensured this is the case by making a small program to give graphical view
about how much data was returned by read() when reading data from dvr0.
So kernel driver will start doing some buffer but will, after some time,
give up and return -1 to the reads caller - EOF
Im not entirely sure if this has something to do with random EOFs though.

Another thing is that while playing "bad" channels with no stream, cat gets
blocked in kernel land, and causes some nasty issues when you try to shut
down mplayer.

I decided to solve these problems by writing a program that reads data from
dvr0 by using two threads(one reads and one passes this data to stdout).
This way mplayer can stop this "write thread" as long as my programs
internal buffer is not full.
I havent yet seen any EOFs with my program.

You can find my "work around" program at:
http://koti.mbnet.fi/~fre_ax/waround.tar.gz
USAGE: ./waround | mplayer -
NOTES: It uses 10 MB buffer by default.

I also found reason why skystar2.o derefences NULL pointer with debug
level 2:master_xfer function has missing check in the first loop...

FIX:
		if (msgs[i].buf == NULL){
			up(&tmp->i2c_sem);
			return -EINVAL;
		}

I still get:
DVB: registering frontend 0:0 (STV0299/TSA5059/SL1935 based)...
master_xfer: read error ! 0, expected 1
message 0: flags=0x0, addr=0xe, buf=0x7e, len=1
message 1: flags=0x1, addr=0xe, buf=0xa1, len=1

though.

Since I had some nasty issues with gszap(or whatever) when trying to get
mplayershut down, I tried
making mplayer support GUI playlist for DVB. This of course didnt work out
as its currently impossible to transmit data between libmpdemux and mplayers
GUI.
This will probably be fixed in mplayer G2... Im trying to get idea about
having codecs export virtual filesystems for GUI and other UIs trought for
mplayer G2.

Also how do i _not_ receive all these messages from this mailinglist in my
mail box?
Do I need to unsubscribe to do this?
Im on a _very_ slow inet connection here and I have no idea on how to remove
100 messages from my mail box ;-|

--Aapo Tahkola




-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index