IPB

Welcome Guest ( Log In | Register )

10 Pages V  « < 4 5 6 7 8 > »   
Reply to this topicStart new topic
new Open Source mp3 Encoder from Helix Community
Enig123
post Aug 2 2005, 08:08
Post #126





Group: Members
Posts: 191
Joined: 11-April 02
Member No.: 1749



Can anybody make some tweaks for this encoder to make it better?

I don't think CML or I have the ability to further tweak this encoder sad.gif . I'm sorry for that. But I really hope this encoder can be improved quality wise.

We also need to know Karl's attitude if somebody can intensively tweak this encoder wink.gif .

This post has been edited by Enig123: Aug 2 2005, 11:54
Go to the top of the page
 
+Quote Post
kindofblue
post Aug 2 2005, 09:02
Post #127





Group: Members
Posts: 175
Joined: 16-January 03
Member No.: 4600



I second that. The phenomenal speed is just too good to pass up. Perhaps someone could also include the possibility to accept ID3 tags.


--------------------
WavPack 4.31 / LAME 3.98 alpha 3 -V9 -vbr-new
Go to the top of the page
 
+Quote Post
inhouseuk
post Aug 2 2005, 13:19
Post #128





Group: Members
Posts: 16
Joined: 28-July 05
Member No.: 23569



QUOTE (level @ Aug 2 2005, 06:21 AM)
Probably this problem with these two critic samples would be solved doing the block switching algorithm more sensitive.
*


It looks like the threshold is hard coded in mp3enc.cpp

CODE
   t = attack_detectSBT_igr ( sample[0][igrx_ahead], attack_buf[0],
                              side_info.gr[igr_prev][0].short_flag_next );
   short_flag = 0;
   if ( t > 700 )
   {
       short_flag = 1;
   }


It might be worth playing around with the value to see if it is possible to increase the number of short blocks.
Go to the top of the page
 
+Quote Post
Enig123
post Aug 2 2005, 13:55
Post #129





Group: Members
Posts: 191
Joined: 11-April 02
Member No.: 1749



Do too many short-blocks suffer the quality, or has other side-effect simutaneously?

Anyway, it's worth tweaking with the threshold. We'll see if the problem reported by level can be solved via this tuning.

Since CML reinstalled the OS of his computer, can someone, maby John33, make a test build with switch can set this value mannually?

This post has been edited by Enig123: Aug 2 2005, 13:56
Go to the top of the page
 
+Quote Post
Gabriel
post Aug 2 2005, 14:44
Post #130


LAME developer


Group: Developer
Posts: 2950
Joined: 1-October 01
From: Nanterre, France
Member No.: 138



QUOTE
It might be worth playing around with the value to see if it is possible to increase the number of short blocks.

In Lame the short block threshold is defined according to the target bitrate /vbr level. (you will probably want to encoder to be more sensitive to short blocks at higher bitrates, and using less short blocks at lower bitrates).
Beware of not using too many short blocks, as they hurt quality due to their low resolution in the frequency domain.
Go to the top of the page
 
+Quote Post
inhouseuk
post Aug 2 2005, 15:15
Post #131





Group: Members
Posts: 16
Joined: 28-July 05
Member No.: 23569



QUOTE (Gabriel @ Aug 2 2005, 02:44 PM)
QUOTE
It might be worth playing around with the value to see if it is possible to increase the number of short blocks.

In Lame the short block threshold is defined according to the target bitrate /vbr level. (you will probably want to encoder to be more sensitive to short blocks at higher bitrates, and using less short blocks at lower bitrates).
Beware of not using too many short blocks, as they hurt quality due to their low resolution in the frequency domain.
*



So something like:

threshold = value - (multiplier * target_bitrate)

where value and multiplier can be set on the command line would probably better for testing purposes then?

looking at mp3enc.cpp a bit closer, it looks like the threshold is checked/used in more than one place.
Go to the top of the page
 
+Quote Post
Enig123
post Aug 3 2005, 05:30
Post #132





Group: Members
Posts: 191
Joined: 11-April 02
Member No.: 1749



I take a look at the sourcecode. It seems this encoder use the same block-type for both-channels (for stereo of course).

I wonder how does LAME handle the situation when there's different type-selection for each channel. If they take different selection, and the summation of the criteria value agree taking long block, does it suffer the quality (one channel pre-echo maby)?

As I know, if different block types used, some decoders may have trouble with such situation, even it's part of mp3 standard.
Go to the top of the page
 
+Quote Post
rjamorim
post Aug 3 2005, 06:30
Post #133


Rarewares admin


