01:06 | apurvanandan[m] | Hi Bertl , the demo code of ft601 uses 16K * 36bits single port ram, which is much more than what MachXO2 can provide. So I wanted to know what ratio of the ebr sram should I give to ft601 controller.
| |
04:32 | Bertl | as little as possible and as much as actually required :)
| |
04:32 | Bertl | off to bed now ... have a good one everyone!
| |
04:32 | Bertl | changed nick to: Bertl_zZ
| |
06:27 | futarisIRCcloud | left the channel | |
07:27 | niemand | joined the channel | |
07:27 | niemand | left the channel | |
07:27 | niemand | joined the channel | |
07:57 | BAndiT1983|away | changed nick to: BAndiT1983
| |
07:59 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
08:44 | supraraj | joined the channel | |
09:09 | BAndiT1983|away | changed nick to: BAndiT1983
| |
09:43 | supraraj | hi BAndiT1983
| |
09:43 | BAndiT1983 | hi
| |
09:46 | se6astian|away | changed nick to: se6astian
| |
10:14 | supraraj | hi se6astian
| |
10:14 | supraraj | how's it going
| |
10:25 | supraraj | left the channel | |
11:11 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
11:13 | Nira|away | changed nick to: Nira
| |
11:48 | futarisIRCcloud | joined the channel | |
11:58 | Nira | changed nick to: Nira|away
| |
12:07 | Nira|away | changed nick to: Nira
| |
12:20 | BAndiT1983|away | changed nick to: BAndiT1983
| |
12:43 | Bertl_zZ | changed nick to: Bertl
| |
12:43 | Bertl | morning folks!
| |
12:43 | apurvanandan[m] | Good morning!
| |
12:44 | Bertl | hey, how's it going?
| |
12:45 | apurvanandan[m] | Its going good. How are you? :)
| |
12:45 | Bertl | fine too thanks!
| |
12:47 | apurvanandan[m] | I have been writing the code for ft601 last week and will be ready by tomorrow. Tomorrow I will receive the usb plugin module and test that code. :)
| |
12:47 | Bertl | great!
| |
12:47 | Bertl | regarding FT601 demo code, what were/are your plans there?
| |
12:49 | Bertl | btw, let me know when you have the hardware in your hands (and some spare time) so we can go through it and how to connect everything together
| |
12:49 | apurvanandan[m] | Demo code is the code given by ftdichip.com for the ft60x development board for spartan 6. I am taking reference from there and writing for LCMX-2000HC
| |
12:49 | apurvanandan[m] | Yes ofcourse (first thing that I will do)
| |
12:50 | Bertl | okay, just be aware that those 'demos' are often of low quality (haven't checked this one yet to be honest)
| |
12:50 | Bertl | so while they are a good source regarding chip details, they are quite often a bad example for how to code it :)
| |
12:51 | apurvanandan[m] | Yes I saw the low quality of the code
| |
12:52 | apurvanandan[m] | I am trying reducing the logic, but am keeping the code generic for 245 mode and 600 mode.
| |
12:52 | Bertl | makes sense
| |
12:58 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
13:15 | Bertl | wasn't aware that Lattice made 'funny' advertisements for the MachXO2 :)
| |
13:15 | Bertl | https://www.youtube.com/watch?v=h_USk-HNgPA
| |
13:22 | apurvanandan[m] | Oh my god, how can this be official XD. It makes me say "ooooo" XD
| |
13:24 | danieel | wtf i have just seen :P
| |
14:20 | Y_G | joined the channel | |
14:45 | Nira | changed nick to: Nira|away
| |
14:48 | futarisIRCcloud | left the channel | |
15:18 | Y_G | left the channel | |
16:38 | Bertl | off for now ... bbl
| |
16:38 | Bertl | changed nick to: Bertl_oO
| |
16:59 | Nira|away | changed nick to: Nira
| |
17:11 | dev_ | joined the channel | |
17:13 | BAndiT1983|away | changed nick to: BAndiT1983
| |
17:25 | dev_ | Good Evening BAndiT1983
| |
17:25 | BAndiT1983 | hi
| |
17:26 | dev_ | hello, I have added the git patch given by u
| |
17:27 | BAndiT1983 | has it worked?
| |
17:29 | dev_ | Yes, It worked , but for some files like M11-1529.VB.mlv , OC crashes by giving segmenatation fault
| |
17:29 | dev_ | It worked for 5DII_14may14_blfixOFF.MLV
| |
17:29 | BAndiT1983 | never said that every file works with it, there are multiple reasons, like color depth or so
| |
17:29 | dev_ | https://www.magiclantern.fm/forum/index.php?topic=11899.0
| |
17:30 | dev_ | using it from here
| |
17:30 | BAndiT1983 | i know the file
| |
17:30 | BAndiT1983 | tested with it, before using the one with cars, because it had more motion
| |
17:31 | supraraj | joined the channel | |
17:31 | BAndiT1983 | have you understood the principle of the patch?
| |
17:31 | dev_ | Yes, it is repeating the frames after 7 everytime
| |
17:32 | dev_ | And we can control frame rate also
| |
17:32 | dev_ | using Qtimer
| |
17:32 | dev_ | Good Evening supragya
| |
17:32 | BAndiT1983 | just a quick and dirty hack
| |
17:32 | BAndiT1983 | what about QApplication part?
| |
17:32 | supraraj | evening you guys
| |
17:33 | dev_ | No , I will look for it also
| |
17:33 | BAndiT1983 | EnableRendering was kept by me in the loop, but probably not required, as it was coming from some tests, to see what is blocking the preview
| |
17:34 | BAndiT1983 | line 91, it's important to understand why it's there, for now at least, later it will be moved to appropriate place
| |
17:35 | dev_ | qCoreApplication::processEvents(QEventLoop::AllEvents, 100);
| |
17:35 | BAndiT1983 | yes, this one
| |
17:36 | dev_ | okay, i will see this
| |
17:36 | BAndiT1983 | just read what it does, it should be rather clear
| |
17:37 | BAndiT1983 | https://doc.qt.io/archives/qq/qq27-responsive-guis.html
| |
17:37 | dev_ | left the channel | |
17:41 | BAndiT1983 | ehm, rather short code review it seems
| |
17:41 | BAndiT1983 | supraraj, i suppose you understand the patch? right?
| |
17:41 | supraraj | gimme a sec
| |
17:42 | supraraj | dirty patch for sure... indentation patch ;)
| |
17:42 | Dev_ | joined the channel | |
17:42 | BAndiT1983 | clang-format was not added yet, had to reinstall my linux system
| |
17:43 | BAndiT1983 | just a matter of few settings in qtcreator
| |
17:43 | Dev | joined the channel | |
17:43 | Dev_ | left the channel | |
17:43 | Dev | changed nick to: Guest70816
| |
17:44 | Guest70816 | left the channel | |
17:44 | supraraj | ??
| |
17:44 | dev__ | joined the channel | |
17:45 | dev__ | internet problems , sorry
| |
17:45 | supraraj | what really is changed?? BAndiT1983 ?
| |
17:45 | supraraj | seems like whitespace shifts to me that's all
| |
17:45 | supraraj | a few things are there apart from that
| |
17:45 | BAndiT1983 | a little bit, but i've added a very important piece of the puzzle in the presenter loop
| |
17:46 | supraraj | dieTime?
| |
17:46 | BAndiT1983 | for example
| |
17:46 | BAndiT1983 | this is very important place there, as it allows the actual playback to be done
| |
17:47 | supraraj | what was the issue prior? give me some context
| |
17:47 | BAndiT1983 | frames were not showing up, but loop was running in circles
| |
17:47 | BAndiT1983 | what can cause such a problem?
| |
17:47 | supraraj | ah so you stopping it for 30msec
| |
17:47 | BAndiT1983 | the answer is in this small loop
| |
17:47 | dev__ | The frames were not showing
| |
17:47 | BAndiT1983 | not only, 30ms stop is one thing
| |
17:48 | supraraj | idx = 7x3 resetting?
| |
17:48 | BAndiT1983 | just look at the name of qt manual link above
| |
17:48 | BAndiT1983 | resetting is also not that important, just done so the loop is endless for testing
| |
17:48 | BAndiT1983 | check line 91
| |
17:50 | supraraj | looks like manual event loop checking
| |
17:50 | supraraj | anyway... it's okay for testing
| |
17:50 | BAndiT1983 | right, it has to be ensured that events of the application are processed, so we have to kick it manually
| |
17:51 | BAndiT1983 | this part has to be moved to some other place
| |
17:51 | dev__ | is like delay function or something
| |
17:51 | dev__ | it*
| |
17:51 | BAndiT1983 | also there are articles by qt about parallel threads for opengl, to ensure the preview is not blocked or not blocking
| |
17:51 | supraraj | hence you added QThread?
| |
17:51 | BAndiT1983 | it's doing the delay for frame rate partially, but also to give some time for event processing
| |
17:52 | BAndiT1983 | don't see qthread there yet
| |
17:52 | supraraj | i mean are you anticipating it?
| |
17:53 | supraraj | nyway QThread is already added in headers... i've to see what is using that
| |
17:53 | BAndiT1983 | probably, but i haven'T read further what qt suggests to do for responsive GUI and OpenGL
| |
17:53 | BAndiT1983 | maybe some leftover from previous tests
| |
17:54 | supraraj | what's the logic behind idx = (idx == 7*3) ? 0 : idx ?
| |
17:54 | dev__ | it will loop over those & frames again and agian
| |
17:54 | dev__ | first *
| |
17:54 | supraraj | 7 hardcoded frames?
| |
17:54 | dev__ | 7*
| |
17:54 | supraraj | oh okay
| |
17:54 | dev__ | yes
| |
17:55 | supraraj | again, only for testing
| |
17:55 | BAndiT1983 | have just grabbed any number, which was in the range
| |
17:55 | dev__ | we can add , allocator->GetFrameCount() which gives exact number of frames
| |
17:56 | supraraj | i wonder if Bertl_oO sees this patch XD
| |
17:56 | BAndiT1983 | how?
| |
17:57 | supraraj | indentation etc :P
| |
17:57 | supraraj | jk
| |
17:57 | BAndiT1983 | oh, trust me, he feels unsettling vibrations when code is not formatted properly
| |
17:58 | dev__ | Can we now move to add ring buffer sort of thing for handling large number of frames
| |
17:58 | dev__ | extending present static allocators
| |
17:58 | supraraj | circular queue?
| |
17:59 | dev__ | yes,
| |
17:59 | BAndiT1983 | the loop is not clear to me yet
| |
17:59 | BAndiT1983 | for(int index = 0; index < allocator->GetFrameCount(); index = index + 3)
| |
18:00 | BAndiT1983 | if you get the frame count, then why is the index increasing by 3?
| |
18:00 | dev__ | GetFrameCount, gives count of total number of frames
| |
18:00 | BAndiT1983 | each frame has 3 channels, this is clear, but then GetFrameCount() is returning some awkward number
| |
18:00 | supraraj | should be GFC*3
| |
18:00 | dev__ | yes
| |
18:01 | dev__ | if number of frames are 15 , then GetFrameCount will return 45
| |
18:01 | BAndiT1983 | the name is rather misleading then
| |
18:02 | supraraj | :( sad nomenclature
| |
18:02 | BAndiT1983 | method name should clearly reflect what its purpose is
| |
18:02 | dev__ | it stores data like this (R1 G1 B1)(R2 G2 B2)..
| |
18:02 | supraraj | change the name
| |
18:02 | dev__ | sorry , I will change the name
| |
18:02 | supraraj | or return divided by 3 from the GFC()
| |
18:02 | supraraj | and explicitly multiply 3 later
| |
18:03 | BAndiT1983 | it should be multiplied before the loop, otherwise it can happen that calculations take place at every iteration
| |
18:03 | BAndiT1983 | compilers have become smarter, but it's better to prevent beforehand
| |
18:03 | supraraj | does that really happen BAndiT1983 ? i doubt that new compilers are so dumb
| |
18:03 | supraraj | oh... you said that :P
| |
18:04 | supraraj | dev__: make sure of datatypes as well...
| |
18:04 | supraraj | someday we may need long instead of int
| |
18:05 | BAndiT1983 | check if unsigned is required
| |
18:05 | supraraj | also, if not already go for uint rather than int
| |
18:05 | BAndiT1983 | we don''t have big frame count at the moment, but it should be considered to use uint16_t or similar
| |
18:05 | BAndiT1983 | this uint* are portable more or less
| |
18:05 | supraraj | yes
| |
18:06 | supraraj | and when handling pixel data... be sure you know the size of variables
| |
18:06 | dev__ | When large number of frames occur, then how we will be storing the whole data of MLV file
| |
18:06 | supraraj | it's better to deal with uint8_t than int
| |
18:06 | supraraj | dev__: circular buffer with indexing
| |
18:06 | dev__ | as for number we are using a big buffer
| |
18:07 | supraraj | we read partially
| |
18:07 | BAndiT1983 | dev_, you just exchange the frames required in the static allocator, if you can't acquire one big chunk or require more chunks, then you need additional pages of memory
| |
18:07 | supraraj | any "big buffer" cannot accomodate the real deal "big data"
| |
18:07 | BAndiT1983 | create also an array or vector to hold info about the state of a bucket, like occupied or free
| |
18:08 | supraraj | think about a DS like this:
| |
18:08 | BAndiT1983 | there are certain limitations from OSes how much memory you can acquire in a big block
| |
18:09 | supraraj | struct oneFrame { bool used; uint8_t frameno; uint8_t* framedata; } <--- something like that
| |
18:09 | supraraj | have a circular buffer of these components
| |
18:09 | supraraj | it's more of bookkeeping work
| |
18:10 | BAndiT1983 | supraraj, i would go for a class which is presenting a movie clip and it has a slim vector of frames, which point to the data in allocator
| |
18:10 | supraraj | well, i was presenting barebones
| |
18:10 | dev__ | why do we need to keep state of particular frame
| |
18:10 | BAndiT1983 | but allocator contains the data about its buckets, which are occupied or free or even can be freed
| |
18:10 | supraraj | implementations do differ
| |
18:10 | BAndiT1983 | it's important to split responsibilities
| |
18:11 | BAndiT1983 | dev__, if the frame was already presented and the playback continues, it can be replaced by new data, so we need to know which data is obsolete
| |
18:11 | supraraj | BAndiT1983: makes sense - that way we can have methods inside which load frames/ discard etc etc
| |
18:12 | supraraj | BAndiT1983: generally that would be an LRU but a circular Q should do
| |
18:12 | BAndiT1983 | LRU?
| |
18:12 | BAndiT1983 | ah, looked it up
| |
18:12 | supraraj | least recently used
| |
18:13 | supraraj | but since playback is not really using random access
| |
18:13 | supraraj | LRU can be replaced with circularQ
| |
18:13 | BAndiT1983 | yes, but it's not a problem to check data in circular manner, so we don't have to go forth and back and just grab next one, at the end it wraps and starts from the beginning
| |
18:13 | BAndiT1983 | maybe it would spare some time
| |
18:14 | BAndiT1983 | more important is to keep track of the cells/buckets and their state
| |
18:14 | supraraj | bookkeeping as i said
| |
18:14 | supraraj | heading off to cook dinner
| |
18:14 | supraraj | already 10:45
| |
18:14 | BAndiT1983 | suggestion: create enum with free, occupied and old and use a vector for now to keep track
| |
18:15 | BAndiT1983 | later we can replace enum with struct/class, if we need more infos of cell state
| |
18:15 | BAndiT1983 | supraraj, no problem, have fun, am here if something is up
| |
18:15 | BAndiT1983 | email is also checked regularly
| |
18:15 | supraraj | enums are better... I Love those macros :) state = BKT_USED;
| |
18:16 | supraraj | state = BKT_FREE;
| |
18:16 | BAndiT1983 | will track the progress of the task actively, but won't work on it, to not intercept too much, instead i will check on apertus wiki, as we had some cleanup tasks there
| |
18:16 | BAndiT1983 | yeah, trying to avoid C, as it makes stuff more difficult and many collisions can occur
| |
18:16 | BAndiT1983 | so C++11 has proper enums
| |
18:17 | supraraj | XD
| |
18:17 | supraraj | okay
| |
18:18 | dev__ | https://trello.com/invite/b/wORIfJVz/a53a0e468e315ab48e230e9eb4b5b1f9/gsoc-work
| |
18:18 | dev__ | I will be using trello now
| |
18:18 | dev__ | it will good
| |
18:19 | BAndiT1983 | dev__, please name the board properly, like GSoC2019: OC frame server or similar, so it's easier to find in the list of the boards on my trello front page
| |
18:20 | dev__ | oKay
| |
18:21 | BAndiT1983 | very good, now it looks properly and can be found easier, as there are multiple gsoc boards
| |
18:22 | dev__ | Yeah ,
| |
18:22 | dev__ | I will try to make methods for static allocator and try to test it
| |
18:22 | BAndiT1983 | just created first comment
| |
18:23 | BAndiT1983 | please also write down the goals and sub-goals in your gdoc file
| |
18:24 | BAndiT1983 | don't know if gdocs has proper diagram module, like plantuml or yed, but they would be better for diagrams, as both can order things properly
| |
18:24 | BAndiT1983 | if you find some other tool, e.g. text to diagram, then just give a note
| |
18:24 | dev__ | I use Gdocs for making diagram
| |
18:25 | dev__ | I think , it is nice
| |
18:25 | BAndiT1983 | but manually? or does it have automatic layout?
| |
18:25 | dev__ | yes, it has layout
| |
18:26 | BAndiT1983 | ok, then go with it first, as long as the diagram has not grown further
| |
18:27 | dev__ | yes!
| |
18:27 | BAndiT1983 | hm, lines are not moving with the object, so not much automation there, usually if you use yed and move the object you connect, the lines follow automatically, also while auto layouting
| |
18:28 | BAndiT1983 | ah, the lines are connected somewhere else, but still not my favourite tool for diagrams, just saying
| |
18:28 | dev__ | I was trying Plant uml today but that looks typical
| |
18:28 | dev__ | That's why , i used gdocs to create the diagram
| |
18:29 | BAndiT1983 | there are a couple of tools which translate text to diagrams, plantuml is common, also using it at work, it looks dated, but if you need complex relations in diagrams, then it helps a lot
| |
18:29 | BAndiT1983 | also using yEd very often
| |
18:30 | BAndiT1983 | as long as you can create sufficient diagrams use gdocs module, but it's rather basic, in my opinion
| |
18:31 | dev__ | okay
| |
18:33 | BAndiT1983 | dev__, have you bookmarked the qt manual url from above?
| |
18:34 | dev__ | Yes, just saw that
| |
18:34 | dev__ | Actually i logged out that moment
| |
18:34 | BAndiT1983 | i know, that's why i've asked
| |
18:35 | dev__ | Which pending events is it refering while describing about Qapllication::ProcessEvent
| |
18:36 | BAndiT1983 | any
| |
18:36 | BAndiT1983 | imagine it like a tree, someone fires an event and it bubbles through to all subscribers
| |
18:36 | BAndiT1983 | and it can happen from any direction
| |
18:38 | dev__ | yes, reading about Qevent , it is making sense
| |
18:42 | dev__ | thanks for your time BAndiT1983 , I will try to extend allocators so we can use them for playback now
| |
18:42 | dev__ | I will update you soon
| |
18:43 | BAndiT1983 | just ask if you need infos
| |
18:43 | dev__ | Yes BAndiT1983 , I will
| |
18:43 | dev__ | Thank you , Good Night!
| |
18:43 | BAndiT1983 | good night
| |
18:44 | dev__ | left the channel | |
18:53 | supraraj | left the channel | |
19:11 | Bertl_oO | changed nick to: Bertl
| |
20:37 | Nira | changed nick to: Nira|away
| |
20:44 | Nira|away | changed nick to: Nira
| |
21:51 | se6astian | changed nick to: se6astian|away
| |
22:01 | niemand | left the channel | |
22:03 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
22:47 | apurvanandan[m] | Hey Bertl, I am removing the whole data loopback code segment. It will reduce the resource usage greatly.
| |
22:48 | apurvanandan[m] | I will write only data streaming mode.
| |
23:01 | Bertl | good
| |
23:28 | Y_G | joined the channel | |
23:50 | Y_G | left the channel | |
23:50 | Y_|G | joined the channel | |
23:50 | Y_|G | left the channel | |
00:25 | Spirit532 | left the channel | |
00:26 | Spirit532 | joined the channel |