Re: [Flac-dev] FLAC support for Android?

2009-02-25 Thread Michael Crawford
On Wed, Feb 25, 2009 at 5:23 AM, Brian Willoughby  wrote:
> A better suggestion might be to start with libFLAC, optimize as
> needed, and then submit the optimizations back to the FLAC project
> where they will be more widely useful.

I know ARM and Thumb assembly code - Thumb is a compressed subset of
ARM that has greater code density.  Both are very important for
embedded applications.

A while back I did an Advanced Encryption Standard hard disk drive
encryptor that ran entirely on-board the Oxford Semiconductor OXFW911
FireWire/IDE bridge chip.  Unfortunately, the 911's ARM7TDMI CPU only
runs at 50 MHz, and AES requires several rounds of encryption to
process a block, so my first C implementation was as slow as molasses.

I was able to speed it up by a factor of 10 or so by implementing the
encryptor/decryptor in assembly code.

There are several ARM simulators available.  You don't need actual ARM
hardware to test ARM machine code!

A very helpful first cut at optimization is to have the simulator
simply count the number of instructions executes during the run of a
program.

A better runtime profile can be had by writing a memory map for the
simulator to use, that specifies the read and write access times and
bus width of each memory region in the target you're simulating.
Typically RAM is 32-bit and fast, while Flash is 32-bit for higher-end
devices and 16-bit for lower-end devices like the 911, and is
generally slow.

I think there is an ARM simulator that can be integrated into GDB, so
that you can debug your code on the desktop platform of your choice.

What I would suggest you do to start, is get an ARM compiler/simulator
toolchain set up on whatever kind of box you use, and get libflac,
libogg and the flac command line program to build for it.

I'll get back to you with some tips on ARM assembly code, and lots of
links for ARM programming tips.

I recommend the book I used to learn ARM assembly... let's see... ARM
System-on-Chip Architecture 2nd Edition by Steve Furber, published by
Addison-Wesley:

http://www.arm.com/documentation/books/5651.html

Ideally you will want *both* ARM and Thumb implementations.  ARM is
faster if you have a 32-bit bus and lots of Flash, but Thumb is faster
- and will fit at all - if you have only a small amount of 16-bit
Flash.  Besides having higher code density, Thumb machine code
instructions are fixed at 16-bits wide, whereas ARM opcodes are
32-bits wide.

An ARM CPU can execute Thumb code if there is a "T" in its model
number, such as the ARM7TDMI, which is very popular for very
low-power, physically compact applications such as the Oxford 911 -
the whole chip, including an IDE core, a FireWire Link-Layer core, 64
kb of Flash and 1800 bytes of RAM is about the size of a dime!

You can also mix both kinds of code; there are assembly code
instructions to switch back and forth.  That's what I did with my
encryptor; I loaded my machine code into RAM, then used ARM
instructions for the innermost loops.

Hope this helps!

Mike
-- 
Michael David Crawford
mdcrawford at gmail dot com

   GoingWare's Bag of Programming Tricks
  http://www.goingware.com/tips/
___
Flac-dev mailing list
Flac-dev@xiph.org
http://lists.xiph.org/mailman/listinfo/flac-dev


Re: [Flac-dev] Support for CAF in flac command-line?

2008-10-13 Thread Michael Crawford
On Sun, Oct 12, 2008 at 11:56 PM, Erik de Castro Lopo
<[EMAIL PROTECTED]> wrote:
> Even distributing an MP3 software player requires the payment
> of license fees:
>
> http://www.mp3licensing.com/royalty/software.html

Thanks for pointing that out - you might have just saved me a world of hurt.

However, there are many Open Source players - is there a license
exception for them, just for decoding?  Or can they only be
distributed from countries that don't recognize software patents?
That's the case with VLC, for example, it's from France.

Ogg Frog is GPL.

Mike
-- 
Michael David Crawford
mdcrawford at gmail dot com

   Enjoy my art, photography, music and writing at
http://www.geometricvisions.com/
--- Free Compact Disc ---
___
Flac-dev mailing list
Flac-dev@xiph.org
http://lists.xiph.org/mailman/listinfo/flac-dev


Re: [Flac-dev] Support for CAF in flac command-line?

2008-10-12 Thread Michael Crawford
> Thanks for the interest, Michael.

I hope I really can be of help.

> I don't use Ogg, so I'm a little wary that standard FLAC would be
> left out of any Ogg Frog implementation.

Ogg Frog already supports native FLAC as a player.  Version 1.0 will
only support playing and decoding, but version 1.1 will support
encoding, and I'll be sure to support FLAC with and without Ogg.

I must hasten to point out that I don't offer any downloads yet - the
UI is in a very primitive state.

>  My hunch is that Apple does not want to encumber
> the format, but I'll let their public documents speak for them.  In
> any event, it's a very good issue to be aware of from the start.

