Previous day | Jump to hour: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Next day

Seconds: Show Hide | Joins: Show Hide | View raw
Font: Serif Sans-Serif Monospace | Size: Small Medium Large

Click in the nick column to highlight everything a person has said.
The Logo icon identifies that the person is a core developer (has commit access).

Notice: Only Gecko based browsers prior to FF4 support the multipart/mixed "server push" method used by this log reader to auto-update. Since you do not appear to use such a browser, this page will simply show the current log, and not automatically update.

#rockbox log for 2004-10-13

00:14:52amiconnBagder: Your pointer idea was indeed helpful. I have to use this in video.rock :)
00:15:42 Quit gromit``` (Read error: 110 (Connection timed out))
00:19:36webguest79I have a question for whoever admins the website...
00:22:23webguest79ok, i'll rephrase :) is there anybody here who can make changes on the website
00:25:38 Quit webguest79 ("CGI:IRC 0.5.4 (2004/01/29)")
00:27:00 Quit _aLF ("bye")
00:34:00 Quit mecraw__ (Read error: 104 (Connection reset by peer))
00:34:21 Join mecraw__ [0] (~lmarlow@
00:40:03 Join PhatPat [0] (
00:41:03 Quit PhatPat (Client Quit)
00:42:35 Join mecraw_ [0] (~lmarlow@
00:43:01 Quit mecraw__ (Read error: 104 (Connection reset by peer))
00:56:03***Saving seen data "./dancer.seen"
01:04:18 Join frsyj [0] (
01:05:23frsyjDoes anyone know what causes the message 'Playlist buffer full' to appear whenever I try and play a song in rockbox?
01:10:02Sebulba02Your playlist size is too small?
01:15:26frsyjCan't I just turn it on and press play on a song?
01:15:40amiconnfrsyj: (1) How many songs are in that directory? (2) What is "Max playlist size" set to? (3) Do you have a full installation (especially: does the .rockbox directory exist)?
01:15:54 Join mecraw__ [0] (~lmarlow@
01:18:14frsyj1) 11. 2) Not sure, looking for the setting now. 3) Yes. Got the 2.2 release for recorder v1 last night. Extracted it to the root of archos. .rockbox folder exists with a bunch of subdirectories and a couple of files (.playlist_control and ROCKBOX.UCL)
01:19:19amiconnHmm. When there are only 11 files it should definitely work... the lowest possible settings for Max playlist size is 1000. But I recommend that you try and install a daily build anyway.
01:20:22frsyjok, I'll give it a whirl
01:20:58amiconnRockbox 2.2 is way old...
01:24:37frsyjCan I delete .DS_Store?
01:26:25amiconnI don't know. .DS_Store is not a rockbox part
01:27:01frsyjseems like there's a few weird files/directories.. windows must make them? System Volume Information sounds windowsy
01:27:50amiconnYes, SVI is windows' system restore folder for that drive
01:28:12 Quit mecraw_ (Read error: 110 (Connection timed out))
01:29:18amiconn.DS_Store is MacOS X "folder information"
01:29:59frsyjAah.. .Trashes might be from there too.. I deleted it anyway..
01:30:15frsyjDaily build is working! Thanks! :)
01:50:06 Join webguest35 [0] (
01:50:55 Nick webguest35 is now known as bagawk (
01:54:32bagawkBagder: are you there?
02:03:36 Quit Sebulba02 ("brb")
02:05:41 Quit frsyj (".")
02:06:25 Quit amiconn (" nite")
02:20:27 Quit bagawk ("CGI:IRC (EOF)")
02:45:46 Quit mecraw__ ("Trillian (")
02:56:05***Saving seen data "./dancer.seen"
03:19:53 Quit AciD (Read error: 104 (Connection reset by peer))
04:40:12 Join webguest02 [0] (
04:44:07 Quit webguest02 (Client Quit)
04:56:06***Saving seen data "./dancer.seen"
05:09:01 Part scott666_
05:54:35 Quit plok ("I'm outta here!")
06:48:47 Join LinusN [0] (
06:56:10***Saving seen data "./dancer.seen"
07:12:55 Join methangas [0] (
07:32:42 Join ashridah [0] (ashridah@
07:52:04dwihnoGreetings everyone!
07:53:07dwihnoOkay, tell me how crazy you find this idea:
07:53:55dwihnoUsing a stock stereo handsfree and replacing the headphones with a pair from my "old" MDR-70
07:54:21dwihnoUsing a bunch of converters and cords, I've tested using my MDR71 phones with my cell phone, and the result isn't that bad really!
07:54:39dwihnoSo with MDR70 phones, music will be more enjoyable
07:55:14dwihnoCrazy of brilliant? :)
07:56:13LinusNsilly! :-)
07:59:49dwihnoHow come? :)
08:00:37dwihnoI thihk the idea is crazy and cool :)
08:06:53LinusNmaybe i don't get it
08:07:21LinusNwhy have MDR70 phones for your cell phone?
08:08:17dwihnoMy phone is mp3-capable
08:09:54LinusNyes, but why not use your archos?
08:10:21dwihnoI ride my bike every day and during the winter the unit is prone to RLD's all the time :/
08:33:44 Join amiconn [0] (
08:34:06 Join Zagor [242] (
08:43:53 Quit einhirn ("Miranda IM! Smaller, Faster, Easier.")
08:56:08Zagoramiconn: why did you rename default_event_handler?
08:56:12***Saving seen data "./dancer.seen"
08:57:03Zagoroh, my mistake.
08:57:33LinusNjörg did it
08:57:39LinusNand he didn't rename it
08:57:59Zagoramiconn committed it anyway
08:58:10LinusNoh, my mistake then
08:58:56LinusNi'm not sure i like the solution, but i see the problem he tried to solve
09:00:33 Join kurzhaarrocker [0] (
09:01:33*kurzhaarrocker detects fake stop button events
09:02:28kurzhaarrockerThey occur when the hd is accessed and when my batteries are half drained.
09:03:37Zagorkurzhaarrocker: are you using the latest version?
09:03:49kurzhaarrockeryesterdays daily build
09:04:12kurzhaarrocker(flashed but I doubt that that is important)
09:05:53kurzhaarrockerMy batteries aren't the best any more. While the debug screen tells me they deliver ~ 5.9 V I can see the backlight flicker when the hd is accessed. Maybe they have an unusual high inner resitance. When they are fully charged I don't get those fake stop button events.
09:07:40LinusNwe could filter the keys even harder
09:08:08LinusNi have heard of other guys that still have problens with the keys
09:08:14Zagorbut off is not on an adc
09:08:29LinusNit's not an adc reading problem
09:08:46Zagorso how would we filter then?
09:09:12LinusNmy theory is that the increased adc reading rate accentuates the voltage dip problem
09:09:24kurzhaarrockerWhat surprised me too ist that when I'm in playback and these fake stop events occur I have the fade out - fade in - stop effect. It doesn't occur when I hit stop manually.
09:09:30LinusNfilter == debounce
09:10:06Zagorhow would debouncing help? it only eliminates repeat events.
09:10:44Zagorok you mean filtering out short presses?
09:11:09Zagorit's worth a try
09:13:46LinusNkurzhaarrocker: wanna try it yourself?
09:14:16kurzhaarrockerSend it to phil at and I will.
09:14:26LinusNi meant changing the code
09:14:53kurzhaarrockerI wished I had the ressources for that. If I had I'd dig into triggered recording update. :(
09:17:05LinusNkurzhaarrocker: building...
09:17:21LinusNi'll try to halve the poll rate
09:17:33kurzhaarrocker.. and it seems that you're much quicker at things like that :D
09:21:28 Join [IDC]Dragon [0] (
09:22:20[IDC]Dragonamiconn: nice plugin frenzy
09:23:14[IDC]Dragon@all: just a quick question, will the startup I/O debug code be acceptable in cvs?
09:23:54[IDC]Dragonor should I send it to Jens in private?
09:25:07Zagorsend it privately, i think. it's not much use in the everyday builds.
09:25:58LinusNkurzhaarrocker: sent
09:26:13[IDC]Dragonexcept for field surveys, but we may not need that
09:29:59kurzhaarrockerLinusN: it still stops :(
09:31:03[IDC]DragonZagor: about the button quirk in the FM screen:
09:31:42[IDC]Dragonwhy is FM_MENU and FM_PRESET defined with BUTTON_REL?
09:32:01[IDC]Dragon(maybe there's a good reason which I don't get)
09:32:41[IDC]Dragonthe first is causing the menu "lock", because the menu exits on plain F1
09:32:47 Join einhirn [0] (
09:33:06Zagorno, there is no reason. i have not done the fm screen at all, since I can't test it. cvs annotate says you did that :)
09:33:39[IDC]DragonI think the release was there before
09:34:19Zagori never touched radio.c. but never mind, just change it.
09:34:28Zagori don't like to make changes i can't test
09:34:31[IDC]Dragonoh, sorry then
09:37:55*[IDC]Dragon walks away in shame...
09:38:00 Quit [IDC]Dragon ()
09:39:35LinusNkurzhaarrocker: have you tried with the original firmware?
09:39:48kurzhaarrockernot yet
09:39:48*kurzhaarrocker tries
09:44:19kurzhaarrockerThe original firmware continues playing. The battery status symbol displays ~ 60%, when the hd is accessed it temporarily drops down to one single pixel column.
09:48:00 Quit kurzhaarrocker (Read error: 104 (Connection reset by peer))
09:49:41 Join kurzhaarrocker [0] (
09:52:57LinusNyou seem to have a battery issue
09:53:17LinusNbut rockbox still shouldn't fail on the keys, not when the original doesn't
09:53:38kurzhaarrockerThe 1/4 poll build seems to have succeded. But I should mention that I had the recorder connected to the power adapter during the transfer. (not during the test)
09:53:40Bagderatkbd.c: Keyboard on isa0060/serio0 reports too many keys pressed.
09:53:57Bagder(my kernel log after my daughter's last attack ;-)
09:56:10kurzhaarrockerLinusN about the batteries: I have a external charger that can measure the capacity. It says that the capacity has dropped down to ~ 1100 mAh. They are the original green 1500 mAh thingies that came with the jukebox.
09:57:16LinusNBagder: wow, a kbd DOS attack
09:57:48Bagderyeah, she's almost like a script kiddie
09:57:58LinusNkurzhaarrocker: please run the 1/4 version for a while and let me know if it is ok
09:58:20Zagordid someone knowingly change the default sound settings away from flat?
09:58:28kurzhaarrockerit is running, has accessed the disk a couple of times and stil is running.
09:58:33LinusNthey have never been flat by default
09:58:40Zagoron the recorder they have
09:58:56LinusNnope, bass:6 and treble:6 has been the default for ages
09:59:03*kurzhaarrocker nods
09:59:28Zagormy memory is playing tricks on me...
10:01:28Bagderthe cvs table will be all green in just three more lines
10:02:01 Join oxygen77 [0] (
10:02:26kurzhaarrockerhow boring
10:08:04kurzhaarrockerApropos batteries loosing capacity: What do you think about adding lowering the minimal capacity setting?
10:08:18kurzhaarrocker- adding
10:08:58LinusNyou really should get new batteries instead
10:09:23kurzhaarrockerWith batteries that still have > 1000 mAh? What a waste.
10:10:10kurzhaarrockerI don't need the extended runtime but I'd enjoy a more precise estimation on the remaining play time.
10:10:21LinusNdo you really get 1100 from them, or is this just the estimate from your external charger?
10:11:05kurzhaarrockerThe charger measures that by discharging the batteries at 600 mA. I think that makes it pretty realistic.
10:11:06LinusNi believe the discharge curve changes when the batteries wear out
10:11:46LinusNso i don't think the rockbox battery time estimation works that well on your batteries anyway
10:12:28LinusNbut what the heck, it's no big deal
10:13:09kurzhaarrocker... and there still are new 1000 mAh batteries availabe - somtimes even very cheap.
10:15:18kurzhaarrocker(I believe that you're right about the discharge curve)
10:16:59kurzhaarrockerI encountered the first fake stop event with the 1/4 poll build.
10:17:10 Part oxygen77 ("Cho")
10:17:39amiconnkurzhaarrocker: NICd/NiMH batteries are considered worn out if they only reach ~2/3 of their original capacity
10:17:54kurzhaarrockerThen mine are worn out.
10:19:05kurzhaarrocker2nd fake stop event
10:19:06*kurzhaarrocker tries the original firmware once more
10:22:51LinusNhmmm, we don't have to save the SR, MACH and MACL registers in load/store_context()
10:23:28LinusNin fact, saving SR does more harm than good, since we can't change context with interrupts disabled
10:23:28amiconnLinusN: Ooops!
10:23:43amiconnMACL and MACH should be saved...
10:23:45kurzhaarrockeroriginal firmware doesn't seem to have any problems.
10:23:54LinusNamiconn: we don't use the DSP
10:24:19LinusNkurzhaarrocker: which probably means that they have a lower poll rate
10:24:21amiconnMACL and MACH are the hardware multiplier registers, and they are definitely used
10:26:01LinusNWe use Multiply And Accumulate? where?
10:26:47amiconnMULU / MULS do also use MACL...
10:27:39*kurzhaarrocker forgot how ugly the peak meter in the original firmware was.
10:27:50 Join [ [0] (
10:28:11 Quit [ (Client Quit)
10:28:20 Join [IDC]Dragon [0] (
10:28:28LinusNamiconn: ah, i see now
10:28:44LinusNbut aren't they scratch registers?
10:28:52Bagderfunny lcd problem
10:30:46kurzhaarrockerWith backlight off the 1/4 poll still works. With backlight on stop events occur.
10:31:49LinusNkurzhaarrocker: time for a battery change? :-)
10:32:52kurzhaarrockerBut I liked that colour. :´(
10:33:46amiconnLinusN: Maybe the MAC* registers are considered scratch...
10:33:48LinusNamiconn: looks like we need to preserve the mac registers
10:34:35LinusNonly if we compile with -mhitachi
10:34:52amiconnIirc ordinary functions do save only r8..r14
10:35:10LinusNunless you compile with -mhitachi
10:35:27amiconnr0..r7 and macl/mach are considered scratch, and only saved for interrupt handlers
10:35:31LinusNand if you compile with -mhitachi, you can use -mnomacsave to still not save the mac regs :-)
10:36:16LinusNi'll remove sr, macl and mach from the context
10:36:16[IDC]Dragonspeaking of compile flags, how about -Os for the usual build?
10:36:41amiconnI'd rather vote for -O2 ...
10:37:07[IDC]DragonI though that's the current
10:37:44amiconncurrent is -O
10:37:49*[IDC]Dragon is concerned about size, not speed
10:38:44kurzhaarrockerBut if we had more speed we might be able to do ogg decoding
10:38:44*kurzhaarrocker runs away
10:38:57amiconn[IDC]Dragon: Iirc you reported that someone tried -Os for the fm, and it didn't fit either
10:39:22[IDC]Dragonmaybe now it does
10:39:25amiconn[IDC]Dragon: Btw: The voice ui is really responsive on Ondio now :-)
10:40:09[IDC]Dragonyes, it's nicely masked, better than for recorders
10:42:31[IDC]Dragonit was a commit-and-run yesterday, I hope everyting still works
10:42:51[IDC]Dragonlike purge after playback, etc.
10:43:35amiconnSeems to work nicely. It even works if a plugin calls the default_event_handler and an MMC is inserted...
10:44:04[IDC]Dragonthe -Os flag does some substantial save, I forgot if it was 1.5 or 3 KB, but something in that range
10:44:13LinusNhow does the poweroff work for you?
10:44:34[IDC]Dragonif you ask me, I haven't tested
10:44:44[IDC]Dragonsee the "run" part
10:44:49amiconnPoweroff works fine on Ondio.
10:45:37LinusNremoving macl/h and sr from the context worked nicely
10:45:53amiconnI still wonder if it would be even better to fake a real poweroff (the user may continue holding the button)
10:46:12LinusNhow does the original firmware do?
10:46:12[IDC]DragonI'm all for it
10:46:41[IDC]Dragonit displays a progress bar while shutting down
10:46:42LinusNwhy would the user keep holding the button?
10:47:01kurzhaarrockerAsk that user, LinusN
10:47:18LinusNi don't think i'll find one
10:47:41[IDC]Dragonbecause a too short press doesn't power it down
10:47:52LinusNa too short press will not say "shutting down"
10:48:35[IDC]Dragonso the to-be-found user may hold it until she sees the desired response
10:48:59LinusNor (if you have it in your pocket) for several seconds
10:49:11[IDC]Dragonto which the new splash is an improvement
10:49:21LinusNbut it will power down when the user releases the button
10:51:56Zagorfaking shutdown early is a good thing, imho. it gives the user a better impression. he is not really interested in our housekeeping, he just wants to turn off the player.
10:52:26LinusNi don't think it does any harm
10:52:45LinusNbut he really should release the key
10:53:05LinusNif the housekeeping takes long, the hardware might shut down
10:53:35Zagorwell people tend to stop pressing buttons as soon as the desired effect has occured
10:53:44LinusNyesm the "shutting down" message
10:53:44[IDC]DragonI think the most natural is to write the shutdown message while we're doing something, then fake off
10:54:05LinusNin the ondio case, yes
10:54:22ZagorLinusN: seeing the machine shut down is a massively more convincing reason to stop pressing the button
10:54:31LinusNi agree
10:54:43LinusNand in the fm/v2 case, it doesn't matter
10:55:13LinusNlcd_clear_screen() right before power_off()
10:55:31Zagorand turn off backlight
10:56:05Zagoralso cranking contrast to lightest would be good (as suggested yesterday)
10:56:13***Saving seen data "./dancer.seen"
10:56:26kurzhaarrockerBlind users won't notice. Maybe it should say "The unit is now off" :)
10:57:01[IDC]Dragonkurzhaarrocker: I thought you went away, to implement ogg
10:57:42kurzhaarrocker<- must do weird things in java for money.
10:58:16[IDC]Dragondo it in java then
10:59:02kurzhaarrockerMaybe tomorrow afternoon, [IDC]Dragon.
10:59:23[IDC]Dragonok, but no later, users are waiting
11:02:20LinusNamiconn: wanna try the poweroff now?
11:03:01 Join webguest38 [0] (
11:07:37 Quit webguest38 (Client Quit)
11:08:33amiconnLinusN: Can't do that atm, /me @ work, Ondio @ home...
11:08:54LinusNi have committed the fake poweroff code
11:09:45[IDC]DragonI can try a bleeding edge, Ondio here, but compiler @ home
11:10:41amiconn[IDC]Dragon: I can compile, but not test
11:11:33[IDC]Dragonbleeding edge should compile for me
11:15:29[IDC]Dragonjust have to wait ~5 more minutes
11:16:00 Join GarBage [0] (
11:16:16[IDC]DragonLinusN: you didn't clear the screen content?
11:17:14LinusNnope, the lcd contrast should do the trick
11:19:22[IDC]DragonI'd still do that, dunno if it's that low in all circumstances
11:20:42amiconn[IDC]Dragon: (video.rock) (1) Did you notice my speed fix kludge? (2) I have an idea how to enable contrast setting on Ondio...
11:20:47LinusNmaybe not, let's see
11:21:10LinusNit might even look "better", since the screen isn't really clear in a real poweroff situation
11:21:30[IDC]Dragon(1) I have seen some ratio formula, but didn't have a 2nd look
11:21:51[IDC]Dragon(2) which is?
11:21:53LinusNoh, the ondio doesn't have a contrast setting?
11:22:12[IDC]Dragonjust while playing video, out of keys scared me :-)
11:24:01amiconn[IDC]Dragon: (2) Using the menu key as shift, then Left or Right. Menu alone will still be the stop seek
11:24:33LinusNwow, this is good (from the misticriver board):
11:24:34LinusNhi maties;
11:24:34LinusNi'm a newb from aus
11:24:34DBUGEnqueued KICK LinusN
11:24:34LinusNgimme 10 reasons y iriver h340 is the best; better than ipod, i wanna yell it 2 mi mate. i might get da h340; is the screen good??? gimme all da good points about it and da bad 1's 2
11:24:34[IDC]Dragonamiconn: did you notice the top pixel row looks odd, with video?
11:25:10LinusNtotally unreadable for old people like me :-)
11:25:25[IDC]Dragonyou'r no gangsta rapper?
11:25:45LinusNand he posted again, when nobody answered:
11:25:55LinusN"n e 1???
11:25:55LinusNthanx "
11:26:09Zagorhe haven't even seen it, yet is convinced it's "the best"? people are strange...
11:26:45LinusN"n e 1???" is 8 chars, "anyone?" is 7 :-)
11:27:19GarBagehi, people
11:27:46GarBagefirst i'd like to congratulate you on your excellent labour on the rockbox fw
11:27:54kurzhaarrockerGarBagder - is that you, Bagder? :)
11:28:01GarBageit's pretty impressive
11:28:11GarBagekurzhaarrocker : nope
11:28:16LinusNkurzhaarrocker: lol
11:28:21kurzhaarrockersorry, just kidding, GarBage
11:28:39GarBagei'm a developer for the open source neuros firwmare
11:28:52amiconn[IDC]Dragon: Didn't notice... Any idea why that is?
11:29:02ZagorGarBage: any luck with the compiler yet?
11:29:05GarBageand i agree on some points you reflected on your website
11:29:24GarBageit is no free development environment yet
11:29:34[IDC]Dragonamiconn: an LCD glitch? I see it on recorder, too, if in upside down mode like the Ondio
11:29:47GarBagewhich is bad, i know
11:29:53 Join MisticJeff [0] (
11:30:12GarBagethe Texas Instruments compiler evaluation period lasts 90 days
11:30:20MisticJeffH340 Intl. Version...
11:30:26ZagorGarBage: you have to code quickly then ;)
11:30:35LinusNGarBage: is the mp3 codec source code available?
11:31:08MisticJeffUSBOTG, 2" Fantastic Color screen, FM Tuner, FM Record, Docking Cradle
11:31:24GarBageZagor : i have it, but i'm afraid i cannot disclose it, for patent issues
11:31:35GarBagei mean, LinusN
11:31:35LinusNMisticJeff: want, want, want...! :-)
11:31:45MisticJeffIs it better than iPod, they both have their moments
11:31:53ZagorMisticJeff: does it have an RTC?
11:32:09LinusNGarBage: so nobody can build a neuros firmware but neuros themselves?
11:32:09ZagorGarBage: so the mp3 codec is not part of the project either?
11:32:10MisticJeffReal Time Clock?
11:32:14ZagorMisticJeff: yes
11:32:37GarBagenope, there are several unofficial builds on our CVS tree
11:32:39MisticJeffI believe so but never have checked
11:32:44GarBageanyone can compile it
11:33:04ZagorGarBage: but you have to link the mp3 codec as a binary?
11:33:07MisticJeffThe US version of the player is one to stay away from however
11:33:17GarBageZagor : not at this time, you can use it, but only on binary libs
11:33:25LinusNMisticJeff: yeah, saw that
11:33:33MisticJeffZagor: check your email
11:34:28MisticJeffIf you were going to port Rockbox to the H300 platform you'd definitely want the Intl. version
11:34:39GarBagecan you do Ogg, FLAC or any other codec on the archos?
11:34:41LinusNwe will probably need both :-(
11:34:49LinusNGarBage: not on the archos
11:35:17LinusNthe codec is a dedicated mp3 chip
11:35:53GarBageso... your're putting your efforts on the iriver platform, now?
11:36:13LinusNwell, we are porting to it
11:36:20LinusNor rather, i am
11:36:52Zagorwell it's not like you're alone, just because you are the only one with hardware... :)
11:37:24CtcpIgnored 1 channel CTCP requests in 0 seconds at the last flood
11:37:24*LinusN is porting the threading today
11:37:53LinusNlooks like the context switch will be a single MOVEM instruction :-)
11:38:30Zagorooh, nice
11:38:46ZagorGarBage: we are not abandoing archos, we are just expanding our hardware support
11:38:59GarBagei see
11:39:11LinusNi'm not saving the DSP registers, since the DSP stuff is likely to be done in a single thread
11:39:52GarBageyou have achieved a lot, given that no help from the manufacturers itself was granted... i'm truly amazed
11:40:03Zagorthank you
11:40:07LinusNlots of hard work...
11:40:14*Zagor is hungry
11:40:19*LinusN too
11:40:20Zagorlunch time
11:40:48LinusNGarBage: before we go, did you have a specific thing to discuss?
11:41:25 Part MisticJeff
11:41:27GarBagewell.. the remaks on your webpage about the neuros... they are kinda displicent
11:41:45LinusNGarBage: please join the wiki and change it yourself
11:41:57GarBagei was wondering why you have such a bad feeling about it
11:42:40GarBagenope, i don't want to change anything, just know if there was any reason i should know
11:43:07LinusNyou mean the "big and bulky" remark?
11:43:21GarBagenope, it is bulky
11:43:37GarBagejust the "adds very little"
11:44:04LinusNwell, what does it add?
11:44:10GarBageit can do a lot more things, being honest
11:44:52LinusNsuch as?
11:45:09LinusN(hardware wise)
11:45:32GarBagelike added codecs, DSP processing,tempo/pitch shifting, alarms, timed recordings.... since i don't know all the features on the archos i can't tell for sure
11:46:17LinusNi agree about the DSP stuff, but the alarms/timed recordings are just RTC features that can easily be implemented on the archos as well
11:46:37[IDC]DragonGarBage: you're mor than welcome to enrich the wiki entry. It's public!
11:47:00GarBagewell, and the whole radio broadcasting stuff, just to mention some
11:47:38LinusNthat web page is discussing possible target platforms for Rockbox
11:48:04LinusNand we really didn't feel that the neuros hardware had that much "extra" to offer
11:48:38GarBagea GCC port for TI C54x/C55x is on its way, also... but i bet it will take a looong time
11:48:47LinusNand the TI DSP makes the discussion moot anyway
11:49:19LinusNis there any progress on the gcc port?
11:49:42LinusNi really have to go to lunch now, please stick around
11:49:44[IDC]Dragonhardware-wise, the Neuros and Iriver are probably in the same league
11:49:50GarBagei'd really love to see that ported to a GCC target, that will make development much fun
11:49:56LinusNcu later
11:50:10GarBageLinusN : see ya
11:50:22[IDC]Dragonbut not with sexiness and openess
11:51:44GarBagei agree, but i like the added expandability given by the neuros
11:53:39GarBageand the iriver support or 'openness' itself will be quite poor, if it wasn't for you're future port
11:54:32[IDC]Dragonsure, the manufacturer is not opening it in any way
11:54:58[IDC]DragonI meant the compiler, which is a key issue for open source development
11:56:49[IDC]Dragonyour effort is appreciated a lot here, it's just that %&# "wrong" CPU
11:57:00GarBagethe neuros makers do support us, and for me that's a point to support them back.. anyway, just my though, i'd beter support any company which hears and cares than any other which don't
11:57:23GarBagei agree they made some terribly decissions in the past
11:57:42amiconn[IDC]Dragon: The ratio formula is because of your .rvf design, as it stores the frame time *as no. of CPU clocks*, and the Ondio has a different clock...
11:58:04[IDC]Dragonthe decision might be perfectly OK, from a professional and commercial standpoint
11:58:54[IDC]Dragonamiconn: yes, as this has to perfectly match the encoding, to maintain long-term A/V sync
11:59:40[IDC]DragonI knwe that catch with the video player, should have warned you
12:00:19[IDC]Dragonaway now, lunch
12:26:37 Join AciD [0] (
12:50:16 Part kurzhaarrocker
12:56:17***Saving seen data "./dancer.seen"
12:56:57[IDC]Dragonback again
13:07:16amiconn[IDC]Dragon: (1) Perfect-match sync can be done a different way (2) The round-off error with Rec->Ondio is around 1/50000, less than 1/10 sec per hour
13:10:46ZagorGarBage: we do not dislike neuros, we just can't support the player since there is no free compiler available. we have very good relations with joe born.
13:12:59LinusNi think i have a good idea regarding the voice mode
13:13:29LinusNthe idea is to implement an "emergency" mode for the blind:
13:14:04ZagorBagder: do you feel like hacking up some perl to create id3 indices like we discussed on the list?
13:14:07LinusNhold Play when you start the player, and rockbox adjusts the settings for voice
13:14:19Zagori'll start banging up some browser code in the sim
13:14:37LinusNresets the buffer sizes, enables voice, resets the language etc
13:15:08ZagorLinusN: what if there is no .voice file on the disk?
13:15:27LinusNalso, i think we could add a tiny .voice file to the distribution, with one entry: "no voice file"
13:16:13Zagorah, neato
13:16:32LinusNalso, the emergency mode could accept any voice file, regardless of language
13:16:49Zagorfirst match?
13:17:05Zagorsuch as novoice.voice ;)
13:17:33LinusNis it likely that a blind person has two voice files?
13:17:50Zagorif we ship a minimal default, then yes
13:17:58LinusNno, i mean two languages
13:18:36Zagori guess people could be experimenting with different voice files (at&t vs ms etc) but any of them will do I guess
13:18:44LinusNif he has, he probably understand both languages
13:18:55LinusNthere can be only one voice per language
13:19:44LinusNbut you can fake it by putting Mary in deutsch.voice
13:19:56LinusNthen you select the voice by changing language :-)
13:20:48LinusNyou can even have pseudo languages, english_mary.lang/voice
13:20:59LinusNas long as there is a .lang file
13:21:22LinusN.lng of cource
13:27:15 Join iriver_srn [0] (
13:29:41LinusNso it searches for english.voice first (which is the default language)
13:30:09LinusNif it isn't present, it takes the first match that isn't "no.voice"
13:30:19LinusNelse it takes "no.voice"
13:45:02 Join webguest29 [0] (
13:51:38Zagorsounds good
13:58:11 Quit webguest29 ("CGI:IRC")
14:26:44 Quit einhirn (Read error: 54 (Connection reset by peer))
14:45:42BagderZagor: you know/have/use any id3 stuff for perl?
14:45:54Zagoryeah, hang on
14:46:20Zagoraw crap, my home box is off. hmm...
14:47:29ZagorI think it was MP3::Info that I used
14:47:54LinusNZagor: what do you think about dave's idea?
14:48:05Zagorit will take lots of ram
14:48:09LinusN(single-file database)
14:48:20Zagoroh that, well that will "just" be slower
14:48:50LinusNyou mean a lot of seeking?
14:49:37LinusNwe can open the file twice
14:49:47LinusNand seek in it with two file handles
14:51:03dwihnothat is possible?
14:51:12LinusNyes, as long as it's read-only
14:53:55Zagori'm not sure using such huge chunks of data as he suggests is good though
14:54:18LinusNreading a line in the database will take time, since we have to parse it, looking for separators
14:54:40 Join webguest37 [0] (
14:55:53Bagderbtw 'libmp3-info-perl' is the name of the debian package
14:56:00webguest37 iRiver Turns Focus on In-Dash MP3 Players
14:56:18***Saving seen data "./dancer.seen"
14:56:43webguest37Marilyn Chen, iRiver's CEO, made the announcement today that her company will develop in-dash players for the car. According to Chen, the units will "integrate an MP3 player, satellite radio and email functionalities on a single-chip solution".
14:57:00webguest37just thought ypu'd like to know...
14:57:05LinusNemail in a
14:57:10Zagorlol email
14:57:32Zagorsure, go ahead ;)
14:57:34Bagderwe lack an email client!
14:57:44Bagdergee, how have we managed?
14:58:03webguest37isn't there an old saying about all projects evolving to read mail?
14:58:21LinusNyup, that will be the end of iRiver :-)
14:59:01Bagder"Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can."
14:59:16LinusNmp3, satellite radio and email in a single chip?
14:59:28LinusNsounds like an april fools joke
14:59:57webguest37probably said "device" and got misquoted.
15:00:03BagderLinusN: and a bad one!
15:00:10Bagderwouldn't fool me! ;-)
15:00:34*webguest37 imagines sat radio -> mp3 ripper
15:00:47webguest37like xmpcr
15:00:57LinusNZagor: the database could still be one file, pretty much your original idea with all files concatenated
15:01:11LinusNbeats me why, though
15:01:16webguest37off to work, bye
15:01:20 Quit webguest37 ("CGI:IRC 0.5.4 (2004/01/29)")
15:01:20LinusNeasier to transfer, maybe
15:01:33LinusNand no opening and reopening of files...
15:01:35Zagorhe cited a worry about only some files being copied
15:01:51Zagor...and judging from the problems we've had with people only installing half of rockbox I think he has a point
15:02:37LinusNtime for a wiki page, maybe?
15:02:52*Bagder installed mp3::info
15:03:01LinusNi'm worried about the parsing of field separators
15:03:12LinusNcan take time on large lines
15:03:47Zagorwell we don't want binary data, so there's no other way
15:03:56LinusNfixed field sizes?
15:04:17Zagorhow many tracks can an album have, then?
15:04:23Zagorhow many songs per year?
15:04:51Zagorfixed size invites trouble
15:05:07LinusNi know, then we have to introduce even more offset pointers
15:05:23LinusNevery line can point to the next
15:05:24Zagordave has a point though about mixed-artist albums. we need them to show up once for each artist
15:05:36Bagderwe do
15:06:02Zagoryeah but when we browse into the album, we only want to show the artist's songs. we don't do that.
15:06:02LinusNwe do what?
15:06:15Bagderneed to support multi-artists per single album
15:06:26Zagorat least I think we want that... don't we? ;)
15:06:31LinusNi want it
15:06:39LinusNi have lots of compilations
15:06:40BagderI'll demand it! ;-)
15:07:00Zagori was referring to only showing one artist's tracks
15:07:14LinusNso, we want a database format with as painless parsing as possible
15:07:26LinusN(short rows)
15:07:35Zagorshort rows does not mean painless parsing
15:07:57LinusNno, but it could mean less items to parse
15:08:11Zagorquite the opposite if you have to skip a lot of lines to get to the next logical item
15:08:21LinusNlike, for instance, his idea of combining albums and song in one line
15:08:43amiconn[IDC]Dragon: r u there?
15:08:48Zagorwell my objection for that is not so much that the lines becomes long, as that it mixes data used on two different occations
15:09:43Zagorthus having to fill the cache with unused data
15:09:51LinusNread his new post
15:10:21Zagorstill bad, he mixes filename with song title
15:10:46LinusNi want a raw filename table first
15:10:47*Zagor calls for dave over the subetheral channel
15:11:32Zagoralso quotes are no good separators, lots of song names contain quotes. tabs are probably best
15:12:02Bagderor slashes or newlines
15:12:10Bagderseldomly used in filenames
15:12:31Bagderhm, no slashes are often used in tracks/artists
15:12:34Zagorfilenames no, but song titles are pretty random in what they use. slashes are probably well used.
15:12:47Zagori've never seen a song name with tab though :)
15:12:57Zagor..or another <32 char
15:13:07Bagderor > 240
15:13:36Zagor>240 is dangerous since some people are using utf-8 in their tags
15:13:37LinusNtab is nice, it's still editable in a text editor
15:13:49BagderI can now parse a song for id3
15:13:56 Join stripwax [0] (
15:13:57Bagderveeeery tricky perl ;-)
15:14:02LinusNwelcome dave
15:14:03Zagorwelcome dave!
15:14:08Bagderwelcome dave!
15:14:14*Bagder joins in
15:14:25Zagorwe don't want to mix filenames and song names. filename is technical data which is not needed for browsing.
15:14:49LinusNwe still need a "raw" filename table
15:14:52stripwaxseparate index mapping Song Name to filename. Cannot do vice-versa since not all tracks will have valid tags
15:15:27Zagorexactly, which is what my song-index does. we just don't want to load the filename to get the song name
15:15:48Zagori think we basically agree, we just need to solve the mixed-artist album thing
15:15:57stripwaxdid you read my latest email
15:15:58LinusNthe file name is only interesting when we want to load the actial file
15:16:14stripwax(i haven't received a copy from the server yet)
15:16:32Bagder600 outgoing mails take a while at times ;-)
15:16:41Zagori'm not happy about mixing albums and songs either. we only use one of them during browsing, and we're very concious about saving ram
15:17:58stripwaxmaybe map artists to individual songs then. or separate the "album names" from the "album name->songs" mappings?
15:18:29LinusNthe general idea is to have lots of single mappings
15:18:52LinusNthat's why we opted for several fils in the first place
15:19:02stripwaxiRiver maps artists to individual songs
15:19:31stripwaxi agree totally, but we could put it all in one self-contained file. we dont' need to load the entire file (hence the offsets, just read the parts we need)
15:19:40Zagorcould you describe briefly how irivers browser works, from the user perspective?
15:19:47 Join einhirn [0] (
15:19:56Zagor(anyone with an ipod here?)
15:20:07*LinusN shivers
15:20:09stripwaxbrowse screens shows a selection of "Artist","Album","Genre","Song Title" or 'Directory Structure'.
15:20:51Zagorwhen you browse into an artist, do you get a list of albums or songs?
15:21:07stripwaxSelecting any of the first four brings a new window showing alphabetical list of the chosen tag. Selecting Artist brings up a list of songs. So does Album.
15:21:13stripwaxtwo seconds.. .let me just turn on my iriver...
15:21:41Zagormy idea was to show a list of albums when you select an artist, including a pseudo album called <all songs>
15:22:14LinusNand in this list we would also include compilations
15:22:15stripwaxiriver takes ages to boot because it loads the entire db on startup ... yawn ...zzzz
15:22:24LinusNhow silly
15:22:37Zagorwe won't do that. we'll be very fast since we want it to work on our 12MHz archoses too...
15:22:55stripwaxlinusn- no because compilation is not by a single artist
15:22:57stripwaxok i'm wrong
15:22:58LinusNwith 2Mb RAM
15:23:13stripwaxselecting artist shows albums
15:23:21Zagorstripwax: right, but it could list all the album the artist is featured on
15:23:39LinusNmaybe with an (F) prepended or something
15:23:53stripwaxyep, looks like that's exactly what iriver does in fact! but then when you select the album it only shows the songs by that artist
15:24:04Zagorright, that's what I expected
15:24:18Zagorit means we need to add a filter in the browser right away
15:24:36stripwaxselecting album shows a list of all artists featured on that album...
15:24:42Zagorbut we'll want that anyway (for year and genre), so it's not a problem
15:24:48stripwax(followed by tracks on that album)
15:25:13Zagorstripwax: so an album shows both all artists and all tracks?
15:25:51stripwaxalbum shows all artists first. selecting an artist from the new menu shows all tracks, by that artist, on that album
15:26:26stripwaxi.e. album->artists->tracks on album by that artist
15:26:30Zagorbut can't you browse into a mixed-artist album and play all tracks from start to finish?
15:26:45stripwaxevery menu also has a 'select all' so you can
15:26:59[IDC]Dragonback from meeting
15:27:15*[IDC]Dragon is overwhelmed by the traffic meanwhile
15:27:16Zagoraha, "clear filter"
15:27:27LinusNre the parsing: each field could have a size field, to make the parsing/reading easier
15:28:10LinusNso you won't have to search for the delimiter
15:28:11ZagorLinusN: yeah, that'd work. then we could use binary data to avoid all the atoi()s
15:28:24stripwaxi.e. ie browser album->shows all artists and also "select all". selecting "select all" shows all tracks by all artists on the album. you can then pick a track or 'select all' to play all tracks
15:28:37stripwaxdefinitely make the db file binary!!
15:29:00LinusNwhy is it that important?
15:29:17LinusNi'd say the opposite
15:29:39LinusNbinary data is often evil
15:29:53stripwaxreally? you'd keep indices (stored in the file) in a text format? so the file could be about 4 times bigger than it needs to be, and takes longer to parse because of the atois?
15:29:58Zagorhellishly difficult to debug user problems
15:30:08BagderI think I favour binary here
15:30:12stripwaxi agree binary data is often evil. the obvious format to use if of course xml.
15:30:22stripwaxbut for embedded devices binary is often best
15:30:26LinusNxml obvious?
15:30:33amiconn[IDC]Dragon: Got my remarks concerning video sync?
15:30:41Zagorwe're obviously from different cultures. :-)
15:30:47LinusNi think we can't avoid binary data here
15:30:59stripwaxof couse xml is obvious - we're representing structured data in textual format
15:30:59Zagorno, I agree binary is best for this
15:31:14Zagorwell let's not go into the xml issue more than "i don't agree"
15:31:15stripwaxi agree
15:31:29 Join dittohead2004 [0] (~alechaney@
15:31:37[IDC]Dragonamiconn: if you mean 13:07, yes
15:31:48LinusNok, so the file could contain this:
15:32:05LinusN1) an index table for all the sub-tables
15:32:07amiconn[IDC]Dragon: yes.
15:32:19LinusN2) a "raw" file name table
15:32:31LinusN3) the rest of the single-map tables
15:33:11amiconnLinusN: Why not use 2 files? The main database, as text, and an index file (that is automatically rebuilt in case it's date is older than the database's) as binary?
15:33:13LinusNand references are made using file offsets
15:33:29LinusNamiconn: that was the original idea
15:33:44[IDC]Dragona dumb question: do you guys here are familiar with how ralational databases work?
15:33:44Zagoramiconn: remember those people who only copy rockbox.ucl/ajbrec.ajz and then come asking why they get errors?
15:34:26Zagor[IDC]Dragon: well on what level do you mean? I know some sql...
15:34:31stripwaxdragon - yes. are you suggesting we use a relational database within rockbox just to store tag info?
15:34:39stripwaxps - dragon? buzz-users?
15:34:50[IDC]Dragonfrom the few things I remember, there are tables mapping from info n to info m
15:35:14stripwaxdragon - see above for my xml comment (and subsequent beating :-)
15:35:22[IDC]Dragonby using the tables in the correct order, you can map from anything to anything
15:35:50Zagor[IDC]Dragon: yes, but it's very cpu intensive since you have to search for everything. we want to avoid that as much as we can.
15:35:53amiconnZagor: Yes I remember. But for those it doesn't matter whether you use 1 or 2 files either
15:36:04stripwaxdragon - rdbs work mostly by storing as much as possible in ram. we want to store as little as possible in ram :-)
15:36:17Zagoramiconn: yes it does. if the database is just one file, they can't forget to copy half of it
15:36:42[IDC]Dragonstripwax: but we can quickly seek on the HD
15:37:08stripwaxdragon - that would eat battery
15:37:17Zagorbasically the system we propose is like that, with sorted indices for each data table
15:37:35LinusNlots of sorted tables
15:37:57[IDC]Dragonstripwax: only during the lookup, how often are you doing that?
15:38:12LinusNand we can reduce the seeking by opening the database with several file handles
15:38:21Bagderok, recursive id3 scanner in perl works
15:38:31LinusNBagder: goodie
15:38:59amiconnZagor: Hence I suggested the index is *automatically* rebuilt if it is older (or not present, of course)
15:39:00stripwaxwould the tag db on rockbox allow us to playlist say, everything by this artists, everything from 1995, etc ?
15:39:23Bagdertools/ committed
15:39:57Zagorstripwax: yes
15:40:00LinusNstripwax: absolutely
15:40:03stripwaxamiconn if it's all in one file, there's nothing to rebuild
15:40:27Zagorbuilding it on the player will be painful, at least on archos players
15:40:36Zagorbetter to do it on the pc
15:40:52LinusNfull ack
15:41:01[IDC]Dragonfor die-hard users, it could be a plugin
15:41:19LinusNfor die-batteries users you mean? :-)
15:41:31[IDC]Dragonthe query will hopefully be a plugin, too?
15:41:45Zagorno, it will be core code
15:41:48LinusNthe browser should be integrated
15:41:58Zagorjust as the directory browser is
15:42:01[IDC]Dragonbye, bye Rombox
15:42:10LinusNmaybe the playlist-from-query could be a plugin
15:42:12Zagorrombox is not a goal in itself
15:42:18[IDC]DragonI know
15:42:39Zagorif we fix the charge-at-boot issue, we don't need the dual-boot feature and rombox will have lots more space
15:43:09[IDC]DragonI won't give up dual boot
15:43:11LinusNstripwax: we have both the original firmware and rockbox in the flash
15:43:33[IDC]Dragonbut the first image may be an emergency loader, not the Archos f/w
15:43:52[IDC]Dragoncarry on please
15:44:10LinusNso, each field has a size
15:44:19LinusNfor easy searching/reading
15:44:26Zagorok so we need reverse lookup tables too, song->artist, song->album and album->artist
15:44:41LinusNloadza tables
15:44:46stripwaxzagor do we? that's just in the tag, right?
15:45:07LinusNthen we would have to *search* in the database
15:45:11Zagoryes but we don't have the full tag when we browse. that's why we need indices
15:45:28stripwaxalbum->artist doesn't really work, it would be album to artistS.
15:45:55Zagorwe need those reverse lookups to for example filter out a single artist in a mixed-artist album
15:46:15stripwaxare we now suggesting a table mapping the cross-product of all tags? genre->years; artist->genres .. .?
15:46:22ZagorI don't think we need album->artist anyway, not sure what we'd use it for
15:46:38Zagorno, all tags are not filters
15:47:03*LinusN gets some more coffee
15:47:05Zagorbasically, we have three "base" tags: artist, album, song. then we have filters: year, genre
15:47:24stripwaxwhy is genre a filter, not a "base" tag?
15:47:30Zagorbrowsing into year 2003 will get you a list of artists with songs from that year
15:47:48stripwaxwhy not a list of albums?
15:47:52Zagorbecause genre is unfortunately so abused it's mostly worthless
15:48:17stripwaxzagor i tag my own music, so i would use this
15:48:18Zagoryou get a list of albums by selecting <all artists>
15:48:43Zagoryes, so you can use genre. it's just that we cannot build the system on the assumption that genre is good.
15:48:59stripwaxbut if genre is bad, the user just wouldn't use it, right?
15:49:25Zagorexactly. thus it's a filter and not a "hierarchy" tag
15:49:33Zagoram I making any sense? :)
15:49:41stripwaxyou were... "hierarchy tag"????
15:50:02LinusNthink of the tags as a tree
15:50:18Zagorwell my idea is that artist, album and song are "hierarchy" tags. those are the three levels of the browsing hierarchy
15:50:41LinusNyear and genre are more like attributes
15:50:43Zagorbrowsing for example year 2003 will browse artists, but with a "year 2003" filter added
15:50:43stripwaxwhy not the starting points for browsing? album->artist(s), artist->album(s), ...
15:50:57LinusNit will be, in the user interface
15:51:24Zagorthe top level user interface will have Artist, Album, Song, Year, Genre etc.
15:51:24 Quit [IDC]Dragon ("CGI:IRC (EOF)")
15:51:52stripwaxso i'm not sure where the hiearchy thing comes from, if the user interface is effectively flat
15:52:07stripwaxok, so in one direction, yes, artist->album->song makes sense
15:52:11Zagorwell it's not really flat, you just enter it at different points
15:53:24Zagorentering at "Albums" gives you all the albums in the database, while going through "Artists->Abba" will show only abbas albums
15:53:39stripwaxwhat i'm saying is, browsing "year 2003" need not browse all artists, it could browse all albums instead. Is the extra step of "all artists" necessary
15:54:06ZagorI believe it will make browsing more friendly. there are a *lot* of albums released in a year
15:54:35stripwaxmy music collection has more artists than albums .....
15:55:09Zagoranyway, having the option of selecting artist or <all artists> is a nice feature i think. i'd want it.
15:55:09LinusNeven if you count the compilations? how?
15:55:46LinusNlet's focus on the database format
15:56:01BagderI need to go, but my embryo tool can already work for some test shots for db format
15:56:08ZagorBagder: thanks
15:56:21stripwax? ok so i'm really confused now. didn't zagor say "browsing year->artists will make browsing more friendly" ? i don't see how, because (including compilations) the number of distinct artists outnumbers the number of individual albums, and suppose I want to quickly find one album released in that year.
15:56:23LinusNBagder: u r00l
15:56:28stripwaxbadger, thx!!
15:57:12Zagorstripwax: then don't look at the list of artists, just select <all artists>
15:57:36stripwaxzagor exactly, it's an extra step... how does that make browsing more friendly?
15:57:38Zagorbut I think your collection is perhaps not the normal case. I think many people have >1 album/artist
15:57:58stripwaxit's just an example... (i'm sure my collection isn't really like that)
15:58:26LinusNwhat would be the typical use case for year browsing?
15:58:37Zagorbrowsing by year->artist is a feature. just because you don't want it in this case doesn't mean it shouldn't be there.
15:59:11Zagorif we make it simple to skip past it, it will not be a nuisance
15:59:18stripwaxlinusn - i'm still trying to figure that out. i was originally thinking genre->album, but clearly genre->artist is important. but genre really is a song-specific tag which doesn't necessarily apply to artists or even whole albums
15:59:42LinusNyeah, an attribute
15:59:53Zagorstripwax: that's why I want it as a filter and not part of the "tree"
15:59:56stripwaxzagor i never suggested removing year->artist... i suggested adding year->album directly! :-) but i agree that if it's really simple to skip past it, then it makes sense
16:00:13 Join elinenbe [0] (~elinenbe_@
16:00:19stripwaxok cool.
16:00:37LinusNso, back to the database
16:00:56LinusNi like the idea of having a "main index"
16:01:17LinusNso we can add "top entries" without changing the code
16:02:12Zagortop entries?
16:02:17LinusNwe need to store as little as possible in ram
16:02:39LinusNtop entries == the browser starting points
16:02:41stripwax"TITLE"->offset; "ARTISTS"->offset etc
16:02:48LinusN"artist", "album" etc
16:04:25LinusNwe might want several versions of each table, sorted in different ways
16:04:51Zagori don't think many people want different sorting actually
16:05:17stripwaxlinusn- for example?
16:05:23LinusNalbum-by-year, album-by-artist
16:05:58Zagorok. i consider those different tables, not different sorting
16:06:02stripwaxah ok. me too
16:06:32LinusNthe mapping is the same, just sorted differently
16:07:44stripwaxoh, i see, album->song table, but sorted by year of release instead of sorted by album name? the table must then include the year so it's a different table
16:07:49LinusNbut i guess a list of random album names, invisibly sorted by artis would be quite confusing :-)
16:08:01Zagorquite :)
16:08:30LinusNlet's drop the sorting for now
16:09:24LinusNso, the browser loads a table by filling a buffer with the tag strings, and a table with the offsets
16:10:09stripwaxit must also load the text table of whatever the offsets point to...
16:10:22Zagornot until you select an entry
16:11:52Zagorbut we'll need to load the filter tables too, song->year etc.
16:11:53elinenbethis all sounds really cool... keep up the shizzyness!
16:13:06LinusNyou don't need the filter tables too, do you?
16:13:26LinusNyou either use an unfiltered table, or you use a filtered one
16:13:36LinusNloadza tables...
16:13:39stripwaxlinusn - ok, suppose the user browses by clicking on 'Genres'. What actually gets loaded?
16:14:19LinusNthe artist-filtered-by-genre table?
16:14:35stripwaxyou mean filtered or sorted?
16:14:43ZagorLinusN: uh, we can't really created pre-filtered tables can we? 1993->abba, 1994->abba, 1993->aha, 1994->aha....
16:14:56LinusNhmmm, maybe not
16:16:18stripwaxa table of genres; a table of years; and each entry in the artist table ("sorted by artist name")-sorted-by-genre has a pointer to the genre entry. multiple entries for multiple genres by same artist. and another table for artists("sorted by artist name")-sorted by year.
16:17:52Zagoryes, actually we can make prefiltered tables. at least we should calculate how big it would be. after all, there is only a finite number of years in the id3 data mass
16:19:39stripwaxeach song can only be one year (or genre, etc). so sum of sizes of prefiltered tables of artist by year can be no bigger than size of song table.
16:20:09LinusNexample: if we sort by year, we can just use a specific range of the table
16:20:37LinusNthat way we can use the sorting as a filter
16:21:52stripwaxthat's what i said;
16:22:44stripwaxalthough we'd need another table to find that range ! :-)
16:23:26stripwax(i.e. pick genre 'index' from Genres table, look in "artist-by-genre-offsets" table using index, to find the range of the "artist-by-genre" table to use for the given genre)
16:25:18stripwaxthe artist-by-genre table is just one big table, sorted first by genre (really, grouped rather than sorted), then sorted alphabetically by artist name. the Genres table gives us an ID for a given Genre name. The artists-by-genre-offsets table converts that ID to a range of the artists-by-genre table corresponding to that genre. Correct?
16:26:39stripwaxOne thought - it won't allow us to filter by year AND genre :-)
16:26:53stripwax(by the way, that was a joke. would anyone use such a feature?)
16:27:22LinusNall the Folk songs released in 1968, yeah, why not? :-)
16:30:16stripwaxok, in that case we'd just load the entire song table and filter it while we load it! I guess we could have a second "all songs" table that maps from song to genre and year of that song ... ;-)
16:31:18stripwax(actually maybe one such table per tag isn't a bad idea, so that we CAN go song->artist; song->year, and do filtering that way for anything that isn't already in a prefiltered table...)
16:32:09LinusNwe need to break this down into manageable parts, so we can implement it in steps
16:32:22LinusNa wiki page for the database format is a good start
16:34:47Zagor5 tags used means 25 cross-reference tables :)
16:36:31stripwaxzagor - no i meant ONLY song->tag ... and then add in artist->album ; album->song ; and then any of these prefiltered tables . oh , plus separate tables containing all distinct values of 'tag' i.e. all years, all genres.
16:39:28 Part ashridah
16:41:43amiconnLinusN: A completely different topic - we need to find a way to implement multi-volume and changeable media support in rockbox, in a way that does not include too much code on platforms where it is not needed.
16:42:18LinusNfor the ondio flash volumes?
16:43:14stripwaxso 10 tables (song->genre, song->year, artist->album, album->song, album-grouped-by-genre, album-grouped-by-year, artist-grouped-by-genre, artist-grouped-by-year,Year-to-YearID, Genre-to-GenreID)
16:43:23amiconnyup. For MMC, changeable media support is necessary (otherwise rockbox might get very confused)
16:43:54LinusNi imagine a unix-style virtual file system
16:44:03Zagoramiconn: do we need multi volume? can we access both cards at once?
16:44:06amiconnLinusN: Multi-volume support is required to actually perform better than the archos fw (which disables access to the internal flash as soon as a card is inserted
16:44:37amiconnZagor: Yes, technically it is possible, and prepared in my driver. The debug info screen already uses that
16:44:45LinusNwe could even support multiple partitions
16:45:43Zagorwell then we just need to add drive/partition info to struct fat_file
16:45:44amiconnMulti-volume/ multi-disk support would have to be added to both the driver (already prepared for MMC) and the file system.
16:46:51Zagorduplicate fat:fat_bpb and fat_cache
16:46:57amiconnThe file system itself has to know about cheangeable media too. It has to invalidate all open file descriptors if the medium they reside on is removed
16:47:34LinusNdo we really need true hotplugging?
16:47:49LinusNi'd go for a "safe eject" approach
16:48:24LinusNbut it would probably be similar to USB mode
16:48:33LinusNwhich is pretty "hot" today
16:48:34amiconnI'd go for true hotplugging. You can't stop a user from removing the card at any time
16:48:59Zagorhow do we discover the card is removed?
16:49:06LinusNan event
16:49:23LinusNjust like USB_INSERTED
16:49:27amiconnI would like to integrate multi-volume in a single fs tree. For Ondio the internal would be root ( / ) and the MMC mounted under /MMC (fixed)
16:49:30Zagorwell it's a simple thing to go through all open files and close those on that disk
16:49:45LinusNamiconn: that's what i mean with "unix-like"
16:50:08Zagorcan you do that without making tree.c ugly?
16:50:28LinusNtree.c wouldn't have to know
16:50:31amiconnThis way, the .rockbox installation would always be on the internal, so no additional rockbox install necessary on MMCs. Config sector always on internal as well
16:50:42ZagorLinusN: who adds /mmc to root dir then?
16:50:47LinusNthe file system code
16:50:51Zagorbleach, no way
16:50:58amiconntree.c must be informed about disk changes, to re-read dirs
16:51:05Zagorfile system does not now about partitions, and should not
16:51:21LinusNZagor: i mean file.c and disk.c
16:51:39ZagorI know, and still disagree. they don't need to be changed at all for this. keep them pure.
16:52:15LinusNif we don't implement it there, we would have to duplicate the volume awareness everywhere
16:52:34LinusNin the playlist code, the plugins, etc
16:53:20LinusNa virtual file system makes it transparent
16:53:34amiconnIiuc, the fat driver has to be duplicated. Or do I miss the point here?
16:53:38ZagorLinusN: you're right
16:53:48Zagoramiconn: no, just two variables in it
16:54:37amiconnDoesn't it have to handle 2 fats? How does it distinguish them? The FATs are cached (partially), aren't they?
16:54:54amiconnIt may well be one fs is FAT16 and the other FAT32
16:55:04Zagoramiconn: the fat cache is one of the two variables to duplicate. the bpb is the other.
16:55:31amiconn(I admit that I don't completely understand the FAT driver)
16:56:19***Saving seen data "./dancer.seen"
16:56:57 Join [IDC]Dragon [0] (
16:56:57amiconnDoes the file system need a thread and a queue to capture the insert/ remove events?
16:57:07LinusNZagor, stripwax: i have to go, will one of you create a wiki page about the database?
16:57:09[IDC]DragonI got disconnected
16:57:34LinusNamiconn: i think it can be handled like the USB mode
16:57:51Zagorstripwax: go ahead if you feel like it. i'll be away tonight.
16:57:58LinusNme too
16:58:16ZagorLinusN: agreed, no special thread needed
16:58:20amiconnThe USB mode is captured by all threads that have to act on it. The file system doesn't have one
16:58:44stripwaxi'll try if i have time, studying for an important exam for tomorrow :-( laters
16:58:47LinusNamiconn: no, i mean handled by the default_handler()
16:59:35LinusNeach thread handles the event, but the main thread takes care of the file system remounting
16:59:44LinusNjust like usb mode
17:00:14Zagorstripwax: ok, it can wait. good luck with your exam.
17:00:22stripwax:-) thx
17:01:22Zagorgotta go. see you all.
17:01:23 Part Zagor
17:06:19LinusNgotta go too, cu
17:06:29stripwaxyeah me too, bye!
17:06:31 Part stripwax
17:06:34 Part LinusN
17:08:14[IDC]Dragonamiconn: now that the database dust has settled, about the video speed
17:08:51[IDC]Dragonas of now, the encoder has to know what timing the player can achieve
17:09:36[IDC]Dragonthat's why I've put the 11.x MHz in the encoding app, too
17:09:39amiconnThe player could achieve about just any timing, with a little trick that came to mind
17:09:55[IDC]Dragonchanging the timer on the fly?
17:10:23[IDC]Dragonbut first:
17:10:43[IDC]Dragonthe cpu cycles have to be an integer multiple of 4
17:11:03[IDC]Dragonbecause the prescaler is 4 for the usual framerates
17:11:11amiconnThe timer has 2 interrupt sources, GRA and GRB. They could be set to the next-to-lower and next-to-higher integer cycle count of a probably fractional value.
17:11:13[IDC]Dragonthe encoder knows that, too
17:11:56amiconnThen the code decides by a ratio count up/down variable which one triggers the next frame
17:12:22[IDC]DragonGRA and GRB are both available to 1 timer?
17:12:44[IDC]Dragondataseet reading pays off once more
17:12:47amiconnI did use both in my experimental backlight dimming code
17:13:11amiconn(to do software pwm with interrupts - works nicely)
17:13:32amiconnActually, each timerhas its own GRA and GRB registers
17:13:40[IDC]Dragonthen I suggest to expand the video header with one more member: the clock rate this was encoded for
17:13:48amiconnAnd there are even BRA and BRB registers
17:14:09[IDC]Dragonif zero, we assume 11 MHz
17:14:17amiconnIf you expand the header, the format will become incompatible anyway
17:14:46[IDC]Dragonno, there's plenty of unused space, which is guaranteed to be zero
17:15:13amiconnAh, then it should be possible. Didn't know about that
17:15:40[IDC]Dragonlook at tFileHeader.video_reserved[7]
17:15:55amiconnWe would not even need GRA and GRB - just set GRA for the next cycle accordingly
17:17:08[IDC]Dragonthe math which to use might be tricky
17:17:39amiconnIt's actually not very tricky, it's much like the code I use to calculate the grayscale patterns from the brightness
17:18:18*[IDC]Dragon thinks about numerical limits in 32 bit
17:19:26 Join mecraw__ [0] (~lmarlow@
17:19:38amiconnFor converting 11.0592 <-> 12 MHz, this shouldn't be a problem. The ratio is 576 : 625, not too high values
17:20:20amiconnAnd since the precalculation only has to be done once for the playback, we could even resort to 64 bit maths (gcc does allow this)
17:23:22[IDC]Dragonin addition, don't forget the /4 granularity
17:23:37[IDC]Dragon64 bit is plenty, agreed
17:24:04[IDC]DragonI meant th toggle code, that has to run in each frame interrupt
17:24:35amiconnYes. For the toggle code, 2 values have to be precalculated (a binary fraction)
17:26:04amiconnThen everytime the isr is called, it looks at the ratio counter. If it is >0, it takes the shorter cycle count and subtracts value1, otherwise it takes the longer cycle count and adds value2
17:26:42amiconnThis works much like dual-slope a/d-converters do, and should give plenty of precision
17:27:19amiconnWe would need 64-bit maths (if at all) only for precalculating these 2 values
17:27:28[IDC]Dragonok, fine
17:29:55[IDC]Dragonexcept, a plugin doen't have these capabilities from the "legal" api
17:29:56amiconnApart from all that high-end synchronization stuff, the cycle count for typical 67 Hz is around 50000, so simply rounding to integer (+/- .5) gives an error margin of 1E-5, that is around 0.1 s in 3 hours
17:30:45[IDC]Dragonhmm, I started one music clip this morning and had the impression it quickly went out of sync
17:31:25[IDC]DragonI tried to start it on bot recorder and ondio simultaneously
17:31:30amiconnThe legal api would need an additional function to set the cycle count of a registered timer
17:32:34[IDC]Dragonor plugin_register_timer() re-adjusts it, if the callback is the same
17:32:41amiconnMaybe there are other reasons for getting out of sync. Yesterday when I tried a ~4 min music video, it played in sync from start to end. However, later I tried seeking, and then it was *way* out of sync afterwards...
17:33:28[IDC]Dragonseeking should re-sync it
17:33:57amiconnYes, that's strange
17:34:12[IDC]Dragonbut perhaps we should focus on other things first
17:34:31[IDC]Dragonthe Ondio won't be a killer video player
17:34:49amiconnMaybe it's the smallest video player...
17:34:55[IDC]Dragonbut it's nice to know the MMC keeps up
17:35:20[IDC]Dragonmobilephones qualify for that
17:35:53amiconnYes, but the mobile phones that play video are heavier.
17:36:20amiconnMy mobile phone is the same weight as the Ondio (60 g), but it doesn't play video
17:38:36 Join marc77 [0] (
17:40:46[IDC]Dragonamiconn: did you get my email with the startup dump/restore code?
17:41:03*amiconn looks.
17:41:45amiconnyup, got it
17:42:00 Quit dittohead2004 (Read error: 60 (Operation timed out))
17:42:51amiconn[IDC]Dragon: Strange thing: The latest cvs doesn't seem to cause that flakey MMC access for me any more, even as rombox
17:43:41amiconn(latest == yesterday for that matter)
17:44:32amiconnYes, meaning it ceases to work after some (unpredictable) time, usually a couple of minutes, as I described
17:45:17[IDC]Dragonah, that kind
17:45:43[IDC]DragonI should *use* the Ondio, for a change
17:46:00[IDC]Dragonon the weekend, I tried for a while
17:46:52[IDC]Dragonafter a few minutes, it crashed, with wild characters scrolling in the remains of the wps
17:47:21[IDC]Dragonthen it paniced with a stack overflow in the scroll thread
17:47:38amiconnYes, that's one symptom of what I got. I never got crashes when using the .ajz
17:48:16amiconnMaybe there is a stack overflow somewhere, which is simply not noticed with the other units?
17:48:36[IDC]Dragonwe have a debug screen for stack useage
17:49:08[IDC]Dragonwhile still alife, you can look how far they went, worst case
17:49:22amiconnyup. The usb thread often shows 99%, in spite of being the only thread with a larger-than-default stack
17:49:54amiconn(This goes for jbr as well)
17:49:59[IDC]Dragonusb sounds like it should have little to do
17:50:29amiconnusb indirectly calls fat_recalc_free() after usb disconnect
17:51:13amiconnThat's why it has an increased stack (at least the comment in usb.c says so)
17:52:05[IDC]Dragonah, I remember
17:52:26[IDC]Dragonstill, 99% souds very scary
17:53:33[IDC]Dragonif it doesn't happen with .ajz boot, this rather suggests missing hardware inits
17:59:42GarBagehiya guys, i've done as you suggested and minor-changed the Neuros topic on the NonArchos Wiki
17:59:53GarBagelet's see if it please you
18:00:30[IDC]Dragonamiconn: OT: my OndioFM build dropped out of the RomBox space today
18:01:13amiconnUh? Is Ondio FM so much larger than SP? The SP binary is ~154 KB
18:01:25[IDC]DragonGarBage: nice, thanks for the updated links
18:01:59[IDC]Dragonmainly, the Achos f/w is so much larger
18:02:06amiconn[IDC]Dragon: Did you implement philips tuner handling, or what?
18:02:24[IDC]Dragonhaha, no
18:02:54[IDC]Dragonthe startup saver pushed it over the ledge, although being small
18:04:35[IDC]Dragonremember it has the same size limit as the FM, and contains code for 1 tuner, too
18:05:44amiconn[IDC]Dragon: Perhaps you can patch archos firmware for SP with the changed MAS mem addresses, and then build an image from that. Should give more room for the 2nd image, but no tuner/ recording support in archos
18:06:37[IDC]Dragonthe ugly brother of the FM downflash
18:06:58amiconnShouldn't be that hard, actually
18:07:18[IDC]DragonI'd rather start with mini-emergency-rockbox on the Ondio
18:07:22amiconnOf course only try this if you have uart boot, but then you do...
18:07:37[IDC]Dragonit has definitely no charging issue
18:07:43 Join zonk [0] (
18:07:45amiconnHaha, no
18:08:51amiconnBut we should solve the RoLo issue with archos fw before (do you experience this too)?
18:09:13[IDC]DragonI haven't tested enough
18:10:20amiconnIt happened for me every time I tried: It loads and shows the selection screen, selecting setting or browser does work. But the contrast is too low, and it freezes when I attempt to play music
18:10:35amiconn(away now)
18:12:08 Quit [IDC]Dragon ("CGI:IRC")
18:14:44 Join [1]marc77 [0] (
18:14:45 Quit marc77 (Read error: 104 (Connection reset by peer))
18:14:48 Nick [1]marc77 is now known as marc77 (
18:22:40 Join Schoki [0] (
18:48:26 Quit Schoki ("Client Exiting")
18:50:28 Quit einhirn (Read error: 54 (Connection reset by peer))
18:56:21***Saving seen data "./dancer.seen"
18:59:12 Part marc77 ("Cycling Channel")
18:59:13 Join marc77 [0] (
19:19:18 Join _aLF [0] (
19:19:39 Join [IDC]Dragon [0] (
19:20:12[IDC]Dragonhi again
19:20:37[IDC]Dragonamiconn: did you perhaps try the startup I/O?
19:50:42 Join bagawk [0] (
19:52:33 Quit bagawk (Client Quit)
20:12:26 Part marc77 ("Cycling Channel")
20:12:26 Join marc77 [0] (
20:24:23amiconn(back again)
20:24:43amiconn[IDC]Dragon: No, not yet. As you tried it, did you find something?
20:25:18 Part iriver_srn
20:33:44[IDC]Dragonit started "well" in all cases
20:33:52[IDC]Dragonno long term test yes
20:34:06[IDC]Dragongotta leave
20:34:11amiconnHmm. I tried RoLo into archos fw again
20:34:16 Quit [IDC]Dragon ()
20:38:06 Part GarBage
20:51:17 Quit marc77 (" HydraIRC -> <- :P")
20:54:14 Quit elinenbe (" The IRC Client of the Gods! -> <- HydraIRC")
20:56:25***Saving seen data "./dancer.seen"
21:42:11 Join scott666_ [0] (
22:10:09 Quit methangas (" HydraIRC -> <- s0 d4Mn l33t |t'z 5c4rY!")
22:23:11 Quit _aLF ("Leaving")
22:56:27***Saving seen data "./dancer.seen"
23:22:58 Join _Lucretia [0] (
23:24:26_LucretiaAnyone know anything about CalmRisc?
23:24:53_Lucretiait's the CPU inside the MT-500, by the looks of it
23:47:06_Lucretiaany idea where to get a hex2bin prog?
23:55:32 Join nip_ [0] (~pin@ERR.COS.CS.CMU.EDU)
23:56:05 Part nip_
23:56:13 Join nip_ [0] (~pin@ERR.COS.CS.CMU.EDU)
23:56:25 Quit nip_ (Client Quit)

Previous day | Next day