--- Log for 09.05.104 Server: calvino.freenode.net Channel: #rockbox --- Nick: logbot Version: Dancer V4.16p1 Started: 4 days and 13 hours ago 00.08.59 Join pfavr [0] (pfavr@t1o902p474.telia.com) 00.27.51 Join limerickey [0] (~none@ool-4353a759.dyn.optonline.net) 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] (~c0utta@125.cust38.nsw.dsl.ozemail.com.au) 01.10.18 *** Saving seen data "./dancer.seen" 01.12.53 Join amiconn [0] (~jens@pD9E7F653.dip.t-dialin.net) 01.20.53 Quit c0utta (Read error: 60 (Operation timed out)) 01.20.57 Nick [1]c0utta is now known as c0utta (~c0utta@125.cust38.nsw.dsl.ozemail.com.au) 01.35.47 Quit deadite66 ("Miranda IM! Smaller, Faster, Easier. http://miranda-im.org") 01.42.13 Join Nibbler [0] (nibbler@port-212-202-78-119.dynamic.qsc.de) 01.55.35 Quit Ka_ ("* poof *") 02.32.46 Join Ka_ [0] (~tkirk@pcp261336pcs.howard01.md.comcast.net) 02.42.08 Join j0hnn135 [0] (~jirc@dsl081-234-176.lax1.dsl.speakeasy.net) 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] (aopen@dgvlwinas01pool0-a236.wi.tds.net) 03.44.34 Nick Strath__ is now known as Strath (aopen@dgvlwinas01pool0-a236.wi.tds.net) 04.45.06 Join BlauChip [0] (~bluechip@cpc3-colc1-3-0-cust61.colc.cable.ntl.com) 04.45.10 Nick BlauChip is now known as bLuecHip (~bluechip@cpc3-colc1-3-0-cust61.colc.cable.ntl.com) 04.56.27 Join Nibbler [0] (nibbler@port-212-202-78-119.dynamic.qsc.de) 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] (Zakk@c-67-160-88-198.client.comcast.net) 06.22.36 Part bLuecHip 06.22.37 Quit Nibbler (Read error: 54 (Connection reset by peer)) 06.44.24 Join bLuecHip [0] (~bluechip@cpc3-colc1-3-0-cust61.colc.cable.ntl.com) 06.44.29 Part bLuecHip 06.54.17 Quit midk (Read error: 104 (Connection reset by peer)) 06.54.39 Join midk [0] (Zakk@c-67-160-88-198.client.comcast.net) 06.59.34 Quit scott666 ("i'll be back...eventually...") 07.10.27 *** Saving seen data "./dancer.seen" 07.10.47 Join midknight2k3 [0] (Zakk@c-67-160-88-198.client.comcast.net) 07.11.19 Quit midk (Read error: 113 (No route to host)) 07.11.25 Nick midknight2k3 is now known as midk (Zakk@c-67-160-88-198.client.comcast.net) 07.41.01 Join Nibbler [0] (nibbler@port-212-202-78-119.dynamic.qsc.de) 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] (Zakk@c-67-160-88-198.client.comcast.net) 08.39.12 Nick midknight2k3 is now known as midk (Zakk@c-67-160-88-198.client.comcast.net) 09.10.29 *** Saving seen data "./dancer.seen" 09.26.04 Join amiconn [0] (~jens@pD9E7F653.dip.t-dialin.net) 09.27.31 Join [IDC]Dragon [0] (~idc-drago@pD951265E.dip.t-dialin.net) 09.27.46 # <[IDC]Dragon> 'morning Jens! 09.27.51 # morning Jörg 09.27.59 # <[IDC]Dragon> ;-) 09.28.18 # <[IDC]Dragon> I just found the voice-crash problem! 09.28.27 # :) 09.28.34 # <[IDC]Dragon> (very tricky) 09.29.13 # <[IDC]Dragon> It started with me making a check to verify the clip address, if it's within the voice buffer 09.29.18 # And I guess your commit access does work now, as well as mine. 09.29.37 # <[IDC]Dragon> didn't you commit something yesterday? 09.29.42 # yup 09.29.53 # <[IDC]Dragon> today it's broken? 09.30.48 # Is it? I don't know of a problem... 09.31.09 # <[IDC]Dragon> I'm not for enough to commit, only found the problem, not the fix. 09.31.49 # Hmm. Probably a bit of work left to do. 09.32.16 # <[IDC]Dragon> it 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]Dragon> I made test code to dump it to a file when I detect a bad address. 09.34.18 # <[IDC]Dragon> Then I found that the first 0x14000 bytes are different to the original voice file. 09.34.23 # Do you mean the bitswapping of _previous_ music playback? 09.34.40 # <[IDC]Dragon> the difference was always the same. 09.35.00 # <[IDC]Dragon> yes. 09.35.53 # <[IDC]Dragon> I check with mpeg_status() if the box is not playing or recording, 09.36.17 # <[IDC]Dragon> when it's not, and the voice buffer is marked invalid, I reload it. 09.36.41 # <[IDC]Dragon> But it seems the bitswapping is active a little longer. 09.37.40 # <[IDC]Dragon> Dunno why it is bitswapping the very first part of the buffer again 09.38.26 # It is always the beginning of the buffer? 09.38.48 # <[IDC]Dragon> yes, always the first 0x14000 bytes 09.40.33 # Hmm, 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]Dragon> we need Linus... 09.42.11 # How did the voice work in the first place? 09.42.24 # <[IDC]Dragon> I have no idea 09.44.14 # <[IDC]Dragon> I could toss in a couple of yield(), to hope for the mpeg thread to cease 09.44.24 # <[IDC]Dragon> but that's bad code 09.45.04 # I think I get it now: 09.46.19 # If 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.00 # So it gets reloaded when you use the menu or such, which would be some seconds after stopping. The voice does work then. 09.47.59 # But 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]Dragon> no, if you have spelling on it immediately spells the filename again when you stop 09.48.59 # Ok, different trigger, same result. 09.55.26 # * [IDC]Dragon tries do understand the mpeg thread 09.56.15 # nite idc, amiconn 09.56.23 # nite midk 09.56.44 # <[IDC]Dragon> goodnight 09.56.44 Quit midk ("yo yo yo cya later YO YO YO wasa wasa!") 09.58.18 # [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]Dragon> you mean is_playing 09.58.53 # <[IDC]Dragon> ? 09.59.10 # Yes, as well as playing. 10.00.12 # If I use a boolean as an indicator for something to be switched on (I do this in my grayscale framework), 10.00.46 # the boolean has to be set before actually switching on when switching on, 10.01.00 # but to be reset _after switching off. 10.01.01 Join Nibbler [0] (nibbler@port-212-202-78-119.dynamic.qsc.de) 10.01.28 # Otherwise this could create a race condition (as observed). 10.01.46 # <[IDC]Dragon> for interrupts, yes 10.02.05 # <[IDC]Dragon> in threads it's not that critical, since we don't preempt. 10.03.53 # <[IDC]Dragon> I fail to see what stops the bitswapping at all 10.04.12 # <[IDC]Dragon> the mpeg thread always calls swap_one_chunk() 10.04.25 # The mpeg_status function does yield() until it finds that the stop is done... 10.05.21 # <[IDC]Dragon> what? not in my code. 10.05.27 # mpeg_stoip() I mean. 10.05.34 # *mpeg_stop() 10.05.36 # <[IDC]Dragon> ah, yes. 10.05.41 # grr 10.07.03 # <[IDC]Dragon> maybe stop_playing() should call reset_mp3_buffer() 10.07.56 # <[IDC]Dragon> reset_mp3_buffer() should disable the bitswapping 10.08.20 # <[IDC]Dragon> because then the pointers are identical, difference is zero. 10.09.52 # Hmm, it is very confusing: There are mpeg_stop(), mp3_stop_playback(), stop_playing() ... 10.11.24 # <[IDC]Dragon> yes, I don't feel like messing around in that code 10.16.25 # <[IDC]Dragon> another observation: 10.16.45 # <[IDC]Dragon> the voice file is not necessarily immediately destroyed 10.17.45 # <[IDC]Dragon> usually I can have a few entries spoken, but then it gets damaged. 10.18.02 # ??? 10.18.29 # <[IDC]Dragon> as if the mpeg thread sometimes wakes up 10.18.35 # Now I do at least understand the hierarchy when stopping playback. 10.20.03 # mpeg_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.20.18 # <[IDC]Dragon> yes 10.21.14 # The 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.12 # is_playing is used by mpeg_status() to determine the playing status... 10.23.15 # <[IDC]Dragon> the booleans are no problem as long as we're still in that call, don't yield. 10.23.38 # Hmm. 10.24.24 # If you suspect the mpeg thread doing spurious bitswapping, couldn't you put a splash() into swap_one_chunk()? 10.24.28 Join cjnr11 [0] (~dfd@bobillot-5-82-224-193-23.fbx.proxad.net) 10.24.29 # <[IDC]Dragon> I think reset_mp3_buffer() should be called in the MPEG_STOP case. 10.24.37 Part cjnr11 10.25.10 # <[IDC]Dragon> I'll try that 10.28.01 # <[IDC]Dragon> That seems to fix it! 10.39.26 # (back) 10.40.11 # Imho that means that there is a race condition in the mpeg playback. 10.41.17 # <[IDC]Dragon> I don't think so, it's just that the bitswap wasn't stopped 10.42.27 # <[IDC]Dragon> these functions are not for use within interrupts 10.42.59 # <[IDC]Dragon> (sorry, forget the last line) 10.43.27 # Iirc 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]Dragon> dunno what exactly happens, but resetting the buffer on stop sounds like a good idea to me. 10.45.56 # <[IDC]Dragon> Else the bitswap will carry on until mp3buf_write and mp3buf_swapwrite are identical. 10.48.38 # Where did you put reset_mp3_buffer()? 10.49.02 # In 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]Dragon> I've placed it into line 1077 10.50.03 # <[IDC]Dragon> behind the stop_playing() call 10.51.20 # This 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]Dragon> I don't dare to place it in stop_playing() 10.52.37 # <[IDC]Dragon> that may have side effects 10.54.24 # I think that may be a good idea. stop_playing() is called from two other places, but only from inside mpeg.c 10.54.46 # One of these is the case that usb is connected. 10.55.14 # <[IDC]Dragon> where no reset_mp3_buffer() is called... 10.55.30 # <[IDC]Dragon> but init_recording() does both calls. 10.56.27 # Yes. I think in the usb case reset_mp3_buffer should be called as well. 10.56.45 # <[IDC]Dragon> maybe 10.57.02 # Then the call to reset_mp3_buffer could be taken out of init_recording() 10.57.17 # <[IDC]Dragon> yes 10.57.45 # <[IDC]Dragon> and also remove_all_tags() 10.58.07 # <[IDC]Dragon> this is done already in stop_playing() 11.02.26 # ..as well as the whole if .... close(mpeg_file) construction 11.02.43 # <[IDC]Dragon> what? where? 11.03.07 # <[IDC]Dragon> ah, I see. 11.10.31 *** Saving seen data "./dancer.seen" 11.21.10 Quit Nibbler (Read error: 104 (Connection reset by peer)) 11.25.06 # Gotta go. 11.25.13 # <[IDC]Dragon> gotta commit 11.25.16 # <[IDC]Dragon> ;-) 11.25.27 # ;-) 11.25.29 # <[IDC]Dragon> thanks fo your help! 11.25.34 Part amiconn 11.25.56 Quit [IDC]Dragon () 12.12.19 Join AciD [0] (~acid@longchamp44-1-82-67-133-87.fbx.proxad.net) 12.12.23 # grrr.... i hate typos in datasheets 12.33.14 Join moccino [0] (moccino@80.125.96.61) 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] (nibbler@port-212-202-78-119.dynamic.qsc.de) 13.10.34 *** Saving seen data "./dancer.seen" 14.24.15 Join Neurosupherot [0] (~f@AStrasbourg-106-1-18-147.w81-48.abo.wanadoo.fr) 14.24.30 # hi 14.32.35 # Hi, 14.32.45 # s/,/./ 14.38.17 # i have a big pb 14.38.30 # i have a archos fm recorder 14.38.33 # but 14.38.46 # there is a problem with his hard drive 14.38.53 # i think clusters pbs 14.39.08 # how must i do for repair this pb? 15.06.12 # . 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] (~jkerman@jkhouse2.jvlnet.com) 16.41.09 Join cjnr11 [0] (dfd@bobillot-5-82-224-193-23.fbx.proxad.net) 16.41.13 Part cjnr11 16.44.38 Quit jkerman (Connection timed out) 17.02.43 Join scott666 [0] (scott666@c-24-245-58-245.mn.client2.attbi.com) 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] (nibbler@port-212-202-78-119.dynamic.qsc.de) 17.45.06 Join jkerman [0] (~jkerman@jkhouse2.jvlnet.com) 18.56.21 Join edx [0] (edx@pD9EAB26C.dip.t-dialin.net) 19.10.39 *** Saving seen data "./dancer.seen" 20.17.33 Join wake [0] (~wake@HSE-Kitchener-ppp194434.sympatico.ca) 20.25.58 # anyone have an fm rec 20 around? i need to know the output of the power adapter that comes with the unit . . . 20.39.46 # afaik 9v @ 600ma 20.43.04 # thx - that sounds like what i remembered 20.46.56 Join deadite66 [0] (~Miranda@cpc1-yarm1-5-0-cust53.pete.cable.ntl.com) 20.56.35 Join Scuzzles [0] (~jirc@c-24-15-72-40.client.comcast.net) 20.58.52 Quit Scuzzles (Client Quit) 21.10.41 *** Saving seen data "./dancer.seen" 21.42.22 Join Strath__ [0] (aopen@dgvlwinas01pool0-a198.wi.tds.net) 21.42.34 Nick Strath__ is now known as Strath (aopen@dgvlwinas01pool0-a198.wi.tds.net) 21.43.19 # hello 21.44.37 # howdy folks. 21.46.15 Quit deadite66 (Read error: 60 (Operation timed out)) 22.04.01 Join midk [0] (mk@AC8AFC31.ipt.aol.com) 22.13.40 Quit adi|home (Client Quit) 22.13.57 Join adi|home [0] (~adi|home@as5300-9.216-194-23-69.nyc.ny.metconnect.net) 22.28.00 Join deadite66 [0] (~Miranda@cpc1-yarm1-5-0-cust53.pete.cable.ntl.com) 22.38.04 Quit edx () 23.10.44 *** Saving seen data "./dancer.seen"