IPB

Welcome Guest ( Log In | Register )

What features would you like to see in opus-tools?
NullC
post Jan 22 2013, 21:13
Post #1





Group: Developer
Posts: 200
Joined: 8-July 03
Member No.: 7653



I'm looking for suggested features to get into opus-tools prior to the libopus 1.1 release.

Before I get 1001 suggestions for it: One frequently requested feature which was recently added is flac input in opusenc. I'm contemplating changing opusdec to use the new opusfile library— which would give it seeking and integrated http(s) streaming support. Also already on my todo list are default comment packet padding so updating metadata doesn't require rewriting the files and adding a replaygain tool.

Some people would really like it if opusenc/opusdec supported taking multiple input files e.g. opusenc *.flac but the implicit output file naming is pretty ununixy, and would break the interface and I got flamed all to heck last time I changed the opusenc interface.... so I'm not sure if/how I want to accommodate that usage.

What other things have you found missing?
Go to the top of the page
+Quote Post
 
Start new topic
Replies
Omicron
post Feb 22 2013, 22:01
Post #2





Group: Members
Posts: 9
Joined: 17-February 13
From: Kishinev
Member No.: 106693



QUOTE
how would the said encoder know how good the music should be

I think it's possible. May be it's difficult to do, but it's possible. Needs one more algorithm for such a work and some sound experts with good/perfect hearing to find that optimal quality when nobody could distinguish the differences.

QUOTE
if you think the answer is "as good as it can be", try lossless.

You are Captain Obvious, aren't you?)

QUOTE
It is impossible for an encoder to conclude that x file at y quality will be transparent to “human”, assuming you mean everyone. And it’s impossible for them to guarantee the same thing for any single human.

OK, for any sound expert while developing algorithm. So no one in the world could carp for none perfect quality.

QUOTE
and find one that is generally transparent to him/her.

For this I need to find out the optimal bitrate just for one track. And I need to do this over and over again. So it's easier to use always 510kbps or use lossless, and it's not quite good for disk space.

For one of the sound it's impossible to distinguish differences at 128kbps, for other at 96kbs. So encoder chooses the optimal quality for each sound more variable not only over the chosen bitrate. 'cos, for example, when I encode mp3(v0) to opus(512) (I know that it's not good to do this, it's just for an example), opus is 7.48mb, while mp3 was 4.43. Do you know what I mean?

If it is a bad idea or very difficult to do, just... never mind.
Go to the top of the page
+Quote Post
db1989
post Feb 22 2013, 22:30
Post #3





Group: Super Moderator
Posts: 5275
Joined: 23-June 06
Member No.: 32180



Is there something contagious going around Hydrogenaudio recently that’s making people misunderstand how VBR encoders work and ignore what people actually write in explanatory replies? I really lack the energy to repeat myself in slightly different words in the hope that something will change, but hey, I’m going to try anyway.

• Encoders are not perfect and cannot always achieve the same level of theoretical quality for all tracks.
• A given level of quality being transparent on one input signal to one listener is not guaranteed to be transparent on across all, or even any, other material.
An encoder cannot possibly know which level of theoretical quality will be transparent to you, as a single individual.

Thus, as much as you evidently want to find a reliably transparent level of quality – but equally, and emphatically, don’t want to do the leg-work that is a necessary corollary – you can either put in the effort and possibly get it, or not put in the effort and don’t. Miracles like a psychic encoder that can guarantee transparency on all signals at minimal size just for you are a nice thought, but so are lots of other things that aren’t and cannot ever be real. That’s a limitation that extends far beyond audio encoding.

This post has been edited by db1989: Feb 22 2013, 22:42
Go to the top of the page
+Quote Post
NullC
post Feb 22 2013, 23:44
Post #4





Group: Developer
Posts: 200
Joined: 8-July 03
Member No.: 7653



QUOTE (db1989 @ Feb 22 2013, 13:30) *
Is there something contagious going around Hydrogenaudio recently that’s making people misunderstand how VBR encoders work and ignore what people actually write in explanatory replies?
Yes. There is. Encoders that have "quality" knobs are apparently misunderstood as actually achieving the ideal they aspire to. This wasn't obvious to me before because it's not the sort of misconception that causes comments.

