The converters are gone!

Discuss the current and future development of Max.
User avatar
sbooth
Site Admin
Posts: 2445
Joined: Fri Dec 23, 2005 7:45 am
Location: USA
Contact:

The converters are gone!

Post by sbooth » Wed Sep 13, 2006 7:36 am

I've just performed a massive svn checkin that removes the ConverterController class and associated window, along with all the Converter* and ConverterTask* classes.

In their place I've added a new base class, AudioSource, which is responsible for providing PCM data to an encoder. What this means is that when transcoding files, a temporary file is no longer created- the source file is read, converted piece by piece to PCM by the AudioSource, and each piece is passed directly to the encoder in sequence. (The exception is for m4a files in which a temporary file is created with the atoms in the correct order)

These are pretty big changes, and right now the only audio format supported for conversion is Ogg Vorbis, and the only encoder supported is Core Audio. The ripper is completely broken too. Also, the only localization with the required UI changes is the English one.

Over the next week I will be adding new AudioSources, followed by the encoders. Bear with me as I get things working again...

User avatar
krmathis
Posts: 233
Joined: Thu Feb 02, 2006 11:05 am
Location: Oslo, Norway

Post by krmathis » Wed Sep 13, 2006 3:47 pm

Great news!
Can you please inform us (me) when most of the new features have been checked in, so I can start building again?

User avatar
sbooth
Site Admin
Posts: 2445
Joined: Fri Dec 23, 2005 7:45 am
Location: USA
Contact:

Post by sbooth » Mon Sep 18, 2006 1:56 am

krmathis wrote:Great news!
Can you please inform us (me) when most of the new features have been checked in, so I can start building again?
As of now, I've checked in all the decoders. So, you should be able to convert any format that Max supports to any format that the Core Audio encoder supports. To me this means the decoders are ready for preliminary testing!

What I still haven't gotten to yet:
- Ripping support (still completely broken)
- Any encoder other than CoreAudio

User avatar
krmathis
Posts: 233
Joined: Thu Feb 02, 2006 11:05 am
Location: Oslo, Norway

Post by krmathis » Mon Sep 18, 2006 4:31 pm

Hi Stephen,
I pulled a fresh source from SVN (revision 859), and tried to build it.
But it failed with the following error:
/usr/bin/g++-4.0 -o /Users/krmathis/Development/Max/trunk/build/Max.build/Release/Max.build/Objects-normal/ppc/Max -L/Users/krmathis/Development/Max/trunk/build/Release -L/Users/krmathis/Development/Max/trunk -F/Users/krmathis/Development/Max/trunk/build/Release -F/Users/krmathis/Development/Max/trunk -F/Users/krmathis/Development/Max/trunk/Frameworks -filelist /Users/krmathis/Development/Max/trunk/build/Max.build/Release/Max.build/Objects-normal/ppc/Max.LinkFileList -framework mpcdec -framework Cocoa -framework DiskArbitration -framework IOKit -framework CoreAudio -framework AudioToolbox -framework Carbon -framework AppKit -framework cddb -framework cdparanoia -framework cuetools -framework FLAC -framework MAC -framework mp4v2 -framework Ogg -framework OggFLAC -framework sndfile -framework Speex -framework TagLib -framework Vorbis -framework WavPack -framework Growl -framework LAME -arch ppc -Wl,-Y,1455 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk
/usr/bin/ld: Undefined symbols:
_ExtAudioSeek
/Users/krmathis/Development/Max/trunk/build/Max.build/Release/Max.build/Objects-normal/ppc/CoreAudioDecoder.o reference to undefined _ExtAudioSeek
collect2: ld returned 1 exit status
** BUILD FAILED **
Thank you! :)

User avatar
sbooth
Site Admin
Posts: 2445
Joined: Fri Dec 23, 2005 7:45 am
Location: USA
Contact:

Post by sbooth » Mon Sep 18, 2006 6:01 pm

That was a typo- should be ExtAudioFileSeek. It is fixed now!

