Back to Home / #mythtv / 2003 / 03 / Prev Day | Next Day
#mythtv IRC Logs for 2003-03-01

00:02-!-Timon [] has quit ["My damn controlling terminal disappeared!"]
00:07-!-Timon [] has joined #mythtv
00:10-!-PeteCool [] has quit ["Client Exiting"]
00:36-!-Timon [] has quit [Read error: 104 (Connection reset by peer)]
00:41<schwin97>time to sleep
01:00-!-rkulagow [~Robert@] has joined #mythtv
02:35-!-FredFunk [] has joined #mythtv
02:37-!-Soopaman_Hussien [] has joined #mythtv
02:55-!-rkulagow [] has quit [Read error: 110 (Connection timed out)]
04:44-!-FredFunk [] has quit [Read error: 60 (Operation timed out)]
04:55-!-FredFunk [] has joined #mythtv
05:18-!-choenig [] has joined #mythtv
05:40-!-Soopaman_Hussien [] has quit [Read error: 60 (Operation timed out)]
06:36<thor>Chutt: you up
08:55-!-Bog [] has joined #mythtv
08:57<Chutt>thor, i'm awake now
09:03-!-FredFunk [] has quit [Read error: 60 (Operation timed out)]
09:42<choenig>and, Chutt, how is it about the scheduler stuff?
09:43<choenig>I will make the thing ip aware early next week, i think
11:14-!-Bog [] has quit [Read error: 110 (Connection timed out)]
11:43-!-FredFunk [] has joined #mythtv
11:44<schwin97>had a segfault when I tried to skip a commercial at the end of a recording
11:44<schwin97>is this being looked at or fixed already?
11:44<Chutt>get a backtrace
11:44<schwin97>will do...
11:44<Chutt>send it to the list, or if you know what you're doing, fix it and send a patch to the list
11:49<schwin97>sent the backtrace... Now will see if I can figure out what is going on
11:52<schwin97>is there a way to find out where the end of a recording is?
11:57<schwin97>and I'm guessing that is through totalFrames in NuppelVideoPlayer
11:59<Chutt>but that only works for files, there's another method for live tv stuff
12:00<schwin97>this happened with a recording so that is where I am looking first
12:02<schwin97>what is a method to print something on the osd... I see that you can do it with startpause, but that looks like you then need to unpause
12:03<Chutt>no, you don't
12:21-!-Edgan [] has quit ["Client Exiting"]
12:40-!-rkulagow [~Robert@] has joined #mythtv
12:43<rkulagow>chutt, are you here?
12:59<rkulagow>sorry - on the other line with moegreen. have you considered setting the default resolution to 640x480 in setup? i set X for 640x480, but since the default is 800x600, i can't even see the "setup" option in mythfrontend to try to change the appearance, and even if i knew the settings, i'm making a lot of the blindly since practically everything is offscreen at the time.
12:59<Chutt>good call
12:59<Chutt>i'll change that
13:01<rkulagow>thanks. i was going to start on a fancy routine that determined the X parameters for height and width and automatically adjust, but that's hard, and setting the default to 640x480 is easy.
13:01<Chutt>i could just set the default to fullscreen
13:02<rkulagow>and that would be irrespective of the X width and height?
13:02<Chutt>it'd set it to whatever x was set to
13:20<mdz>Chutt: do you buy this LIRC/system clock stuff?
13:20<Chutt>i have no idea what it is
13:21<rkulagow_>i have no idea if it's system clock related, but i do know that i still have focus problems when irxevent sends an ESC (CurrentWindow seems to have the wrong focus)
13:22<rkulagow_>(this is on KDE 3.1, Click To Focus is set)
13:22-!-Timon [] has joined #mythtv
13:29-!-chuckf [] has joined #mythtv
13:44<FredFunk>rkulagow_ I've got the same problem
13:45<FredFunk>rkulagow_ strnage thing is the keyboard has the right focus (i can use the arrow keys still) but I need to use Alt-Tab to get irxevent's focus back
13:46<mdz>it's probably just a bug in irxevent that makes it not work sometimes
13:48<Chutt>lotsa people having problems with the neuros
13:51<Chutt>mdz, i added support for a recording profile that's the same name as the machine name for a quick hack in my last commit
13:51<Chutt>it'll just use that profile in preference to default/live-tv if it exists
13:52<Chutt>i need to decide if the slave backends should initiate connections with the master, or the other way 'round
13:55<mdz>Chutt: I had been thinking about creating a per-host setting containing the name of the profile to use for recordings, and one for live tv
13:55<Chutt>i just did this as an extremely quick hack
13:55<mdz>but I really have no use for it, so I haven't done anything about it
13:56<mdz>yeah, I know
14:08<Timon>Chutt, thanks for you help last night. I'm gaining a better grasp on pointers.
14:27-!-rkulagow [] has quit [Read error: 110 (Connection timed out)]
14:49<Chutt>can someone either help the "Systems Analyst" that's posting to mythtv-dev, or smack him around a bit for posting the same help request over and over and over
14:49<Chutt>i really don't care which =)
14:50<Chutt>he's quite obviously linking against a qt that was compiled against a different version of gcc than what he's using to compile mythtv with
14:51<Timon>I just game him a simple answer. . . Switch to mandrake :-)
14:51<Timon>Actually, I should have said slackware =)
15:12<mdz>he's probably using slackware already; that's why he 's compiling everything
15:13<Timon>he said he was using deb. "Is it because I'm using a libqt3-dev package from debian?"
15:14<mdz>if he were running stable, it would work. If he were running unstable, it would work. he's obviously mixing things up and doesn't know how to handle it
15:16-!-Timon_ [] has joined #mythtv
15:16-!-Timon [] has quit [Read error: 104 (Connection reset by peer)]
15:16-!-Timon_ is now known as Timon
15:46-!-paperclip [] has quit ["grits.. they aren't just for breakfast anymore"]
15:47-!-danc_ [~danc``] has joined #mythtv
16:13-!-danc_ [] has quit [Read error: 104 (Connection reset by peer)]
17:11-!-rkulagow [~Robert@] has joined #mythtv
17:11-!-chuckf [] has quit [Read error: 104 (Connection reset by peer)]
17:13<rkulagow>moegreen: i'm back, if you want to do anything.
17:14<rkulagow>ah, wait, nevermind. duty (baby) calls.
17:57<mdz>Chutt: is there any reason why bookmarking is disabled while watching a recording in progress other than that it doesn't have a seek table yet?
17:58<Chutt>that's the only reason
17:58<mdz>it would be useful if that worked
17:58<mdz>maybe it could ignore the bookmark on resume if there is no seektable?
17:59<mdz>does it work that way in order to handle old recordings, or potentially interrupted recordings?
17:59<Chutt>both, really
17:59<mdz>I guess it would have to print a warning or something if it allowed the user to do it
18:00<mdz>which isn't too nice
18:00-!-Edgan [] has joined #mythtv
18:00<mdz>I've started seeing some choppiness when simultaneously recording and playing back, even though I have plenty of CPU available
18:00<Chutt>any reason why ScheduledRecording::signalChange is protected?
18:00<mdz>wondering if it's related to enabling the jitter stuff
18:01<mdz>but I can't save my place and change it to test, because I'm watching a recording in progress. which is why I asked :-)
18:01<mdz>I think I only meant for it to be called by member there some reason to do differently?
18:01<Chutt>i want to call it from the server code
18:01<Chutt>so i just removed the protected
18:02<mdz>won't break anything of course
18:02<mdz>I was just trying to keep all of the code that worked with the scheduling data in one place
18:02<mdz>when I went to change it in the first place, it was hard to follow because it was spread out
18:15<Chutt>trying to make sure that the backend<->backend communication doesn't have that same bug in it
18:16-!-rkulagow [] has quit [Read error: 110 (Connection timed out)]
18:46<mdz>CPU is 42% idle, network is ~80% idle...something must be blocking somewhere
18:46<Chutt>try turning off the aggessive audio buffering if that's on
18:47<mdz>I should map the jump key to something
18:47<mdz>takes a long time to skip an hour into a recording using 30 second skips
18:47<mdz>I turned the aggressive audio buffering back on; it didn't work for me anyway
18:47<mdz>er, back off
18:48<mdz>heh, I have 3 of every setting in the settitgs table now
18:48<mdz>since I ran the frontend on my desktop
18:49<mdz>when it's playing an in-progress recording, does it go over the network or from the file?
18:49<mdz>(assuming the file is local)
18:49<Chutt>from the file
18:49<Chutt>maybe not
18:49<Chutt>i think it's from the file, though
18:49<mdz>with the jitter stuff on, if anything, I'd think that the backend would be losing the cycles since it busywaits sometimes
18:50<mdz>but with almost half the CPU idle, I wouldn't think it would even matter
18:50<Chutt>it goes by the file, but gets some data from the network
18:51<mdz>same thing happened when I was watching an earlier recording while it was recording something else anyway
18:53<mdz>shows network utilization for mythtv
18:53<mdz>using NFS
18:53<mdz>with a 3000kbs bitrate
18:55<mdz>all of the reads are done in the decoder thread, right?
18:56<mdz>maybe a buffer would help
18:56<mdz>and a reader thread
18:56<Chutt>yeah, it doesn't buffer raw disk reads
18:56<Chutt>qt buffers socket reads internally, though
19:02<mdz>maybe ringbuffer should just use a stdio stream or an fstream
19:02<mdz>rather than raw read()s
19:02<mdz>that might smooth things out
19:05<mdz>I think that buffers on input, not sure though
19:08<mdz>only up to 1k it seems
19:08<mdz>it should be reading bigger chunks than that anyway
19:08<Chutt>most of the time, yeah
19:10<Chutt>one little change to programinfo.h
19:10<Chutt>and the entire beast has to get recompiled
19:14<mdz>gcc 3.3 is coming to unstable soon
19:14<mdz>maybe it will have support for precompiled headers^H
19:14<Chutt>that's pretty funny
19:15<mdz>if I wanted to experiment with adding some buffering on that side, do you think it would make more sense to make the ringbuffer buffer reads, or to have the player buffer frames?
19:16<Chutt>ringbuffer buffer reads
19:16<mdz>it would be easier to move it into a separate thread in the player
19:17<Chutt>the player's frames are shared mem
19:17<Chutt>going to run out of them
19:17<mdz>I mean compressed frames
19:17<mdz>separate from the existing buffer
19:17<Chutt>i think it'd be easier to have the ringbuffer buffer data
19:17<mdz>have one thread filling a buffer with compressed frames, then the main thread just taking each in turn and passing it to the decoder
19:18<mdz>the ringbuffer wouldn't know how far to buffer ahead
19:18<mdz>I guess a couple of megs would be ok in any case though
19:19<mdz>there's no seeking unless the user requests it, right?
19:19<mdz>it won't seek to skip over data it doesn't want or such?
19:19<mdz>it'd be easiest to ditch the buffer on a seek
19:19<Chutt>it'll seek to skip data, it'll seek to skip commercials
19:19<Chutt>it'll seek for a couple other reasons, too
19:19<Chutt>bad data in the stream, etc
19:19<mdz>if that only happens when it'll be seeking far, that's ok
19:24-!-Edgan [] has quit ["Client Exiting"]
19:25-!-Edgan [] has joined #mythtv
19:27<Chutt>i hope people don't mind i've been committing broken code all day
19:28<Chutt>not that any of it should be getting called, but...
19:30-!-Edgan [] has quit ["Client Exiting"]
19:34<mdz>if they mind, they should be reading -commits
19:34<mdz>where I believe you said something like "this is probably all broken"
19:35<Chutt>i did =)
19:37<moegreen>that's like expecting someone to read a file called README :)
19:38<Chutt>i'm going to go through and cull out unnecessary includes
19:38<mdz>which reminds me, I shouldn't cvs up before testing this stuff
19:38<Chutt>live-tv and playback of recordings works for me
19:39<Chutt>can i supress those warnings in settings.cpp?
19:40<mdz>yeah, looks like it'll be a while before I get around to actually using those classes
19:40<mdz>those methods anyway
19:40<mdz>they're for the recording editor
19:42<moegreen>Chutt: I'll take out the unneeded includes from progfind
19:44<mdz>I'm eyeing this usleep(2000) in nuppelvideoplayer suspiciously
19:44<Chutt>moegreen, i'm going through all of them
19:44<Chutt>no worries
19:44<Chutt>progfind.h is 2 files away
19:45<mdz>when stracing the playback thread, once it gets spooled up, when it goes to sleep to let the buffer drain, it sometimes has to sleep twice
19:45<mdz>two 2ms sleeps in a row
19:46<mdz>I wonder if a semaphore would be better
19:46<mdz>should be only one context switch I'd think
19:47<mdz>there are too many places it could be getting hung up; I need to figure out how to programmatically detect that this is happening so I can see what's going on
19:47<mdz>or catch it in the act somehow
20:00<mdz>if nothing else, buffered reads in ringbuffer would get rid of those 12-byte reads to get the headers
20:03<mdz>out of 44441 reads during my sample period, 22927 were only 12 bytes
20:03<mdz>that seems like significant system call overhead
20:04<Chutt>could just make all of the larger reads be size + 12
20:04<Chutt>and store that in a buffer
20:05<Chutt>return the 12 bytes if the next read is a frame header
20:05<Chutt>or tack it on to the beginning if it's not
20:05<Chutt>that's kinda how the streaming stuff works
20:08<mdz>what streaming stuff?
20:09<Chutt>the remote frontend stuff
20:09<mdz>joshua bernstein has hosed his system
20:09<Chutt>the minimum blocksize it requests is 128k
20:09<mdz>oh, the remotefile stuff?
20:09<Chutt>so like 3 or 4 frames
20:10<Chutt>qt internally buffers it all
20:11<mdz>does the backend keep sending until the frontend tells it to stop?
20:11<mdz>or does the frontend do explicit reads?
20:11<mdz>I haven't looked at that code at all
20:17<Chutt>it does explicit reads, but in 128k chunks
20:17-!-paperclip [] has joined #mythtv
20:17<Chutt>i should be more aggressive about triggering the next read
20:18<Chutt>but it's only right now when it doesn't have enough data in the buffer
20:18<Chutt>should be when it's less then 128/4 or whatnot
20:19<mdz>hmm, I just discovered setvbuf
20:19<mdz>how handy
20:21<mdz>it does exactly what I want with no extra work
20:21<Chutt>except changing to use file streams
20:21<mdz>I'm glad I found this before I implemented my own buffered i/o setup
20:21<mdz>yeah, already did that
20:21<mdz>only catch is I'm not sure if I have the LFS stuff right
20:21<Chutt>make sure you don't mess up the 64-bit stuff
20:21<Chutt>hah =)
20:21<Chutt>anyway, i'll bbl
20:21<mdz>we are using -D_FILE_OFFSET_BITS=64 now, right?
20:22<mdz>I think that makes fseek() act like fseek64()
20:22<mdz>easy enough to test
20:22-!-Edgan [] has joined #mythtv
20:44-!-choenig [] has quit [Remote closed the connection]
21:26<Chutt>i fixed that bug with the frontend going away in the middle of watching livetv
21:28<mdz>I doubt that will make him go away
21:29<mdz>next he'll say that the frontend crashes if he kill -9s the backend
21:30<Chutt>which it probably does
21:30<Chutt>but the backend recovers gracefully if you kill -9 the frontend =)
21:30<Chutt>of cousre
21:30<Chutt>you lose _all_ those shm segments if you kill the frontend
21:31<Chutt>so it's not too smart to do that
21:33<mdz>I did not realize until now that fseek took a long, and not an off_t
21:33<mdz>so they had to make fseeko and ftello
21:34<mdz>I broke seeking somehow
21:34<mdz>even after fixing that
21:34<Chutt>do you ever need to flush those buffers?
21:35<mdz>something tries to read 539609505
21:35<Chutt>yeah, you're getting off the boundaries
21:35<mdz>yep, sounds like it's reading a garbage header
21:35<mdz>I'm calling fseeko64 explicitly though
21:35<Chutt>well, what if it's not flushing those buffers of yours
21:35<Chutt>when you seek
21:36<Chutt>that'd make the first data read after a seek garbage, basically
21:36<mdz>all I'm doing is pointing stdio to a big buffer and telling it to use it instead of its internal buffer
21:36<mdz>so it should handle all that stuff the same way
21:36<Chutt>i dunno
21:36<mdz>it also does it if I remove the setvbuf stuff
21:36<mdz>looking at strace, it seems to be calling llseek
21:36<mdz>is that the 64-bit one?
21:37<Chutt>believe so
21:37<Chutt>lseek64 is
21:37<Chutt>but, looks like the llseek syscall is the proper one
21:37<mdz>5444 _llseek(11, 13250548, [13250548], SEEK_SET) = 0
21:37<Chutt>takes two unsigned longs as an offset
21:38<mdz>the fact that both of those values are the same is suspicious
21:38<mdz>13250548 doesn't sound like the offset of the seektable
21:38<mdz>maybe the top 32 bits
21:39<mdz>can you strace something real quick and see if it's the same syscall for you?
21:43<mdz>good news is, playback seems to be smooth while I'm recording
21:43<mdz>I hope it's as easy as this
21:43<mdz>still doing it
21:44<mdz>can't hurt to do fewer reads though, assuming I can fix the seeking
21:46<Chutt>ah well
21:46<Chutt>gotta spend time with ye olde wife =)
21:47<mdz>I'm about to go out myself
21:50<mdz>I think a 1M buffer was too big, it would block too long reading
21:50<mdz>but a 100k buffer seems to work nicely
21:53<mdz>better anyway
21:53<mdz>seems to only get hung up every minute or two
21:53<mdz>instead of several times per minute
21:54<mdz>I assume that the reads from the buffer are returning quickly, and then once in a while it has to read new data in and that one is slow
21:54<mdz>there's probably a sweet spot
21:54<mdz>but it's going to relate to the bandwidth of the stream
21:54<mdz>so I think it really needs a reader thread
22:07<rkulagow_>moegreen, are you here?
22:33-!-justin [] has joined #mythtv
23:08-!-Edgan [] has quit ["Client Exiting"]
23:10-!-rkulagow [~Robert@] has joined #mythtv
23:32<-- rkulagow(~Robert@ has left #mythtv
23:45-!-rkulagow [~Robert@] has joined #mythtv
23:47-!-Edgan [] has joined #mythtv
23:56<Timon>woohoo. . . I now understand pointers!
23:59<bigguy>you go, boy