I will probably add a --quality knob that is just an alias for bitrate which will likely silence the complaints at some point... but I'm not in a rush to do it.

QUOTE (LithosZA @ Jan 26 2013, 03:40) *
A maximum bandwidth setting. In libopus the bandwidth seems to lower automatically when I lower the bitrate, but it seems to be different with opusenc?
If these are possible otherwise please ignore:
- Intensity Stereo threshold setting; tweaking it for low bitrates.
- Force CELT/SILK/Hybrid setting.
Some amount of forcing is possible now via the undocumented set-ctl arguments. Though there is no analog of a settable intensity threshold in our encoder.

Bandwidth and bitrate behavior should be the same w/ libous/opusenc. The only major non-default thing opusenc does is that its VBR by default.

Generally, I am not eager provide detailed internal DSP influencing knobs— at least not as documented user-visible features. The reason for this is simple: If it were easy to set in an improved way the system would do it for you already. If I can't manage to improve the default behavior— knowing how the codec works, having experience and patience with blind testing, and having access to test subjects (you guys)— then it is really unlikely that users of the software— especially ones who haven't shown up in IRC and found out about the undocumented switches— will actually change the settings in a way that will make an improvement... maybe they'll get something that sounds a bit better on the first ten seconds of one sample, then they'll post it up on some less scientifically minded audio forums and people are then cargo-culting it. Meanwhile, exposing knobs takes time and creates more chances for bugs. It's just not generally a good tradeoff in my experience.



Go to the top of the page
+Quote Post
jensend
post Feb 23 2013, 20:48
Post #5





Group: Members
Posts: 143
Joined: 21-May 05
Member No.: 22191



QUOTE (NullC @ Feb 22 2013, 15:44) *
I will probably add a --quality knob that is just an alias for bitrate which will likely silence the complaints at some point... but I'm not in a rush to do it.
As I tried to say in the other "bitrate vs quality" thread before it went off the rails, adding a --quality knob isn't just cosmetic because it allows you to do what you were talking about with "fullband stereo quality equivalent" without causing confusion or dismay. As you said, if somebody puts --bitrate x for their 22kHz mono speech recording and gets a bitrate of x/3 they will be surprised. However, if they put --quality x for their 22kHz mono speech and get a bitrate 1/3 what they get when they encode 44kHz stereo music with the same quality level, that is perfectly normal expected behavior. Likewise for getting 3x the bitrate for 5.1 surround.

It may sound trivial but it really does improve the user experience when you name things in a way that helps people have the right expectations.
QUOTE
Some amount of forcing is possible now via the undocumented set-ctl arguments. . . Generally, I am not eager provide detailed internal DSP influencing knobs— at least not as documented user-visible features. The reason for this is simple: If it were easy to set in an improved way the system would do it for you already. If I can't manage to improve the default behavior— knowing how the codec works, having experience and patience with blind testing, and having access to test subjects (you guys)— then it is really unlikely that users of the software— especially ones who haven't shown up in IRC and found out about the undocumented switches— will actually change the settings in a way that will make an improvement... maybe they'll get something that sounds a bit better on the first ten seconds of one sample, then they'll post it up on some less scientifically minded audio forums and people are then cargo-culting it. Meanwhile, exposing knobs takes time and creates more chances for bugs. It's just not generally a good tradeoff in my experience.
*sigh*

For those not in the know, the CTLs are in include/opus_defines.h in the opus source code. The main CTLs of interest are OPUS_SET_MAX_BANDWIDTH_REQUEST, OPUS_SET_APPLICATION_REQUEST, and OPUS_SET_SIGNAL_REQUEST.

Trying to make Opus use a higher bandwidth than normal, for which you would use OPUS_SET_BANDWIDTH_REQUEST, is dangerous to your audio quality. Only cases I can think of where it might help are encoder bugs like the one jmv just fixed above and some very artificial stuff like the noisy high-frequency test files softrunner talked about in the 1.1a thread. When Opus drops to a lower bandwidth it generally has very good reasons for doing so.