Also, I have checked in all the encoders. So in theory file conversion to/from any formats supported by Max should work correctly now. However, some of the settings may not be work the way they are intended to- I am still somewhat in the design/testing phase with the interface to the file conversion settings.

User avatar
krmathis
Posts: 233
Joined: Thu Feb 02, 2006 11:05 am
Location: Oslo, Norway

Post by krmathis » Mon Sep 18, 2006 6:31 pm

Built successfully!
I have uploaded the build. But are limited on time today, so I hope someone else step up and beta test this one for you.

http://sbooth.org/forums/viewtopic.php?t=258


Stephen. The Max binary is no longer stripped during the build process, and end up a lot bigger than it needs to. 6.1 vs. 1.2MB to be precise.
Last edited by krmathis on Wed Sep 20, 2006 3:02 pm, edited 1 time in total.

Maurits
Posts: 117
Joined: Sun Jan 29, 2006 1:36 pm
Location: London, Europe

Post by Maurits » Tue Sep 19, 2006 4:03 pm

This sounds like a good move! Thanks! :D

Is this decoding a multi-threaded process? Or is it perhaps possible to have one CPU-core decode a source while the second encodes it?

Just curious...

User avatar
sbooth
Site Admin
Posts: 2445
Joined: Fri Dec 23, 2005 7:45 am
Location: USA
Contact:

Post by sbooth » Tue Sep 19, 2006 5:43 pm

Maurits wrote:This sounds like a good move! Thanks! :D

Is this decoding a multi-threaded process? Or is it perhaps possible to have one CPU-core decode a source while the second encodes it?

Just curious...
Each decode/encode operation is performed in its own thread (the number of which is configurable in the preferences). The decode/encode operations are now tightly linked- when an encoder is created, a decoder is created along with it, and the decoder only provides data when the encoder needs it.

Maurits
Posts: 117
Joined: Sun Jan 29, 2006 1:36 pm
Location: London, Europe

Post by Maurits » Wed Sep 20, 2006 8:40 am

sbooth wrote:
Maurits wrote:This sounds like a good move! Thanks! :D

Is this decoding a multi-threaded process? Or is it perhaps possible to have one CPU-core decode a source while the second encodes it?

Just curious...
Each decode/encode operation is performed in its own thread (the number of which is configurable in the preferences). The decode/encode operations are now tightly linked- when an encoder is created, a decoder is created along with it, and the decoder only provides data when the encoder needs it.
Thanks. Is this method faster? It probably will because you skip a whole step, right?

User avatar
sbooth
Site Admin
Posts: 2445
Joined: Fri Dec 23, 2005 7:45 am
Location: USA
Contact:

Post by sbooth » Wed Sep 20, 2006 3:06 pm

Maurits wrote:Thanks. Is this method faster? It probably will because you skip a whole step, right?
I guess only experimentation will tell- but I assume it will be faster because Max won't have to go to disk all the time...

User avatar
Nils
Posts: 13
Joined: Fri Mar 03, 2006 5:42 am

Post by Nils » Thu Sep 21, 2006 10:17 pm

I just got a crash using the Max revision 867 build by krmathis. I hope this is the correct place to report it.

As I understand it, ripping from cd is not working with the new build, but encoding is. So I took some flac files I had already encoded with Max and tried to convert them with revision 867 to try it out. That is where I got the crash.

The process was something like this:

a. Rip R.E.M. - Reveal CD -> Flac compression 8 with Max 0.6.1 = everything okay

b. convert Flac files -> mp3 transparent with Max revision 867 = crash after ~ 3 seconds

I tried the same thing three times, and got an identical crash each time. Also when I look in the Reveal folder, there are two files called '01 The Lifting.mp3' and '02 I've Been High.mp3', but they are both zero kb files that don't work at all.

Here is the crash report dialog that popped up:

Code: Select all

2006-09-21 14:48:13 -0700

EXC_BAD_ACCESS (0x0001)
KERN_PROTECTION_FAILURE (0x0002) at 0x00000084

