**** BEGIN LOGGING AT Tue Jun  4 23:37:03 2002

-->	adiamas (~adiamas@216.194.26.223) has joined #rockbox
---	Topic for #rockbox is Version 1.0 released! http://bjorn.haxx.se/rockbox/
---	Topic for #rockbox set by adi|home at Tue Jun  4 04:41:56
<xtac[z]>	hm
<xtac[z]>	the archos is a bit heavy
<xtac[z]>	i need to find a light hd
<xtac[z]>	bb tom
<--	xtac[z] has quit ("i focus on the pain the only thing that's real")
---	You are now known as adi|home
---	dw|gone is now known as dwihno
-->	Bagder (~daniel@as3-3-2.ras.s.bonet.se) has joined #rockbox
<Bagder>	morning fellas
<dwihno>	Good morning!
<dwihno>	And it's a wonderful morning indeed.
<Bagder>	oh sure
<dwihno>	Although my headphones haven't been fixed yet
<adi|home>	morning
<dwihno>	hellö hellö
<adi|home>	Bagder.. my email is shot right now.. can't see commits... did you work on the m3u reader?
<Bagder>	yes
<Bagder>	it might even work a bit now
<dwihno>	:O
<Bagder>	I'm more or less waiting for Zagor/Linus to try this and/or comment it
<Bagder>	or anyone else of course
<adi|home>	hmm.. ill take a look
<Bagder>	the read function should take larger peaces each time it does a read() of course...
<adi|home>	pieces
<adi|home>	not peaces
<adi|home>	:)
<Bagder>	oops
<Bagder>	:-)
<Bagder>	peace to everyone ;-)
<adi|home>	except Al-Queda
<adi|home>	they can burn...
<Bagder>	hehe
<adi|home>	them and their virgins
*	adi|home gets down off his soapbox 
<adi|home>	can i access the m3u reader from the uisim?
<Bagder>	yes
<adi|home>	home
<Bagder>	name the file .m3u
<Bagder>	browse to it and press play on it
<adi|home>	k
<Bagder>	I mean, it should have a .m3u extension
<adi|home>	i get We instruct the MPEG thread to play Ani Difranco - Back Back Back.mp3 for us
<adi|home>	correct?
<Bagder>	yes
<Bagder>	I haven't made the playlist do any shuffle or anything yet
<adi|home>	k
<Bagder>	it plays it from start to end
<Bagder>	and then restarts again
<adi|home>	k
<Bagder>	however, not all that is possible to see in the simulator
<adi|home>	heheh you and i have such diff code styles :)
<adi|home>	fd = open()
<adi|home>	if (-1 != fd)
<adi|home>	hehe
<adi|home>	id do: if ((fd = open()) < 0)
<Bagder>	I never do the assignment inside the condition if I can move it outside without penalty
<adi|home>	any particular reason?
<Bagder>	for readability
<adi|home>	ahh..
<adi|home>	i wold agree with that..
<Bagder>	the generated code will be exactly the same anyway
<adi|home>	but in the same vein.. comparing against -1 specifically is a bad habit to me :)
<Bagder>	perhaps
<adi|home>	!= 0 is failure in unix
<Bagder>	not if open() is documented to return -1 on error ;-)
<adi|home>	never know what functions return...
<adi|home>	heheh true..
<adi|home>	but what if it was to return -2 as well?
<adi|home>	;)
<Bagder>	then it would be a silly check ;-)
<adi|home>	hehehe
<adi|home>	neither way is better.. just diff like i said ;)
<Bagder>	yeah
<adi|home>	besides.. i know when i become supreme overlord you will have to do it my way ...
<adi|home>	im patient.. i can wait ;)
<Bagder>	haha, you just let me know when you get your super powers and I'll fix my code then before you turn me into something unpleasant :-P
<adi|home>	no worries.. id never turn you into a canadian ;)
<adi|home>	the read/open/lseek
*	Bagder sighs ffom relief
<adi|home>	are they the ones we implimented
<adi|home>	or part of the newlib?
<Bagder>	yes
<Bagder>	newlib is not needed anymore
<Bagder>	not used
<Hadaka>	well if this would be posix stuff - I'd definitely advice to test explictly against -1 and then do errno stuff after that
<adi|home>	okay... that case, can read fail?
<Bagder>	yes, read can fail
<Bagder>	so yes, I should check for that
<adi|home>	nods
*	Bagder hides
<Bagder>	we in fact set errno too, posix-fake-mode enabled ;-)
<adi|home>	lol
<adi|home>	would use of registers be of any use on the Archos?
<adi|home>	just wondering if there is a faster way to run throught that while loop of yours..
<Bagder>	modern gcc versions more or less ignore the register keyword
<adi|home>	k
<Bagder>	I/ew should read() larger chunks instead
<Hadaka>	premature optimization is the root of all beer
<Bagder>	I/we
<Bagder>	reading single-bytes like that is plain silly
<adi|home>	there is nothing wrong with premature optimization.. so long as you odn't go overboard
<adi|home>	can you give me a rough idea of how we are managing the playlists?
<adi|home>	i missed that convo
<Bagder>	pretty simple:
<Bagder>	we have the playlist on disk as a m3u file
<Bagder>	we store only indexes to the file names in memory
<Bagder>	that is, to the entry names within the m3u
<dwihno>	The m3u is in the memory?
<Bagder>	no
<Bagder>	never
<adi|home>	can i assume the index is the seek used by lseek
<adi|home>	then you read in the filename?
<Bagder>	exactly
<adi|home>	i guess that makes sense.. you ahve to spin the drive up to read in the mp3 anyway.
<Bagder>	yes
<adi|home>	so doing it to get each index is no big deal.
<Bagder>	we can even cache a few indexes before and after if we think that'll improve things
<adi|home>	nods
<Bagder>	so when we run "random"
<Bagder>	we shuffle the arrat with all the seek-positions
<Bagder>	array
<adi|home>	makes sense
<adi|home>	okay.. so we run from start to finish on the indices right?
<Bagder>	yes
<adi|home>	then having an int index that reps the "index of *NEXT* track to play' makes no sense
<adi|home>	you only want to know the current file being played
<adi|home>	don't you?
<Bagder>	it doesn't really matter
<adi|home>	i guess
<Bagder>	I chose "next" just so that zero would make sense already when initing the struct
<adi|home>	nod
<Bagder>	the mpeg thread will id3-read the file and allow others to get that info
<adi|home>	?
<Bagder>	thing is
<Bagder>	we deliver the track to the mpeg thread long before we hear it
<Bagder>	so we need the mpeg thread to tell the world which song that is actually playing right now
<adi|home>	nod
-->	Linus (~linus@labb.contactor.se) has joined #rockbox
<Bagder>	morning Linus
<Linus>	morning!
<adi|home>	hen you init the structure.. would you want to reset the seed for rand?
<Bagder>	yes
<Hadaka>	oh btw - random and shuffle play in my mind are different things - and both are nice, depending on situation
<adi|home>	are you editing that file at all? if not ill fix this stuff as i go
<Bagder>	adi|home: I'm not, feel free to improve
<adi|home>	ki
<Bagder>	Linus: spotted my id3-fix?
<Linus>	Hadaka: you want "true" random in some cases? That is, same song may be played twice?
<adi|home>	okay... what happens if we barf on playlist processing?
<adi|home>	ie: file read fails
<adi|home>	open fails
<Linus>	Bagder: havent't come to the Rockbox-CVS folder yet... :-)
<Bagder>	adi|home: just return, do nothing
<adi|home>	k
<Bagder>	Linus: hehe :-)
<adi|home>	i think we eventually want a message to the user no
<adi|home>	?
<Hadaka>	Linus: yes - or at times ofcourse a simple limit of not ever picking the next song to be the same song as the one exactly before would be sufficient
<Hadaka>	Linus: but for example when using mpg123 - I do use true random play for some stuff
<Linus>	what is mp123?
<dwihno>	mpg123?
<dwihno>	you don't know what it is? :)
<dwihno>	alnmighty mp3 thingy
<Linus>	an mp3 player?
<Hadaka>	Mpg123 is a fast and portable MPEG audio player for Unix.
<Linus>	Ah.
<Hadaka>	very, very common
<Linus>	That must mean that I'm ver very unaware of things. :-)
<adi|home>	Bagder: its your code.. so let me ask.. on checking the open... is if(fd >= 0) acceptable to you?
<adi|home>	or rather i leave it -l != fd?
-->	nayr (~ryan@ip68-2-171-8.ph.ph.cox.net) has joined #rockbox
<Linus>	hi nayr!
<Hadaka>	most jukebox softwares on unix use that as a backend - also there's a free replacement for it, mpg321, which is compatible
<nayr>	Hello!
<adi|home>	hey nayr
<adi|home>	do we have stat in our api now?
<adi|home>	or maybe it just makes more sense to lseek to a files end to get its size?
<Linus>	The ID3 code seeks to the end
<adi|home>	heheh okay "static unsigned int playlist_seed = 0xdeadcafe"
<adi|home>	is just wrong
<Linus>	why do you need the file length?
<adi|home>	right now we are reading in the m3u file a byte at a time
<adi|home>	that makes no sense.
<Linus>	no it doesn't
<Linus>	...and...
<adi|home>	so get the file size
<adi|home>	define a static buffer of say 100 bytes
<adi|home>	and read in at a better increment.
<adi|home>	so you kno when you hit the file end
<adi|home>	your still not mallocing..
<adi|home>	so life is okay
<Linus>	why do you need the file size for that?
<adi|home>	i guess i could just keep lseeking?
<Linus>	you could just read until end-of-file
<adi|home>	are we gaurenteed to have an end-of-file?
<Linus>	of course
<Linus>	otherwise you wouldn't be able to lseek(9 to find out the end-of-file...
<adi|home>	right, thats what im saying...
*	adi|home now that i have my head outta my ass
<adi|home>	lets say char buf[100]
<adi|home>	then we do successive lseeks of 100 till we fail
<adi|home>	then we just grab the rest of the file when we fail
<Linus>	you don't need a buffer to do lseek()
<adi|home>	i know that
<adi|home>	but where are you putting the data from the m3u file?
<Linus>	Maybe I'm not understanding what you want to accomplish
<adi|home>	read/parse an m3u file
<adi|home>	to store in our playlist structure
<Linus>	So get the data, one row at a time (it's a text file, right?)
<adi|home>	right
<Linus>	why seek()?
<adi|home>	how do you know when a line ense?
<adi|home>	ends?
<adi|home>	you search for CRLF
<Linus>	CR/LF or just LF?
<Linus>	whatever
<adi|home>	im just going by what we have right now
<adi|home>	nods
<adi|home>	so to do that you need to read from the file into a buffer
<Linus>	so read into a 100 byte buffer, and look for EOL's
<adi|home>	thats what im saying :)
<adi|home>	thus the char buf[100]
<Linus>	but I still don't understand the seek() part
<adi|home>	are just going to read until read fails?
<Linus>	exactly
<adi|home>	so how do you tell the dif between "we reached the end of file: failed" and "archos is fucked: failed"/
<adi|home>	?
<--	trillback has quit (zahn.openprojects.net irc.openprojects.net)
<--	adi|work has quit (zahn.openprojects.net irc.openprojects.net)
<--	webmind has quit (zahn.openprojects.net irc.openprojects.net)
<--	datazone has quit (zahn.openprojects.net irc.openprojects.net)
<--	gd has quit (zahn.openprojects.net irc.openprojects.net)
<--	PiotR has quit (zahn.openprojects.net irc.openprojects.net)
<--	PsycoXul has quit (zahn.openprojects.net irc.openprojects.net)
<Linus>	-1 means failure, 0 means end-of-file
<Linus>	still there?
<--	Linus (~linus@labb.contactor.se) has left #rockbox
-->	Linus (~linus@labb.contactor.se) has joined #rockbox
<adi|home>	yeah.. just giant brain fart...
<adi|home>	i see what your getting at
<Linus>	great
<adi|home>	im not changing this now.. im bound to fsck it up.. to tired.. i ll hit it in the morning
<adi|home>	night all
<adi|home>	thanks for helping me pull my head from my ass Linus ;)
-->	gd (~chatzilla@dns.agssmf.com) has joined #rockbox
-->	PiotR (~piotr@212-170-21-172.uc.nombres.ttd.es) has joined #rockbox
-->	PsycoXul (psyco@adsl-63-205-43-243.dsl.lsan03.pacbell.net) has joined #rockbox
<Hadaka>	hmm, one should make a feature checklist of what the archos (recorder) can do - and what is implemented in rockbox
<Linus>	night, adi|home!
<Hadaka>	how does the resume work on the original archos btw? does it save the current song/directory somewhere when it starts playing it or?
<Linus>	The Player saves that info on the hard drive
<Linus>	when it starts playing a song
<nayr>	?? I could never get resume to work anyway.
<Linus>	but not when the battery is too low
<Linus>	I guess it's a safety feature not to write on the hard disk when low on batteries
<Linus>	nayr: how come?
<Hadaka>	ookkay
<nayr>	Well, maybe I'm not understanding what it's supposed to do.  I was thinking it would resume a song where it left off between power cycles (ala iPod)
<Linus>	The recorder, OTOH saves that data in internal RAM
<Linus>	nayr: it only remembers which song it played
<Linus>	nayr: we will try to implement mid-song resume in Rockbox
<nayr>	Hmmm... OK.  Well, I became overly excited when I heard about this project on /. 
<nayr>	I figure there's a much better chance of getting the features I want by working with you folks than working with archos. :-)
<Linus>	nayr: nice. i hope you still feel that way.
<Linus>	nayr: are you a programmer?
<Hadaka>	yeah, mid-song resume (and keeping of the current playlist) would be just dandy
<nayr>	I used to pretend to be.  But if I can code at all, it's high-level stuff (RAD/UI, 4GL, etc.)  C/ASM really isn't my forte.  I can read it, but I can't code it :(
<Linus>	ok. you can still be very useful
<nayr>	But I kick ass at QA, especially when I've got a personal stake in the project. =)
<Linus>	may god help us :-)
<Linus>	the QA department!
<nayr>	Programmers tend to hate me pretty quickly. =)
<Linus>	:-)
<nayr>	bedtime now.  I'm sure I'll be bouncing back in here again soon.  Thanks for all the work you folks have done so far, and I look forward to good things in the future!
<--	nayr (~ryan@ip68-2-171-8.ph.ph.cox.net) has left #rockbox
<--	Hadaka has quit (zahn.openprojects.net irc.openprojects.net)
-->	Hadaka (naked@graywolf.onnanifujiyuu.org) has joined #rockbox
-->	trillback (~trillian@sdn-ar-001ncraleP254.dialsprint.net) has joined #rockbox
-->	adi|work (~adiamas@pool-151-204-140-140.ny325.east.verizon.net) has joined #rockbox
-->	webmind (webmind@seal.student.utwente.nl) has joined #rockbox
-->	datazone ([sm5Ow6WK8@207.136.36.203) has joined #rockbox
<Bagder>	Linus: anyway, the id3 code should be reentrant now
<Linus>	Bagder: great
<Bagder>	and if you get time, I'd appreciate if you tried the playlist code on target
<Bagder>	I realize time is a shortage here ;-)
<Linus>	So the MP3 thread should use the ID3 code to dig some info from the file it plays
<Bagder>	yes
<Linus>	and pass it to the GUI somehow
<Bagder>	and "export" that info
<Bagder>	right
<Linus>	I'll try to find out a good way to report the current playing pos as well
<Linus>	I'll look into Lion's suggestion and see what I can do.
<Bagder>	about using a timer?
<Linus>	I didn't follow the playlist discussion. Do we have a working version?
<Bagder>	we do
<Linus>	Bagder: timer?
<Bagder>	somewhat "naive" and simple still thugh
<Bagder>	Linus: forget it, I didn't follow that talk so closely ;-)
<Linus>	AFAICS, there is no good way to determine the song length
<Linus>	does the ID3 tag contain such info?
<Bagder>	no, not without scanning the whole file
<Bagder>	VBR is hell
---	Linus is now known as Linus|meeting
<dwihno>	:/
<dwihno>	VBR is evil stuff
<Bagder>	I can't believe I work in a project without gdb on target, when even rockbox has it :-/
<dwihno>	gdb?
<dwihno>	<-- sucks, tell me what gdb is good for
<Bagder>	debugger
<Bagder>	you've not developed seriously when you say that
<dwihno>	ah
<dwihno>	I used the visual c debugger
<Bagder>	right
<dwihno>	How hard is gdb to learn?
<Bagder>	gdb is much more powerful, if somewhat more crude interface
<Bagder>	the basics are simple
<Bagder>	using it from within emacs makes it even easier
<dwihno>	You got some basic introduction stuff?
<Bagder>	'b [symbol]' for breakpoints
<Bagder>	'c' for continue
<Bagder>	'run' to start
<Bagder>	'n' for next
<Bagder>	's' for step-in 
<Bagder>	that's it ;-)
<Bagder>	'p [variable]' display variable contents
<Bagder>	'info locals' display all local variables
<dwihno>	does it require some extra stuff compiled into the binary?
<Bagder>	yes, it requires that it was compiled with -g for maximum use
<dwihno>	mkay
-->	Zagor (~bjst@labb.contactor.se) has joined #rockbox
<Bagder>	hey Z
<Zagor>	hi
<Bagder>	Zagor: I added some playlist code yday
<Bagder>	not very fancy or anything, but it could work 
<Zagor>	ok, nice
<Bagder>	it's still basic and slightly "naive"
<Bagder>	but a start
<Bagder>	Zagor: I made 'playing' hold a play "mode" instead of just a boolean
<Bagder>	so that play-all-dir should still work too
<Zagor>	in tree.c you mean?
<Bagder>	yes
<Zagor>	ok
<Bagder>	they're just digits now, but we should remake it into some enum or somthing
<Zagor>	yup
<Zagor>	152 subscribers today
<Bagder>	wow
<--	Smari has quit (Read error: 110 (Connection timed out))
*	ironi has returned, [gone/11h 49m 47s]
<ironi>	hello ppl
<Zagor>	hi ironi
<Bagder>	hey ho
<ironi>	just came home
<ironi>	I'm thinking on working on my persolan homepage
<ironi>	It needs a facelift
<Bagder>	time to go and get a visa ;-)
---	Bagder is now known as Bagder|away
<ironi>	hehe
<ironi>	apt-get dist-upgrade is my favourite command ever
<Zagor>	yeah, debian rocks
<ironi>	it does.
<Zagor>	hehe, nice peak yesterday.
<Zagor>	3rd june: 4700 accesses
<Zagor>	4th june: 60196 accesses
<Zagor>	pages, not accesses
<Zagor>	04:00-05:00 on the 4th: 25 pages
<Zagor>	05:00-06:00 on the 4th: 3279 pages :)
<ironi>	has there been a post on slashdot?
<ironi>	=)
<Zagor>	quite so
<dwihno>	Is there some way to make directories invisible using the archos firmware? I'd like to have a folder to store documents and stuff and I don't want it being displayed :)
<Zagor>	not that I know of
<ironi>	dwihno: well maybe hidden directories could be excluded in the archos
<ironi>	that is perhaps an easy solution
<dwihno>	yeah
<dwihno>	I'll test that later
<dwihno>	I sold my last computer last night
<dwihno>	So now I have ZERO computers
<dwihno>	Zero, zip, nada!
<ironi>	heh
<dwihno>	INGA!
<ironi>	when is the dell coming?
<dwihno>	No jävla datorer! :)
<dwihno>	I haven't ordered it yet
<ironi>	oh ok
<dwihno>	I'm awaiting a faktura to be betalad by the evil customer
<ironi>	it doesn't take long for themto ship it though, i thiok.
<ironi>	you din't take cash, thats bad.
<ironi>	=)
<dwihno>	Nah, it will probably take less than 1 week
<dwihno>	Are there any good ways to install some really kickass boot loader?
<dwihno>	I want to have Win98, Win2k and linux on the same box :)
<Zagor>	i'm sure the guys in #linuxhelp knows all about that. :)
<ironi>	dwihno: grub is nice
<dwihno>	ironi: never tried it... :) 
*	dwihno goes on a google streak
<ironi>	if you want windows gui easy-to-install-bla-bla-mumbo-jumbo there is powerquest bootmagic
<dwihno>	Eww
<ironi>	grub is cool though because you can edit the options in the boot loader
<ironi>	at boot
<dwihno>	That's what I like!
<dwihno>	I like configurability
<ironi>	i tried when using gentoo
<ironi>	i really find it better than lilo for me
<dwihno>	Hmm, how come?
<ironi>	i just like it more
<dwihno>	Is it cute? :)
<ironi>	you dont edit a config file, you instead enter a grub console where you supply commands
<ironi>	you can enter this console at boot too
<ironi>	if you want
<dwihno>	ah
<dwihno>	Damn DNS server!
<dwihno>	GIVE ME THE LOOKUP YOU EVIL DNS STUFF! :)
<dwihno>	ah, now it works
---	Disconnected (Connection timed out).
**** ENDING LOGGING AT Wed Jun  5 06:14:13 2002