Group: Members
Posts: 7515
Joined: 30-September 01
From: Brazil
Member No.: 81



QUOTE (Enig123 @ Jul 14 2005, 04:29 AM)
What's RPSL/RCSL license, briefly?
*


I took a round of interpretation at the RPSL, and seems to be a nice license. But it also features one of the most thick legalese I ever found.

From my somewhat limited comprehension of what I read, I can comment that:

- It's a virotic license, like the GPL. What means that if you use any portion of their code in your program, you must open your whole program under the RPSL. Other modules that might be used by your program can be licensed under other terms, as long as they are compatible (and all licenses deemed compatible with the RPSL by RN are open source ones). See section 4.

- RPSL is compatible to the GPL, but not the other way around.

- There is lots of care regarding patent mess. They disclaim responsability over patents covering the code they distribute, and add a termination clause where you can't sue them over patents. Which bring me to my next comment...

- There is a termination clause. This is obviously not a good thing. If you look at the FSF licenses, BSD, or most other OSS licenses, you'll see there are no ways to terminate them.

Lack of a termination clause is important, because otherwise, you could be at the copyright holder's whim. You step out of the line, he terminates the license and you can't use that code anymore. The clause 11.1a worries me, particularly, because it brings the whole license into play for termination cause. And, as most licenses, RPSL is highly interpretative.

The rest is pretty much disclaimers, limitation of liability, no warranties, don't use our trademarks and the like.

QUOTE (Enig123 @ Aug 2 2005, 04:08 AM)
We also need to know Karl's attitude if somebody can intensively tweak this encoder  wink.gif
*


According to the license, you can go nuts and improve the code as much as you want, as long as you release all your improvements under the same license. Just be aware of that suspicious termination clause...


--------------------
Get up-to-date binaries of Lame, AAC, Vorbis and much more at RareWares:
http://www.rarewares.org
Go to the top of the page
 
+Quote Post
robert
post Aug 3 2005, 08:37
Post #134


LAME developer


Group: Developer
Posts: 584
Joined: 22-September 01
Member No.: 5



QUOTE (Enig123 @ Aug 3 2005, 06:30 AM)
I take a look at the sourcecode. It seems this encoder use the same block-type for both-channels (for stereo of course).

I wonder how does LAME handle the situation when there's different type-selection for each channel. If they take different selection, and the summation of the criteria value agree taking long block, does it suffer the quality (one channel pre-echo maby)?

As I know, if different block types used, some decoders may have trouble with such situation, even it's part of mp3 standard.
*

in stereo mode (be it joint or simple) lame switches to short blocks on both channels when on one channel or both channels short blocks are triggered. in dual mono channel mode (-md, not recommended for stereo encoding, but for bi-lingual encodings) lame switches to short blocks only on those channels which triggered it.
Go to the top of the page
 
+Quote Post
Gabriel
post Aug 3 2005, 08:39
Post #135


LAME developer


Group: Developer
Posts: 2950
Joined: 1-October 01
From: Nanterre, France
Member No.: 138



QUOTE
What's RPSL/RCSL license, briefly?

In my understanding it is a license that includes:

*If you use some code covered by RPSL/RCSL license in a product, then your product must comply with the same license (thus can not be used in closed source applications, unlike LGPL)

*If you implement something in covered code, you give Real a royalty free license applying to both copyright and patent right to use it, but also to reproduce it in any other product, that do not specially needs to be covered by such license (ie if you implement in their code something covered by one of your patents then now have a royalty free license regarding this patent, including in their potential other products that may be closed source)

*The license can be terminated by Real

So in another language: "ReaL oWnz aLL YoUr WorK"

So overall this license is higly favorable to Real, and could cause concern to potential contributors.
However, it is still very interesting to see this source code, considering that it is now open knowledge.
Go to the top of the page
 
+Quote Post
Gabriel
post Aug 3 2005, 08:40
Post #136


LAME developer


Group: Developer
Posts: 2950
Joined: 1-October 01
From: Nanterre, France
Member No.: 138



QUOTE
As I know, if different block types used, some decoders may have trouble with such situation, even it's part of mp3 standard.

It is known to cause audible glitches on some Sony and Clarion car players.
Go to the top of the page
 
+Quote Post
Gabriel
post Aug 3 2005, 08:42
Post #137


LAME developer


Group: Developer
Posts: 2950
Joined: 1-October 01
From: Nanterre, France
Member No.: 138



QUOTE
According to the license, you can go nuts and improve the code as much as you want, as long as you release all your improvements under the same license. Just be aware of that suspicious termination clause...

Project Mayo again ?
Go to the top of the page
 
+Quote Post
Enig123
post Aug 3 2005, 13:52
Post #138





Group: Members
Posts: 191
Joined: 11-April 02
Member No.: 1749



detect.c, line 91
CODE
sum = 7.0e4f;

does this value have some relationship with the default threshold for block-switching, 700?
Go to the top of the page
 
+Quote Post
Enig123
post Aug 3 2005, 14:14
Post #139





Group: Members
Posts: 191
Joined: 11-April 02
Member No.: 1749



CML rev12 (Only for test) binary uploaded as usual, at the last post.
http://www.hydrogenaudio.org/forums/index....t=25&p=317595&#

* Add a switch -SBT that can set the short_block_threshold (default is 700). This value can range to negative values.

** Short block detection logic changed a little.


Any further testing is welcome. For the problem sample level offered http://www.hydrogenaudio.org/forums/index....c=35531&st=100# , can someone (level) find a -SBT value to let the distortion gone?

With SBT set to default, we can see if the block-switch logic change make any sence. This kind of result is also appriciated.

This post has been edited by Enig123: Aug 3 2005, 14:19
Go to the top of the page
 
+Quote Post
inhouseuk
post Aug 3 2005, 16:49
Post #140





Group: Members
Posts: 16
Joined: 28-July 05
Member No.: 23569



QUOTE (Enig123 @ Aug 3 2005, 02:14 PM)
CML rev12 (Only for test) binary uploaded as usual, at the last post.
http://www.hydrogenaudio.org/forums/index....t=25&p=317595&#

* Add a switch -SBT that can set the short_block_threshold (default is 700). This value can range to negative values.

** Short block detection logic changed a little.

*


Can you make the amended source available somewhere as well.

Thanks
Go to the top of the page
 
+Quote Post
Enig123
post Aug 4 2005, 03:51
Post #141





Group: Members
Posts: 191
Joined: 11-April 02
Member No.: 1749



Gabriel

Is there any way to handle transient better by improve transient detector in the detect.c?

I think lame handle the transient in a more sophisticated way. Would you please enlighten us where's the correspond part in lame project we can find?

This post has been edited by Enig123: Aug 4 2005, 04:00
Go to the top of the page
 
+Quote Post
Enig123
post Aug 4 2005, 07:01
Post #142





Group: Members
Posts: 191
Joined: 11-April 02
Member No.: 1749



QUOTE (inhouseuk @ Aug 3 2005, 11:49 PM)
Can you make the amended source available somewhere as well.

Thanks



The source code package have been uploaded. Will you please check the modification, and see if it make any sense? Because CML and I are not familiar with mp3 specification and audio compression, so we must be very careful and try not to make things worse.

Any comment or testing result will be helpful.
Go to the top of the page
 
+Quote Post
Gabriel
post Aug 4 2005, 08:19
Post #143


LAME developer


Group: Developer
Posts: 2950
Joined: 1-October 01
From: Nanterre, France
Member No.: 138



QUOTE
Is there any way to handle transient better by improve transient detector in the detect.c?

I think lame handle the transient in a more sophisticated way. Would you please enlighten us where's the correspond part in lame project we can find?


There are several ways to make block size decision.
Gpsycho is switching to short blocks on PE surge, as suggested by the ISO demonstration model II, but with an improved PE computation. As PE is purely conceptual, this can be quite tricky.
NSpsytune using an high pass on the short blocks, and is detecting surges between the high passed short blocks.

From my short look at the Helix mp3 encoder, it seems to me that it is detecting short blocks using the output from the filterbank (this is also used in Lame4 and Uzura3). It is clearly the faster method, as this is the earliest place where such a detection can be made.

Regarding short blocks, as Xing had to deal without short blocks during a long time, it is possible that the encoder could have a quite good pre-echo prevention scheme for long blocks to overcome this, and so perhaps missed short blocks could be less critical with this encoder than with other ones.

If you want to tune the short block detection, it might be a good idea to use mp3x to check the output of different encoders.
Go to the top of the page
 
+Quote Post
bug80
post Aug 4 2005, 10:14
Post #144





Group: Members
Posts: 342
Joined: 23-January 05
From: The Netherlands
Member No.: 19254



As promised in another thread, I've performed a listening test at ~140 kbs, including Lame 3.96.1, Lame 3.97a11 --vbr-new and Helix rev11.

The results are presented in the Lame 3.97a11 testing thread.

This post has been edited by bug80: Aug 4 2005, 10:20
Go to the top of the page
 
+Quote Post
jarsonic
post Aug 4 2005, 15:42
Post #145





Group: Members
Posts: 180
Joined: 30-September 01
From: C-ville, VA
Member No.: 83



QUOTE (Enig123 @ Jul 29 2005, 03:02 AM)
For example, you can use
CODE
- %d -V75 -X -U2

for VBR 75 encoding with foobar2000, where "-" represent stdin.
*



Funny, I'm getting an error in fb2k when I use that encoding string:

ERROR (foo_clienc) : Writing to encoder failed
ERROR (foo_clienc) : Encoding failed
ERROR (foo_diskwriter) : Conversion failed.


parameters verbatum are: - %d -V75 -X -U2


any ideas?

This post has been edited by jarsonic: Aug 4 2005, 15:43
Go to the top of the page
 
+Quote Post
bug80
post Aug 4 2005, 15:53
Post #146





Group: Members
Posts: 342
Joined: 23-January 05
From: The Netherlands
Member No.: 19254



QUOTE (jarsonic @ Aug 4 2005, 04:42 PM)
QUOTE (Enig123 @ Jul 29 2005, 03:02 AM)
For example, you can use
CODE
- %d -V75 -X -U2

for VBR 75 encoding with foobar2000, where "-" represent stdin.
*



Funny, I'm getting an error in fb2k when I use that encoding string:

ERROR (foo_clienc) : Writing to encoder failed
ERROR (foo_clienc) : Encoding failed
ERROR (foo_diskwriter) : Conversion failed.


parameters verbatum are: - %d -V75 -X -U2


any ideas?
*



Yes, I can give you two options:

1) If you haven't done it yet: you should set "Highest BPS mode supported" to 16 bit instead of 24 bit.

2) If you have a non-Intel PC (AMD), then you should remove the -U2 switch. I have an AMD Athlon and the encoding hangs when I include the -U2 switch.
Go to the top of the page
 
+Quote Post
Gabriel
post Aug 5 2005, 10:55
Post #147


LAME developer


Group: Developer
Posts: 2950
Joined: 1-October 01
From: Nanterre, France
Member No.: 138



Considering that the Real mp3 encoder is a speed champion, I am wondering how would it compete with Gogo, regarding quality.
I think that it might possibly provide better quality than Gogo.
Go to the top of the page
 
+Quote Post
karl_lillevold
post Aug 5 2005, 20:39
Post #148


RealNetworks Sr. Codec Engineer


Group: Developer (Donating)
Posts: 89
Joined: 12-June 03
From: Seattle
Member No.: 7151



I have downloaded CML's latest source code, created a diff against the code checked in on Helix, and sent it out for code review on the proper Helix mailing list: datatype-dev@helixcommunity.org. Depending on the speed of the response there, the changes should soon be checked in.

I modified the project file such that it can be checked in to the same folder as the source code. In addition I had to include some (double) typecasts to avoid compiler errors for ambiguous usage of pow, log, and log10.

EDIT: changed typecast to (double) from (float)

This post has been edited by karl_lillevold: Aug 5 2005, 20:55


--------------------
Sr. Codec Engineer (video) | RealNetworks Codec Group | helixcommunity.org
This information is provided "AS IS" with no warranties, grants no rights, and reflects my personal opinion.
Go to the top of the page
 
+Quote Post
Cerebus
post Aug 5 2005, 22:51
Post #149





Group: Members
Posts: 152
Joined: 31-October 02
Member No.: 3664



I've been real pleased with the performance of this encoder - the speed is really unbeatable, and the quality is fine for my purposes. A few comments:

1. I'm using an Athlon for encoding, and I have no troubles with the U2 flag.

2. I have a script that pipes a shntool output into an mp3 encoder and looks for the return code of the mp3 encoder for success...and when I use mp3enc, it always returns a failure code. Can this be changed?

3. I don't know what the difference between the icl9 and vc7 versions is - can someone enlighten me?

Thanks!
Go to the top of the page
 
+Quote Post
rjamorim
post Aug 5 2005, 22:54
Post #150


Rarewares admin


Group: Members
Posts: 7515
Joined: 30-September 01
From: Brazil
Member No.: 81



QUOTE (Cerebus @ Aug 5 2005, 06:51 PM)
3.  I don't know what the difference between the icl9 and vc7 versions is - can someone enlighten me?
*


Compiler used.

ICL9: Intel C Compiler
VC7: Microsoft C Compiler


--------------------
Get up-to-date binaries of Lame, AAC, Vorbis and much more at RareWares:
http://www.rarewares.org
Go to the top of the page
 
+Quote Post

10 Pages V  « < 4 5 6 7 8 > » 
Reply to this topicStart new topic
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 22nd November 2009 - 07:03