Thread 5 Crashed:
0    lame_get_VBR + 24
1    0 + 0
2    -[MPEGEncoder settingsString] + 36 (MPEGEncoder.m:269)
3    objc_msgSendv + 180
4    -[NSInvocation invoke] + 1384
5    -[NSConnection dispatchInvocation:] + 252
6    -[NSConnection handleRequest:sequence:] + 988
7    -[NSConnection handlePortCoder:] + 496
8    -[NSConcretePortCoder dispatch] + 100
9    __NSFireMachPort + 276
I can post the rest of the crash log if that would be helpful, though it is pretty long. I hope that is helpful, though I'm not very technical so I don't really know what much of it means. I'm willing to try other things if it would help.

Nils

Machine:
Power Mac G5 DP 1.8Ghz, 1.25 GB
PIONEER DVD-RW DVR-107D

User avatar
sbooth
Site Admin
Posts: 2445
Joined: Fri Dec 23, 2005 7:45 am
Location: USA
Contact:

Post by sbooth » Thu Sep 21, 2006 10:58 pm

Nils wrote:I just got a crash using the Max revision 867 build by krmathis. I hope this is the correct place to report it.

As I understand it, ripping from cd is not working with the new build, but encoding is. So I took some flac files I had already encoded with Max and tried to convert them with revision 867 to try it out. That is where I got the crash.
I'm surprised you were even able to rip at all- I thought that I had thoroughly broken everything!

This is the correct place for a crash report- I was able to find the bug and fix it. Thanks for letting me know!

User avatar
krmathis
Posts: 233
Joined: Thu Feb 02, 2006 11:05 am
Location: Oslo, Norway

Post by krmathis » Fri Sep 22, 2006 7:54 pm

Building revision 873 errors out like this:

Code: Select all

/usr/bin/g++-4.0 -o /Users/krmathis/Development/Max/trunk/build/Max.build/Release/Max.build/Objects-normal/ppc/Max -L/Users/krmathis/Development/Max/trunk/build/Release -L/Users/krmathis/Development/Max/trunk -F/Users/krmathis/Development/Max/trunk/build/Release -F/Users/krmathis/Development/Max/trunk -F/Users/krmathis/Development/Max/trunk/Frameworks -filelist /Users/krmathis/Development/Max/trunk/build/Max.build/Release/Max.build/Objects-normal/ppc/Max.LinkFileList -framework mpcdec -framework Cocoa -framework DiskArbitration -framework IOKit -framework CoreAudio -framework AudioToolbox -framework Carbon -framework AppKit -framework cddb -framework cdparanoia -framework cuetools -framework FLAC -framework MAC -framework mp4v2 -framework Ogg -framework OggFLAC -framework sndfile -framework Speex -framework TagLib -framework Vorbis -framework WavPack -framework Growl -framework LAME -arch ppc -Wl,-Y,1455 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk
/usr/bin/ld: Undefined symbols:
_getDefaultOutputFormats
/Users/krmathis/Development/Max/trunk/build/Max.build/Release/Max.build/Objects-normal/ppc/CompactDiscDocument.o reference to undefined _getDefaultOutputFormats
/Users/krmathis/Development/Max/trunk/build/Max.build/Release/Max.build/Objects-normal/ppc/SelectEncodersSheet.o reference to undefined _getDefaultOutputFormats
collect2: ld returned 1 exit status
** BUILD FAILED **
Easy fix?

User avatar
Fuga
Posts: 391
Joined: Mon Jun 05, 2006 8:30 pm
Location: Texas

Post by Fuga » Sat Sep 23, 2006 1:36 am

Just did some WAV to FLAC with build 864. Nice. Better would be to have the results sent to Tag. I tried setting that in the Post-Processing tab but only one file showed there.

User avatar
sbooth
Site Admin
Posts: 2445
Joined: Fri Dec 23, 2005 7:45 am
Location: USA
Contact:

Post by sbooth » Sat Sep 23, 2006 3:31 pm

Fuga wrote:Just did some WAV to FLAC with build 864. Nice. Better would be to have the results sent to Tag. I tried setting that in the Post-Processing tab but only one file showed there.
That's strange- when I did a quick test it seemed to send each output file to Tag. I will do some more testing in a day or so...

Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests