Back to Home / #mythtv / 2003 / 05 / Prev Day | Next Day
#mythtv IRC Logs for 2003-05-16

10:51--> Youare now talking on #mythtv
10:51-!-Topic for #mythtv is
10:51-!-Topic for #mythtv set by Viddy at Sun Mar 9 06:04:45
10:56<rkulagow_>as long as we're talking about modifying the database, than in INUSE flag would be useful (with an expiration timer / some sort of "still in use?" check) so that deleting a file one one frontend doesn't remove the file while it's still being watched on another frontend.
10:59<mdz>has that caused a problem somewhere?
10:59<mdz>it doesn't seem like it should
11:00<rkulagow_>happened to me; i had one frontend paused while watching the program on another one. wife hit "delete" on the one in the livingroom; when i unpaused the bedroom it immediately went to the "you're done watching" popup.
11:00<rkulagow_>maybe it's been fixed; this happened about 2 weeks ago or so.
11:01<mdz>it's not truncating the file before it deletes it or something, is it?
11:01<Chutt>shouldn't be
11:02<Chutt>just does a normal unlink()
11:08<Captain_Murdoch_>the MARK_PROCESSING wouldn't be a database mode, just a new value in a field like MARK_COMM_START, MARK_COMM_END, etc.
11:09<Captain_Murdoch_>rkulagow_: was that using shared nfs storage or everything streaming through the backend?
11:09<rkulagow_>shared NFS
11:10<rkulagow_>wait, i take it back. don't remember specifically
11:10<rkulagow_>i've been modding stuff around the house, so my memory is stale.
11:10<mdz>dunno whether NFS entirely honors normal unix unlinking semantics
11:10<Captain_Murdoch_>could be nfs locking related maybe. maybe the nfs server deleted the file anyway even though the frontend had it open playing
11:48<rkulagow_>ok, the following snippet in mainserver.cpp ~ line 540 seems to work ok; if masterbackendoverride =0 and the slave exists, the slave serves the file. MBO is 0 and the slave doesn't exist, the master serves the file. if MBO = 1, the master serves the file whether the slave is there or not. (this is for a shared NFS environment)
11:48<rkulagow_> bool MasterBackendOverride = gContext->GetSetting("MasterBackendOverride",0);
11:48<rkulagow_> if (proginfo->hostname != gContext->GetHostName())
11:48<rkulagow_> {
11:48<rkulagow_> slave = getSlaveByHostname(proginfo->hostname);
11:48<rkulagow_> }
11:48<rkulagow_> if (
11:48<rkulagow_> (proginfo->hostname == gContext->GetHostName() ) ||
11:48<rkulagow_> (!slave && checkFile.exists() )
11:48<rkulagow_> )
11:48<rkulagow_> {
11:48<rkulagow_> if (pbs->isLocal())
11:48<rkulagow_> proginfo->pathname = lpath;
11:48<rkulagow_>anyone see problems with this?
11:48<rkulagow_>i unrolled the if that was there because i was getting too deeply nested with parenthesis - i can change it back.
11:51<rkulagow_>huh. looks like the MAG 17" is actually $49 now at with free shipping. that's insanely cheap, and the monitor doesn't suck too bad.
11:57<Captain_Murdoch_>I wonder if the "if ((MasterBackendOverride)" should be "if ((MasterBackendOverride && checkFile.exists())"
11:58<Captain_Murdoch_>just in case... :)
11:59<rkulagow_>true, in case the user sets it to true but isn't actually doing NFS, correct?
12:00<Captain_Murdoch_>yeah, or the server loses it's nfs connection or maybe there's one slave not doing nfs
12:01<rkulagow_>right, hadn't thought of that.
12:02<Captain_Murdoch_>glad someone else is using/liking the nfs idea. I only have a 2GB drive in my master backend and all other storage (both mp3s and videos) is on my nfs server.
12:02<Captain_Murdoch_>makes for cooler/quieter frontends/backends as well since they can have little or no hard drive space in them.
12:03<rkulagow_>i actually have something different; i've got a PVR250 in a box that doesn't have that much free disk space, so it's mount /var/video and writing ringbuf and files to a central masterbackend / NFS server
12:04<rkulagow_>ok, now i'm going to look at the delete file logic.
12:04<Captain_Murdoch_>it allows me to bring up/down a 2nd slave sometimes on my dev box to give a little extra recording capacity if too many shows come on that I want to record or if I just want to test something.
12:05<rkulagow_>i really like how adaptable Myth is to adding / deleting resources like that. now, if only Rendesvous was supported (just kidding, chutt =)
12:05-!-moegreen [] has quit [Read error: 110 (Connection timed out)]
12:06Captain_MurdochCaptain_Murdoch_ May 16 12:07:03 <mdz> Captain_Murdoch: I've been using a diskless, NFS-root box for my frontend/backend since I first installed it
12:11<Captain_Murdoch_>I was thinking that some people on the list thought I was weird when I mentioned it, that's why I said that. yeah, I like your diskless idea. when I finally break down and rebuild my current living-room frontend/backend I might go that route.
12:11<Captain_Murdoch_>you're using nfsroot or is it on ramdisk?
12:12<rkulagow_>poptix: i think you're looking for a fight! ("join the civilized world") =)
12:13<bigguy>how hard is it to setup a diskless NFS-root box?
12:13* bigguyhas never used nfs
12:13<rkulagow_>bigguy: there's a diskless HOWTO
12:14<rkulagow_>(if is up)
12:14<bigguy>do you have to have anything special hardwarewise?
12:14<rkulagow_>you can make a boot floppy, a cdrom or use just the NIC card if it's the right kind.
12:15<bigguy>yeah I don't have the right kind of nic
12:16<bigguy>hmm I'll have to look into it
12:18<rkulagow_> may have some more information as well.
12:18<Captain_Murdoch_>rkulagow_: what was the slowest frontend you said you have?
12:19<rkulagow_>working? probably a celeron 300A OCd to 450. i don't really use it much since it's also hosting two PVR250
12:19<Captain_Murdoch_>can it decode mpeg2 or 4 at 480x480?
12:19<rkulagow_>i suppose i could put together the P166 and see what happens, but that's probably a little extreme
12:20<rkulagow_>yes, but CPU is maxed out, i can't be using a debug version, and can't be running a backend at the same time.
12:20<rkulagow_>(well, maybe not maxed out, but it can't do much more)
12:20<Captain_Murdoch_>that's mpeg2 or 4? I assume 2 is using more cpu than 4.
12:21<rkulagow_>well, i can check. (it's right next to me. hold on.)
12:23<Captain_Murdoch_>Anyone running Myth with an i810 video card?
12:24<rkulagow_>it's going to take a few minutes since i'm recompiling CVS now, but i'll let you know. looking for a cheap/small frontend?
12:24<Captain_Murdoch_>considering one of these with an external scan converter. It has 2 pci slots also so I could throw in my pvr-250 for recording.
12:25<Captain_Murdoch_>dohhh, wrong url. :)
12:25<rkulagow_>right, i think i saw you pointing to that. is it the size of the case that's most interesting?
12:25<Captain_Murdoch_>could paint it black and it's about the size of my current (unused) vcr.
12:26<Captain_Murdoch_>yeah if it's fast enough. price is decent. could rip out the hard drive even and boot off floppy if I wanted.
12:28<Captain_Murdoch_>right now I have a white mid-tower sitting next to the entertiainment console. the combination of the size and noise from the athlon cooling fan and hard drive are a little too much sometimes. I setup that machine as a proof of concept 6 months ago and never got around to putting another into place. I bought it to upgrade my wife's computer but never got around to it. :)
12:29-!-choenig [] has joined #mythtv
12:29<rkulagow_>i'm really looking at that pundit box that was mentioned on the list. newegg just dropped the price from $180 to $179.99 (so that the pricegrabbing robots find them first, i guess)
12:30<bigguy>where did you see that $49 monitor on bestbuys site?
12:31<rkulagow_>(saw it on
12:31<rkulagow_>$119+tax - $70, free shipping
12:32<bigguy>I don't see $119
12:32<bigguy>I see 179
12:32<rkulagow_>OT: someone else who remembers sep 93: On September 1993 plus 3544 days Per √ėyvind Karlsen wrote
12:32<rkulagow_>click "buy it" and it'll show $119
12:32<bigguy>ah I see
12:33<bigguy>I wonder if it's limit one for the $70 rebate
12:33<rkulagow_>they usually are. get a neighbor to help.
12:33<bigguy>probably got those lame no po box terms too
12:34<bigguy>they won't deliver mail here everyone has to have a po box
12:34<shad>bigguy: Get it delivered to your work
12:36<bigguy>shad: I'm unemployeed
12:36<bigguy>and my mom's employers use a po box also ;
12:57<rkulagow_>captain_murdoch: Celeron 450 can't do 640x480 MPEG2 @ 8Mbps/16Mbps.
12:58<rkulagow_>it gets stutters; it's watchable, but i don't think you'd be happy. let me check other combos. (this is from a pre-recorded file)
13:01<rkulagow_>640x480 MPEG4 @ 3300Kbps seems ok, so 480x480 shouldn't be a problem.
13:03<rkulagow_>uses 85% CPU
13:05<rkulagow_>the MPEG2 @ 640x480 is using 98% CPU, 2% system. i'm sure that at time intervals < top update time it's actually CPU bound, so i'd say there's a limit.
13:05<rkulagow_>i'll see if i can find a 480x480 MPEG2 file for you.
13:05<Chutt>the higher bitrate means more work for it to do copying data around
13:05<Chutt>i don't think it's resolution
13:07<Captain_Murdoch_>rkulagow_: thanks. I think I'm going to try one of those boxes. If it's too slow to playback, it will still be fast enough for a 2-card pvr-250 backend. :)
13:08<rkulagow_>ok, no prob.
13:11-!-justin [] has quit ["Client Exiting"]
13:16<rkulagow_>ok, i'm on a con call right now, and the following seems like it would do the correct thing.
13:16<rkulagow_>void MainServer::HandleDeleteRecording(QStringList &slist, PlaybackSock *pbs)
13:16<rkulagow_> ProgramInfo *pginfo = new ProgramInfo();
13:16<rkulagow_> pginfo->FromStringList(slist, 1);
13:16<rkulagow_> bool MasterBackendOverride = gContext->GetSetting("MasterBackendOverride",0);
13:16<rkulagow_> if ( (MasterBackendOverride) ||
13:16<rkulagow_> (ismaster && pginfo->hostname != gContext->GetHostName())
13:16<rkulagow_> )
13:16<rkulagow_> {
13:17<rkulagow_> PlaybackSock *slave = getSlaveByHostname(pginfo->hostname);
13:17<rkulagow_> int num = -1;
13:17<rkulagow_> if (slave)
13:17<rkulagow_> {
13:17<rkulagow_> num = slave->DeleteRecording(pginfo);
13:17<rkulagow_> if (num > 0)
13:17<rkulagow_> (*encoderList)[num]->StopRecording();
13:17<rkulagow_> QStringList outputlist = "0";
13:17<rkulagow_> WriteStringList(pbs->getSocket(), outputlist);
13:17<rkulagow_> delete pginfo;
13:17<rkulagow_> return;
13:17<rkulagow_> }
13:17<rkulagow_> }
13:17<rkulagow_> int recnum = -1;
13:20<rkulagow_>(meaning, i'm multitasking the con call and the code, and i _think_ it should be right)
13:27<Captain_Murdoch_>I may be looking at this wrong, but it would seem like you would _not_ want to execute that if statement if MasterBackedOverride is set. it would seem like you would want to fall through to the bottom of HandleDeleteRecording and just delete the file locally.
13:28<rkulagow_>hrmm. let me look again. (is this virtual "extreme programming")
13:32<rkulagow_>don't i still want to enter the if so that even if i am performing a master override, i still tell the slave to stop recording first?
13:35<Captain_Murdoch_>yeah, guess you have to tell the slave to stop recording, but that means you also told it to delete the recording. maybe in the delete case you should only use masteroverride (and delete locally) if the slave is down since if it's down it can't be recording.
13:35<Captain_Murdoch_>the main goal is to be able to delete recordings when a slave is down right?
13:36<Captain_Murdoch_>no real need to delete all recordings from the master since it's using pretty much zero cpu to delete.
13:40<rkulagow_>yes, that's essentially it. the previous change will allow the masterbackend to serve a file if the slave isn't around, now i need an equiv delete function.
13:45<Captain_Murdoch_>do you even need masterbackendoverride as part of that "if" statement then? cause you always want to see if the slave is alive first to stop recording. then you fall out of the 'if' if the slave is down. but the next if statement in HandleDeleteRecording would print an error message cause the file was recorded on a slave. I think that's where you need to check MasterBackendOverride so you don't print that error message but instead fal
13:45<Captain_Murdoch_>h and delete the file locally.
13:45<Captain_Murdoch_>and check if the file exists before falling through to the delete local section.
13:46<rkulagow_>right, i realize that the fall-through case should take care of it and i've already removed the MBO check from the if.
13:48<Captain_Murdoch_>ok, I'll stop telling you how to code. :) sorry about that... my mind sees code and runs with it...
13:49<rkulagow_>hey, i asked for assistance, so it's not a problem.
13:50<Captain_Murdoch_>not taking it bad. :) sometimes I offer too much advice.
13:54-!-rkulagow_ [] has quit [Excess Flood]
13:54-!-rkulagow_ [] has joined #mythtv
13:54<rkulagow_>any of that get through?
13:55<rkulagow__>guess not. let me try again.
13:56<rkulagow__>void MainServer::HandleDeleteRecording(QStringList &slist, PlaybackSock *pbs)
13:56<rkulagow__> ProgramInfo *pginfo = new ProgramInfo();
13:56<rkulagow__> pginfo->FromStringList(slist, 1);
13:56<rkulagow__> bool MasterBackendOverride = gContext->GetSetting("MasterBackendOverride",0);
13:56<rkulagow__> if ((ismaster && pginfo->hostname != gContext->GetHostName())
13:56<rkulagow__> )
13:56<rkulagow__> {
13:56<rkulagow__> PlaybackSock *slave = getSlaveByHostname(pginfo->hostname);
13:56<rkulagow__> int num = -1;
13:56<rkulagow__> if (slave)
13:56<rkulagow__> {
13:56<rkulagow__> num = slave->DeleteRecording(pginfo);
13:56<rkulagow__> if (num > 0)
13:56<rkulagow__> (*encoderList)[num]->StopRecording();
13:56<rkulagow__> QStringList outputlist = "0";
13:56<rkulagow__> WriteStringList(pbs->getSocket(), outputlist);
13:56<rkulagow__> delete pginfo;
13:56<rkulagow__> return;
13:57<rkulagow__> }
13:57<rkulagow__> }
13:57<rkulagow__> int recnum = -1;
13:57<rkulagow__> QMap<int, EncoderLink *>::Iterator iter = encoderList->begin();
13:57<rkulagow__> for (; iter != encoderList->end(); ++iter)
13:57<rkulagow__> {
13:57<rkulagow__>io'm thinking that the MBO may not even be required in this case. i've modified the existing code; the second error check / error print is gone
13:57<rkulagow__>sorry that i'm wasting time with what may be simple programming, but i'm rusty
13:58<-- nyquiljer( has left #mythtv
13:58<rkulagow__>if i'm the master, and the program hostname isn't my hostname, then check to see if we can open a socket to the slave
13:58<rkulagow__>if we can, then tell it to stop recording.
14:01<Captain_Murdoch_>you may want to still keep in a check to see if the file exists before falling to the bottom and removing the db entry, etc..
14:01<Captain_Murdoch_>otherwise, in a non-nfs situation I could take down a slave, and try to delete a file on that slave and it would delete the db entry on the master but not delete the file since the slave is down.
14:28<rkulagow_>ok, so once i fall out of the above, then i believe that this should be ok: (added a few lines for context.)
14:28<rkulagow_> QString fileprefix = gContext->GetFilePrefix();
14:28<rkulagow_> QString filename = pginfo->GetRecordFilename(fileprefix);
14:28<rkulagow_> QFile checkFile(filename);
14:28<rkulagow_> if (!checkFile.exists())
14:29<rkulagow_> {
14:29<rkulagow_> delete pginfo;
14:29<rkulagow_> return;
14:29<rkulagow_> }
14:29<rkulagow_> QSqlQuery query;
14:29<rkulagow_> QString thequery;
14:29<rkulagow_>i'm testing it now. worked fine when slave existed and didn't exist in NFS case; now i'm going to check slave in non-NFS case.
14:34<Captain_Murdoch_>yeah, that looks good I think.
14:34<rkulagow__>that worked too.
14:34<rkulagow__>any other test situations you can think of?
14:34<Captain_Murdoch_>cool. I've been deleting records manually or updating the hostname field when I wanted to delete something recorded on a slave that wasn't active currently.
14:36<Captain_Murdoch_>not for this. so you'll do MainServer::HandleQueryCheckFile() next?
14:36<Captain_Murdoch_>it would be nice if the free disk space didn't add up all the backend's free space in the nfs case but that's another issue.
14:39<Captain_Murdoch_>thought that was a bug one day when my free space doubled then realized it was because I had a slave backend up and it was using the same nfs space as the master.
14:41<rkulagow_>i saw the same thing in mythweb and thought it was because of a minor change i'd made in some other module. i was like, "330 GB? WTF?"
14:41-!-choenig [] has quit [Remote closed the connection]
14:43<rkulagow_>yep: i'll look at HQCF next and see what needs to be done.
14:44<Captain_Murdoch_>looks as easy as HDR
14:45<rkulagow_>sure it is. but you've got to remember that i haven't had my programming thinking cap on in _years_. i'm no chutt.
14:47<rkulagow_>first i have to figure out what's going on, then we'll see how easy it is.
14:49<rkulagow_>looks like the first thing to go will be the second "pginfo->hostname != gContext->GetHostName()" if statement.
14:52<rkulagow_>hrmm. to me, it looks like removing that second if is the only thing that would need to change, isn't it?
14:53<Captain_Murdoch_>yeah and rework the "if (!slave)" part like you did in HQCF
14:55<rkulagow_>you mean HandleDeleteRecording, right? (i'm looking at HQCF now...)
14:58<rkulagow_>ok, i think i see it. it's going to make it a lot simpler, since if we're not the slave we're just going to fall through.
14:58<rkulagow_> if (ismaster && pginfo->hostname != gContext->GetHostName())
14:58<rkulagow_> {
14:58<rkulagow_> PlaybackSock *slave = getSlaveByHostname(pginfo->hostname);
14:58<rkulagow_> if (slave) exists = slave->CheckFile(pginfo);
14:58<rkulagow_> QStringList outputlist = QString::number(exists);
14:58<rkulagow_> WriteStringList(pbs->getSocket(), outputlist);
14:58<rkulagow_> delete pginfo;
14:58<rkulagow_> return;
14:58<rkulagow_> }
14:58<rkulagow_> QUrl qurl(pginfo->pathname);
15:03<rkulagow_>chutt: are you here?
15:06<rkulagow_>captain murdoch: thanks. paraphrasing linus: "it compiles, but that's no guarantee that it's going to work"
15:07-!-PeteCool [] has joined #mythtv
15:08<PeteCool>Chutt: it's a nemeiah you got from via right?
15:09<PeteCool>did you try deconding mpeg-4 on it? If yes, how high of a resolution/bitrate did it go?
15:10<Captain_Murdoch_>rkulagow_: you didn't make it fall through though with the above code. you need to wrap everything from "exists" down to the return 5 lines below inside the "if (slave)" statement
15:16<rkulagow_>captain murdoch: i removed too many lines in my excitement.
15:22<rkulagow_>chutt: do you plan on putting recording profiles back in? the pvr-250 needs to run at 720x480 to get rid of the ghosts, but that's way too high for standard Bt8x8 captures.
16:03--> Youare now talking on #mythtv
16:03-!-Topic for #mythtv is
16:03-!-Topic for #mythtv set by Viddy at Sun Mar 9 06:04:45
16:37-!-Chang [] has quit ["ChatZilla 0.8.26 [Mozilla rv:1.4b/20030507]"]
17:00-!-kiwi_uk [] has quit ["Peace and Protection 4.22"]
17:02-!-Drikus___ [] has quit ["leaving"]
17:05-!-StarHeart [] has joined #mythtv
17:13<poptix>rkulagow_: i see ghosts at 720x480.
17:14<rkulagow_>poptix: really? for me, i see them at every resolution other than 720x480. which firmware are you using?
17:14<rkulagow_>i'm using pvr250_16_21062.exe
17:15<poptix>i don't recall
17:15<poptix>and i'm not near that box atm
17:16* poptixlaughs
17:16<poptix>593 May 16 ramon.roca@xcombo.c ( ) | `->Re: [mythtv] i18n german non-civilized part of the world
17:16<poptix>everyone should be speaking and writing english too
17:16<poptix>so there.
17:21-!-rroca [] has joined #mythtv
17:22<rroca>leandro, are you here?
17:25-!-choenig [] has joined #mythtv
17:28-!-paperclip [] has quit [Read error: 110 (Connection timed out)]
17:58-!-moegreen [] has joined #mythtv
17:58-!-rkulagow_ [] has quit [Read error: 104 (Connection reset by peer)]
17:58-!-rkulagow_ [] has joined #mythtv
18:04<-- Captain_Murdoch_has quit ()
18:04<rkulagow_>that's weird. top is showing that the box with the one PVR250 has mythbackend using 65% CPU. that seems high.
18:05<rkulagow_>but it's a nice'd thread, so i'm guessing it's the commerical stuff
18:15-!-rroca [] has quit [Read error: 110 (Connection timed out)]
18:40<rkulagow_>ObI'mAMoron: do not use a P3/733 frontend as a MPEG2@720x480/16Mbps as a testbed to determine if there's a problem with your backends if the frontend is running DEBUG mode code. it won't work, and will have audio stutters and use 98% CPU. when not running DEBUG code, it's at 70% CPU.
18:41<rkulagow_>ObAdvice: make sure you're troubleshooting the right thing.
18:47-!-gsfgf [] has joined #mythtv
18:54<gsfgf>i can't get sound except via line-in. if i use line-in, though, it gets off sync and won't stop when i pause tv. I just switched over to alsa as i was told that would help
18:54<gsfgf>i do have line-in set to record
18:55<rkulagow_>gsfgf: are you using a graphical mixer, or a command line tool?
18:55<rkulagow_>that didn't answer the question. what's aumix?
18:56<rkulagow_>do this:
18:56<rkulagow_>su -
18:56<rkulagow_>amixer set Line,0 100%,100% unmute captur
18:56<rkulagow_>amixer set Capture,0 100%,100% unmute captur
18:56<gsfgf>amixer: Unable to find simple control 'Capture',0
18:57<gsfgf>line worked, though
18:57<rkulagow_>what card do you have?
18:57<gsfgf>cmpci97 iirc
18:57<rkulagow_>ok, try myth now
18:58<gsfgf>Changing from None to WatchingLiveTV
18:58<gsfgf>strange error flushing buffer ...
18:58<gsfgf>audio volume set to '32768'
18:58<gsfgf>i'm not getting anything but a bue screen
19:02<gsfgf>then i restartred backedn and i get only static and no video signal either
19:02<gsfgf>oh well, simpsons are on and tvtime works. see you at the 1st commercial
19:06<gsfgf>any ideas?
19:13<rkulagow_>is your video card set to the correct input (is it set to Television or SVideo)
19:29-!-choenig [] has quit [Remote closed the connection]
19:31-!-foom [] has joined #mythtv
19:51-!-StarHeart [] has quit ["Client exiting"]
19:51-!-rkulagow_ [] has quit [Read error: 104 (Connection reset by peer)]
20:00-!-mykilx [] has joined #mythtv
20:02-!-hfb [] has quit ["Huh! Wasn't me!"]
20:03<mykilx>has anyone here captured DV? lookin for a capture/editor.
20:04-!-rkulagow__ [] has quit [Read error: 110 (Connection timed out)]
20:21-!-rkulagow [] has joined #mythtv
20:41-!-rkulagow_ [] has joined #mythtv
20:45<rkulagow_>chutt: are you here?
20:46<bline>hmm, I wonder if the alsa patch is going to fix my sound problems
21:06-!-paperclip [] has joined #mythtv
21:12-!-mykilx [] has quit [Killed (NickServ (Ghost: mykilx_!]
21:26<rkulagow>moegreen: are you here?
21:28-!-paperclip [] has quit [Read error: 104 (Connection reset by peer)]
21:31-!-paperclip [] has joined #mythtv
21:59-!-bigguy [] has quit [Read error: 113 (No route to host)]
22:06-!-poptix is now known as TheArchitect
22:41-!-rmj [] has quit [Remote closed the connection]
22:58-!-paperclip [] has quit [Read error: 110 (Connection timed out)]
23:10-!-paperclip [] has joined #mythtv
23:21-!-bigguy [] has joined #mythtv
23:39-!-rkulagow_ [] has quit [Read error: 110 (Connection timed out)]
23:39-!-rkulagow_ [] has joined #mythtv
23:50-!-Chutt [] has quit [Read error: 60 (Operation timed out)]