[opus] Antw: [opus-tools] [PATCH] Add channel-mapping argument to force channel mapping
Jean-Marc Valin
jmvalin at jmvalin.ca
Tue Apr 26 06:55:52 UTC 2016
On 04/26/2016 02:45 AM, Ulrich Windl wrote:
> I haven't looked into the code yet, but the patch uses different
> coding conventions like "if(" and "if ("; like wise "){" and ") {".
> My personal taste is to have spaces after keywords, but that's just
> me.
>
> I'd prefer a consistent coding style.
It's up to Greg who's maintaining opus-tools, but Opus has at least 3
different coding styles, so it's hard to be consistent with anything.
Jean-Marc
> Regards, Ulrich
>
>>>> Michael Graczyk <mgraczyk at google.com> schrieb am 26.04.2016 um
>>>> 06:31 in
> Nachricht
> <CABcu6-gnkPHY0d8rqDie8z5OZ+WH6eb0P+k6bPit2H8i5RrS1w at mail.gmail.com>:
>>
>
This patch adds a new option "channel-mapping" to opusenc which sets
>> the channel mapping family used by the multistream encoder. Please
>> let me know whether adding this option is worthwhile and whether
>> the help string is okay. I tried to keep it short but accurate.
>>
>> The error message for an unimplemented channel mapping is "Error
>> cannot create encoder: request not implemented". I do not think
>> that is descriptive enough, but I also do not know of a way to
>> determine which channel mapping families are supported by the
>> multistream encoder. If we hard-code valid channel mappings {0, 1,
>> 255}, opusenc will need to be updated when channel mappings are
>> added to Opus.
>>
>> With this patch, you can encode four streams independently with $
>> opusenc --channel-mapping 255 in.wav out.opus
>>
>> When channel mapping families are added to Opus in the future
>> (ambisonics, for example), this option will make it possible to
>> use them.
>>
>> --- src/opusenc.c | 16 +++++++++++++++- 1 file changed, 15
>> insertions(+), 1 deletion(-)
>>
>> diff --git a/src/opusenc.c b/src/opusenc.c index 0f83194..f2c7c48
>> 100644 --- a/src/opusenc.c +++ b/src/opusenc.c @@ -137,6 +137,8 @@
>> void usage(void) printf(" --framesize n Maximum frame size in
>> milliseconds\n"); printf(" (2.5, 5, 10, 20,
>> 40, 60, default: 20)\n"); printf(" --expect-loss Percentage
>> packet loss to expect (default: 0)\n"); + printf("
>> --channel-mapping Channel Mapping Family\n"); + printf("
>> (default: {0, 1, 255} for {1-2, 3-8, 9+} channels)\n"); printf("
>> --downmix-mono Downmix to mono\n"); printf(" --downmix-stereo
>> Downmix to stereo (if >2 channels)\n"); printf(" --max-delay n
>> Maximum container delay in milliseconds\n"); @@ -260,6 +262,7 @@
>> int main(int argc, char **argv) {"complexity", required_argument,
>> NULL, 0}, {"framesize", required_argument, NULL, 0},
>> {"expect-loss", required_argument, NULL, 0}, +
>> {"channel-mapping", required_argument, NULL, 0},
>> {"downmix-mono",no_argument,NULL, 0},
>> {"downmix-stereo",no_argument,NULL, 0},
>> {"no-downmix",no_argument,NULL, 0}, @@ -337,6 +340,7 @@ int
>> main(int argc, char **argv) opus_int32 coding_rate=48000;
>> opus_int32 frame_size=960; int chan=2; +
>> int channel_mapping=-1; int
>> with_hard_cbr=0; int with_cvbr=0; int
>> expect_loss=0; @@ -465,6 +469,12 @@ int main(int argc, char
>> **argv) fprintf(stderr,"Expected loss is a percent and must be
>> 0-100.\n"); exit(1); } + }else
>> if(strcmp(long_options[option_index].name,"channel-mapping")==0){ +
>> channel_mapping=atoi(optarg); + if(channel_mapping < 0 ||
>> channel_mapping > 255){ + fprintf(stderr,"Invalid
>> channel-mapping: %s\n",optarg); + exit(1); + }
>> }else if(strcmp(long_options[option_index].name,"comp")==0 ||
>> strcmp(long_options[option_index].name,"complexity")==0){
>> complexity=atoi(optarg); @@ -692,7 +702,11 @@ int main(int argc,
>> char **argv)
>>
>> /*OggOpus headers*/ /*FIXME: broke forcemono*/
>> header.channels=chan; -
>> header.channel_mapping=header.channels>8?255:chan>2; + if
>> (channel_mapping >= 0) { + header.channel_mapping =
>> channel_mapping; + } else { + header.channel_mapping =
>> header.channels > 8 ? 255 : header.channels > 2; + }
>> header.input_sample_rate=rate; header.gain=inopt.gain;
>>
>> --
>>
>> Thanks, Michael Graczyk
>> _______________________________________________ opus mailing list
>> opus at xiph.org http://lists.xiph.org/mailman/listinfo/opus
>
>
>
> _______________________________________________ opus mailing list
> opus at xiph.org http://lists.xiph.org/mailman/listinfo/opus
>
More information about the opus
mailing list