The CTLs may change in the future. In fact, maybe NullC will go change them now to try to prevent people who haven't been through the IRC initiation ceremony and secret handshake from having access to the sacred mysteries through my link, and maybe he'll try to chain me to a rock and have eagles pick at my liver. Caveat emptor atque venditor.

NullC, my reaction to what you've said above:
  • Users have some information about their audio that isn't available to the encoder, e.g. a perfect knowledge of whether their audio is speech or music. Especially at present, when the encoder is trying to do all kinds of analysis with no additional lookahead for non-realtime uses, it's quite conceivable that utilizing that information through some of these settings may help in some situations.
  • People may have use cases where maximum fidelity to the original, which is what the encoder is optimizing for, is not the only desideratum. For instance, as I said above, lower-bandwidth and/or SILK are easier to decode by enough to really make a difference on very constrained targets.
  • IRC does not scale as a way of propagating information. Insisting that everybody hop on #opus and receive verbal instruction from you before trying to do anything unusual may have worked well during early development but is unreasonable in the long run.
  • People are going to find a way to do stupid things no matter what you do. Rather than trying to make it impossible for people to make unwise decisions, it makes more sense to try to spread instruction and warnings and let people come to terms with that information themselves. A handful of fringe people somewhere in the world "cargo-culting it" with unwise settings for a while doesn't have to cause you to lose sleep. Most people won't mess with the options, and almost all of those who do will, with the right information and a little experience, come around to not abusing them. Plenty of other encoders have been through this without seeing persistent widespread abuse of advanced options.
  • Exposing these knobs is quite trivial (even I could do it in a jiffy, and if I thought you'd accept a patch I would), and I have a hard time seeing why exposing what's already in the API would "create more chances" for bugs. Instead, I think exposing the knobs and thus allowing people to explore things more easily would be more likely to help discover bugs that are already latent.


This post has been edited by jensend: Feb 23 2013, 21:06
Go to the top of the page
+Quote Post

Posts in this topic
- NullC   What features would you like to see in opus-tools?   Jan 22 2013, 21:13
- - skamp   What I'd like: an equivalent to vorbiscomment...   Jan 22 2013, 21:25
|- - nu774   QUOTE (skamp @ Jan 23 2013, 05:25) Slight...   Jan 23 2013, 13:12
||- - nu774   QUOTE (nu774 @ Jan 23 2013, 21:12) If I r...   Jan 23 2013, 15:15
|- - skamp   QUOTE (skamp @ Jan 22 2013, 22:25) an equ...   Jul 1 2013, 10:10
|- - Brazil2   QUOTE (skamp @ Jul 1 2013, 11:10) Well, F...   Jul 1 2013, 12:42
- - CoRoNe   Perhaps totally off-topic, but could you lend the ...   Jan 23 2013, 00:31
|- - Seren   Can't really think of anything atm except mayb...   Jan 23 2013, 12:04
|- - DonP   QUOTE (Seren @ Jan 23 2013, 06:04) Can...   Jan 23 2013, 13:14
|- - Banned   QUOTE (lvqcl @ Jan 23 2013, 15:40) Curren...   Jan 23 2013, 19:45
|- - DonP   QUOTE (Banned @ Jan 23 2013, 13:45) QUOTE...   Jan 23 2013, 20:39
|- - NullC   QUOTE (Banned @ Jan 23 2013, 11:45) Well,...   Jan 23 2013, 21:31
|- - Banned   QUOTE (NullC @ Jan 23 2013, 21:31) QUOTE ...   Jan 28 2013, 18:26
- - mamboman   Yes, converting flac to opus will be a very common...   Jan 23 2013, 12:56
|- - gottkaiser   QUOTE (mamboman @ Jan 23 2013, 12:56) ......   Jan 23 2013, 19:38
- - lvqcl   Currently opusenc requires the output filename and...   Jan 23 2013, 15:40
- - .alexander.   QUOTE (NullC @ Jan 23 2013, 00:13) I...   Jan 23 2013, 19:06
|- - saratoga   QUOTE (.alexander. @ Jan 23 2013, 13:06) ...   Jan 23 2013, 23:32
||- - .alexander.   QUOTE (saratoga @ Jan 24 2013, 02:32) Tha...   Jan 24 2013, 00:04
|- - jmvalin   QUOTE (.alexander. @ Jan 23 2013, 13:06) ...   Jan 24 2013, 02:02
- - Dynamic   I think there was a time when VBR quality scales t...   Jan 23 2013, 23:20
- - azaqiel   I would like an opus gain tool that ONLY TAGS the ...   Jan 24 2013, 04:41
- - LithosZA   A maximum bandwidth setting. In libopus the bandwi...   Jan 26 2013, 12:40
- - IgorC   Intensity stereo (IS) setting as all other phsycoa...   Jan 26 2013, 13:09
- - bat_guano   QUOTE (NullC @ Jan 22 2013, 21:13) I...   Jan 26 2013, 19:02
- - nu774   Bitrate might be surely enough when one is working...   Jan 27 2013, 17:42
- - Dynamic   I think QAAC's TVBR settings are roughly half ...   Jan 28 2013, 03:30
|- - NullC   QUOTE (Dynamic @ Jan 27 2013, 18:30) If p...   Feb 4 2013, 19:58
- - moosehunter   There are a few things that I'd like to see. I...   Feb 10 2013, 05:43
|- - NullC   QUOTE (moosehunter @ Feb 9 2013, 20:43) T...   Feb 15 2013, 20:02
||- - moosehunter   QUOTE (NullC @ Feb 15 2013, 13:02) Use th...   Feb 18 2013, 00:31
|- - jensend   Wrote much of this almost a week ago; realized I s...   Feb 15 2013, 20:22
|- - moosehunter   (Can you not edit your posts?) QUOTE (jensend ...   Feb 18 2013, 01:49
|- - jensend   You can edit your posts- but only for one hour aft...   Feb 18 2013, 17:00
|- - moosehunter   QUOTE (jensend @ Feb 18 2013, 10:00) This...   Feb 19 2013, 01:56
|- - jmvalin   QUOTE (jensend @ Feb 18 2013, 11:00) Inte...   Feb 19 2013, 07:11
- - LithosZA   QUOTE A maximum bandwidth setting. In libopus the ...   Feb 18 2013, 06:45
- - Omicron   It would be good to make a feature in encoder so u...   Feb 21 2013, 12:28
|- - db1989   QUOTE (Omicron @ Feb 21 2013, 11:28) It w...   Feb 21 2013, 21:22
- - azaqiel   @Omicron: impossible. how would the said encoder...   Feb 21 2013, 21:15
- - kennedyb4   Tags that would work in Rockbox would be great.   Feb 21 2013, 23:41
- - Omicron   QUOTE how would the said encoder know how good the...   Feb 22 2013, 22:01
|- - db1989   Is there something contagious going around Hydroge...   Feb 22 2013, 22:30
||- - NullC   QUOTE (db1989 @ Feb 22 2013, 13:30) Is th...   Feb 22 2013, 23:44
||- - jensend   QUOTE (NullC @ Feb 22 2013, 15:44) I will...   Feb 23 2013, 20:48
|- - jmvalin   QUOTE (Omicron @ Feb 22 2013, 16:01) I th...   Feb 23 2013, 02:29
- - darkbyte   I think a per channel bitrate setting would be use...   Mar 13 2013, 12:56
|- - jmvalin   QUOTE (darkbyte @ Mar 13 2013, 07:56) I t...   Mar 13 2013, 15:30
|- - darkbyte   QUOTE (jmvalin @ Mar 13 2013, 16:30) Actu...   Mar 13 2013, 17:19
|- - jmvalin   QUOTE (darkbyte @ Mar 13 2013, 12:19) Str...   Mar 13 2013, 21:10
- - polemon   All features I'd like to see in opus-tools, ha...   Jun 24 2013, 16:11
- - NullC   QUOTE (polemon @ Jun 24 2013, 08:11) All ...   Jun 27 2013, 11:25
- - polemon   QUOTE (NullC @ Jun 27 2013, 12:25) well, ...   Jun 28 2013, 05:55
- - NullC   QUOTE (polemon @ Jun 27 2013, 21:55) QUOT...   Jul 1 2013, 16:23


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 1st August 2014 - 12:01