Current Server Time: 23:01 (Central Europe)

#apertus IRC Channel Logs

2018/02/27

Timezone: UTC


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