Current Server Time: 20:02 (Central Europe)

#apertus IRC Channel Logs

2018/02/27

Timezone: UTC


23:47
rton
left the channel
01:07
futarisIRCcloud
joined the channel
01:47
slikdigit
joined the channel
02:10
slikdigit
left the channel
02:12
slikdigit
joined the channel
02:20
slikdigit
left the channel
02:20
slikdigit
joined the channel
02:24
slikdigit_
joined the channel
02:28
slikdigit
left the channel
02:28
slikdigit_
changed nick to: slikdigit
04:42
slikdigit
left the channel
04:47
supragya
joined the channel
04:47
supragya
left the channel
05:00
iti
joined the channel
05:01
iti
left the channel
05:04
Shreesh
joined the channel
05:05
Shreesh
left the channel
06:16
niemand
joined the channel
06:26
futarisIRCcloud
left the channel
06:31
TofuLynx
joined the channel
06:45
supragyaraj
joined the channel
06:50
supragyaraj
left the channel
06:56
se6astian|away
changed nick to: se6astian
07:01
TofuLynx
left the channel
07:30
TofuLynx
joined the channel
07:40
TofuLynx
Good Morning Everyone! :)
07:44
niemand
left the channel
08:01
Bertl_zZ
changed nick to: Bertl_oO
08:04
TofuLynx
left the channel
08:11
TofuLynx
joined the channel
08:17
DrLuke
Morning!
08:54
futarisIRCcloud
joined the channel
10:04
TofuLynx
left the channel
10:21
TofuLynx
joined the channel
11:11
supragyaraj
joined the channel
11:11
supragyaraj
Hi Bertl_oO, what does oO mean?
11:11
TofuLynx
what is a interleaved array?, in processing test
11:11
TofuLynx
Hey supragya!
11:12
supragyaraj
hey TofuLynx
11:14
supragyaraj
interleaved means criss crossed, something like raw file given to us... however unsure of the context. Can you point me where you found it?
11:15
TofuLynx
In the processingTest source files
11:15
TofuLynx
go to the ProcessingPresenter.cpp
11:15
TofuLynx
it's the file responsible for the load, debayer and conversion of a image
11:16
supragyaraj
see line 64 on same file
11:16
supragyaraj
there RGB file is flattened to a pattern of LCT_RGB
11:17
supragyaraj
that is interleaving
11:17
TofuLynx
flattened?
11:17
TofuLynx
hmm
11:17
TofuLynx
you mean
11:17
TofuLynx
putting it in a unidimensional array?
11:17
supragyaraj
yeah
11:17
TofuLynx
makes sense
11:18
supragyaraj
you did it yourself in your code... i dunno why you ask this :)
11:18
TofuLynx
yeah I didnt know the term xD
11:18
TofuLynx
hmm
11:18
TofuLynx
and then SetThumbnail creates a thumbnail from it
11:18
supragyaraj
i guess so
11:18
TofuLynx
Ok! Thanks :P
11:19
supragyaraj
TofuLynx: any knowlege of what IAllocator is?
11:19
supragyaraj
was going to ask BAndiT once he is online
11:19
supragyaraj
or where is header related to FileFormat
11:20
TofuLynx
IAllocator is the StaticAllocator
11:20
BAndiT1983_
joined the channel
11:20
TofuLynx
go to memory folder
11:20
TofuLynx
you can see IAllocator in StaticAllocator.h
11:20
supragyaraj
BAndiT1983_ hi
11:20
BAndiT1983_
IAllocator is an interface for allocators
11:20
BAndiT1983_
hi
11:20
BAndiT1983_
seen the log, so joined to answer questions
11:21
BAndiT1983_
interleaved is RGBRGBRGB....
11:21
supragyaraj
i was successful in writing a console app
11:21
supragyaraj
however static linked
11:21
BAndiT1983_
very good, what does it do at the moment?
11:21
TofuLynx
It's not in the guidelines, but I guess everything that starts with I is a Interface
11:21
BAndiT1983_
static?
11:21
BAndiT1983_
I is also described in the guideline ;) second line
11:21
supragyaraj
i dunno, used this
11:21
supragyaraj
g++ -Wall -I Source/OCcore/ -I build/exports -L lib/libOCcore.so interact.cpp Source/OCcore/Image/*.cpp Source/OCcore/Log/*.cpp -pthread -fopenmp
11:21
BAndiT1983_
seems like dynamic linking, see .so
11:21
supragyaraj
i used the so... so is it dynamic?
11:22
supragyaraj
it does not do much
11:22
BAndiT1983_
yep, static files have .a as extension
11:22
TofuLynx
ah sorry xD
11:22
supragyaraj
this is snippet of most important lines that rand
11:22
supragyaraj
OC::DataProvider::ImageProvider prv;
11:22
supragyaraj
prv.ReadBinaryFile(filename, filelength, fileData);
11:22
supragyaraj
so these work
11:22
supragyaraj
std::cout<<"File length: "<<filelength<<std::endl;
11:22
supragyaraj
std::cout<<"File data(initial bytes): "<<(int)fileData[0]<<" "<<(int)fileData[1]<<" "<<(int)fileData[2]<<std::endl;
11:23
TofuLynx
hmm
11:23
TofuLynx
What is an interface?
11:23
supragyaraj
however these had problems
11:23
supragyaraj
OC::DataProvider::OCImage ocimg;
11:23
supragyaraj
OC::DataProvider::OCImage FileFormat fmt;
11:23
supragyaraj
prv.Load(filename, fmt.DNG, ocimg, NULL);
11:23
supragyaraj
declaration:
11:23
supragyaraj
void ImageProvider::Load(std::string fileName, FileFormat format, OCImage& image, IAllocator& allocator)
11:23
BAndiT1983_
an interface is a special class which describes the methods inherited classes have to fill in
11:23
supragyaraj
My question, what is OCImage and IAllocator and how to use them in the code
11:24
BAndiT1983_
it has no own implementation usually, but i wouldn't restrict it hard in C++
11:24
BAndiT1983_
IAllocator is og no use as it is, there is a class which derives from it and implements the logic
11:24
BAndiT1983_
OCImage contains loaded image data
11:24
BAndiT1983_
all the stuff is in ProcessingTest
11:25
supragyaraj
so NULL seems right?
11:25
BAndiT1983_
grab a DNG file, adjust the path in ProcessingPresenter and watch the output, maybe go with debugger through the flow
11:25
BAndiT1983_
is the last parameter used in Load() at the moment?
11:26
supragyaraj
this: prv.Load(filename, fmt.DNG, ocimg, NULL);
11:26
supragyaraj
and where is the header for OCImage?
11:26
BAndiT1983_
http://clean-cpp.org/interfaces-done-right/
11:26
BAndiT1983_
it should be in OCcore/Images
11:26
mayank
joined the channel
11:27
supragyaraj
OC::DataProvider::OCImage ocimg; doesn't seem to work for me
11:27
supragyaraj
hi mayank!
11:27
mayank
hii
11:28
TofuLynx
Bandit, OC contains OCBackup, OCLauncher, right?
11:28
TofuLynx
ProcessingTest is used by what?
11:28
TofuLynx
Or is it standalone?
11:28
BAndiT1983_
OC -> OCcore, OCui, OCLauncher, OCBackup, ProcessingTest
11:29
BAndiT1983_
will move old projects to archive folder soon
11:29
supragyaraj
BAndiT1983_, the problem is that I am unable to instantiate the class OCImage, see above
11:29
BAndiT1983_
ProcessingTest is a playground for visual processing
11:29
BAndiT1983_
also a test ground for new UI things
11:29
TofuLynx
hmm so you test and deploy things there?
11:29
BAndiT1983_
so it changes sometimes a lot, code aded and removed
11:30
BAndiT1983_
usually yes
11:30
supragyaraj
also where is declaration of FileFormat
11:30
BAndiT1983_
which IDE do you use?
11:30
supragyaraj
atom mostly
11:30
BAndiT1983_
can you ctr+click on the name of the structure?
11:31
BAndiT1983_
used atom before, but was too slow, switched fully to vscode
11:31
supragyaraj
sometime it works, other times it shows no definition
11:31
supragyaraj
and now it showed me it....
11:32
supragyaraj
got it...
11:33
supragyaraj
mayank: here for GSoC?
11:33
futarisIRCcloud
left the channel
11:34
supragyaraj
BAndiT1983_ : why are there two of you on this channel ?
11:35
BAndiT1983_
logged in through web chat, other one is the BIP client which logs all the stuff on the apertus channels, so i have the info when i use hexchat
11:35
BAndiT1983_
so when i log off it automatically changes to |away
11:35
supragyaraj
that aids in irc.apertus.org logs?
11:35
BAndiT1983_
it's a special setup by apertus guys
11:36
BAndiT1983_
logs are done by server
11:36
supragyaraj
so it's personal thing
11:36
BAndiT1983_
it's about getting messages, even private ones, when you are away, at next login you get them
11:37
BAndiT1983_
if you join gsoc, then you could also get this, in case there are urgent questions and the mentor is not there
11:37
TofuLynx
even private ones
11:37
TofuLynx
hmmmm
11:37
supragyaraj
nice to have
11:39
TofuLynx
left the channel
11:39
mayank
left the channel
11:42
TofuLynx
joined the channel
11:43
TofuLynx
Back
11:46
TofuLynx
Hmm
11:46
TofuLynx
Bandit
11:46
BAndiT1983_
yes?
11:47
TofuLynx
If it was to be some sort of sequencer, you would have to set the thumbnail in a cycle?
11:47
TofuLynx
Image sequencer*
11:47
BAndiT1983_
thumbnail is only for thumbnail view
11:47
TofuLynx
Ah
11:47
TofuLynx
Where is the displayerm
11:47
TofuLynx
?
11:47
BAndiT1983_
like here -> https://lab.apertus.org/F1460
11:47
BAndiT1983_
?
11:48
TofuLynx
If I wanted to display a full size of the image
11:48
TofuLynx
Where and how would it be done?
11:48
supragyaraj
any DNG files you recommend, BAndiT1983_?
11:49
BAndiT1983_
same suggestion like everyday -> ProcessingTest
11:49
BAndiT1983_
posted a link to apertus.org yesterday
11:49
supragyaraj
let me have a look
11:49
BAndiT1983_
https://www.apertus.org/axiom-beta-uhd-raw-mode-explained-article-may-2016
11:49
BAndiT1983_
at the bottom are 5 dng files and MOV clips
11:50
BAndiT1983_
another link from yesterday -> https://nofilmschool.com/2012/08/blackmagic-john-brawley-release-raw-cinema-camera-files-for-download
11:50
BAndiT1983_
there you will find sequences
11:50
TofuLynx
Yeah but I don't remember seeing a displayer of the image on the processing test
11:50
BAndiT1983_
could not find bigger collection, but have a link to that somewhere
11:50
supragyaraj
MLV?
11:50
BAndiT1983_
have you tried to adjust path?
11:51
BAndiT1983_
https://www.magiclantern.fm/forum/index.php?topic=11899.0
11:51
supragyaraj
have you tried to adjust path? - me or TofuLynx?
11:51
BAndiT1983_
TofuLynx, but if you want to see DNG in ProcessingTest, then you can try that too
11:52
BAndiT1983_
you can drag the image, zoom with mousewheel
11:52
TofuLynx
Uh
11:52
TofuLynx
I still couldn't put images on the processing test
11:52
BAndiT1983_
will test it at evening, if you can't get it to work
11:52
TofuLynx
Will have to try it later
11:52
BAndiT1983_
you have to put the image in the build folder, if i'm not mistaken
11:52
BAndiT1983_
next to the executable or use full path
11:54
supragyaraj
can you explain this?
11:54
supragyaraj
2018-02-27 18:23:17,636 FATAL CRASH HANDLED; Application has crashed due to [SIGSEGV] signal
11:54
supragyaraj
2018-02-27 18:23:17,637 WARN Aborting application. Reason: Fatal log at [Source/OCcore/Log/easylogging++.h:5621]
11:54
supragyaraj
Aborted (core dumped)
11:54
BAndiT1983_
was a log written in /Logs folder?
11:54
BAndiT1983_
but seems like there was memory corruption, you should try to debug
11:55
BAndiT1983_
try to use QtCreator, otherwise it's not easy
11:56
supragyaraj
i dont know how to go about with QtCreator especially with no CMake support on the app i am making
11:57
BAndiT1983_
qtcreator is supporting multiple things, not only cmake
11:58
supragyaraj
seems like problem with static allocator
11:59
supragyaraj
okay... allocating more memory to Poolallocator worked for me
11:59
supragyaraj
strange
12:00
BAndiT1983_
we should evaluate the lib i've posted yesterday, seems like it follows STL which should be ok
12:00
BAndiT1983_
but only the pool allocator part, as the frames have same size, usually
12:01
supragyaraj
BAndiT1983_ : tell me, does the full system rely heavily on static allocator?
12:01
supragyaraj
seems like it does
12:01
BAndiT1983_
it was planned that the frame data should be stored in pool allocator pages
12:01
BAndiT1983_
for performance reasons
12:03
rton
joined the channel
12:09
supragyaraj
[we should evaluate the lib i've posted yesterday] - don't really remember
12:10
BAndiT1983_
https://github.com/mtrebi/memory-allocators#pool-allocator
12:10
supragyaraj
BAndiT1983_ : trivial thing but seems like I was unnecesarily adding -L .so file... seems like linking is failing if i don't include the CPP files along with .h during compilation
12:10
supragyaraj
so static linking for now
12:11
BAndiT1983_
static linking is something different than adding source folders
12:11
BAndiT1983_
static linking is when you add .a library
12:11
BAndiT1983_
the code is compiled into there and chunks or whole lib is compiled into your application
12:12
supragyaraj
what do you say about this
12:12
supragyaraj
g++ -Wall -I Source/OCcore/ -I build/exports interact.cpp Source/OCcore/Image/*.cpp Source/OCcore/Log/*.cpp Source/OCcore/Memory/*.cpp -pthread -fopenmp
12:13
BAndiT1983_
you are grabbing parts of OCcore, hope it's sufficient
12:17
supragyaraj
okay BAndiT1983_ : i am able to now get RGB data back from OCcore through my console app
12:17
supragyaraj
for a file that I asked it to process
12:19
BAndiT1983_
very good
12:20
supragyaraj
Now what should i do
12:20
supragyaraj
with lodePNG perhaps I can save it to PNG...
12:21
supragyaraj
but not needed I guess
12:21
supragyaraj
let me check anyhow
12:21
BAndiT1983_
you can do it as personal excercise
12:21
BAndiT1983_
so you learn the environment better
12:21
BAndiT1983_
afterwards you can try to setup basic VS plugin
12:21
BAndiT1983_
have you already played around with VS?
12:21
supragyaraj
no.
12:22
BAndiT1983_
tried to create a script?
12:22
supragyaraj
could not convince myself with VS as of now
12:22
BAndiT1983_
you should do it first, before starting the plugin
12:22
supragyaraj
where should i serve the frames
12:22
BAndiT1983_
i will repeat my advice from yesterday: grab a video file, create VS script for frme serving, try to open the container in a video editor
12:23
supragyaraj
let me try VS for myself
12:23
supragyaraj
then I can ask some meaningful questions
12:27
BAndiT1983_
http://avisynth.nl/index.php/FAQ_frameserving#How_do_I_use_AviSynth_as_a_frameserver.3F
12:27
BAndiT1983_
is for the predecessor, but applies more or less to VS also
12:28
se6astian
BAndiT1983: new qemu commit by medicine: https://github.com/apertus-open-source-cinema/axiom-beta-qemu/pull/10
12:29
supragyaraj
yeah he corrected checksum, seems like it was wrong earlier
12:29
BAndiT1983_
he has also replied in a longer e-mail, very nice from him
12:29
BAndiT1983_
could somebody test his changes? TofuLynx, supragyaraj?
12:29
supragyaraj
I will do it today
12:29
BAndiT1983_
thansk
12:29
BAndiT1983_
*thanks
12:30
supragyaraj
after I come back from run :)
12:30
supragyaraj
he has also replied in a longer e-mail - anything I should know about?
12:32
BAndiT1983_
he jsut explained what he has done, if you want to know details, then i can copy the content to you in your private channel
12:32
BAndiT1983_
*just
12:33
supragyaraj
if you could sure, or forward the mail (supragyaraj@gmail.com) :)
12:34
BAndiT1983_
done
12:36
supragyaraj
Thank you BAndiT1983_ !!
12:36
BAndiT1983_
no problem
12:43
TofuLynx
What kind of commit was it? To fix kernel 4.9?
12:44
supragyaraj
to fix the build system
12:44
supragyaraj
scripts
12:45
supragyaraj
see link and diffs above: https://github.com/apertus-open-source-cinema/axiom-beta-qemu/pull/10
12:51
supragyaraj
left the channel
12:53
supragyaraj
joined the channel
12:56
se6astian
changed nick to: se6astian|away
12:59
TofuLynx
left the channel
13:02
sebix
joined the channel
13:02
sebix
left the channel
13:02
sebix
joined the channel
13:16
supragyaraj
left the channel
13:19
supragya
joined the channel
13:24
TofuLynx
joined the channel
13:25
supragya
BAndiT1983_: A small correction with the new scriptsby medicineYeh: change ./guest-images/dev/microzed-image-1.3/build.sh to ./guest-images/dev/microzed-image-1.4/build.sh
13:25
supragya
in README
13:27
supragya
could have made a PR but too small a fix to be a PR
13:28
TofuLynx
left the channel
13:32
BAndiT1983_
supragya: just create a PR, even if small, so it'S documented
13:36
supragya
sure, as you say
13:36
supragya
will do in a few hours
13:39
BAndiT1983_
no problem, cannot fix it myself, still at work
13:51
LordVan
joined the channel
13:58
LordVan
left the channel
14:03
TofuLynx
joined the channel
14:04
se6astian|away
changed nick to: se6astian
14:18
BAndiT1983_
left the channel
14:20
arpu
left the channel
14:50
supragya
BAndiT1983: i am refraining to add the correction as a PR as the build system still has issues to be solved.
14:51
supragya
Let MedicineYeh do some magic and then I will add to it later.
14:51
supragya
off to bed...
14:51
supragya
left the channel
14:53
slikdigit
joined the channel
15:03
TofuLynx
left the channel
15:04
Rex0r
left the channel
15:05
Rex0r
joined the channel
15:14
TofuLynx
joined the channel
15:23
BAndiT1983|away
changed nick to: BAndiT1983
15:26
TofuLynx
bandit
15:26
BAndiT1983
yes?
15:27
TofuLynx
a image provider loads the image and then stores it?
15:27
BAndiT1983
yes
15:29
TofuLynx
and then it passes the image data to the image Loader?
15:29
BAndiT1983
let me check the code
15:30
BAndiT1983
imageprovider loads file content as-is and look, according to extension, which handler should process it further
15:30
BAndiT1983
handler = image loader
15:31
BAndiT1983
*looks
15:32
TofuLynx
where is the extension checker?
15:33
BAndiT1983
check constructor of image provider, there the loaders are registered
15:33
TofuLynx
the .insert things?
15:33
BAndiT1983
yes, it inserts handlers into a map
15:34
TofuLynx
and associates the extension to its respective handler
15:34
BAndiT1983
finding extension is not done automatically yet, but rather simple to implement
15:34
BAndiT1983
yes
15:34
BAndiT1983
from line 70 is the search and execution of loader
15:34
TofuLynx
the "auto" thingy?
15:34
TofuLynx
auto it
15:35
TofuLynx
what is auto?
15:35
BAndiT1983
yes, it means auto iterator, auto is a new keyword in c++11
15:35
TofuLynx
will check it
15:35
BAndiT1983
it gets the type automatically, using it when want to avoid writing long STL templated types
15:36
TofuLynx
STL?
15:36
TofuLynx
it reminds me of python
15:36
TofuLynx
almost
15:37
BAndiT1983
stl -> standard template library, is included in C++ for very long time, has many modules, check it out on google
15:37
BAndiT1983
had hard time to get some special things in python going, because they have no type and funny syntax to implement
15:39
TofuLynx
yeah I sorta dislike python for not having types
15:56
TofuLynx
it->second.get();
15:56
TofuLynx
what does this do?
15:57
BAndiT1983
it gets the handler from the map
15:57
BAndiT1983
look for c++ unordered_map
16:00
TofuLynx
it's like python's dictionaries?
16:01
BAndiT1983
don't know python that much
16:01
TofuLynx
but I got it
16:07
TofuLynx
((data[0] << 8 | data[1]) == 0x4d4d
16:07
TofuLynx
I dont understand this
16:07
BAndiT1983
where is it?
16:09
TofuLynx
TIFFLoader
16:09
TofuLynx
I think it's to check if the machine is little or small endian
16:09
BAndiT1983
yes
16:10
TofuLynx
but I dont understand how it works
16:13
BAndiT1983
it concatenats first 2 bytes and checks against the letters
16:14
BAndiT1983
4d is M
16:14
BAndiT1983
http://www.fileformat.info/format/tiff/corion.htm
16:14
TofuLynx
Ah!
16:15
TofuLynx
Understood
16:23
TofuLynx
CreateTIFFTagMap
16:23
TofuLynx
this is related to the tiff format too?
16:24
BAndiT1983
it gets all the packages in the file
16:25
BAndiT1983
seems like it was just used for debugging
16:26
BAndiT1983
where is the method residing? don't have an IDE on at the moment
16:26
TofuLynx
it's on TIFFLoader
16:26
TofuLynx
::Load
16:26
BAndiT1983
i mean the real method, not the call
16:26
TofuLynx
ah sorry
16:26
TofuLynx
hmm
16:26
BAndiT1983
but tagnames is not used, so i suppose really debugging
16:27
BAndiT1983
*for debugging
16:27
BAndiT1983
it's there -> https://github.com/apertus-open-source-cinema/opencine/blob/e48ff3c781da233a025efc5ecaad4c972895c021/Source/OCcore/Image/ImageDefines.h
16:27
BAndiT1983
so nothing special, can be thrown out
16:28
TofuLynx
ok!
16:28
TofuLynx
is this debugging too? unordered_map<int, std::function<void(TIFFTag&)>> varMap;
16:29
TofuLynx
nevermind
16:31
TofuLynx
hmm
16:31
TofuLynx
tiff is based on tags?
16:33
TofuLynx
huh
16:33
TofuLynx
that's why it's called tagged image file format
16:33
TofuLynx
wow
16:33
TofuLynx
makes sense xD
16:44
TofuLynx
/ TODO: Replace hardcoded image format value
16:44
TofuLynx
ImageFormat::Integer12
16:44
TofuLynx
ImageFormat is, for example, integer12 or integer14, etc?
16:50
TofuLynx
left the channel
16:52
BAndiT1983
changed nick to: BAndiT1983|away
16:52
BAndiT1983|away
changed nick to: BAndiT1983
16:52
BAndiT1983
should have called it data format or similar
17:09
TofuLynx
joined the channel
17:10
TofuLynx
yeah it kinda of confunded me
17:10
TofuLynx
confused*
17:16
TofuLynx
As I can see
17:16
TofuLynx
OCui supports themes and widgets
17:16
TofuLynx
right?
17:19
BAndiT1983
of course
17:19
BAndiT1983
OCBackup uses partially also QML
17:20
BAndiT1983
for drive and destination lists, also for thumbnail view in the middle
17:20
BAndiT1983
faster to implement through declarative language, than writing out in C++
17:20
TofuLynx
yeah I understand
17:21
TofuLynx
hmm, I know some applications that automatically use system-based themes
17:21
TofuLynx
why isn't the case here? It's easier this way?
17:21
BAndiT1983
theme is done through QSS, a sort of CSS
17:22
BAndiT1983
i prefer dark applications for visual work
17:22
TofuLynx
Yes, but arent themes easily changeable?
17:22
BAndiT1983
yes, they are, just look through OCui, it's not that big
17:23
TofuLynx
yeah
17:23
TofuLynx
Hmm
17:23
BAndiT1983
but theming is the least problem while writing an application, the solid base is
17:23
TofuLynx
currentrly, OC Launcher does nothing, right?
17:23
BAndiT1983
it has some code in it, don't remember if the JSON file is used at the moment, but i tihnk that the buttons are configured through it
17:25
BAndiT1983
looked through code, yes JSON file is used and buttons created according to it, also images bound
17:26
TofuLynx
yes, but the buttons do something?
17:28
BAndiT1983
not yet
17:29
BAndiT1983
presenter can be extended rather easily, would connect to some click event in view and react to index, by calling the path from array and starting the process
17:29
BAndiT1983
rather simple stuff
17:29
Kjetil
(tm)
17:30
BAndiT1983
?
17:31
TofuLynx
OCLauncher is the planned OpenCine launcher, right?
17:32
BAndiT1983
yes, as central point to start different modules
17:32
TofuLynx
Ok!
17:32
TofuLynx
loved the handwritten OC image xD
17:33
BAndiT1983
if you have only Paint sometimes....
17:34
BAndiT1983
there are some ideas for logos, also for ones of modules, in the lab
17:34
BAndiT1983
people like drawing more than writing software
17:34
BAndiT1983
https://lab.apertus.org/T341
17:35
TofuLynx
Ok :P
17:36
aombk
left the channel
17:36
TofuLynx
if you need any help with a quick design or something about it, i have some experience on it.
17:36
TofuLynx
just call me
17:36
aombk
joined the channel
17:39
TofuLynx
hmm
17:39
BAndiT1983
?
17:39
TofuLynx
is OC Manager a planned module?
17:40
BAndiT1983
it was an old one, first the plan was to have multiple stages in one application, like rawtherapee or darktable, but then people demanded separate ones, so different parts of production could use thm independently
17:41
BAndiT1983
OCManager is the predecessor of backup, was meant for previewing and rating clips, export list of clips to PDF and so on
17:41
BAndiT1983
you can find old screenshots in apertus wiki or lab
17:44
TofuLynx
left the channel
17:45
TofuLynx
joined the channel
17:48
TofuLynx
Ok! Understood! so the structure of OC is OCui, for the graphical user interfaces, OC Launcher so that user can choose the program from the OC suite, OCBackup is responsible for transfering images from drives to the computer
17:49
TofuLynx
And then OCProcess?
17:50
BAndiT1983
also old, as the name implies, it was meant for processing: debayering, color grading etc.
17:50
TofuLynx
What is the sucessor?
17:50
BAndiT1983
processingtest at the moment ;)
17:51
TofuLynx
Yeah but won't it get called OCProcess in the finalized state?
17:52
BAndiT1983
no, would search for better name then
17:52
TofuLynx
Makes sense!
17:52
TofuLynx
Is there any part of the OC structure I have missed?
17:52
BAndiT1983
don't think so
17:53
TofuLynx
Ok! :)
17:54
TofuLynx
Just making sure I understand the goals of OpenCine and the planned ways
17:56
TofuLynx
Have you moved yet?
17:57
BAndiT1983
?
17:57
TofuLynx
To dubai
17:58
slikdigit
left the channel
17:58
BAndiT1983
not moving to dubai, moving to frankfurt main
17:58
TofuLynx
Ah
17:58
TofuLynx
Uh I had idea it was to Dubai, dunno why
17:58
BAndiT1983
will go to dubai for a couple of weeks, but the new plan is not ready yet, my boss needs more time
17:58
TofuLynx
Ok! Hope the moving goes nice! :)
17:59
BAndiT1983
you can't imagine how much of little stuff one gathers over the years and have to decide what should be thrown away or taken to new apartment
18:01
sebix
left the channel
18:01
BAndiT1983
but it allows to free the mind
18:02
TofuLynx
I bet it requires a lot of patience
18:02
TofuLynx
But yeah, it will do good :)
18:03
BAndiT1983
the heart is bleeding sometimes over some things, but if you don't use it for years then it can be removed
18:03
BAndiT1983
not everything is thrown away, some stuff donated or sold
18:06
TofuLynx
I have stored since my first year at school, when I was 7 years old, the books and memoriables and such of stuff. I don't know why I did it, but I simply stored the manuals. And when I had to toss them off It kinda of made me sad
18:06
TofuLynx
But it freed a lot of space in my house, so yeah, sometimes we just have to be rational
18:07
BAndiT1983
especially when the girlfriend is standing behind you, hopefully without a frying pan
18:07
BAndiT1983
now the feminists can attack me :D
18:07
TofuLynx
Ahahahaha
18:07
TofuLynx
xD
18:07
TofuLynx
Good laugh
18:07
BAndiT1983
but she really bought the pan last weekend
18:07
TofuLynx
Get ready... If things get serious... xD
18:08
BAndiT1983
my luck was, that my induction cooker is not working for alloy pans, so she has to leave it in her old apartment ;)
18:09
BAndiT1983
not alloy, aluminium
18:09
TofuLynx
Oh xD
18:12
BAndiT1983
TofuLynx, have you found some area you would prefer to work on?
18:13
BAndiT1983
supragya seems to be interested in VS, lathough he should try it first before jumping into the cold water
18:13
BAndiT1983
*although
18:13
TofuLynx
Are you talking about GSoC?
18:14
BAndiT1983
gsoc or generally OC, if you are interested to contribute also outside of gsoc
18:14
TofuLynx
Ok! I'm very interested in the debayering task!
18:15
TofuLynx
And generally I would like to help with the OC image processing software
18:16
BAndiT1983
what is the latest state, have you tried to display image in processingtest? as it would be the right starting point
18:16
TofuLynx
Haven't tried yet, I'm still trying to understand how processingtest works
18:17
TofuLynx
Probably will try this night
18:17
BAndiT1983
it's easier to discover through starting and debugging
18:17
TofuLynx
When I start processing test it's just blank
18:18
BAndiT1983
let me try it quick
18:18
TofuLynx
Did you make any recent commit to the master branch?
18:20
BAndiT1983
some weeks ago, have removed some obsolete code
18:20
BAndiT1983
but it was working then, let me check, as my version is crashing
18:25
TofuLynx
Ok! :)
18:36
BAndiT1983
ah, it's crashing because of my virtual machine
18:36
BAndiT1983
opengl init is failing, have to check if 3d is activated
18:36
g3gg0-afk
joined the channel
18:36
TofuLynx
It uses 3D?
18:37
BAndiT1983
it uses opengl for display, simple fragment shader to merge 3x16bit color layers
18:38
BAndiT1983
seems like latest virtualbox release is buggy, will get other guest additions
18:45
TofuLynx
Ok! :) Will have dinner now
18:48
BAndiT1983
have a nice meal
18:48
BAndiT1983
found the problem which prevents me from testing, it'S virtualbox itself, vmware was always fine with GL3.3, but switched back to VB for other stuff and forgot about shortcomings
18:51
g3gg0-afk
left the channel
18:52
g3gg0
joined the channel
18:54
g3gg0
hi
18:55
BAndiT1983
hi
18:58
TofuLynx
Back
18:58
TofuLynx
Hey g3gg0!
18:58
g3gg0
wb
18:58
g3gg0
heyho
18:58
BAndiT1983
converting VB VM to vmware
18:59
TofuLynx
Oh VB doesn't support openGL?
18:59
BAndiT1983
hope it isn't totally broken after transfer
18:59
BAndiT1983
it supports just 2.1 and that also not very well, if i wouldn't do stuff for apertus, then i would help out in blender or also drivers for VB, like GL one
19:00
BAndiT1983
would like to have passthrough for graphics card
19:05
TofuLynx
Ah! Ok! Makes sense
19:05
TofuLynx
So how's it going?
19:06
BAndiT1983
have to convert again, with another OVF spec
19:06
BAndiT1983
have you a log when it is failing?
19:06
BAndiT1983
or have you tried to debug it?
19:09
TofuLynx
Not yet
19:09
TofuLynx
Where's the log of processing test?
19:09
BAndiT1983
either the output in the console or the logs folder in the build folder
19:12
TofuLynx
Roger that!
19:16
illwieckz
left the channel
19:29
illwieckz
joined the channel
19:51
TofuLynx
left the channel
19:51
TofuLynx
joined the channel
19:57
TofuLynx
left the channel
20:01
TofuLynx
joined the channel
20:02
TofuLynx
Ok
20:02
TofuLynx
2018-02-27 08:41:23,597 ERROR Failed to load file: test_frame.dng (/home/claudio/Source/OpenCine/Source/OCcore/Image/ImageProvider.cpp, 59)
20:02
TofuLynx
I have to put the file where?
20:03
TofuLynx
ok! just placed the file on the same folder as processing test
20:03
TofuLynx
and a image appeared
20:07
TofuLynx
so it's working I guess
20:09
TofuLynx
why is the display image grayish?
20:09
BAndiT1983
into build folder
20:09
TofuLynx
and has some color artifacts on the margins
20:09
BAndiT1983
no gamma applied, outer sides are not interpolated
20:09
BAndiT1983
is it a color image?
20:09
TofuLynx
yeah it is
20:10
BAndiT1983
alright, just no linearization/gamma, that's why it has some whitish tint
20:11
TofuLynx
and the thumbnail seems Ok
20:11
TofuLynx
I chose a bad sample dng xD
20:11
BAndiT1983
thumbnail was a test, it looks better because of conversion
20:11
TofuLynx
it's the zombie one
20:12
BAndiT1983
you should get the images from FNG sequence link i'Ve posted before
20:12
BAndiT1983
the woman in red jacket
20:14
BAndiT1983
*DNG sequence
20:14
TofuLynx
uh
20:14
TofuLynx
woman in red jacket?
20:15
BAndiT1983
12:50
20:15
BAndiT1983
BAndiT1983_
20:15
BAndiT1983
another link from yesterday -> https://nofilmschool.com/2012/08/blackmagic-john-brawley-release-raw-cinema-camera-files-for-download
20:15
TofuLynx
ah
20:15
BAndiT1983
this was posted by me at 12:50 today, according to the log time
20:16
TofuLynx
ugh
20:16
TofuLynx
640mb
20:16
TofuLynx
the zip
20:17
TofuLynx
downloading
20:17
BAndiT1983
should i send you links to several gigabytes of raw data? ;)
20:17
TofuLynx
when I am in my university, i have 1gbps connection, but when I get home It's 20mbps :(
20:18
TofuLynx
xD
20:18
BAndiT1983
had 11 of 16mbps for years, last year in june finally got 50mbps
20:18
TofuLynx
wow
20:18
TofuLynx
I live in a kinda of rural area, so fiber optic hasnt reached here
20:19
BAndiT1983
i live in a very countryside area, it's a wonder with 50mbps
20:19
TofuLynx
but there's a contract that stipulates that portugal has to get 100% fiber optic coverage before 2020, I think
20:19
TofuLynx
or 2022, dont know
20:20
TofuLynx
Yeah I understand that
20:20
TofuLynx
before I was ADSL, so it was around 7mbps
20:20
TofuLynx
but then I changed to 4G
20:20
TofuLynx
so it's better, but flutuactes a lot and isnt stable
20:20
TofuLynx
some days it's 20mbps, other days it's 40mbps
20:21
BAndiT1983
VDSL here, but germany is still beyond most countries in europe
20:21
BAndiT1983
ADSL was rather unstable, but VDSL is solid
20:21
TofuLynx
VDSL?
20:21
TofuLynx
neverd heard
20:21
BAndiT1983
could also get 100mbps, but had no use for such a range
20:21
BAndiT1983
https://en.wikipedia.org/wiki/VDSL
20:22
TofuLynx
wow
20:22
TofuLynx
Never heard about that
20:22
TofuLynx
I think we jumped from adsl to fiber optic xD
20:22
BAndiT1983
telekom is a monopoly, so getting fiber is not that easy
20:23
BAndiT1983
will see how it is in the big city
20:23
TofuLynx
well the problem here is the inverse, there's a law that stipulates that in rural areas, if a company deploys fiber optic, its obligated to rent it to other companies, to avoid monopolies
20:23
TofuLynx
but because of that... no company does anything
20:24
TofuLynx
btw
20:24
TofuLynx
processingtest seems working!
20:24
TofuLynx
what do you suggest me to do next?
20:24
BAndiT1983
telekom is also providing the cables to other companies, but they still try to push DSL through copper wires
20:25
BAndiT1983
germany also decided laws which should enable more broadband, but it's like everywhere a mess on the market
20:25
TofuLynx
yeah..
20:25
TofuLynx
also interesting fact
20:25
TofuLynx
in your country the company is telekom
20:25
TofuLynx
in mine is Portugal Telecom
20:25
TofuLynx
xD
20:26
BAndiT1983
you remember the thing with image preprocessor which reads only available pixels? you could start with that if oyu like
20:26
BAndiT1983
i think that a telecom, telekom or similar company exists in almost every country
20:26
TofuLynx
BayerFramePreProcessor?
20:26
BAndiT1983
were celebrating new years eve in serbia, also there are such companies
20:27
BAndiT1983
yes, you can modify this one to enable skip of pixels or write new one
20:27
TofuLynx
makes sense!
20:27
TofuLynx
what do you mean skip of pixels? that thing to reduce the resolution to a half or so?
20:28
BAndiT1983
yes, the image would be reduced, but no need to de-bayer
20:29
TofuLynx
just to try to understand?
20:29
BAndiT1983
https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Bayer_pattern_on_sensor_profile.svg/350px-Bayer_pattern_on_sensor_profile.svg.png
20:29
TofuLynx
yes?
20:30
BAndiT1983
i will explain it, don't worry, all credits go to Bertl_oO for the advice long time ago, perfect for quick preview at the moment
20:30
BAndiT1983
usually we know the bayer pattern
20:31
BAndiT1983
so you would write routine which walks over image data and write the know values to R,G and B arrays
20:32
BAndiT1983
if you look at the image i've posted, there are individual layers shown
20:32
TofuLynx
yeah
20:32
TofuLynx
but wait, im sort of lost
20:32
TofuLynx
what are you explaining?
20:32
BAndiT1983
look at the blue channel there, simple to explain that
20:33
TofuLynx
ah ok xD
20:33
TofuLynx
the image you provided is a BGGR pattern?
20:33
BAndiT1983
you read all the blue values, e.g. iterating by +2 and writing to blue array, then skip 1 line and do same read again
20:34
TofuLynx
I see
20:34
BAndiT1983
yes, but the order does not matter, you can take a look at bayer stuff in OC, don't know if it is easily understandable there, but it debayers usual patterns automatically
20:34
TofuLynx
yeah it is
20:35
BAndiT1983
of course there will be a bit of shift in colors, but let's do a practical sample, before assuming
20:35
BAndiT1983
when this stuff is done, we can think about sending look up table to the fragment shader and correct the colors
20:35
illwieckz_
joined the channel
20:35
BAndiT1983
found interesting online LUT generator some days ago
20:36
TofuLynx
fragment shader?
20:36
BAndiT1983
also called pixel shader in DirectX
20:37
BAndiT1983
opengl calls them pixel shaders
20:37
TofuLynx
ah
20:37
BAndiT1983
sorry, fragmentshaders
20:37
TofuLynx
changed nick to: TofuLynx_
20:37
TofuLynx
joined the channel
20:37
anuejn
hey se6astian Bertl and BAndiT1983 : we made another pull request, which fixed lots of stuff :)
20:37
BAndiT1983
rroohhh?
20:38
se6astian
very nice, just read the PR
20:38
illwieckz
left the channel
20:39
TofuLynx
Can you continue the explanation BAndiT1983? :)
20:39
anuejn
rroohhh is a friend of mine
20:40
BAndiT1983
didn't knew about axiom mini
20:41
BAndiT1983
*micro
20:41
BAndiT1983
is there some prototype or just preparations?
20:42
BAndiT1983
TofuLynx, which info do you need?
20:43
TofuLynx
Ok basically
20:43
TofuLynx
You load the image information
20:44
TofuLynx
Then you extract the information from the pixels to the respective color array
20:44
TofuLynx
Right?
20:44
BAndiT1983
yes
20:44
BAndiT1983
you just to skip them in a smart way
20:44
BAndiT1983
*have to skip
20:45
TofuLynx
To skip, it would just increment the step between pixels, instead of 2 it's 4
20:45
TofuLynx
Right?
20:45
BAndiT1983
you read first one then do index += 2 to get 3rd one, next iteration would get 5th one and so on
20:46
BAndiT1983
but there are still some things to consider, especially about G channel
20:46
BAndiT1983
haven't thought about performance and such, but you shoud do mid of 2 G values
20:47
BAndiT1983
i mean in the 2x2 blocks
20:47
TofuLynx
Hmm
20:47
BAndiT1983
think of every 2x2 block as 1 pixel
20:47
TofuLynx
Is it possible to get to know the image width?
20:47
BAndiT1983
of course, it's stored in DNG and is read by the decoder, otherwise it would be hard to process
20:48
TofuLynx
Ok, what do you think when reading the green channel
20:49
BAndiT1983
you would read first G value nad one which is placed imageWidth - 1 further in array
20:49
TofuLynx
Storing the G0 pixel + G1 pixel and then shifting left 1? It would be just pixel[index+1] + pixel[index +width]
20:49
BAndiT1983
then add them together and divide by 2 or multiply by 0.5
20:49
TofuLynx
Yeah that's what I thought
20:49
TofuLynx
Shifting right 1*
20:50
BAndiT1983
you can also shift if you like
20:50
BAndiT1983
why index + 1?
20:51
TofuLynx
I'm basing on the idea that the whole 2x2 block is a pixel
20:51
TofuLynx_
left the channel
20:52
vup[m]
joined the channel
20:52
BAndiT1983
ah, yes, you can go through it in one step, just have to assign arrays in right order
20:52
TofuLynx
So I could just put the index at the R in each block (assuming rggb)
20:52
TofuLynx
Yeah
20:52
TofuLynx
That's exactly my idea
20:52
BAndiT1983
yes, take a look in OCcore, there you have examples for assigning of values to right folders
20:52
TofuLynx
Folders?
20:53
BAndiT1983
sorry, it's late, arrays
20:53
BAndiT1983
have done such stuff with 2 thread, for even and odd rows
20:54
BAndiT1983
one can split even more, but at some point, after long optimization experiments i'Ve noticed, that i was using debug mode, so i've switched to release one and it processed faster than it read the data from the disk
20:54
TofuLynx
Why not 4 threads?
20:55
TofuLynx
1 for each color pixel
20:55
TofuLynx
Uh, nevermind
20:55
TofuLynx
I can't imagine a way about using 2 threads for green0 and green1
20:55
BAndiT1983
this would cause race conditions and IO in memory, which would degrade performance
20:56
BAndiT1983
you don't need it currently, worry about performance as last step
20:56
TofuLynx
Yeah
20:56
BAndiT1983
first algorithms and solid base, performance just when it's really slow
20:56
TofuLynx
As you say
20:57
TofuLynx
Premature optimization is the root of all devil
20:57
TofuLynx
xD
20:57
BAndiT1983
read yesterday an article about premature optimization and it said that at 97%, if one tries to squeeze last 3% out of the compiler, code and machine, it takes more time and effort, than it'S really worth it
20:58
BAndiT1983
real life example, people don't care about such performance much, see it everyday at work where we use java, some solutions on the server are very adventurous
20:59
BAndiT1983
still wondering that it works somehow
20:59
TofuLynx
But dont professional filmmakers and such have high standards?
21:00
BAndiT1983
don't know, not working in the film industry
21:01
TofuLynx
I see
21:04
TofuLynx
What time is it there? 23h?
21:05
BAndiT1983
yep
21:07
TofuLynx_
joined the channel
21:10
TofuLynx_
ok the current approach in bayer frame pre processor
21:10
TofuLynx_
you separated it in two extraction processes, one for odd rows and other for even rows
21:10
TofuLynx_
each one with a dedicated thread
21:12
BAndiT1983
maybe there is a simple solution, thinking about the 2x2 blocks
21:12
BAndiT1983
but currently the loops are going in linear fashion
21:12
BAndiT1983
so it should be fast enough
21:12
TofuLynx_
I think i could do a block based extraction, with 3 threads
21:12
TofuLynx_
4 threads*
21:13
TofuLynx_
but not sure, due to the race issues and so
21:13
BAndiT1983
don't focus on threads, focus on the loop processing
21:13
TofuLynx_
Ok sorry
21:13
TofuLynx_
hmm
21:13
BAndiT1983
think of a clever loop, not how to improve performance, as long there is nothing to profile
21:15
TofuLynx_
what about
21:15
TofuLynx_
diagonal looping?
21:15
TofuLynx_
wait nvm, that doesnt make sense
21:15
TofuLynx_
xD
21:16
TofuLynx_
hmm
21:16
TofuLynx_
what about
21:16
BAndiT1983
the loop is rather simple, take rrgb as base first, afterwards we can convert it to dynamical assignment
21:16
TofuLynx_
columnIndex+=2
21:16
BAndiT1983
you would have just 3 lines of code in the loop
21:16
TofuLynx_
and putting dataUL and dataUR at the same time
21:17
TofuLynx_
by using + 1 in the dataUR
21:17
BAndiT1983
write new one, to learn what it takes to process the data
21:17
TofuLynx_
ok!
21:17
BAndiT1983
otherwise you will get lose overview
21:17
BAndiT1983
first line get red pixel and assigns it to the red array at position 0
21:18
BAndiT1983
seond line gets both green values and creates mid value of them, also assignes to green array at position 0
21:18
BAndiT1983
blue does same as red
21:18
BAndiT1983
next iteration assigns to position 1 in arrays and so on
21:19
BAndiT1983
you don't even need row index
21:19
TofuLynx_
wait huh
21:20
BAndiT1983
just reflecting in what i have implemented in the preprocessor
21:20
TofuLynx_
isnt the extracting process the previous step from debayering?
21:21
BAndiT1983
but it was probably done for jumps between rows, although an "if" could also do the same
21:21
BAndiT1983
yes, and your task would be a preprocessor which avoidds debayering for preview
21:21
TofuLynx_
uh?
21:21
BAndiT1983
you don't need debayering if you extract all the pixels without the gaps between them
21:22
BAndiT1983
it's half the image, but fast to get preview
21:22
TofuLynx_
yeah I understand
21:22
TofuLynx_
but why do i need to remove the debayering step?
21:22
TofuLynx_
dont i just need to modify the extraction step?
21:23
BAndiT1983
because you don't need it then, it'S more simpler
21:24
TofuLynx_
hmm ok
21:24
BAndiT1983
write another one and we will evaluate if it is better to merge the 2
21:24
BAndiT1983
but keep it as simple as possible and don't think about optimizations at the moment
21:24
TofuLynx_
ok!
21:24
TofuLynx_
hmmm
21:25
TofuLynx_
so you suggested to do in a single loop
21:25
TofuLynx_
the even and odd rows ?
21:25
BAndiT1983
yes, you would process every 2x2 block
21:25
TofuLynx_
ah!
21:25
TofuLynx_
ok
21:30
TofuLynx_
i need to add an If that checks if it's at a even row, dont need?
21:30
BAndiT1983
not at all
21:30
TofuLynx_
how do you jump the odd rows then?
21:31
BAndiT1983
it doesn't matter if you process 2x2 blocks
21:31
BAndiT1983
you just have to read all pixels without gaps, see the sample image i've posted before
21:31
BAndiT1983
just for green values you have to add them and divide by 2
21:31
TofuLynx_
uh?
21:31
TofuLynx_
but there is a dataUR and a data LL
21:32
BAndiT1983
forget my class
21:32
TofuLynx_
ah ok!
21:32
se6astian
off to bed
21:32
se6astian
good night
21:32
se6astian
changed nick to: se6astian|away
21:32
TofuLynx_
good night!
21:32
BAndiT1983
write your own class, otherwise you will lose yourself in details which are not required for your taks
21:32
TofuLynx_
hmm
21:32
BAndiT1983
there is not dataUL, RL and so on for you at the moment, just assume that we have RGGB
21:33
TofuLynx_
so
21:33
TofuLynx_
i start with a blank file, is that?
21:33
BAndiT1983
why should the file be blank?
21:34
TofuLynx_
im not sure if I understood you
21:34
TofuLynx_
you said to make my own class
21:34
BAndiT1983
create a new class, like BayersDownscaler or something like that
21:34
TofuLynx_
oh wait
21:34
TofuLynx_
BayerFramePreProcessor::ExtractDownscaled()
21:34
TofuLynx_
this?
21:35
TofuLynx_
nvm
21:35
TofuLynx_
BayerFrameDownscaled::
21:35
TofuLynx_
this?
21:36
BAndiT1983
not Downscaled, but it should be Downscaler to show that it is an actor
21:36
TofuLynx_
ah ok
21:36
BAndiT1983
Downscaled suggests that it is a downscaled data container
21:37
Kjetil
(To scale or not to scale...)
21:37
TofuLynx_
and its variables would be
21:38
TofuLynx_
the raw image data
21:38
TofuLynx_
right?
21:38
BAndiT1983
Kjetil, do you have something to contribute?
21:38
Kjetil
Nah. I'm sorry. I really should go to bed
21:39
BAndiT1983
you can copy most of variables from preprocessor, but just ones which are really necessary
21:39
TofuLynx_
and functions?
21:39
TofuLynx_
like this
21:39
TofuLynx_
void Convert12To16Bit() const;
21:39
TofuLynx_
void Convert14To16Bit() const;
21:40
BAndiT1983
take any you need over to your class, can still be reduced later
21:40
BAndiT1983
important is that you inherit from IFrameProcessor, see header of bayerframepreprocessor
21:43
BAndiT1983
so, off for today
21:43
BAndiT1983
changed nick to: BAndiT1983|away
21:44
TofuLynx_
Bye bye!
21:49
TofuLynx_
left the channel
21:54
g3gg0
left the channel
21:55
heheprime
joined the channel
21:58
heheprime
left the channel
22:21
TofuLynx
left the channel
22:36
rton93
joined the channel
22:38
rton
left the channel