I'm afraid AAC (MPEG-4 audio) has many, many patents. Unlike MP3, one
cannot even distribute the binary of an Open Source player.  AAC
stands for Apple Audio Codec - it's their lossy codec.

> Thanks again for the comments, and be sure to keep us informed if you
> do anything.

Of course.

Mike
-- 
Michael David Crawford
mdcrawford at gmail dot com

   Enjoy my art, photography, music and writing at
http://www.geometricvisions.com/
--- Free Compact Disc ---
___
Flac-dev mailing list
Flac-dev@xiph.org
http://lists.xiph.org/mailman/listinfo/flac-dev


Re: [Flac-dev] Support for CAF in flac command-line?

2008-10-12 Thread Michael Crawford
On Sun, Oct 12, 2008 at 7:26 PM, Brian Willoughby <[EMAIL PROTECTED]> wrote:
> Is anyone here potentially up to the task of adding support for CAF
> (the CoreAudio Format) into the flac command-line?  This would
> present minimal difficulty under OSX, due to the presence of the
> CoreAudio API, but the real challenge would be to support CAF on Unix
> and Windows - everywhere that flac is now available.

I expect I could do it as part of my work on Ogg Frog:

http://www.oggfrog.com/free-music-software

In the short term, I would do it by accessing the QuickTime APIs -
which *are* available on Windows, if you install either iTunes or
QuickTime for Windows.  (The iTunes install includes QuickTime.)

In the long term, I could write a codec for it that would be
straightforward to integrate into the flac command-line tool.  That
would allow its use on UNIX.

HOWEVER!

Is the CoreAudio file format or its associated algorithms patented?
QuickTime in general has many patents.

A patent wouldn't stop me from writing the source code, but a binary
couldn't be provided by anyone in a country that recognizes software
patents.

Mike
-- 
Michael David Crawford
mdcrawford at gmail dot com

   Enjoy my art, photography, music and writing at
http://www.geometricvisions.com/
--- Free Compact Disc ---
___
Flac-dev mailing list
Flac-dev@xiph.org
http://lists.xiph.org/mailman/listinfo/flac-dev


Re: [Flac-dev] Virus in FLAC Windows installer

2008-04-18 Thread Michael Crawford
If you want to check for Windows viruses, but don't run Windows
yourself, you can use Clam AntiVirus on Unix:

http://www.clamav.com/

(There is also a Windows version).

It's GPL, and the database is updated regularly.  There is no
subscription fee as with most antivirus products.

Best,

Michael David Crawford
mdcrawford at gmail dot com
http://www.geometricvisions.com/ <-- Creative Commons FLAC Music
___
Flac-dev mailing list
Flac-dev@xiph.org
http://lists.xiph.org/mailman/listinfo/flac-dev


Re: [Flac-dev] FLAC seeking error

2008-02-26 Thread Michael Crawford
Visual Studio code has different Application Binary Interface
conventions for different compilation and linking settings.  Not
having them all match each other can cause all sorts of really weird
bugs.

To fix it, make sure that all the libraries and sources going into the
executable have the same settings.

On Mon, Feb 11, 2008 at 7:23 AM, Barra, Jay F Ctr AFRL/RIEC
<[EMAIL PROTECTED]> wrote:
>
>
>
> I am writing a FLAC encoder/decoder and when I use the flac_static.lib that
> was compiled in debug mode in MS Visual Studio 2003, the seek_absolute
> function works fine.  However, if I compile flac_static in release mode in
> the same environment, the seek_absolute function no longer works.

Mike
-- 
Michael David Crawford
mdcrawford at gmail dot com

   Enjoy my art, photography, music and writing at
http://www.geometricvisions.com/
--- Free Music Downloads ---
___
Flac-dev mailing list
Flac-dev@xiph.org
http://lists.xiph.org/mailman/listinfo/flac-dev


Re: [Flac-dev] Re: [Vorbis-dev] Proposal for Discussion: LICENSE and COPYRIGHT tags on Vorbis Comments

2007-07-07 Thread Michael Crawford

Creative Commons supplies a free GUI application that marks multimedia
files with CC licenses.  With MP3s it embeds the license in ID3 tags,
but at the time I tried it on my own songs, it didn't know about
Vorbis comments.  Does it now?

The other thing it did was create RDF descriptions of the CC-licensed
works, that included hashes of the track data.  However, I didn't feel
that this was quite what one wanted, as it meant that only perfect
copies of the songs would still have licenses attached.  If one were
to transcode a track it wouldn't have the same hash.

Mike Crawford
mdcrawford at gmail dot com
http://www.geometricvisions.com/music/ <-- CC licensed instrumental piano
___
Flac-dev mailing list
Flac-dev@xiph.org
http://lists.xiph.org/mailman/listinfo/flac-dev