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 2004-05-09

00:08:59 Join pfavr [0] (
00:27:51 Join limerickey [0] (
00:29:14 Quit edx ()
00:36:51 Quit limerickey ("keep on slackin'")
00:58:14 Quit pfavr ("ChatZilla 0.9.52B [Mozilla rv:1.6/1]")
01:09:32 Join [1]c0utta [0] (
01:10:18***Saving seen data "./dancer.seen"
01:12:53 Join amiconn [0] (
01:20:53 Quit c0utta (Read error: 60 (Operation timed out))
01:20:57 Nick [1]c0utta is now known as c0utta (
01:35:47 Quit deadite66 ("Miranda IM! Smaller, Faster, Easier.")
01:42:13 Join Nibbler [0] (
01:55:35 Quit Ka_ ("* poof *")
02:32:46 Join Ka_ [0] (
02:42:08 Join j0hnn135 [0] (
02:45:04 Quit _aLF ("Leaving")
02:46:21 Quit j0hnn135 (Read error: 104 (Connection reset by peer))
02:54:41 Part amiconn
03:10:22***Saving seen data "./dancer.seen"
03:15:44 Quit Nibbler (Read error: 54 (Connection reset by peer))
03:26:32 Quit elinenbe (Read error: 104 (Connection reset by peer))
03:44:18 Join Strath__ [0] (
03:44:34 Nick Strath__ is now known as Strath (
04:45:06 Join BlauChip [0] (
04:45:10 Nick BlauChip is now known as bLuecHip (
04:56:27 Join Nibbler [0] (
05:03:37 Quit AciD` (""Linux ? Ya moins bien, mais c'est plus cher"")
05:10:24***Saving seen data "./dancer.seen"
05:39:33 Quit midk (Read error: 54 (Connection reset by peer))
05:40:55 Join midk [0] (
06:22:36 Part bLuecHip
06:22:37 Quit Nibbler (Read error: 54 (Connection reset by peer))
06:44:24 Join bLuecHip [0] (
06:44:29 Part bLuecHip
06:54:17 Quit midk (Read error: 104 (Connection reset by peer))
06:54:39 Join midk [0] (
06:59:34 Quit scott666 ("i'll be back...eventually...")
07:10:27***Saving seen data "./dancer.seen"
07:10:47 Join midknight2k3 [0] (
07:11:19 Quit midk (Read error: 113 (No route to host))
07:11:25 Nick midknight2k3 is now known as midk (
07:41:01 Join Nibbler [0] (
08:28:36 Quit midk (Read error: 54 (Connection reset by peer))
08:28:36 Quit Nibbler (Read error: 54 (Connection reset by peer))
08:28:41 Join midknight2k3 [0] (
08:39:12 Nick midknight2k3 is now known as midk (
09:10:29***Saving seen data "./dancer.seen"
09:26:04 Join amiconn [0] (
09:27:31 Join [IDC]Dragon [0] (
09:27:46[IDC]Dragon'morning Jens!
09:27:51amiconnmorning Jörg
09:28:18[IDC]DragonI just found the voice-crash problem!
09:28:34[IDC]Dragon(very tricky)
09:29:13[IDC]DragonIt started with me making a check to verify the clip address, if it's within the voice buffer
09:29:18amiconnAnd I guess your commit access does work now, as well as mine.
09:29:37[IDC]Dragondidn't you commit something yesterday?
09:29:53[IDC]Dragontoday it's broken?
09:30:48amiconnIs it? I don't know of a problem...
09:31:09[IDC]DragonI'm not for enough to commit, only found the problem, not the fix.
09:31:49amiconnHmm. Probably a bit of work left to do.
09:32:16[IDC]Dragonit turns out that the bitswapping is running a bit longer than the playback, so that was trashing the fist part of my voice file.
09:33:39[IDC]DragonI made test code to dump it to a file when I detect a bad address.
09:34:18[IDC]DragonThen I found that the first 0x14000 bytes are different to the original voice file.
09:34:23amiconnDo you mean the bitswapping of _previous_ music playback?
09:34:40[IDC]Dragonthe difference was always the same.
09:35:53[IDC]DragonI check with mpeg_status() if the box is not playing or recording,
09:36:17[IDC]Dragonwhen it's not, and the voice buffer is marked invalid, I reload it.
09:36:41[IDC]DragonBut it seems the bitswapping is active a little longer.
09:37:40[IDC]DragonDunno why it is bitswapping the very first part of the buffer again
09:38:26amiconnIt is always the beginning of the buffer?
09:38:48[IDC]Dragonyes, always the first 0x14000 bytes
09:40:33amiconnHmm, then there must be a bug in the playback routine; if it would simply swap a little longer than playing, it would swap some bytes at whatever position the playback pointer happens to point to.
09:41:54[IDC]Dragonwe need Linus...
09:42:11amiconnHow did the voice work in the first place?
09:42:24[IDC]DragonI have no idea
09:44:14[IDC]DragonI could toss in a couple of yield(), to hope for the mpeg thread to cease
09:44:24[IDC]Dragonbut that's bad code
09:45:04amiconnI think I get it now:
09:46:19amiconnIf the voice is not babbling when you start playing music, it will not immediately reload the voice file on playback stop, because it has nothing to do.
09:47:00amiconnSo it gets reloaded when you use the menu or such, which would be some seconds after stopping. The voice does work then.
09:47:59amiconnBut if the voice was talking when you start playback (i.e. you interrupt file name spelling), then voice file gets reloaded immediately after playback -> trash
09:48:29[IDC]Dragonno, if you have spelling on it immediately spells the filename again when you stop
09:48:59amiconnOk, different trigger, same result.
09:55:26*[IDC]Dragon tries do understand the mpeg thread
09:56:15midknite idc, amiconn
09:56:23amiconnnite midk
09:56:44 Quit midk ("yo yo yo cya later YO YO YO wasa wasa!")
09:58:18amiconn[IDC]Dragon: I do not yet understand the mpeg thread completely, but from what I see, I think some booleans get set too early.
09:58:50[IDC]Dragonyou mean is_playing
09:59:10amiconnYes, as well as playing.
10:00:12amiconnIf I use a boolean as an indicator for something to be switched on (I do this in my grayscale framework),
10:00:46amiconnthe boolean has to be set before actually switching on when switching on,
10:01:00amiconnbut to be reset _after switching off.
10:01:01 Join Nibbler [0] (
10:01:28amiconnOtherwise this could create a race condition (as observed).
10:01:46[IDC]Dragonfor interrupts, yes
10:02:05[IDC]Dragonin threads it's not that critical, since we don't preempt.
10:03:53[IDC]DragonI fail to see what stops the bitswapping at all
10:04:12[IDC]Dragonthe mpeg thread always calls swap_one_chunk()
10:04:25amiconnThe mpeg_status function does yield() until it finds that the stop is done...
10:05:21[IDC]Dragonwhat? not in my code.
10:05:27amiconnmpeg_stoip() I mean.
10:05:36[IDC]Dragonah, yes.
10:07:03[IDC]Dragonmaybe stop_playing() should call reset_mp3_buffer()
10:07:56[IDC]Dragonreset_mp3_buffer() should disable the bitswapping
10:08:20[IDC]Dragonbecause then the pointers are identical, difference is zero.
10:09:52amiconnHmm, it is very confusing: There are mpeg_stop(), mp3_stop_playback(), stop_playing() ...
10:11:24[IDC]Dragonyes, I don't feel like messing around in that code
10:16:25[IDC]Dragonanother observation:
10:16:45[IDC]Dragonthe voice file is not necessarily immediately destroyed
10:17:45[IDC]Dragonusually I can have a few entries spoken, but then it gets damaged.
10:18:29[IDC]Dragonas if the mpeg thread sometimes wakes up
10:18:35amiconnNow I do at least understand the hierarchy when stopping playback.
10:20:03amiconnmpeg_stop() is the top level function. It posts an MPEG_STOP event to the mp3 queue and then waits for mpeg_stop_done to come true.
10:21:14amiconnThe mpeg thread picks up that event, first resets the booleans (!), then calls stop_playing(), which in turn calls mp3_stop_playing() (in mp3_playback.c)
10:22:12amiconnis_playing is used by mpeg_status() to determine the playing status...
10:23:15[IDC]Dragonthe booleans are no problem as long as we're still in that call, don't yield.
10:24:24amiconnIf you suspect the mpeg thread doing spurious bitswapping, couldn't you put a splash() into swap_one_chunk()?
10:24:28 Join cjnr11 [0] (
10:24:29[IDC]DragonI think reset_mp3_buffer() should be called in the MPEG_STOP case.
10:24:37 Part cjnr11
10:25:10[IDC]DragonI'll try that
10:28:01[IDC]DragonThat seems to fix it!
10:40:11amiconnImho that means that there is a race condition in the mpeg playback.
10:41:17[IDC]DragonI don't think so, it's just that the bitswap wasn't stopped
10:42:27[IDC]Dragonthese functions are not for use within interrupts
10:42:59[IDC]Dragon(sorry, forget the last line)
10:43:27amiconnIirc the bitswap is only called when then playback runs out of swapped data, so simply stopping the playback should stop bitswapping automatically?
10:44:14[IDC]Dragondunno what exactly happens, but resetting the buffer on stop sounds like a good idea to me.
10:45:56[IDC]DragonElse the bitswap will carry on until mp3buf_write and mp3buf_swapwrite are identical.
10:48:38amiconnWhere did you put reset_mp3_buffer()?
10:49:02amiconnIn other places I've seen that it is often used in combination with remove_all_tags(), so I guess it would be best to put it before that in stop_playing()
10:49:45[IDC]DragonI've placed it into line 1077
10:50:03[IDC]Dragonbehind the stop_playing() call
10:51:20amiconnThis would call it at almost the same time as if you put it into line 823 (before remove_all_tags(() in stop_playing())
10:51:51[IDC]DragonI don't dare to place it in stop_playing()
10:52:37[IDC]Dragonthat may have side effects
10:54:24amiconnI think that may be a good idea. stop_playing() is called from two other places, but only from inside mpeg.c
10:54:46amiconnOne of these is the case that usb is connected.
10:55:14[IDC]Dragonwhere no reset_mp3_buffer() is called...
10:55:30[IDC]Dragonbut init_recording() does both calls.
10:56:27amiconnYes. I think in the usb case reset_mp3_buffer should be called as well.
10:57:02amiconnThen the call to reset_mp3_buffer could be taken out of init_recording()
10:57:45[IDC]Dragonand also remove_all_tags()
10:58:07[IDC]Dragonthis is done already in stop_playing()
11:00 well as the whole if .... close(mpeg_file) construction
11:02:43[IDC]Dragonwhat? where?
11:03:07[IDC]Dragonah, I see.
11:10:31***Saving seen data "./dancer.seen"
11:21:10 Quit Nibbler (Read error: 104 (Connection reset by peer))
11:25:06amiconnGotta go.
11:25:13[IDC]Dragongotta commit
11:25:29[IDC]Dragonthanks fo your help!
11:25:34 Part amiconn
11:25:56 Quit [IDC]Dragon ()
12:12:19 Join AciD [0] (
12:12:23Strathgrrr.... i hate typos in datasheets
12:33:14 Join moccino [0] (moccino@
12:34:24 Quit moccino (Client Quit)
12:59:34 Quit Strath ("ChatZilla 0.9.61 [Mozilla rv:1.7b/20040316]")
13:03:15 Join Nibbler [0] (
13:10:34***Saving seen data "./dancer.seen"
14:24:15 Join Neurosupherot [0] (
14:38:17Neurosupheroti have a big pb
14:38:30Neurosupheroti have a archos fm recorder
14:38:46Neurosupherotthere is a problem with his hard drive
14:38:53Neurosupheroti think clusters pbs
14:39:08Neurosupherothow must i do for repair this pb?
15:09:27 Quit Neurosupherot ()
15:10:35***Saving seen data "./dancer.seen"
16:03:18 Quit Nibbler (Read error: 54 (Connection reset by peer))
16:36:43 Join TheDude2 [0] (
16:41:09 Join cjnr11 [0] (
16:41:13 Part cjnr11
16:44:38 Quit jkerman (Connection timed out)
17:02:43 Join scott666 [0] (
17:02:46 Part scott666
17:10:36***Saving seen data "./dancer.seen"
17:35:54 Quit TheDude2 ("Hi ho, Hi ho, its off to work i go")
17:42:38 Join Nibbler [0] (
17:45:06 Join jkerman [0] (
18:56:21 Join edx [0] (
19:10:39***Saving seen data "./dancer.seen"
20:17:33 Join wake [0] (
20:25:58wakeanyone have an fm rec 20 around? i need to know the output of the power adapter that comes with the unit . . .
20:39:46webmindafaik 9v @ 600ma
20:43:04wakethx - that sounds like what i remembered
20:46:56 Join deadite66 [0] (
20:56:35 Join Scuzzles [0] (
20:58:52 Quit Scuzzles (Client Quit)
21:10:41***Saving seen data "./dancer.seen"
21:42:22 Join Strath__ [0] (
21:42:34 Nick Strath__ is now known as Strath (
21:44:37dwihnohowdy folks.
21:46:15 Quit deadite66 (Read error: 60 (Operation timed out))
22:04:01 Join midk [0] (
22:13:40 Quit adi|home (Client Quit)
22:13:57 Join adi|home [0] (~adi|
22:28:00 Join deadite66 [0] (
22:38:04 Quit edx ()
23:10:44***Saving seen data "./dancer.seen"

Previous day | Next day