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).

#rockbox log for 2005-05-30

00:05:16preglowSlasheri: this will become a rather large patch, i imagine?
00:05:59rasherunless it can be cut up and committed in bits
00:06:20preglowwhat's the point?
00:07:24t0masI think I've found a bug
00:07:31t0masanybody has time to verify?
00:07:35t0mas(in simulator)
00:08:06rasherto let LinusN etc. easier check the patch
00:08:18t0maswhen you checkout a clean rockbox-devel, then make in tools, then create a build dir, and configure for iriver X11 sim there
00:08:20t0masthen type make
00:08:31t0masyou'll get this: make[1]: *** No rule to make target `@make'. Stop.
00:08:40rasher"this is a patch that adds the pcm playback thread" "this is a patch that changes the output plugins" etc.
00:09:07t0masand the error is because of this:
00:09:07t0mas @$(MAKE) -C $(SIMDIR) OBJDIR=$(BUILDDIR)/simn @$(MAKE) -C $(ROOTDIR)/uisimulator/common OBJDIR=$(BUILDDIR)/comsim
00:09:22t0masit should be 3 lines:
00:09:22t0mas @$(MAKE) -C $(SIMDIR) OBJDIR=$(BUILDDIR)/simn
00:09:22DBUGEnqueued KICK t0mas
00:09:22t0mas @$(MAKE) -C $(ROOTDIR)/uisimulator/common OBJDIR=$(BUILDDIR)/comsim
00:09:27t0masthen everything is fine
00:09:51t0mas(in my Makefile on line 48, but that can be different)
00:10:01Bagdert0mas: this is in the root makefile you mean?
00:10:20rasherWhoa.. mention makefiles and Bagder appears
00:10:34t0masBagder: yes
00:10:45t0masrasher: I was just about to hilight him ;)
00:11:02BagderI don't get that error
00:11:34Bagderare you saying it makes one instead of two lines in there?
00:11:57Bagdercygwin sed magic I guess...
00:12:01CtcpIgnored 1 channel CTCP requests in 0 seconds at the last flood
00:12:01*Bagder checks
00:12:10Bagderhow odd
00:12:12t0masinput: 9 S X 6
00:12:14Bagderworks fine for me
00:12:41t0masline 48 of the root makefile gets: " @$(MAKE) -C $(SIMDIR) OBJDIR=$(BUILDDIR)/simn @$(MAKE) -C $(ROOTDIR)/uisimulator/common OBJDIR=$(BUILDDIR)/comsim"
00:12:59t0masGNU sed version 4.0.9
00:13:07t0masGNU Make 3.80
00:13:10BagderGNU sed version 4.1.4
00:13:29Bagderthe 'n' after sim is supposed to be a newline
00:13:44Bagderif you check configure line 610
00:13:46t0masso it's missing a \ somewhere
00:13:57Bagderthere is a \ there
00:14:18t0mas" simmagic='/#SIMUL#/c\ @$(MAKE) -C $(SIMDIR) OBJDIR=$(BUILDDIR)/sim\n @$(MAKE) -C $(ROOTDIR)/uisimulator/common OBJDIR=$(BUILDDIR)/comsim'"
00:14:18Bagderwhich is why it works for me
00:14:19t0masthere is
00:15:20amiconnsed 4.0.9?
00:15:37amiconnI have 4.1.4 on cygwin, and 4.1.2 in debian
00:18:33t0masupgrading to 4.1.4
00:18:49t0masand then I'll test again :)
00:19:08t0masit's compiling :)
00:19:23t0masah, done
00:19:24Bagderit is actually the first time I ever used the c command in a sed expression ;-)
00:20:15t0masit works
00:20:19t0maswith 4.1.4
00:20:37Bagdercool, but not so cool that we need that
00:20:54t0masjust put it in the wiki somewhere...
00:21:03t0masit's not that hard to add a newline and remove an n
00:22:31t0masgood night :)
00:23:13 Quit ashridah ("Leaving")
00:31:42 Join markun [0] (
00:32:19markunCoCoLUS: The center scrolling patch is in the patch tracker
00:55:50 Join ]RowaN[ [0] (
01:00:08]RowaN[anyone know of a UK reseller of replacement iriver hds?
01:01:03 Join austriancoder [0] (~austrianc@
01:01:49markunhi austriancoder!
01:09:10austriancoderany work done at grayscale?
01:09:50markunYes, I'm trying to get 1-bit bitmaps to render faster.
01:11:05austriancoderah cool
01:11:33amiconnIt should be simple... if only I had my iriver yet :(
01:11:39markunI should finish it just so that I don't see all the complaints in the irc logs :)
01:12:03thegeek_gcc refuses to compile with both gcc 3.3.4 and 3.4.3
01:12:34thegeek_oh well
01:12:39austriancodershould there be an option to set the remote lcd backlight timeout?
01:14:05 Quit matsl (Remote closed the connection)
01:16:16***Saving seen data "./dancer.seen"
01:17:02 Quit preglow ("leaving")
01:18:09rasherI'd say the remote lcd should have more or less the same options as the main lcd - or they could be "mirrored"
01:18:40rasherand since we already have different options, probably the former
01:21:04 Join thegeek [0] (
01:23:18rashernot that I'm an authorative source.. how's the radio doing?
01:25:31austriancoderi am working atm at a nice interface for the uda
01:26:50 Quit thegeek_ (Read error: 60 (Operation timed out))
01:35:42 Quit edx (Read error: 110 (Connection timed out))
01:39:55 Join bagawk [0] (~Lee@bagawk.user)
01:55:08 Quit bagawk ("Leaving")
02:03:29austriancoderi can't build the iriver simulator on x11 !!
02:03:29 Nick RED_M_CHIU is now known as RED_M_INFINITY (
02:08:28 Part LinusN
02:15:22rasherwould be nice to get sensible radio, because I sure haven't bothered with iRiver's radio function
02:16:12austriancoderi will do the best
02:16:53rasherI'd switch to radio mode and I'd immediately want to switch back
02:17:00rasherthe interface seemed so hostile
02:17:24austriancodercurrently it is much "harder" to switch between the modes
02:17:49rasherwell I'm not too concerned with the actual switching
02:18:38 Join StrathAFK [0] (
02:18:55austriancoderextended remote backlight stuff in cvs
02:21:04rasherso it is
02:24:50 Quit rasher ("CGI:IRC (EOF)")
02:25:37 Join rasher [0] (
02:27:52rasherIt's acting weird
02:28:35rasherIt's more or less controlling the main lcd
02:28:44rasherat least if I change it to "on" or "off"
02:30:28austriancoderwill fix it
02:31:30rasherdo you see a bug, or is it a mystery?
02:36:06 Quit Strath (Read error: 110 (Connection timed out))
02:36:10austriancoderat the moment it is a mystery
02:36:17austriancoderbut i am searching...
02:36:59rasherAre you getting the same?
02:37:19rasherokay, at least it's not me being stupid
02:37:37austriancoderon/off are weird... setting it e.g. to 1 sec works
02:38:35rasherindeed it does
02:42:07*austriancoder has maybe found the bug..
02:44:52austriancoderfound it
02:44:56austriancoderfixed it
02:45:00austriancoderwill commit it now
02:45:58austriancoderrasher: could you check it?
02:51:35rasherHrm.. doesn't look fixed to me
02:51:48austriancoderwhat does it now?
02:51:56rashersame as before
02:52:09rasherchanging remote-lcd settings>backligt to "on" turns on the main lcd
02:52:13rashersame for off
02:52:39austriancodermaybe it needs some time to be in cvs
02:52:54rashermaybe I need to update from cvs.......
02:53:25austriancoderrevision of apps/settings_menu.c should be 1.177
02:53:36rasheryeah.. let me just build again
02:54:18rasheryup, fixed
02:54:52austriancoderfine ;)
02:55:35HCl :)
02:55:48*HCl can't wait to get the runtime database up and running
02:56:53austriancodera gui "lib" for rockbox would be fine... to make advanced apps
02:57:08*HCl wonders whether markun is still awake
02:57:14HClyou don't need a gui lib to make advanced apps
02:57:19markunYes, I am.
02:57:27HClbut you'll just get advanced apps with a crappy interface
02:57:30HCllike databox :P
02:57:45HClmarkun: i'm not sure whether i'm gonna pull 11 am tomorrow o.o
02:58:09austriancoderi want to have a nice user interaface in my next big thing for rockbox
02:58:44austriancoderbut therefore i need c++
02:58:56HCli highly agree.
02:59:04HCli was thinking about the output of the searchengine today
02:59:11HCland i found out i needed checkboxes
02:59:25HClso you can select certain songs out of the results
02:59:31austriancoderis c++ allowed/wanted in rockbox code?
02:59:38HCllots of core devs are against it..
02:59:41HCli don't know why.
02:59:49HClthey just fear oo, i think :P
03:00:15*austriancoder has an idea
03:00:23HClyou can still do OO
03:00:24HClin c
03:00:28HCljust make a lot of functions
03:00:32HClthat work on a structure
03:00:35HCland pass the structure along
03:00:40HClthats how oo compilers work anyways.
03:00:44rasherif gtk can manage a toolkit in c, so can you, I'm sure
03:00:47austriancoderif i put the oo code into an lib and use it then.. it should be ok?
03:01:08HClaustriancoder: unless you already have some code laying around, it should be pretty possible to do oo in C
03:01:12HCljust by doing it by hand
03:01:35rasher"They" don't like that anyway
03:01:39austriancoderi have some code for an gui in opengl
03:01:48austriancoderbut i will do it in c...
03:01:51rasher(doing oo in c)
03:02:44HClstruct pie { int bites; } void init_pie(struct pie *p) { p->bites=0; } void take_bite(struct pie *p) { p->bites+=1; }
03:02:52HClrasher: meh.
03:02:58HClrasher: i've done it a little for the database stuff.
03:03:04HCli couldn't stand it all being unstructurized.
03:03:10austriancoderwhere is the "correct" place for such a gui?
03:03:20HClplugin lib
03:03:23HCli think?
03:03:28HClmaybe not.
03:03:45rashera general lib would be better - could use it for the entire ui
03:03:56HCli dunno how to do that though
03:04:00HCland i really need to go to sleep
03:04:24*HCl is glad france voted against a common law in europe..
03:04:36HClthey're beeping trying to turn europe into a second america -.-
03:04:37rasherwait.. common law?
03:04:44austriancoderrasher: yeah.. but where to put the source files.. /apps/gui ?
03:04:46HClconstitution thing..
03:04:50rasherwe already have traties...
03:05:05HClthey want a single constitution thing, for all the countries in europe.
03:05:14HClit was rejected in france, thank god.
03:05:16rasherthat's not at all what this is
03:05:39rasherit's just a set of ground rules for the union
03:06:44HClsame thing :p
03:06:53rashernot even close
03:07:28HCli'm glad france voted against :p
03:07:45HCli *never* want to see europe united as one country
03:07:56rasherThat's not at all what this is about though
03:08:09HClits the first step though :3
03:08:13rasherit's just slightly changed rules for stuff that's already there
03:08:57rasherAre you having a vote on it?
03:09:02HClyup :)
03:09:34rasherI'd seriously encourage reading some more about it instead of voting no because "they want a single constitution thing"
03:09:50HCl :P i have.
03:10:45*austriancoder adds an /apps/gui folder
03:10:56HClvery good idea
03:10:58HCli'll help with that.
03:11:04HCli want dropdownboxes, and checkboxes
03:11:31austriancoderi will convert my opengl gui to a basic rockbox gui..
03:11:37austriancoderi want even more ;)
03:11:43HCl :P
03:11:44Adityaeven better
03:11:48Adityamake openGL work on rockbox
03:11:51Adityathat would kick ass
03:12:29austriancoder"opengl es" is on my big todo
03:12:31Adityait would prob suck up battery like hell.. but hey.. it would def kick ass for the few seconds its on =P
03:13:19austriancoderHCl: saving gui-structure in XML.. is this ok?
03:13:42HClwhat are you gonna do with xml?
03:14:47austriancoderat the moment my opengl gui uses xml to save the current gui settings.. like button1 at 5/5 with size of 14x3.. so i can load it and it get paresd
03:14:54austriancoderso the gui is not hardcoded
03:16:10HCli wouldn't do that
03:16:13HCljust hardcode the interface.
03:16:19***Saving seen data "./dancer.seen"
03:16:19HClyou don't want to load it from disk
03:16:23HCldisk spinup costs battery
03:16:30austriancoderah.. ok
03:16:46HClwe should try to use as little resources as possible
03:16:52HCland especially limit hdd accesses
03:17:33 Quit ]RowaN[ (Read error: 104 (Connection reset by peer))
03:26:53 Join amiconn_ [0] (
03:27:41HClits amiconn! quick! everybody look busy!
03:28:34austriancoderHCl: in the gui the main control thing will be the a mouse-pointer.. is this a good idea?
03:29:30HCli'd say something along the lines of up/down/left/right/select/cancel
03:29:52austriancodermouse pointer?!
03:30:12austriancoderjoystick click = mouse click
03:30:14HClno, no mouse pointer..
03:30:28HCljust up/down/left/right to switch to certain controls
03:30:34HCllike tab in windows
03:30:48HCla mouse would really be overkill
03:30:53HClnobody wants to use a mouse on their mp3 player
03:31:01HCllet alone one that can only move in one direction at a time
03:31:11HClremember you can't go northwest with iriver joystick
03:31:20HClor any diagonal, for that matter
03:31:29austriancoderahhh.. ok
03:32:31HCland other players have less buttons too..
03:34:43*HCl goes to sleep now
03:35:48*austriancoder goes sleeping too
03:35:54 Nick austriancoder is now known as ac_sleep (~austrianc@
03:44:14 Quit markun ()
03:45:09 Quit amiconn (Read error: 110 (Connection timed out))
03:45:09 Nick amiconn_ is now known as amiconn (
04:05:35 Join QT_ [0] (as@area51.users.madwifi)
04:09:57 Quit QT (Read error: 148 (No route to host))
04:42:22 Join bipak_ [0] (
04:47:16 Quit Aditya (Read error: 104 (Connection reset by peer))
04:57:57 Quit bipak (Read error: 110 (Connection timed out))
05:00:29 Quit ac_sleep (Read error: 113 (No route to host))
05:16:20***Saving seen data "./dancer.seen"
05:31:43 Nick StrathAFK is now known as Strath (
05:50:22 Join Harpy [0] (
06:22:19 Quit rasher ("CGI:IRC (Ping timeout)")
06:42:18 Quit tvelocity ("Leaving")
06:51:53 Join ashridah [0] (
07:16:23***Saving seen data "./dancer.seen"
07:38:55 Join LinusN [0] (
07:46:49Bagermorning, Linus
07:47:59amiconnmorning all
07:51:10amiconnThere are some red builds :(
07:52:33amiconn..and I know why
07:57:04LinusN"someone" forgot that there are more platforms than iriver
07:57:37amiconnFix committed
07:58:43Slasherimorning :)
07:59:20Slasherihmm, i am wondering how to keep mad_stream_buffer filled
08:02:30Slasheriwith vorbis and flac this was easy to do but converting mpa2wav seems little harder
08:02:53 Quit Rick (Read error: 54 (Connection reset by peer))
08:03:01LinusNit's a little tricky
08:03:02 Join Rick [0] (
08:03:41LinusNthe mad "stream" is very memory oriented
08:04:47Slasherii think that maybe it's possible to use memmove and somehow examine how many bytes are untouched in the buffer?
08:05:06LinusNyou mean when it wraps?
08:06:05LinusNi did like this:
08:06:42LinusNkeep a safety margin at the end of the buffer, enough for one complete frame
08:07:35LinusNwhen libmad returns the "incomplete" eror code, copy the rest of the partial frame from the beginning of the buffer to the safety buffer and retry
08:07:50amiconnHaving a memmove() in addition to memcpy() wouldn't be hard, and maybe useful in other places too
08:07:59Slasheriah :)
08:08:05amiconn(thinking about bitmap scrolling...)
08:08:40LinusNor we can adapt memcpy() and let memcpy and memmove be the same function
08:08:48Slasheriamiconn: I think too that would be useful to be integrated to rockbox firmware
08:08:50amiconnYes, half of it
08:09:25LinusNmeybe i'm missing something, but the only difference is that memmove can handle overlaps
08:09:29amiconna memcpy algorithm is in fact rather simple. If (source_address < en_address)
08:10:05amiconnIf (source_address < dest_address) copy_backward(); else copy_forward();
08:10:21amiconnWe already have copy_forward() aka memcpy() in our code
08:10:58SlasheriHmm, could it be possible without performance degration to modify memcpy to support overlaps too?
08:11:45amiconnIt's possible with almost no performance degradation (the only thing added in code flow is this if())
08:12:04LinusNthis is the "adapt memcpy()" i talked about
08:12:07amiconn...but of course code size will roughly double
08:12:45Bagerso where's the point to do it as one function?
08:13:15Bagerin most c libraries memcpy doesn't handle overlaps
08:14:10amiconnIn fact memcpy usually handles overlaps... but only in one direction, which you won't know if you didn't implement it yourself
08:15:30Bageri mean that it's almost always said to use memmove() when the 2 buffers overlaps
08:16:41Bagerso some new developer in most cases will not use memcpy() for such buffers
08:17:44amiconnHmm, my red build fix didn't help the iriver sim :(
08:18:06Bagerat least until he realise that there's no memmove and see something as "/* memcpy() handles also overlaps */" or "#define memmove(x,y,z) memcpy((x),(y),(z))"
08:18:12amiconnMy guess is some stubs are missing
08:19:24LinusNBager: you're right
08:19:29amiconnBagder: Our current memcpy() doesn't handle overlaps, or rather, it only does in one direction (dest < source)
08:20:21Bageramiconn the usual one (i think)
08:20:21amiconnMy suggestion was to use the forward copy routine, complement it with a backward copy routine, and we would have memove()
08:20:42Bagerand maybe #define memmove as memcpy
08:20:57amiconnThen we have one of 2 options for memcpy
08:21:18amiconn(1) #define memcpy(x, y, z) memmove(x, y, z)
08:21:48amiconn(2) Use the internal copy_forward path of our memmove() as memcpy(), saving the if() execution
08:22:09amiconnThe latter would pretty much require it to be written in asm
08:22:15Bageri think this "if" will not cost so much
08:22:15amiconn(which it currently is)
08:22:51LinusNthe cost of calling the forward() function within memcpy/memmove is a lot worse
08:23:03BagerLinusN just about to say the same
08:23:10Bageror it can be inline
08:23:40Bagerwhich is worse too
08:23:53amiconnLinusN: why?
08:24:25Bageramiconn calling a subroutine is more than just "if"
08:24:30amiconnIt wouldn't if we use asm
08:24:56amiconnThen both copy routines would be like inline in memmove()
08:25:10amiconn, and memcpy() would simply be an alternative entry point
08:25:18amiconn(after the if() )
08:25:37LinusNhow would it then handle the parameter passing?
08:26:21amiconnImho there is no difference
08:26:35LinusNit would have to reread the arguments from the stack over again
08:26:53LinusNhmm, maybe not
08:26:56amiconnI don't know that much about the coldfire abi yet, but SH passes the first 4 arguments in r4...r7
08:27:05LinusNcoldfire uses the stack
08:28:08amiconnIn that case the alternative entry point must be separate from the main code thread, fetching the parameters from the stack and then jump into the main routine
08:28:25amiconnAn unconditional jump shouldn't be that costly
08:28:43LinusNthere are many ways of solving that
08:28:59Bageramiconn but uncond. jump + getting parameters from stack ?
08:29:09Bagercomparing to conditional jump ?
08:29:34amiconnGetting the parameters from the stack is necessary for memmove() also
08:29:53Bageroh, yes
08:29:57Bagerforgot about it
08:30:03amiconnSo the only question is whether it's worth to replace a conditional jump with an unconditional one
08:30:26amiconnIf not, the simple #define solution would be sufficient
08:31:15Bagerthe question then is how more costy is conditional j. compared to uncond ...
08:31:15amiconnIt's test+conditional jump vs. unconditional jump of course
08:32:47Bagerand this overhead compared to all cycles in copy_forward
08:42:56amiconnLinusN: Iriver sim should be fixed now too
08:56:12amiconnThere are no current dailies for the platforms that were red... :/
09:05:21LinusNi don't think that's much of a problem
09:07:29 Join B4gder [0] (
09:08:54B4gderback to fight Qt
09:09:19LinusNmay the source be with you
09:12:19LinusNamiconn: did you have problems with weak symbols when you tested gcc 4.0?
09:15:03LinusNwhich binutils?
09:15:15amiconnOr rather, I had the problem that system.c defines aliases to symbols that are defined within an asm block
09:15:33amiconn...which is prevented to work by the new 'feature' of gcc 4.0
09:16:18amiconn"Given __attribute__((alias("target"))) it is now an error if target is not a symbol, defined in the same translation unit"
09:16:26***Saving seen data "./dancer.seen"
09:16:39amiconnObviously an asm block within a .c is not considered 'the same translation unit'
09:16:58amiconnI tried with binutils 2.16
09:17:27SlasheriHmm, i am not sure how to do this but at least the following wont work at all:
09:17:33Slasheri| size = &InputBuffer[INPUT_BUFFER_SIZE-1] - Stream.next_frame;
09:17:33Slasheri| memcpy(&InputBuffer[0], Stream.next_frame, size);
09:17:33Slasheri| size = ci->read_filebuf((char *)Stream.next_frame, size);
09:17:33DBUGEnqueued KICK Slasheri
09:17:33Slasheri| if (size == 0)
09:17:33Slasheri| break ;
09:17:35Slasheri| mad_stream_buffer(&Stream, InputBuffer, INPUT_BUFFER_SIZE);
09:18:41SlasheriI tried to run that buffer refilling code after each decodec frame but it will just crash the system :)
09:19:12 Nick Lynx_awy is now known as Lynx_ (HydraIRC@
09:19:37CtcpIgnored 1 channel CTCP requests in 0 seconds at the last flood
09:19:37*B4gder doesn't understand the snippet
09:19:49Slasheri:D Maybe LinusN can get the idea
09:20:05amiconnyeah, finally! :) My latest test recording contains an overwritten block at the beginning. Used a test build of rockbox with enabled timecode...
09:20:45B4gderwhat does read_filebuf() do?
09:21:05 Join bobTHC [0] (
09:21:37SlasheriB4gder: it's on codec api, it copies n bytes from filebuffer to a given pointer
09:22:25B4gderso why is there a memcpy() ?
09:22:56SlasheriAh, that was used to move already existing bytes to the beginning of the mad's input buffer
09:23:54LinusNSlasheri: next_frame can be NULL
09:24:26LinusNit will be null when you start decoding, since it hasn't synced
09:24:53Slasheriokay, hmm.. would it work if i just continue the decode and then refill the buffer when next_frame is not null anymore?
09:26:28Slasheritrying that..
09:27:38LinusNyou are supposed to check Stream.error
09:27:53SlasheriHehe, looks a little bit better ;) Now i am not getting a screen filled with random pixels but IllInstr.
09:28:06SlasheriHmm, i am doing that at the beginning of loop
09:28:31LinusNsomething like if(Stream.buffer==NULL || Stream.error==MAD_ERROR_BUFLEN)
09:28:59LinusNif this condition is true, you have to reinit the stream
09:29:23LinusNdepending on if next_frame is NULL or not
09:29:31SlasheriAh, ok. I will do that
09:29:34amiconnLinusN: It's pretty clear now what that overwritten block is
09:29:44LinusNamiconn: great, what is it?
09:30:19amiconnIt happens when the first save operation isn't fast enough and the buffer overruns
09:30:34amiconnIt's the beginning of the second "round"
09:30:43amiconn...pretty clear from the timecode
09:30:51LinusNnice catch
09:31:01LinusNi expect a nice fix too :-)
09:31:03amiconnI'll rework that part anyway
09:31:29LinusNmight be the source of many corrupt recordings
09:31:43amiconn...unifying the file save code (currently there is more than one place), and fix the size limit/ time split issue
09:32:43LinusNSlasheri: could i see your current code?
09:33:27SlasheriLinusN: Hmm, if you want to. It works now much better but still there is lot to do (and currently cpu is running constantly at the highest frequency)
09:34:02LinusNi just want to see where you're heading
09:34:15Slasheriok, i will make a patch :)
09:34:54Slasheri(btw, developing the pcm buffer stuff requires also some code to test it with :)
09:34:58LinusNi just want to make sure that your code won't be too hard to merge into rockbox
09:35:06Slasheriah, great
09:35:25LinusNdon't forget pcm.c/c :-)
09:35:34Slasheriit's not pretty clean at this stage, but it can be separated better in future :)
09:35:49LinusNSlasheri: excuses, excuses... :-)
09:35:57SlasheriHmm, do you know any way how i could include those files in the same patch?
09:40:28LinusNnot sure if that's possible
09:40:52LinusNnot without cvs add
09:41:08LinusNfor which you have no access :-)
09:41:18Slasheriok, i will then put the files individually
09:42:17amiconnShould be possible with the ordinary 'diff' command, but that requires 2 cvs working copies
09:42:24LinusNyes of course
09:42:30amiconnOne plain checkout, and one with the modifications
09:43:04SlasheriThe files should be there
09:43:30Slashericodeclib* should go to apps/plugins/lib, codecvorbis etc. -> plugins/ and pcm* apps/
09:43:51Slasheriand that codeclib is just a quick hack, not even near a final version
09:46:16Slasherinote to all that patch is not useful for anybody, because there is little issue with filebuffer refilling
09:47:15ashridahi'll make sure it ends up on misticriver then
09:48:09Slasheriat least you should wait that gapless mp3 decoding is fully working too
09:48:32Slasheri(currently mp3 decoding won't work at all)
09:49:26ashridahi don't care about mp3.
09:49:29*ashridah huggles vorbis
09:50:22Slasheristill there are a few minor problems with code that prevents a good experience
09:50:28Slasheriyou should just wait little more :)
09:51:15LinusNi think the whole InputBuffer concept is crap
09:51:35LinusNwe have enough problems with too much copying of data
09:51:52Slasherihmm, yes. It would be great to get rid of it
09:52:01SlasheriMaybe some modifications to libmad?
09:52:15LinusNnot necessary
09:52:52LinusNthe only problem with libmad is that it expects the buffer to contain entire frames
09:53:37LinusNwe have the mp3 data in our file buffer already, so we should use that for the Stream
09:54:11LinusNand not use InputBuffer
09:54:49LinusNwe will need special treatment of the BUFLEN case
09:56:00LinusNmy idea is to not use the entire file buffer, but keep a "guard" area at the end, enough to hold a complete frame
09:56:55LinusNso when the last frame in the buffer is incomplete, copy the rest of the frame to there
09:57:18SlasheriHmm, i think that is good idea
09:57:31SlasheriShould be easy to implement to file buffer
09:57:56LinusNand when we wrap the file buffer, init the stream to (bufstart+remaining_frame_size)
10:00:19LinusNwhy do you open and close the mp3 file for every refill?
10:00:26LinusNin pcm.c?
10:00:57dwihnoBug report: When the playlist ends in "locked mode", the lock flag is cleared and the lock icon remains
10:01:08SlasheriAh, i didn't know if it's a good idea to cache file descriptors
10:01:16SlasheriBut i can change the code to do that
10:01:23LinusNjust leave the file open
10:01:32LinusNthen you don't need a constly seek()
10:01:33Slasheriyes, i meant that :)
10:01:50Slasheriokay, changing that :)
10:01:53LinusNSlasheri: you should really at least peek at mpeg.c
10:02:14LinusNwhere we have implemented all this for the archos
10:02:27Slasheriah, i will change that also
10:02:57Slasheri(i am not really sure how the playlist handling should be done)
10:03:09LinusNalso implemented in mpeg.c
10:03:21LinusNno need to invent the wheel again
10:03:22Slasherigreat, so no need to worry about it :)
10:08:04LinusNby the way, i *think* audio.c might be a better name for pcm.c
10:08:40Slasheriyes, pcm is quite missleading :)
10:09:07Slasheriif you think audio.c would be ok, i will rename the file later
10:09:14LinusNhence AUDIO_PLAY, AUDIO_STOp etc
10:12:15LinusNso a codec will run until it reaches the end of the stream, or ci->stop_codec == true?
10:13:30Slasherithat's correct
10:13:46LinusNhow do you handle track changes?
10:13:56Slasherii don't handle yet :)
10:14:08Slasherii am just planning how to do it
10:14:45Slasherior track changes are handled when codecs exit etc. but real track change point in audiobuffer is not set yet
10:15:08LinusNif we want gapless mp3, the mp3 decoder must not know about it
10:15:09Slasheriso tracks will change however, but we don't know the exact time when it has changed for real
10:15:26LinusNif the codec exits, there will be a gap
10:15:32Slasheriof course it won't know
10:15:43Slasherino, there is not if the new codec can be loaded in time
10:15:55SlasheriDepending on audiobuffer size, there is much time to do it
10:16:23LinusNthe mp3 decoder will reinit on each codec load
10:16:23Slasheri(ogg is currently gapless and the codecs will exit)
10:16:37LinusNthis losing the bit reservoir etc
10:16:58LinusNso the mp3 decoder must remain loaded and just be fed the new stream data
10:17:07Slasheriah, ok
10:18:49Slasherii will investigate that more on later when the mp3 codec is working somehow
10:20:17 Nick DMJC-sleep is now known as DMJC (
10:25:41LinusNwhat happens if you stop the music when codec_filebuf_callback() is waiting for copy_n > cur_ti->available?
10:26:48LinusNyou should probably handle ci->stop_codec there too
10:26:51Slasherigood notice, it will lock the codec
10:26:59Slasheriyes, correcting that :)
10:27:15LinusNgotta attend a meeting
10:27:17LinusNcu later
10:27:20Slasheribye :)
11:15:01bobTHClinus strike back ;)
11:16:29***No seen item changed, no save performed.
11:16:35LinusNSlasheri: why do you have your own tolower() function?
11:18:49SlasheriLinusN: is there any similar in rockbox already i could use?
11:19:15LinusNwell, there is...let's see...tolower() :-)
11:19:35SlasheriAh, i have to use it then =)
11:20:02SlasheriBut when i last tried, the linker didn't found any tolower
11:20:11SlasheriMaybe it should be linked too
11:20:11 Join webguest43 [0] (
11:20:18LinusNprobably because tolower() is a macro
11:20:22webguest43WOOT Slasheri go !
11:20:29LinusNand you forgot ctype.h
11:20:36SlasheriBut now i gotta go to work. See you later in the evening :)
11:20:52webguest43dont get run over by a bus please !
11:20:54LinusNcould you upload the latest patch first?
11:21:08webguest43ah, same thought, different sentence !
11:21:10Slasheriwebguest43: thanks for the advice, i am trying to get inside the bus ;)
11:21:52SlasheriLinusN: the current found from the web is the latest
11:21:56 Quit webguest43 (Client Quit)
11:22:09 Nick QT_ is now known as QT (as@area51.users.madwifi)
11:22:11Slasheri(there is only some minor fixin i have made)
11:22:37LinusNi'll perhaps fix it up and commit some stuff
11:22:44Slasherioh :)
11:22:54LinusNmakes it easier to track changes
11:23:13Slasherihmm, indeed
11:23:46*Slasheri wants to use cvs on some parts too :)
11:24:02 Join asdsd____ [0] (
11:24:07 Part asdsd____
12:08:59 Join stripwax_ [0] (
12:52:10 Quit stripwax_ (Read error: 110 (Connection timed out))
12:52:31 Quit ashridah ("Leaving")
12:52:48 Join ashridah [0] (
13:16:32***Saving seen data "./dancer.seen"
13:20:13 Join preglow [0] (
13:20:52 Join lostlogic [0] (
13:26:29 Join cYmen [0] (
13:36:13 Join Chamois [0] (
14:01:21B4gderperhaps we should make the logf logging feature a configure-time option
14:02:25LinusNgood idea
14:02:58amiconnI agree.
14:03:01preglowa mail with more opts from the wavpack guy
14:03:27amiconnIn fact that's what I suggested some days ago - make the logf()-enabled builds a special kind of debug builds
14:03:30LinusNpreglow: c00l
14:03:52B4gderyes, and it could be the start of doing that for more (devloper related) options
14:04:01amiconnB4gder: Is that logf() stuff also working on archos?
14:04:37preglowincluding a five hundred line assembly routine
14:05:17B4gderamiconn: only it then of course requires you to browse the log on the main lcd
14:05:28amiconnOf course
14:05:35B4gderbut I'll also make a "dump log to file" feature I think
14:06:10Bagerpreglow: asm optimisations ?
14:06:16amiconnBtw, is it possible to use gdb with the serial mod only, i.e. without uart?
14:06:20preglowBager: aye
14:06:38preglowoptimisations is legal
14:06:41amiconnBagder: are you american?
14:06:42preglowit's the english spelling
14:06:49Bageramiconn i'm bulgarian
14:06:52amiconnErm, Bager I mean
14:07:15LinusNamiconn: "without uart"?
14:07:15preglowonly americans have the craving to put in 'z' in all their words
14:07:20 Quit Chamois (" HydraIRC -> <- IRC has never been so good")
14:07:27amiconnLinusN: I mean without uart boot mod
14:07:29Bagerwell, i wrote it, checked it after that in my dictionary ... obviously american-english dict...
14:07:45LinusNamiconn: uart boot mod is only for flash recovery
14:08:02Bagerpreglow: americans like things to be as easy as possible ...
14:08:05amiconnHow do I load the stub then?
14:08:16LinusNamiconn: play the ajz
14:08:29amiconnAh, of course
14:08:40*amiconn is a bit retarded today
14:09:25amiconnThen loading the binary via serial... will take a while
14:09:27 Join ehntoo [0] (
14:09:40amiconnWould it be possible to integrate stub & binary?
14:10:00LinusNshould be
14:10:19amiconnHmm, maybe it doesn't load because it's likely >> 200 KB
14:10:55amiconnRockbox should still be able to rolo that. Only archos loader is limited
14:31:14B4gderok, so (D)ebug builds become (D)evel builds with a new submenu (in configure)
14:32:07 Join rasher [0] (
14:36:34preglowbut ok
14:36:46preglowis it redundant to check SIMULATOR define if CONFIG_CPU is being checked?
14:37:43B4gdercurrently I think it is, but I think it looks better if the sim check is there
14:39:49rasherpreglow: 500 lines of *coldfire* assembly?
14:40:52LinusNB4gder: and how do you configure debug builds then?
14:41:30 Quit Ka ("* poof *")
14:41:53B4gderselecting devel pops up another menu that allows several options, debug build being one, logf enable being one
14:42:20B4gdercurrently I'm trying to figure out how to select simulator with logf enabled... :-)
14:42:25preglowrasher: aye
14:46:01rasherpreglow: That's pretty great
14:46:19preglowyeah, i'll check out the improvements later
14:46:36preglowthink i'll commit it anyway, even though i do see some stuff i'm wondering about
14:46:40preglowthat can be fixed later anywho
15:02:57LinusNB4gder: did you update the autobuilds as well?
15:03:29B4gderI don't think we have any autobuild that uses this
15:04:00LinusNah yes, we removed the debug builds
15:07:25 Quit RED_M_INFINITY (Read error: 54 (Connection reset by peer))
15:11:15 Join Musicmad [0] (
15:12:08Musicmadhi all - what's the news on audio output? :)
15:12:30LinusNnot much
15:12:50MusicmadSounded like Slasheri made good progress?
15:13:04LinusNwell, it plays music
15:13:51LinusNstill a fairly long way to go before it is usable
15:13:51Musicmadexcellent - can't hardly wait.
15:14:03LinusNbut we're working on it
15:14:06B4gderyou don't have to wait
15:14:15MusicmadI don't? :)
15:14:19B4gderyou can join in and help
15:14:45MusicmadB4gder: I'd love to. What can I do? - mediocre C programmer unfortunately.
15:15:24LinusNthis is your chance to go beyond mediocre
15:15:28B4gderthere's plenty of things to do
15:15:51B4gderwill is more important than skill
15:16:33***Saving seen data "./dancer.seen"
15:17:18Musicmadok - i'd love to look into some wma stuff if it makes sense?
15:17:52B4gderplease do
15:18:22B4gderthere seems to exist a floating point decoder
15:18:33Musicmadand it has to be integer?
15:18:51Musicmador fixed point or whatever.
15:18:51preglowMusicmad: i'd steer clear of that if you don't have any fixed point experience
15:19:00Musicmadhm ok.
15:19:18preglowbut of course, nothing is in a critical hurry, you could use however long you want on it
15:19:28MusicmadI'll just start working on DRM then :)
15:19:54B4gderwell music playback is not the only area that still lacks
15:20:07LinusNMusicmad: you could start with adapting some plugins to the iriver
15:20:22B4gderindeed, that is good rockbox practise
15:20:27Musicmadsounds great.
15:20:38Musicmadscreensize/orientation etc.
15:21:10LinusNMusicmad: the "documentation" page on is a nice place to start
15:21:36LinusNthere you will find "First-time guide to Rockbox Development"
15:23:22MusicmadI'll have a look thanks. For now I'm buying pizza for everyone (once my paypal account get's accepted. :) )
15:23:41*B4gder likes pizza
15:23:46preglowooooh, pizza
15:23:47LinusNmmm, i'll have a Calzone with garlic
15:24:25LinusNis beer included?
15:25:02LinusNhver gang
15:25:39Musicmadtuborg ?
15:26:27*LinusN noticed Musicmad is from denmark
15:26:39rasherOooh, another Dane!
15:26:53*Musicmad noticed too
15:26:55B4gderoh no, they're increasing!
15:27:18rasherI was beginning to wonder if I was the only one using Rockbox, but then.. there *was* a Danish translation already
15:27:33*LinusN has to go
15:27:38LinusNcu all
15:27:44 Part LinusN
15:27:46MusicmadI gotta go too. brb.
15:34:49Musicmadis this one uptodate?
15:35:08Musicmadhas some problems the last time with Erics mirror.
15:35:08rasherThink so
15:35:14Musicmadhm ok
15:35:20preglowwavpack is back to 270% realtime again
15:35:20Musicmadhad some problems even
15:35:29rasherHrm, you shouldn't use his mirror I think
15:35:31B4gderwell, you don't need much of his stuff I believe
15:35:44rashernot for coldfire at least
15:36:20rasherSee instead
15:36:22Musicmadok - I'll have another go when I get home from work.
15:36:27Musicmadthanks rasher
15:36:47rasherThat's instead of using erics mirror
15:38:27amiconnBagder: Why didn't you use #ifdef ROCKBOX_HAS_LOGF in SOURCES instead of logf.c / logf.h ?
15:39:08B4gderbut it needs to be in logf.h anyway
15:39:11Musicmadok thanks - I'll have a look. Can't promise any results though. But we'll see.
15:39:26HClwhats up
15:39:29HClanything committed yet? :p
15:40:18amiconnBagder: That would save some compile time, especially on cygwin
15:41:50preglowMusicmad: results aren't required
15:42:08preglowjust give it a shot, if you like coding rockbox, results will show up sooner or later ;)
15:42:24Musicmadpreglow: sounds like a plan thanks.
15:42:25thegeekamiconn : got your iriver yet?
15:43:32B4gderamiconn: thanks for pointing it out, fixed now
15:43:53ashridahwhat's the difference between debug and logf?
15:44:14B4gderdebug defines DEBUG
15:44:28B4gderlogf enables the logf logging
15:44:36ashridahand logf is... log to file?
15:44:38B4gderdebug is very rarely used for anything
15:44:51B4gderlogf is logging to an internal cyclic buffer
15:45:00B4gderand displayed on the remote LCD
15:45:41B4gdermeant for printf()-style debugging
15:46:20B4gderI''ll make a write log to file function too
15:47:29amiconn'write log to serial' might be useful as well
15:47:33HClsounds great.
15:47:41amiconnSimpler than using a gdb stub
15:47:55amiconnOne could hookup one of these serial lcd modules...
15:48:54 Join FRA|98702977 [0] (
15:49:33amiconnIs it possible to read the cyclic buffer later, e.g. from the debug menu after doing something that writes to that buffer?
15:50:23B4gderthere's a logf entry in the debug menu
15:50:29B4gderit shows the log
15:50:38B4gderand I've meant to make it possible to scroll up/down in it
15:50:45rasherDo plugins get to use logf?
15:50:50amiconnHow long is that buffer?
15:51:02B4gderthe buffer is 1000 entries, 16 bytes each
15:51:18amiconnMaybe that is useful for debugging the recording issues on archos...
15:51:25B4gderrasher: yes, we should allow them
15:51:51B4gderwe should just take care so that using it still works when rockbox is built without it
15:52:23amiconn...preferably without leaving empty functions, imho
15:52:29rasherWon't plugins just have to check #ifdef HAVE_LOGF_IFORGOTTHENAMEOFTHISDEFINE
15:52:57amiconnBtw, there's a problem with the lcd_update() macro for players in case someone uses lcd_update() in a plugin
15:53:27 Quit Musicmad ("Trillian (")
15:53:36amiconnlcd_update() evaluates to nothing for the player, so rb->lcd_update(); folds to rb->; which clearly won't work
15:53:54B4gderrasher: currently we can use logf() in the code without caring if it is defined or not...
15:55:03B4gderand... the logf() define will have the same problem as amiconn mentions... :-/
15:56:26B4gderwe should figure out a fix
16:02:36Bagerinline empty function ?
16:03:51 Quit uski (Read error: 110 (Connection timed out))
16:05:10amiconnBager: Impossible as soon as there's a pointer to that function
16:06:13 Quit DMJC ("Leaving")
16:06:34Bageryou mean that there can't be inline function called through a pointer ?
16:07:09amiconnYes of course
16:08:36Bagertrue ... didn't think about the fact that the entry point is not known at compile time ...
16:08:52 Join markun [0] (
16:09:43markunamiconn: do you have time to take a quick look at the way I'm now implementing lcd_bitmap?
16:10:15*preglow cheers for markun!
16:10:29markunIt's not as fast as I had hoped so maybe you have some suggestions..
16:12:16 Quit bobTHC (Read error: 60 (Operation timed out))
16:12:17markunpreglow: I send some hints for optimizing the tremor decoder to pedro, but got no reply. Does he ever come here on irc?
16:13:11 Join Fish_BASC [0] (~herfish@
16:13:32BagerFish_BASC wrong channel
16:13:48Bagerand maybe wrong server ...
16:13:55B4gdermarkun: yes, he's been here before at least
16:13:56Fish_BASCcould be
16:13:57preglowmarkun: yes he does
16:14:04preglowmarkun: what was it about?
16:14:20 Part Fish_BASC
16:15:17markunI send him a link to the thesis of the guys who got decoding from 23 seconds to 8 seconds on their dsp (imdct implemented by fft).
16:15:36markunI noticed libfaad2 also uses fft for imdct.
16:15:46preglowi've mentioned that to him
16:16:16preglowliba52 also uses fft for imdct
16:16:20preglowso it's pretty common, it seems
16:16:35markunNow we just need a very fast fft.
16:16:52rasher ffft
16:16:53amiconnBager: The problem is not that the entry point isn't known, but that you can't call an inlined function from the outside. So as soon as there is a pointer to a function declared inline, the compiler has to add a non-inlined version as well
16:18:00Bageramiconn sorry for misunderstanding ...
16:18:21 Join dapureplaya [0] (
16:20:01 Quit B4gder ("CGI:IRC")
16:21:47 Join telliott [0] (
16:21:55markunCould you take a look at lcd_bitmap and comment on my current implementation?
16:22:48telliottHow do I make an up to date id3 database? I guess the tools I have are out of date.
16:25:53rashertelliott: update the tools and follow
16:29:36amiconnmarkun: That approach is similar to what I thought of, with some differences
16:30:05markunDo you think your diffenreces would improve the speed?
16:30:50amiconnI would to do the alignment in the monochrome bitmap domain, and then map to 2-bit
16:32:12amiconnAnother idea would be to have a set of block functions, implementing the various draw modes, and call these from all higher level functions that perform block drawing via a pointer array
16:32:30amiconnlcd_mono_bitmap(), lcd_fillrect(), lcd_vline()...
16:32:54amiconnDid you have a look at the graphics api proposal recently?
16:33:06amiconnThere are some changes
16:33:22markunno, not yet. I first wanted to get lcd_bitmap() faster because it was very slow at 11MHz. Now it's ok.
16:33:29 Join Aditya [0] (
16:34:18amiconnI wanted to go the other way. First, adapt all targets to the new api, then add greyscale
16:35:19amiconnI hope that the new api will yield faster, more flexible and more compact functions at the same time
16:36:10amiconnThe greatest potential lies within lcd_fillrect() (both opaque and invert)
16:42:03 Quit dapureplaya ()
16:55:04 Part telliott
17:00:34 Quit markun ()
17:16:35***Saving seen data "./dancer.seen"
17:17:34 Quit ashridah ("Leaving")
17:32:50 Join bg [0] (
17:33:29bgbeen a while since i checked in, how close is rockbox to playing realtime mp3 on iriver?
17:34:51bgill just check the log later for a response, out
17:34:54 Quit bg (Client Quit)
17:35:36preglowit's closer than it was a week ago
17:39:22 Join TCK- [0] (
17:44:55 Join tvelocity [0] (
17:49:08 Quit Nibbler (Remote closed the connection)
17:49:38 Join asdsd____ [0] (
17:50:27 Part asdsd____
17:56:45 Quit TCK (Read error: 110 (Connection timed out))
18:06:49Slasherihi :)
18:06:57Slasherinow working on gapless mp3 playback
18:07:41Slasheribg: most of the codecs already support realtime-operation
18:08:03preglowmusepack doesn't
18:08:13preglowbut that shouldn't be too hard
18:09:51 Join Querty_mob [0] (~Querty_mo@
18:10:36preglowonly thing that's bad is it's using a very large struct for passing information
18:10:46preglowso large it won't fit in iram, so it has to be split up or something :/
18:11:18Slasherihmm :/
18:11:49Slasheribtw, libmad requires almos 0x1000 bytes more stack than vorbis does
18:12:10Slasherithat was the reason for crash at early testing
18:12:29 Quit FRA|98702977 ()
18:12:58Slasherior it might not require that much when all internal buffers has been removed (now working on that)
18:13:10preglowlibmad requires very much stack
18:13:25preglowthere are some very large buffers in some routines
18:13:52preglowsome of them needs to be there for speed, btw
18:14:01 Join uski [0] (~uski@
18:14:13preglowso you might as well leave them there and use a large stack
18:15:18preglowsince the iram will need to be used anyway
18:15:23Slasherihmm, yep. But at least extra inputbuffer will be removed
18:15:34preglowhow large is the main stack, btw?
18:15:40preglowlast time i checked, that was very big
18:15:46preglowunnecessarily so, i think
18:16:05SlasheriI am not sure about that. What is the best/right way to reduce mainstack size?
18:16:31amiconnSlasheri: I like your idea to put the codec into the audio buffer whenever a new codec is needed
18:16:59Slasheriamiconn: Hmm, thanks :) (in fact it's file buffer)
18:17:00preglowwasn't that the plan all along
18:17:26SlasheriHowever, currently the codec buffering is quite dumb because it places the codec everytime in the buffer, even if the codec has not changed
18:17:31SlasheriThat will be fixed too
18:18:01amiconnThis way 2 problems are solved. (1) The number of different codecs is not limited. (2) Codecs are statically linked, so having 2 codec slots would require to link all codecs twice
18:18:17preglowi think codec slots is a bad idea
18:18:25preglowwe don't have enough iram for it
18:18:44preglowthat is, it's a decent idea, but not with limited resources
18:18:45Slasheriyep. With this implementation we should not need them
18:18:46amiconnYes, the codec should only be placed in the buffer whenever a codec change is necessary
18:19:04preglowthe iram is the only problem with the approach
18:19:12amiconnHowever, there is a problem as well, and that is skipping tracks
18:20:04preglowit's a problem yes, but can be solved quite easily
18:20:15amiconnLet' have one ore more mp3 tracks, and 2 vorbis tracks after them. Vorbis codec would be placed in front of the first
18:20:34amiconnNow I am skipping from the last mp3 2 tracks forward
18:20:51 Quit Querty_mob (Read error: 60 (Operation timed out))
18:20:55amiconnAdditionally, the first vorbis track is so huge that it doesn't fit entirely into the buffer
18:21:11preglowouch, btw
18:21:14amiconnHow should the vorbis codec be loaded?
18:21:30preglowwe really should do our own relocation fixups
18:21:32amiconnOf course, we could resort to load it from disk
18:21:47Slasheriamiconn: If you skip two tracks and the first track so huge that it requires disk spinup, entire file buffer should be cleared and vorbis codec loaded
18:21:51SlasheriThat is not a problem?
18:21:54amiconnThe disk would need to spin up anyway
18:23:01amiconnSlasheri: Same problem must be handled for skipping backwards, imho using the same solution
18:23:02preglowbut yo, we could possibly be needing a lot of statically linked codecs here
18:23:16preglowlike three four differently linked versions
18:23:45amiconnWith the codecs placed into the file buffer, only one version is needed
18:23:52preglowhow so?
18:24:10preglowthey may still need to be loaded in a different place if the place is taken by another codec
18:24:23preglowi assume we'll be loading all the codecs we need at once?
18:24:43SlasheriWe should load them when it's necessary
18:24:47amiconnpreglow: No, codecs are always copied to the same execution address
18:24:49Slasheri(from the file buffer)
18:25:03preglowwell, that solves it, alright
18:25:20amiconnThe short gap needed to stop codec, copy new codec and initialise it should be covered by the pcm buffer
18:25:23preglowbut then that execution address needs to have enough space to accomodate the largest codec
18:25:27preglowwhich might be quite big
18:26:05preglowand i'm not very much in favour of wasting memory
18:26:08amiconnSame issue with codec slots, only multiplied...
18:26:09Slasheriamiconn: yes, currently ogg playback is gapless by using this method
18:26:26preglowsure, codec slots is a badder idea
18:26:39preglowbut someone should make the rock format relocatable
18:26:44preglowwe can then stuff the codecs wherever we want them
18:27:07preglowit shouldn't be that large a job, if i remember correctly
18:27:16preglowbut i must admit it's been a while since i looked at it
18:27:18amiconnWe could try to use pic, but gcc isn't especially good at generating that
18:27:54preglowwouldn't we just need to do one of the linkers smaller jobs?
18:28:03preglowwe get an array of offset addresses that need to be fixed
18:28:07preglowthen we fix then up when we load
18:28:46amiconnI don't think we would gain much by doing that
18:29:00preglowwe would not have to waste memory by keeping space enough for the largest codec
18:29:06amiconnEven if the codecs are buffered in the file buffer, they must be copied somewhere else before running them
18:29:11preglowwe can start loading several plugins at once
18:29:32amiconnBecause the track may be longer than the buffer, overwriting the codec
18:29:50preglowthat's true
18:29:55amiconnI do have some 100 MB-ish mp3s...
18:30:01preglowsure, me too
18:30:08preglowand for wavs it would be a pretty quick deal
18:30:25preglowand fragments in the file buffer wouldn't be very nice...
18:30:56preglowwell, ok, so the overhead in switching a codec will be a ram and iram copy?
18:31:13preglowshouldn't be too slow
18:31:40amiconnI plan to write memcpy in asm, using movem
18:31:46preglowgood ;)
18:31:55preglowthat should speed it up a ton of times
18:32:07pregloweven if you clobber all the registers
18:32:12amiconnyeps, utilising burst mode...
18:33:10amiconnmemset() is another optimisation candidate
18:34:14 Join Shagnar [0] (
18:35:11Shagnarhello everybody
18:35:37ehntoohello, Shagnar
18:35:43preglowSlasheri: but you've found out how to read the lame song length tag?
18:36:15Slasheripreglow: I am working on that, it shouldn't be too hard
18:36:31SlasheriI have also one other trick in mind i would like to test
18:37:11amiconnFor a start, it would be sufficient to support simple gapless with mp3 (without mangling the last frame's pcm data, but also without restarting the codec between tracks)
18:38:14SlasheriYes. I think that would this work: If we are processing the last frame, cut out all null-bytes from pcm out from the end?
18:38:19preglowit would be preferable to modify libmad to fix this lame song length info
18:38:54preglowSlasheri: they are never nullø
18:39:01preglowSlasheri: the entire frame will have valid data
18:39:07Slasheripreglow: ah, then that's not possible
18:39:26preglowSlasheri: indeed, that why you need the lame exact track length data, it's not apparent where to cut
18:39:56preglowamiconn: we'll probably need to restart the codecs between tracks for some codecs
18:40:14preglowamiconn: like vorbis, which needs to reinitalize because each file might have new codebooks
18:40:35amiconn...and for some others, we should not do that. So this info has to be provided somehow
18:40:43preglowthis is not a problem for static codecs like mp3
18:41:01preglowof course, this will be integrated into the codec api
18:41:26amiconnSlasheri: Does your code already handle sample rate changes in the pcm buffer?
18:41:59 Join courtc [0] (
18:42:32Slasheriamiconn: no, it does not. But i think this is not a big problem, quite easy to solve
18:42:50preglowyou can't have a sample rate change in a buffer, you need to switch buffers, i'd guess
18:43:46preglowit'd sound pretty strange if the sample rate changed mid-buffer :P
18:43:52SlasheriHmm, why not? The codec can put any samplerate through audio buffer. However, the audio buffer will need to switch the physical sample rate at right position when that is necessary
18:44:37preglowwell, yeah, but i'd guess the pcm output layer will need some special code for this
18:44:55SlasheriThere is code already to set the sample rate
18:44:59preglowperhaps mark each buffer with a sample rate?
18:45:19preglowi don't really know how the output code works :>
18:45:25*preglow goes to educate himself
18:45:45Slasheriyes. It is possible to mark certain audio chunks to generate a callback event
18:46:29preglowahh, good
18:47:39SlasheriI think that codec api could include a function set_sample_rate or something that will guide the pcm layer to set the sample rate at right position
18:47:56preglowbut yeah
18:48:02preglowdo not worry about gapless playback and sample rate chagnes
18:48:16preglowtracks which don't have the same sample rates probably should have a gap
18:49:01SlasheriIt might be impossible to get totally gapless playback between that type of tracks
18:50:12preglownot impossible, but not worth the effort
18:50:37preglowit would be pretty hard
18:52:35preglowso, do you still stand by releasing a patch today? :PP
18:53:15Slasherii can't make the gapless mp3 etc. to work that soon
18:53:15CoCoLUSis it still necessary to open the file with the viewer plugin?
18:53:27SlasheriCoCoLUS: no
18:53:39CoCoLUSyeah :)
18:53:44Slasherithere is a basic playlist support
18:53:49preglowSlasheri: i'm not asking for gapless mp3 either, i just want to see how you're progressing
18:54:53Slasheripreglow: okay. if you just want to test something, maybe i can do a patch if i manage to work out some problems
18:54:55CoCoLUSwe need bass and treble settings :P
18:55:07preglowthat's already in rockbox
18:55:12preglowwe just need to make the settings work with the uda
18:55:19preglowi'm also planning on making a software eq
18:55:21Shagnaryeah a patch to test would be kinda very nice
18:57:13 Nick Lynx_ is now known as Lynx_awy (HydraIRC@
18:58:53rasherMmm, patch
19:01:57 Join webguest04 [0] (
19:06:20 Quit TCK- (Read error: 110 (Connection timed out))
19:16:27 Join TCK [0] (
19:16:39***Saving seen data "./dancer.seen"
19:21:01 Quit Harpy (Read error: 60 (Operation timed out))
19:45:06 Join edx [0] (
19:48:55*HCl proddles Slasheri
19:56:46 Join _aLF [0] (
19:58:48SlasheriHCl: Give me two more hours and i might get it basically working (ogg & mp3, with mp3 being gapmore) :P
20:00:29HClyay :)
20:02:09Slasheristill it wont be very useful, because there is only almost blank screen while songs are playing and remote control wont work
20:02:20Shagnardoens't matter
20:02:42 Join Querty [0] (
20:03:12preglowmusic playback isn't very useful?
20:03:13bipak_you guys are doing a great job :)
20:03:27 Join XavierGr [0] (
20:03:47preglowcan it play long tracks?
20:03:55Slasheripreglow: it can, no matter how long they are
20:04:14 Join arfo [0] (
20:04:15Slashericurrently it can load 10 tracks to file buffer to fill it up
20:04:48QuertyAwesome!!! we're cheering from the sidelines! :-D
20:05:15XavierGrHi all!
20:05:28CoCoLUShm... don't want to sound negative... but there is a dark side to this
20:05:57CoCoLUSif this rapid progress gets public, boards like misticriver (don't we love it), and this chan will get flooded
20:06:13rasherso we're going to keep it secret?
20:06:39CoCoLUSobviously not
20:06:47Shagnartoo late ^^
20:07:08preglowSlasheri: and it already loads partial files?
20:07:30Slasheripreglow: of course. Or what you mean with partial files?
20:07:54Slasheripreglow: It fills the file buffer always before it goes empty
20:08:09XavierGrI have a strange problem with uisimulator. Whenever I open a plug-in in iRiver simulator an error pops up. Rockboxui.exe - Bad Image
20:08:28XavierGrAnyone knows something about that?
20:08:32preglowSlasheri: like, if there's not enough room for an entire file, it still loadsas much as it can
20:08:39XavierGrI am trying ti fix some plug-ins for iRiver
20:08:40Slasheripreglow: yes, it does that
20:08:45Slasheriat least it should :)
20:09:17Slasheri(however, that is not fully tested and some problems might still occur)
20:11:08rasherXavierGr: don't know, sorry.. maybe the plugins don't match the simulator's version?
20:13:58rasherXavierGr: which plugins?
20:16:41 Part arfo
20:16:48amiconnXavierGr: win32 or x11 simulator? Cygwin build environment?
20:17:36 Join ghode|afk [0] (
20:19:26 Join arfo [0] (
20:20:03XavierGrCygwin build enviroment
20:20:13XavierGrLets say that I want to run Logo
20:20:26XavierGrWhen I press 5 to open it the error pops -up
20:20:28XavierGrit says:
20:20:56XavierGrI deleted the ui simulator because I was gonna build it again
20:21:24XavierGrit was an error that Rockbox.exe cant load the new window or something similar
20:21:49XavierGranyway maybe i have a bad installation of cygwin
20:22:40XavierGrIn the start menu under the Program Cygwin-x nothing is working is that right?
20:28:06rasherI don't think you should worry too much about that
20:28:17amiconnYes, unless you manually start the x server beforehand
20:28:43amiconnI dunno why these links are installed
20:28:49amiconnThey never worked for me
20:29:39XavierGrBleeah I exploded everything. Now whenever I try to execute the makefile for the uisimulator it says tha mk68 -elf -gcc is missing
20:30:00XavierGrmaybe I should install it again....
20:30:08rasherIs your path set correctly?
20:30:21rasher(ie, does it include m68k-elf-gcc ?
20:30:41XavierGrthe first time it found it
20:31:01XavierGrwithout doing something more
20:31:16XavierGrtime for dinner I will try later
20:31:35amiconnYou don't need m68k-elf-gcc for simulator builds
20:31:48amiconnSimulator builds use the native gcc
20:32:09rasherXavierGr: are you using .rocks from an iRiver build?
20:32:14 Nick XavierGr is now known as XavierGr|Dinner (
20:32:24rasherwell that won't work
20:32:31rasheryou need .rocks from a simulator build
20:32:38rasher(iriver simulator)
20:32:49XavierGr|Dinnermaybe i will use the cvs command to get the code
20:33:11XavierGr|DinnerThat's what I did the first time...
20:43:35 Nick XavierGr|Dinner is now known as XavierGr (
20:44:42XavierGrDo you know an editor where I can right my commands instead of the default cygwin.bat?
20:49:29 Quit tvelocity ("Leaving")
20:59:54 Join TCK- [0] (
21:04:37 Quit uski ()
21:06:58 Quit XavierGr ()
21:08:18 Quit TCK (Read error: 145 (Connection timed out))
21:10:39 Part arfo
21:16:43***Saving seen data "./dancer.seen"
21:22:53 Join tvelocity [0] (
21:30:28 Join Tangleding [0] (
21:37:16Tangledingwanted to congratulate Slashery for his great work
21:37:24Tangledingvery impressive in fact
21:37:36QuertyI'm running into trouble building the simulator
21:37:40Querty[michiel@michiel build-dir]$ make
21:37:40Quertymake[1]: *** No rule to make target `@make'. Stop.
21:37:40Quertymake: *** [all] Error 2
21:37:45Quertyany ideas
21:37:51Quertythis used to work some time ago
21:37:55BagderQuerty: upgrade your sed version
21:38:00rashert0mas had that
21:38:15Quertyoh man, sed of all things
21:39:05*amiconn is fighting with mpeg.c
21:46:33t0masQuerty: and for a quick fix: edit the Makefile line 48
21:46:50t0masthere is @$(MAKE) somewhere... that should be on the next line
21:47:01t0masso replace the n in simn with an enter
21:47:50SlasheriTangleding :)
21:48:03rasherSlasheri: your two hours are nearly up!
21:48:07Tangledinghi Slasheri
21:48:21TangledingVery nice job to be true
21:48:23Slasherirasher: yes, and mp3 playback almost working :)
21:48:33Tangleding:) :) :) :)
21:48:38Tangledingyou're my hero
21:48:44HCl :p
21:48:45Tangleding(not only mine i think)
21:49:18Quertythanks t0mas
21:49:41TangledingAnyone know what's the matter with Amiconn H140?
21:49:42Quertythat worked
21:50:20preglowwhat with it? it just hasn't arrived yet
21:50:42 Join muesli- [0] (
21:52:14Tangledingokay i think thjere were a problem since he ve been waiting for a while
21:52:22Tangleding(hi Muesli)
21:52:36muesli-baba tang
21:52:39muesli-baba @ll
21:58:41 Join sl33pwalk3r [0] (
21:58:56HClcan't wait for Slasheri to be done
21:58:58 Quit webguest04 ("CGI:IRC (EOF)")
21:59:04HCli think we'll see a jump in progress once mp3 playback works
21:59:12*muesli- praises slasheri
21:59:39muesli-and yawning hcl too :)
21:59:55ehntooWell... doesn't mp3 playback already work? We just can't hear it, right?
21:59:55Slasherimp3 playback almost works, there is small audible buffering error at beginning of the song
22:00:28Slasheritrying to fix that.. and few other problems too
22:00:52HCl :)
22:01:16Slasheriand prev/next track won't work yet
22:01:26rashercan't have it all at once
22:01:30Slasheri(buttons i mean)
22:01:46muesli-lets drink some tea and wait :D
22:02:53rasherGood plan.
22:04:00*Shagnar offers some cookies
22:04:09Slasheriif i release a test patch soon, there are many known bugs in it
22:04:18Slasheriyou will find it's not very usable after all
22:04:36rasherI'll settle for "plays sound better than the last patch"
22:04:52rasherAny progress is way cool
22:05:00 Quit TCK- (Read error: 110 (Connection timed out))
22:05:13Slasherieven if you stop playback, you can't start it again before you have restarted rockbox (maybe this bug is ui/wps related)
22:05:14bill2or3which port are you reffering to?
22:05:36rasherbill2or3: iRiver
22:05:38Slasherihowever, you should be able to pause/resume playback
22:05:50 Part sl33pwalk3r
22:06:58rasheronce it gets going, I'll never want to stop
22:07:23Slasheriok, just a few more checks..
22:09:03bill2or3for the Hp-120?
22:09:21rasherand 140
22:10:24Slashericurrently there is small gap between mp3s but it should be much less than with stock firmware
22:10:49rasherYou can hardly do worse than that
22:11:08Slasheriand after you have started playing, you wont be able to hear anything until you touch the volume control
22:11:46Shagnarpatch patch patch :D
22:12:06Slasherinot yet, just found a new issue with buffering
22:14:03TangledingAll this sounds very nice
22:14:33TangledingAnyone know if LinusN suceed in the iHP115 ebay auction?
22:14:41Tangleding(i've lost the link)
22:14:57rasherI have a ihp-110 here, waiting to ship to him
22:15:16TangledingVery cool
22:15:23Tangledingi'm very happy
22:15:30 Quit muesli- (Read error: 60 (Operation timed out))
22:15:33Tangledingi wish he didn't paid to expensive?
22:16:30TangledingI imagine this could be added to the iRiverfaq wiki
22:16:45Tangledingsince there is quite often question about H110/115
22:16:49rasher190 euro
22:17:19TangledingNot quite cheap
22:17:49Tangledingone reason more to donate ;)
22:18:11Tangleding(i'm waiting for my exam to solve my paypal issue)
22:18:41 Quit Shagnar ("( :: NoNameScript 3.81 :: )")
22:19:49bill2or3any talk of a port to the H10?
22:20:02Tangledingsee the FAQ
22:20:13Tangleding(the hardware isn't public)
22:20:13rasherNot really, no.
22:20:36crashd_im working on decoding the firmware flash
22:20:41crashd_and then trying to get code running on it
22:20:47crashd_but it's on hold for a few days whilst i sit my finals
22:23:17Slasherijust a few more minutes and you will get the test patch
22:23:59HCl :)
22:24:08rasherYay.. may I suggest diffing against a full checkout?
22:24:27Slasheriok, i do that
22:24:43Slasheribut mp3 playback is buggy, i can't fix it now
22:24:58Slasherithere are some small audible errors
22:25:13rasherinstead of having a bunch of files
22:25:15 Join Mr_Wik [0] (~Mr_Wik@
22:25:31Mr_Wikhi guys !
22:25:48Mr_Wikgood luck with your greAAAAAAt work ;)
22:26:20Slasherino, too bad.. i have to fix it.. maybe 30min or more
22:26:54HCl :)
22:29:10 Quit thegeek (Read error: 145 (Connection timed out))
22:30:00 Join thegeek [0] (
22:30:23*rasher adds H10 to NonArchos
22:30:26TangledingSlasheri you never take rest?
22:35:30Tangledinglol in fact i like this sort of coder absolutely geek and asocial( joking)
22:35:58 Join webguest24 [0] (
22:37:00webguest24I'm trying to donate via credit card, but your setup reject my particuars. Is there an issue with the CCard detup?
22:37:34webguest24umm, my card is good ;-)
22:37:38Tangledinghum there is CCard option to donate now?
22:37:45TangledingWithout paypal?
22:38:05webguest24well there are two options, CCard and paypal
22:38:35Tangledingthanks i was waiting to sdolve my paypal issue uselessly!
22:38:39Tangledingnoone told me
22:39:06webguest24clock on the paypal donate button and both options appear
22:39:12Tangledingwebguest can U give me the donation
22:39:18Tangleding(ops okay thanks
22:39:39Tangleding(i was asking you the CC donation link)
22:39:42webguest24lol, you want me to give you my donation ?
22:40:22TangledingHum i don't see CC donation button
22:40:24Tangledingonly paypal
22:40:37rasherclick that you don't have a paypal account
22:40:52Tangledingokay thanks Rasher
22:41:24rasher"Visa, Mastercard, Amex and Discover", is accepted, it seems
22:41:48 Quit ehntoo (Remote closed the connection)
22:42:14 Join ehntoo [0] (
22:43:42Tangledingi have VISA
22:43:47Tangledingjust to be sure
22:43:50Tangledingthe first name
22:43:52rashershould work then
22:43:58Tangledingis the one that appear first in the card?
22:44:05webguest24scheisse, why wont oit accept my CCard nummber, visa as well
22:44:17rasherTangleding: should be
22:44:35 Join TCK [0] (
22:44:54webguest24Tangelding, will you provide feedback, re you transaction please
22:44:56Tangledingi don't fill the adress?
22:45:18Tangledinghum quite strange
22:45:31Tangledingthe fill form is paypal
22:45:51Tangledingdid i mistook?
22:46:23rasherdid you enter an amount and press "secure checkout"?
22:46:38webguest24I did yes
22:47:18rasherTangleding: you're still paying through paypal
22:47:24rasherJust without having an account with them
22:47:47Tangledingbut i'm annoyed since i've an old paypal account
22:48:17Tangledingbut i've lost my old Ccard
22:48:42Tangledingand then they don't want to accept my new one
22:48:57Tangledingso i v'e used my sister car ad secondary to make donation previously
22:49:15Tangledingbut's quite complicate as i've to pay here then
22:54:35Tangledingi tried with my new card
22:54:41Tangledingpaypal seems to say it's okay$
22:54:46Tangledingi hope it is
22:55:06Tangledingi'll ask to njorn when i see him
22:55:11Tangledingbjorn sorry
22:55:33tvelocityhow much people do usualy donate?
22:57:13rasheryou mean how much people donate?
23:01:33 Quit webguest24 ("CGI:IRC")
23:02:13Tangledingit's nice
23:02:21Tangledingthe donation seemed to work
23:02:28Tangledingand now i've a new PAypal account
23:02:38Tangleding(and a new yahoo account too ;) )
23:02:44TangledingSo i go
23:02:50Tangledingbest regards all
23:03:23QuertyHmmm, Slasheri has been gone for 30 minutes ;-)
23:03:54SlasheriQuerty: this issue is hard to solve..
23:04:08QuertyI know, just kidding of course...
23:04:46QuertyI code for a living, pressure sucks ;-)
23:06:04QuertyDamn, after a couple of years of Java, I can't seem to remember how to code C (or even read it for that matter)
23:09:08 Join matsl [0] (
23:16:19 Join hubbel [0] (
23:16:45***Saving seen data "./dancer.seen"
23:17:01 Join webguest25 [0] (
23:17:30hubbelSlasheri: i hear that you've got mp3 and vorbis playing.. nice work!
23:18:01Slasherihubbel: that's correct, but there is still lot more to do :)
23:18:08Slasheribtw, where you did that?
23:18:27hubbelSlasheri: reading the irc logs on the web =)
23:18:32Slasheriah :)
23:19:06hubbelSlasheri: btw, i've did the uda1380 driver back in march.. been waiting for someone to connect the codecs to the driver =)
23:19:20Slasherioh, great :)
23:19:41webguest25finally managed to get the CCard payment through, I have no idea what the issue was, I just repeatedly entered the CC number,
23:20:13hubbeland i'm about to try to get recording in the driver..
23:20:14 Quit ghode|afk (Read error: 110 (Connection timed out))
23:20:43Slasherihubbel: Hmm, maybe you could help later to solve some problems that might be related to the driver. One of them is that if I use cpu_boost(high) from watermark callback, the system will crash
23:20:43 Quit Tangleding ("Chatzilla 0.9.68a [Firefox 1.0.4/20050511]")
23:21:18webguest25thank you gents, for a sterling effort. Later
23:21:58 Quit webguest25 (Client Quit)
23:22:34hubbelslasheri: in the dma interrupt?
23:22:50Slasherimaybe that is not a good idea to call it from there?
23:23:22 Join BTKDaImMaikata [0] (~Bager@
23:24:10preglowno, i'd say it isn't
23:24:13hubbelSlasheri: I havn't tried, but didn't linus say he thought it was a bad idea?
23:24:15rasherwebguest25: thank you for your 25 donations
23:24:25preglowin the same way spending a lot of time in any interrupt handler isn't a very good idea
23:24:32preglowcpu_boost can take something around 10ms to complete
23:24:39Slasherihubbel: yes
23:24:43Bagdermy gut feeling says it is bad
23:25:21Slasherihubbel: i was just interested if it should work
23:25:53hubbelwonder if it could trigger another dma interrupt if you spend to much time in there..
23:26:30Slasheriah, that's correct. but isn't interrupts disabled inside the dma interrupt?
23:27:17hubbelmaybe there is an error in that code..
23:27:48hubbelcould you paste the dma interrupt in a msg to me?
23:28:15SlasheriHmm, the one found in pcm_playback.c?
23:28:33SlasheriIt's unmodified cvs version, only the watermark callback enabled with #if 1
23:34:31SlasheriOkay, the problem can be the cpu_boost too because it calls tick_start and that will touch the interrupts
23:34:38 Quit TCK (Read error: 110 (Connection timed out))
23:35:10Bagderthe basic rule must be to do as little as possible within interrupts
23:35:56Slasheriof course.. i will just forget about using that kind of code in any interrupt :)
23:36:43preglowespecially cpu_boost
23:36:49preglowwhich takes a long time to complete and does fancy stuff
23:37:14Bagdermajor fancy stuff
23:37:14hubbelSlasheri: The DMA0() calls a callback_for_more(&start, &size), but it does not validate that start is 4-byte aligned and size is a 4-byte multiple.. that might cause a crash?
23:37:59SlasheriHmm, maybe :) I will check that later
23:38:21 Quit Bager (Read error: 110 (Connection timed out))
23:38:30preglowdata doesn't need to be aligned
23:38:44preglowbut it really, really should be
23:39:30 Quit hubbel ()
23:47:38QuertyCheers guys, I'm hitting the sack. Excellent work!
23:50:16 Part Querty ("Leaving")
23:50:27SlasheriI will fix the mp3 playback tomorrow, night.. :) I think i know what is wrong
23:51:27preglowdo :/
23:53:10Bagderthe new nokia is not using the same dsp as the neuros
23:53:29Bagderc54 vs c55
23:53:30rasherYeah, should probably speed up gcc development
23:53:46Bagderbut they might be very similar, I don't know
23:53:46rasherespecially since all the geeks want one
23:53:56Bagderbut the nokia has an ARM as well
23:54:10rasheroh.. I didn't notice the "not" there
23:54:15rashersilly me
23:58:29*t0mas is going to bed... goodnight

Previous day | Next day