Monday, 2015-05-25

*** tpb has joined #timvideos00:00
*** CarlFK has quit IRC00:03
*** techman83|home has joined #timvideos00:54
*** hyades has quit IRC01:07
*** sb0_ has joined #timvideos02:54
*** CarlFK has joined #timvideos04:02
*** ChanServ sets mode: +v CarlFK04:02
*** hyades has joined #timvideos04:02
*** sb0_ has quit IRC04:15
*** sb0_ has joined #timvideos04:23
mithroMaZderMind: btw I'm actually not worried about the stability of the system under "static" conditions06:51
mithroMaZderMind: I did start writing down the things that I'm concerned about06:51
*** sb0_ has quit IRC07:17
*** Niharika has joined #timvideos07:21
*** techman83|home has quit IRC09:20
*** Niharika has quit IRC09:35
mithroMaZderMind: I'm around this evening if you are about and what to chat10:32
*** tija has joined #timvideos12:17
mithrohey tija!12:34
mithroWelcome back12:34
tijamithro: Hi!12:35
tijamithro: I finally got a job in a FPGA based company. They are  trying to accelerate data centers using FPGA.12:36
mithroHow's the job hunting going?12:37
mithroAhh cool!12:37
tpbTitle: rENIAC Inc (at
mithrotija: you should make sure that you get agreement from them to allow you to contribute to FOSS FPGA projects12:37
tijamithro: Do companies have problem with FOSS projects?12:38
mithrotija: they can12:39
tijamithro: Okay. Btw I was trying to add switch to change the resolution. I couldn't get it working yet. Sometimes I feel to chuck HDMI2USB and start everything from scratch.12:42
mithrotija: that is easy to say, but nobody has the time to rewrite everything12:44
mithrotija: I've been looking at misoc/migen stuff a bit12:44
mithrotija: it has everything apart from the mjpeg encoder and the usb interface12:45
mithrotija: why is the switch so hard?12:47
tijamithro: There are some signals whose functioning I don't understand. Is there a relation between DVI and 1024*768 and HDMI and 720p?12:49
mithroWell, DVI and HDMI are the same signal standard?12:50
tijamithro: What I understand is HDMI is DVI with audio. Isn't it?12:51
mithrotija: yeah, but we totally ignore all the audio data12:51
tpbTitle: HDMI2USB/controller.vhd at master · timvideos/HDMI2USB · GitHub (at
tijalook at line 6112:52
mithrotija: hrm?12:53
*** Niharika has joined #timvideos12:54
tijaand then 276 to 29112:54
tijathis is the part which causes the resolution to change using cdc commands12:56
mithroWell line 290 looks wrong12:57
tijaoh yeah12:57
mithrotija: something for you to review ->
tpbTitle: Fix forcing HDMI port 1 to 1024x768 mode. by mithro · Pull Request #125 · timvideos/HDMI2USB · GitHub (at
*** tvCommitBot has joined #timvideos13:00
tvCommitBot[HDMI2USB] mithro opened pull request #125: Fix forcing HDMI port 1 to 1024x768 mode. (master...720p-fix)
*** tvCommitBot has left #timvideos13:00
tijaThis can be merged of course.13:01
mithrowait for travis to confirm it builds :)13:01
tijaso basically what that block of code does is set or unset hdmi_cmd and the does a uvc reset which is basically flushes the image pipeline.13:02
mithrotija: yeah13:03
*** bjoern_ has quit IRC13:03
tijaI did exactly the same, detect a change in switch position, set/unset signal and then uvc reset but it didn't work. So something else is going on. Hence I asked you about DVI and HDMI13:03
*** bjoern_ has joined #timvideos13:04
mithrotija: did you test switching the mode works via USB in the first place?13:05
tijamithro: no :P13:05
mithrotija: assuming it works is possibly problematic :P13:06
tijamithro: That's why I want a re write.13:07
mithrotija: rewriting doesn't solve the problem - bugs always exist13:07
mithrotija: figuring out a better way to test might13:08
tijamithro: But the re written code will be highly commented so it will be more useful.13:08
tijamithro: But yeah re writing is not possible.13:09
mithrotija: you sure? It's not like we didn't want comments in the first place :)13:09
tijamithro: The biggest problem is that there isn't anyone with gud enuf knowledge of code base. Anyways, I  was also fiddling with zybo. My poor linux skills turns out to be a road block.13:13
tijamithro: I was trying to see whether raw 720p images can be pushed via Ethernet atleast at 24 fps.13:14
tijaBut couldn't figure out Gstreamer :P13:15
*** travis-ci has joined #timvideos13:24
travis-ci[mithro/HDMI2USB/720p-fix#82] (ddcdac7): The build passed. (
*** travis-ci has left #timvideos13:24
MaZderMindmithro: well static… it changes the mix every 10 seconds and the sources stop and get restartet in a ~1h cycle (when the test-file ends)13:45
mithroMaZderMind: okay, that is a pretty good test - how are you running that?13:46
*** Niharika has quit IRC13:47
mithroMaZderMind: got some time to chat, or should I head home after pushing this change for tija?13:47
mithrotija: you should merge that other change13:48
tijamithro: which change?13:48
*** tvCommitBot has joined #timvideos13:49
tvCommitBot[HDMI2USB] mithro opened pull request #126: Adding better documentation to the EDID hack module. (master...edid-doc)
*** tvCommitBot has left #timvideos13:49
mithrotija ->
tpbTitle: Fix forcing HDMI port 1 to 1024x768 mode. by mithro · Pull Request #125 · timvideos/HDMI2USB · GitHub (at
mithrotija: you should have a look at 126 too13:49
MaZderMindtija: [email protected] raw I420 frames are ~650 MBit/s13:49
MaZderMindtija: I may help out with the linux side if desired13:50
MaZderMindmithro: whatever you want, we have a free day over here on the other side of the world and I'm just hanging around13:51
MaZderMindI'd have time to chat13:51
mithroMaZderMind: okay, let me grab a drink - I'll be back in 2 minutes13:51
*** tvCommitBot has joined #timvideos13:52
tvCommitBot[HDMI2USB] ajitmathew pushed 2 new commits to master:
tvCommitBotHDMI2USB/master ddcdac7 Tim 'mithro' Ansell: Fix forcing HDMI port 1 to 1024x768 mode.13:52
tvCommitBotHDMI2USB/master 0422ee3 ajitmathew: Merge pull request #125 from mithro/720p-fix...13:52
*** tvCommitBot has left #timvideos13:52
tijasorry got some urgent work...brb in an hour13:55
mithroMaZderMind: okay, I'm back now13:57
MaZderMindbtw. running for 40h now13:58
MaZderMindmithro: go ahead :)13:58
mithroMaZderMind: okay, so - firstly great work on the current stuff13:59
MaZderMindthank you!14:00
mithroMaZderMind: now you have a prototype working, you need to decide what the future entails for it14:00
mithroMaZderMind: a lot of my concerns are more about potential issues with things in the future14:01
MaZderMindwell… there is just one feature missing and then it does everything the VOC needs14:01
mithroMaZderMind: so, the choice is - do you want to leave it at that? or do you want it to be extended / used by other people too?14:02
MaZderMindMy choice would be to document the design desicions I made and why I made them and how the program could be extended -- and leave those extensions to the people that actually need them14:03
MaZderMindbecause If I now go on and implement features I don't need, I won't be a good maintainer on them14:03
MaZderMindI see code over configuration, why shouldn't there be a specialized mixer for the timvideos stuff that does exactly what you need and nothing else, based on the existing code14:04
mithroMaZderMind: the more code voctomix has, the harder things are keep stable (in any language - not just python)14:07
mithroMore code == more bugs :)14:07
MaZderMindyes, exactly. that is why I have not implemented things like recording or streaming in the core, this is kept external for a reason14:09
MaZderMindbut if you need it for your setup, why not add it and use the result?14:09
mithroMaZderMind: that is what I might do14:10
MaZderMindand we cann still work together, share code and bugfixes14:10
mithroMaZderMind: yes14:12
mithroMaZderMind: its definitely something I'm looking at14:13
mithroMaZderMind: so lets say we now have TimVideos stuff, DebConf stuff and CC VoC all contributing to your code base14:14
*** travis-ci has joined #timvideos14:16
travis-ci[mithro/HDMI2USB/edid-doc#83] (6bc80d6): The build passed. (
*** travis-ci has left #timvideos14:16
mithroMaZderMind: managing the complexity and making sure our features don't conflict can be hard14:17
*** travis-ci has joined #timvideos14:17
travis-ci[timvideos/HDMI2USB/master#38] (0422ee3): The build passed. (
*** travis-ci has left #timvideos14:17
mithroSo, the question is how to design a system which is extremely fault tolerant to failures in the code14:18
MaZderMindhm. I don't want to revolutionize the videomixer-world. I'm just solving a single problem14:19
MaZderMindIt won't be as easy as lego to build your own mixer but there will be a base to start of14:20
MaZderMindI'm not saying that I won't take PRs with features, it's rather: solve one problem at a time14:21
MaZderMindand one usually is better at solving his own problems then those of others14:22
mithroMaZderMind: yes agreed14:24
mithroMaZderMind: I'm interested in enabling the type of features I've always wanted to support - like automatic speaker tracking14:27
mithroMaZderMind: so, how can we build something like that into / on top of voctomix without compromising the stability of your system14:29
MaZderMindmithro: the command-server can be used to dispatch commands between clients without interacting with the server14:30
MaZderMindthis would be probably just a few lines of code that I'd be happy to add14:30
MaZderMindcurrently it already broadcasts successful function calls like "set-composition-mode" to connected clients14:30
MaZderMindI could see an visual-anylyisis-client taking commands from the gui and a video-stream from the mixer and posting commands to the mixers commandserver14:32
MaZderMindThere might also be a camera-control-client that reads these commands and sends the video-stream to the server14:32
MaZderMindone might want to leave out the analysis-part and control the camera fro mthe gui directly14:33
mithroMaZderMind: yes, this sounds pretty reasonable14:33
MaZderMindor use a joystick to do that14:33
mithroMaZderMind: yeah14:33
MaZderMindthe joystick-to-controlserver could be a simple python-script14:34
mithroMaZderMind: yeah14:34
mithroMaZderMind: what happens when my joystick-to-controlserver sends invalid commands to the server?14:35
mithroMaZderMind: Have you seen any bugs like this in Python yet?14:37
tpbTitle: Pastebin | IRCCloud (at
MaZderMindmithro: <- there you go14:37
tpbTitle: Implement Messages as Client-to-Client Communication · voc/[email protected] · GitHub (at
MaZderMindmithro: well, if it sends unknown commands it get's an unknown-command error14:38
MaZderMindif a command raises an exception, you'll get that exception back and the call was not successful14:38
MaZderMindI have not fuzzed the control-server yet but I don't think I have to14:39
MaZderMindif your script kills your videomixer, well, you shot yourself in the foot, I guess14:39
MaZderMindwhat do you want to tell me with this paste?14:40
mithroMaZderMind: That is an example of a bug which can be very hard to catch and can exist even with 100% test coverage14:41
mithro(you need 100% branch coverage to find that bug)14:41
MaZderMindwell, so be it. Are there bugs in DVSwitch?14:42
mithroMaZderMind: that exception bubbles up to the top level and now your mixer crashes14:42
mithroMaZderMind: I'm very good at shooting myself in the foot it seems :)14:42
MaZderMindyes of course there are bugs, yes! and they need to be found and fixed14:43
mithroMaZderMind: the reason I split the GUI and server into two separate processes is to deal with issues like this14:43
MaZderMindbut no one will find them without using the project and no one will use the project if it is not in a usable staze14:43
mithroMaZderMind: it means that when the GUI crashes, the server continues to record and you can just reconnect the GUI14:44
MaZderMindyes, I'm all for separating things14:44
mithroMaZderMind: which you seem to adopted too - which is great :)14:44
MaZderMindvoctomix currently has 912 lines of python14:45
MaZderMindit will be, say, 100 more when I implemented the stream-blanking-code14:45
MaZderMindthis is a codebase that is easy enough to read and to find bugs in and I'll be sure we will find plenty of bugs as soon as we start using it in production14:46
MaZderMindthis is excluding the gui14:47
mithroMaZderMind: yeah - this is a good14:48
mithroMaZderMind: I was trying to figure out a solution of how to reduce the "core must run" code even smaller14:50
mithroMaZderMind: I was thinking of the system as kind of like this;14:51
mithro gstreamer-pipelines > "pipeline configuration" > "business logic / GUI / tcp stuff"14:53
mithroReally, once the gstreamer pipelines are running, they should stay running until we need a "config change" (say the mixer)14:55
mithros/say the mixer/say changing the inputs selected on the mixer/14:55
mithroThen a config change is really just updating the running gstreamer pipelines in some way (starting / stopping / updating properties)14:56
MaZderMindthere are some pipelines that need to be run when a source connects14:57
MaZderMindand designimg these pipelines is one of the main parts of building the mixer14:57
mithroMaZderMind: yes - I'm including that in the "config change" part too14:58
MaZderMindso you basicly talking about a confured-pipeline-runner14:58
mithroMaZderMind: confured?14:58
MaZderMindsorry, touchscreen14:59
mithroMaZderMind: this however doesn't protect gstreamer pipelines crashing either14:59
MaZderMinddesigning the pipelines correctly is an art in itsself14:59
mithroMaZderMind: if we stick to good modules, the chance of the pipelines being crashing is low15:00
mithroMaZderMind: but if we start using more exhotic plugins, things get more dicy15:00
mithroMaZderMind: so then you start wondering if you could separate different pipelines into different processes15:01
mithroMaZderMind: and you end up with a design similar to how flumotion works15:01
MaZderMindhm and there we come back to the beginning of this discussion: i want to solve a single problem15:02
MaZderMindnot all problems of the world15:03
mithroMaZderMind: yes15:03
mithroMaZderMind: which is why I mentioned the "ecide what the future entails for it" part15:03
MaZderMindif someone takes pieces of voctomix and sticks together a new mixer solution, that's perfectly valid15:03
MaZderMindand I'll happily help them :)15:04
mithroMaZderMind: I started trying to see if I could take voctomix and rebase it onto a "gstreamer pipeline manager" type interface15:05
mithroMaZderMind: but I got distracted with doing HDMI2USB stuff for the prod board15:09
mithroMaZderMind: It also adds some complexity to voctomix and I was wondering if it was worth it to you guys15:10
mithroMaZderMind: so, wanted to discuss why I think it would be useful / important and if it made sense15:12
MaZderMindI see15:12
mithroMaZderMind: on a related note15:13
mithroMaZderMind: I see that voctomix has a static source configuration?15:13
MaZderMindI for my part want to a) solve the problem for the VOC to produce HD Video everywhere. b) document our code and our design to c) help people use and modify our software15:13
MaZderMindyes, that's on purpose. It allows to show the sources with titles and in the correct order in the GUI and makes the pipelines a lot easier15:14
mithroMaZderMind: yeah - it does simplify a lot of things15:15
MaZderMindAnd in our setup we usually know ahead how nay inputs we will have. Ynd you still can restart the core in a break to fit another source15:15
mithroMaZderMind: it has *loads* of advantages are you point out15:16
mithroMaZderMind: it definitely seems like the right solution right now for (a)15:17
mithroMaZderMind: you guys seem *super* organised, so I doubt it has many down sides for you either15:18
mithroMaZderMind: less magic == good for stability15:18
MaZderMindand you could always add some 'for special use' sources ^^15:19
mithroMaZderMind: yeah15:19
mithroMaZderMind: I was wondering, what happens at the moment when multiple gst commands connect to the same port?15:19
MaZderMindthat's not possible15:19
MaZderMindthe 2nd connection is closed15:20
tpbTitle: voctomix/ at master · voc/voctomix · GitHub (at
mithroMaZderMind: okay, "the second connection fails"15:20
mithroMaZderMind: yeah - that is what I thought would happen15:20
MaZderMindone small issue is when a source with the wrong video caps connects :>15:21
MaZderMindthe pipeline just doesn't preroll and does not throw an error15:21
MaZderMindbut this is a small issue in production, where the sources are usually tested well15:22
mithroMaZderMind: so, what happens when a source gets accidently power cycled by a conference attendee who wants to power their laptop?15:22
MaZderMindwell the image turns black (intervideosrc sources black frames) until the source reconnects15:22
mithroMaZderMind: The old TCP connection will be still open as the client didn't go away cleanly, the new one is now rejected?15:22
MaZderMindthe test-videos are currently sources by `while true; do ffmpeg -i … tcp://localhost:10000; done`15:23
mithroMaZderMind: yeah - when the ffmpeg command exits on a machine the tcp socket will be closed cleanly15:23
CarlFKhi folks15:24
mithroMaZderMind: so the server will call the "close_connection" function on line 3915:24
MaZderMindCarlFK: hi15:24
mithroCarlFK: you should give voctomix a whirl and see if you can get it going15:24
CarlFK  right?15:25
tpbTitle: voc/voctomix · GitHub (at
MaZderMindwhen the tcp source goes down from the view of the kernel, the kernel coses the file descriptor. this makes the fdsrc element throw an error on the next read which in turn calls on_error in AVSource which will thenn call close_connection15:25
MaZderMindCarlFK: yes15:25
mithroMaZderMind: Yes15:25
mithroMaZderMind: however, the kernel doesn't view a connection as closed until it gets the fin packet or the tcp socket timeouts waiting on an ack15:25
MaZderMindmithro: I must admit I have seen that not working when the source sended wrong data15:26
mithroMaZderMind: so if you kill the machine by pulling the power, the fin packet will never arrive, so the tcp socket has to timeout15:26
mithrotcp socket timeouts are often on the order of minutes (or sometimes hours)15:26
CarlFKMaZderMind: have you ever run ?15:27
tpbTitle: CarlFK/dvsmon · GitHub (at
MaZderMindCarlFK: yes, i used that for some things15:27
mithroMaZderMind: hence it could be hours before the source is allowed to connect again15:28
MaZderMindmithro: yep. That is a problem you will have with any tcp connection based system15:28
mithroMaZderMind: you can of course fix this by tweaking kernel settings and stuff15:28
MaZderMindand for a production system you will have to do this15:28
mithroMaZderMind: the alternative solution is to have "the latest always wins" solution15:28
mithroMaZderMind: when a new connection comes in, close the old connection and accept the new one15:29
MaZderMindas well as configure swappiness, ipv6 support, irqbalance, filesystems, raid and a shitload of other stuff"15:29
MaZderMindmithro: I will try to implement that15:29
mithroMaZderMind: this solves the above problem pretty neatly15:29
MaZderMindyes, that's true15:29
mithroMaZderMind: but you then run into the next problem15:29
mithroMaZderMind: two fighting sources15:29
mithroMaZderMind: where you have accidently configured two sources to connect to one port15:30
CarlFKMaZderMind: can you write me a dvsmon to run what is needed, like
tpbTitle: dvsmon/ at master · CarlFK/dvsmon · GitHub (at
MaZderMindIf you don't have your enviroment in control, you're screwed anyway15:30
mithroMaZderMind: the first connects, the second then connects causing the first one to reconnect, which then causes the second one to reconnect, repeat.....15:30
MaZderMindCarlFK: no, i can't, but you can take a look at
tpbTitle: voctomix/ at master · voc/voctomix · GitHub (at
MaZderMindmithro: I repeat it:  If you don't have your enviroment in control, you're screwed anyway :)15:31
MaZderMindyou shouldn't have two sources confured that way :Y15:31
mithroMaZderMind: I've seen this happen in many different ways, IE when someone accidently connects a test system to the production network without knowing15:32
MaZderMindyes, but fixing this is out of scope of a video mixer15:32
mithroMaZderMind: that might be accidently done by the networking guys accidently bridging your av-test and av-prod vlans :(15:32
CarlFKMaZderMind:  Exception: ('GStreamer version', (1, 4, 5, 0), 'is too old, at least', (1, 5), 'is required')15:32
mithroMaZderMind: that is a pretty obvious error15:33
CarlFKwhere are you getting gs from?15:33
MaZderMindor you may have two devices with the same ip in the net. should the mixer deal with this, too?15:33
MaZderMindit can't. It needs a good environment to run in and multiple sources are an equally bad problem15:33
CarlFKreadme says "Testet on Ubuntu 14.10 with the bundled gstreamer 1.4.3"15:34
MaZderMindmithro: but: the sources currently can only deliver raw frames / raw audio in mkv, so they will usually run on localhost anyway15:34
MaZderMindCarlFK: there are bugfixes in gst-master's inter15:34
MaZderMindCarlFK: there are bugfixes in gst-master's inter*-elements that are needed to keep a/v-sync15:35
MaZderMindCarlFK: so currently I build my gstreamer from git master15:35
CarlFKoh swell.15:35
MaZderMindwe will later package this into debs but for development…15:35
MaZderMindI don't see a point in working around bugs that are fixed upstream15:35
mithroMaZderMind: The dynamic configuration of gst-switch does solve this (specific) problem but as you pointed out adds a bunch more complexity15:36
CarlFKmithro: you should give voctomix a whirl and see if you can get it going :p15:36
mithroMaZderMind: IE the two sources just appears in gst-switch15:37
CarlFKMaZderMind: does it have a cut button like in DVswitch?15:37
mithroCarlFK: I don't think it does recording yet?15:37
MaZderMindCarlFK: recording would be part of an external script15:38
MaZderMindthe GUI could communicate a 'cut'-event to the recording client which could rotate output files15:38
CarlFKlet me know when someone does that part.15:38
MaZderMindCarlFK: we do our recordign like this:
tpbTitle: voctomix/ at master · voc/voctomix · GitHub (at
MaZderMinda segment every 3 minutes15:38
CarlFKnot my problem :p15:39
mithroCarlFK: it is if you want to use a HD pipeline15:39
mithroMaZderMind: I think the choice of dynamic verses static is the biggest reason I'm not just doing voctomix stuff right now15:40
MaZderMindmithro: sleep about it and think if you *really* want a videomixer that dynamicly reconfigures itsself15:40
mithroMaZderMind: my dream is the eventual zero-configuration, auto-deploy, no touching solution15:40
mithroMaZderMind: I have been thinking about it for a while15:41
MaZderMindI'll try to implement that reconnect-logic, maybe with a timeout-interval, it sounds pretty good15:41
MaZderMindbut having a known configuration is actually something I really like15:41
mithroMaZderMind: I think in your known configuration model - the "last connection wins" is probably the right approach15:42
MaZderMindit makes things predictable15:42
CarlFKMaZderMind: when a talk scheduled to start at 10:00 starts at 10:01, (how) do you trim the 1 min of cruft?15:42
MaZderMindI'm heading over to dinner soon15:42
mithroMaZderMind: I should head to bed soon myself15:43
MaZderMindCarlFK: that's a looong story15:44
mithroMaZderMind: at the moment, the only part which really *needs* the configuration is your videomix and avsource elements15:44
MaZderMindCarlFK: I think it would be better explained via phone/mumble/hangout15:44
MaZderMindmithro: yes, but the GUI will need that, too15:44
CarlFKMaZderMind: na, pretty sure the end will be:15:44
CarlFKlet me know when someone does that part.15:44
CarlFK(a cut button)15:45
MaZderMindI could imagine mithro will do that15:45
CarlFK"press cut, write down the time displayed on the screen, enter time into django form, hit save"15:45
CarlFKthat's about what I want to see.15:45
MaZderMindthe thing is not the cut button but a recording-script which rotates the output-file. this script will run outside of voctomix then and just communicate with the video-socket and the control-server15:46
mithroCarlFK: actually the two bits could actually be trivially automated15:46
CarlFKmithro: what two?15:46
MaZderMindI'mm afk, cya15:46
mithroMaZderMind: but once I replace and - is there much left of voctomix?15:47
mithroMaZderMind: at some point we should also discuss why using mkv is a terrible idea for your avsource format :)15:47
mithroMaZderMind: I'm going to head home now15:47
mithroMaZderMind: I assume you'll read the scrollback15:49
mithroMaZderMind: in summary, I'll need to give up the idea of dynamic sources to use voctomix and I'm still trying to figure out if I should do that15:50
mithroMaZderMind: anyway, we should chat more another time15:52
mithroMaZderMind: you have the advantage that you have developer time (your own) to get things working :)15:52
mithroAnyway, really leaving now15:52
CarlFKmithro: ping me when you get home.  I am curious of your view of vocto's static config.15:59
MaZderMindmithro: yes, sure, it's a videomixer :) a/v in, mix, a/v out16:10
mithroCarlFK: its 2am here16:11
MaZderMindre mkv: I had a discussion with heftig on #gstreamer why mkv is better then gstdata - and also the fact that ffmpeg can read raw-frames in mkv via tcp is a nice addition16:12
MaZderMindmithro: let's discuss that another time16:13
mithroMy issues on come up when transmitting over the network rather then locally16:14
mithroAnd probably only when things aren't going well too16:14
*** Niharika has joined #timvideos17:17
*** Niharika has quit IRC17:21
*** Niharika has joined #timvideos17:28
*** Niharika has quit IRC18:09
*** tija has quit IRC18:23
*** thaytan has quit IRC18:38
*** thaytan has joined #timvideos18:54
*** ChanServ sets mode: +v thaytan18:54

Generated by 2.13.1 by Marius Gedminas - find it at!