Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(841)

Side by Side Diff: src/opus_multistream.c

Issue 12388030: Update Opus to 1.0.2. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/opus
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/opus_encoder.c ('k') | tests/run_vectors.sh » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Copyright (c) 2011 Xiph.Org Foundation 1 /* Copyright (c) 2011 Xiph.Org Foundation
2 Written by Jean-Marc Valin */ 2 Written by Jean-Marc Valin */
3 /* 3 /*
4 Redistribution and use in source and binary forms, with or without 4 Redistribution and use in source and binary forms, with or without
5 modification, are permitted provided that the following conditions 5 modification, are permitted provided that the following conditions
6 are met: 6 are met:
7 7
8 - Redistributions of source code must retain the above copyright 8 - Redistributions of source code must retain the above copyright
9 notice, this list of conditions and the following disclaimer. 9 notice, this list of conditions and the following disclaimer.
10 10
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 opus_int32 Fs, 152 opus_int32 Fs,
153 int channels, 153 int channels,
154 int streams, 154 int streams,
155 int coupled_streams, 155 int coupled_streams,
156 const unsigned char *mapping, 156 const unsigned char *mapping,
157 int application 157 int application
158 ) 158 )
159 { 159 {
160 int coupled_size; 160 int coupled_size;
161 int mono_size; 161 int mono_size;
162 int i; 162 int i, ret;
163 char *ptr; 163 char *ptr;
164 164
165 if ((channels>255) || (channels<1) || (coupled_streams>streams) || 165 if ((channels>255) || (channels<1) || (coupled_streams>streams) ||
166 (coupled_streams+streams>255) || (streams<1) || (coupled_streams<0)) 166 (coupled_streams+streams>255) || (streams<1) || (coupled_streams<0))
167 return OPUS_BAD_ARG; 167 return OPUS_BAD_ARG;
168 168
169 st->layout.nb_channels = channels; 169 st->layout.nb_channels = channels;
170 st->layout.nb_streams = streams; 170 st->layout.nb_streams = streams;
171 st->layout.nb_coupled_streams = coupled_streams; 171 st->layout.nb_coupled_streams = coupled_streams;
172 172
173 for (i=0;i<st->layout.nb_channels;i++) 173 for (i=0;i<st->layout.nb_channels;i++)
174 st->layout.mapping[i] = mapping[i]; 174 st->layout.mapping[i] = mapping[i];
175 if (!validate_layout(&st->layout) || !validate_encoder_layout(&st->layout)) 175 if (!validate_layout(&st->layout) || !validate_encoder_layout(&st->layout))
176 return OPUS_BAD_ARG; 176 return OPUS_BAD_ARG;
177 ptr = (char*)st + align(sizeof(OpusMSEncoder)); 177 ptr = (char*)st + align(sizeof(OpusMSEncoder));
178 coupled_size = opus_encoder_get_size(2); 178 coupled_size = opus_encoder_get_size(2);
179 mono_size = opus_encoder_get_size(1); 179 mono_size = opus_encoder_get_size(1);
180 180
181 for (i=0;i<st->layout.nb_coupled_streams;i++) 181 for (i=0;i<st->layout.nb_coupled_streams;i++)
182 { 182 {
183 opus_encoder_init((OpusEncoder*)ptr, Fs, 2, application); 183 ret = opus_encoder_init((OpusEncoder*)ptr, Fs, 2, application);
184 if(ret!=OPUS_OK)return ret;
184 ptr += align(coupled_size); 185 ptr += align(coupled_size);
185 } 186 }
186 for (;i<st->layout.nb_streams;i++) 187 for (;i<st->layout.nb_streams;i++)
187 { 188 {
188 opus_encoder_init((OpusEncoder*)ptr, Fs, 1, application); 189 ret = opus_encoder_init((OpusEncoder*)ptr, Fs, 1, application);
190 if(ret!=OPUS_OK)return ret;
189 ptr += align(mono_size); 191 ptr += align(mono_size);
190 } 192 }
191 return OPUS_OK; 193 return OPUS_OK;
192 } 194 }
193 195
194 OpusMSEncoder *opus_multistream_encoder_create( 196 OpusMSEncoder *opus_multistream_encoder_create(
195 opus_int32 Fs, 197 opus_int32 Fs,
196 int channels, 198 int channels,
197 int streams, 199 int streams,
198 int coupled_streams, 200 int coupled_streams,
199 const unsigned char *mapping, 201 const unsigned char *mapping,
200 int application, 202 int application,
201 int *error 203 int *error
202 ) 204 )
203 { 205 {
204 int ret; 206 int ret;
205 OpusMSEncoder *st = (OpusMSEncoder *)opus_alloc(opus_multistream_encoder_get_ size(streams, coupled_streams)); 207 OpusMSEncoder *st;
208 if ((channels>255) || (channels<1) || (coupled_streams>streams) ||
209 (coupled_streams+streams>255) || (streams<1) || (coupled_streams<0))
210 {
211 if (error)
212 *error = OPUS_BAD_ARG;
213 return NULL;
214 }
215 st = (OpusMSEncoder *)opus_alloc(opus_multistream_encoder_get_size(streams, c oupled_streams));
206 if (st==NULL) 216 if (st==NULL)
207 { 217 {
208 if (error) 218 if (error)
209 *error = OPUS_ALLOC_FAIL; 219 *error = OPUS_ALLOC_FAIL;
210 return NULL; 220 return NULL;
211 } 221 }
212 ret = opus_multistream_encoder_init(st, Fs, channels, streams, coupled_stream s, mapping, application); 222 ret = opus_multistream_encoder_init(st, Fs, channels, streams, coupled_stream s, mapping, application);
213 if (ret != OPUS_OK) 223 if (ret != OPUS_OK)
214 { 224 {
215 opus_free(st); 225 opus_free(st);
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 OpusMSDecoder *opus_multistream_decoder_create( 650 OpusMSDecoder *opus_multistream_decoder_create(
641 opus_int32 Fs, 651 opus_int32 Fs,
642 int channels, 652 int channels,
643 int streams, 653 int streams,
644 int coupled_streams, 654 int coupled_streams,
645 const unsigned char *mapping, 655 const unsigned char *mapping,
646 int *error 656 int *error
647 ) 657 )
648 { 658 {
649 int ret; 659 int ret;
650 OpusMSDecoder *st = (OpusMSDecoder *)opus_alloc(opus_multistream_decoder_get_ size(streams, coupled_streams)); 660 OpusMSDecoder *st;
661 if ((channels>255) || (channels<1) || (coupled_streams>streams) ||
662 (coupled_streams+streams>255) || (streams<1) || (coupled_streams<0))
663 {
664 if (error)
665 *error = OPUS_BAD_ARG;
666 return NULL;
667 }
668 st = (OpusMSDecoder *)opus_alloc(opus_multistream_decoder_get_size(streams, c oupled_streams));
651 if (st==NULL) 669 if (st==NULL)
652 { 670 {
653 if (error) 671 if (error)
654 *error = OPUS_ALLOC_FAIL; 672 *error = OPUS_ALLOC_FAIL;
655 return NULL; 673 return NULL;
656 } 674 }
657 ret = opus_multistream_decoder_init(st, Fs, channels, streams, coupled_stream s, mapping); 675 ret = opus_multistream_decoder_init(st, Fs, channels, streams, coupled_stream s, mapping);
658 if (error) 676 if (error)
659 *error = ret; 677 *error = ret;
660 if (ret != OPUS_OK) 678 if (ret != OPUS_OK)
661 { 679 {
662 opus_free(st); 680 opus_free(st);
663 st = NULL; 681 st = NULL;
664 } 682 }
665 return st; 683 return st;
666
667
668 } 684 }
669 685
670 typedef void (*opus_copy_channel_out_func)( 686 typedef void (*opus_copy_channel_out_func)(
671 void *dst, 687 void *dst,
672 int dst_stride, 688 int dst_stride,
673 int dst_channel, 689 int dst_channel,
674 const opus_val16 *src, 690 const opus_val16 *src,
675 int src_stride, 691 int src_stride,
676 int frame_size 692 int frame_size
677 ); 693 );
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 917
902 va_start(ap, request); 918 va_start(ap, request);
903 919
904 coupled_size = opus_decoder_get_size(2); 920 coupled_size = opus_decoder_get_size(2);
905 mono_size = opus_decoder_get_size(1); 921 mono_size = opus_decoder_get_size(1);
906 ptr = (char*)st + align(sizeof(OpusMSDecoder)); 922 ptr = (char*)st + align(sizeof(OpusMSDecoder));
907 switch (request) 923 switch (request)
908 { 924 {
909 case OPUS_GET_BANDWIDTH_REQUEST: 925 case OPUS_GET_BANDWIDTH_REQUEST:
910 case OPUS_GET_SAMPLE_RATE_REQUEST: 926 case OPUS_GET_SAMPLE_RATE_REQUEST:
927 case OPUS_GET_GAIN_REQUEST:
928 case OPUS_GET_LAST_PACKET_DURATION_REQUEST:
911 { 929 {
912 OpusDecoder *dec; 930 OpusDecoder *dec;
913 /* For int32* GET params, just query the first stream */ 931 /* For int32* GET params, just query the first stream */
914 opus_int32 *value = va_arg(ap, opus_int32*); 932 opus_int32 *value = va_arg(ap, opus_int32*);
915 dec = (OpusDecoder*)ptr; 933 dec = (OpusDecoder*)ptr;
916 ret = opus_decoder_ctl(dec, request, value); 934 ret = opus_decoder_ctl(dec, request, value);
917 } 935 }
918 break; 936 break;
919 case OPUS_GET_FINAL_RANGE_REQUEST: 937 case OPUS_GET_FINAL_RANGE_REQUEST:
920 { 938 {
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 1018
1001 va_end(ap); 1019 va_end(ap);
1002 return ret; 1020 return ret;
1003 } 1021 }
1004 1022
1005 1023
1006 void opus_multistream_decoder_destroy(OpusMSDecoder *st) 1024 void opus_multistream_decoder_destroy(OpusMSDecoder *st)
1007 { 1025 {
1008 opus_free(st); 1026 opus_free(st);
1009 } 1027 }
OLDNEW
« no previous file with comments | « src/opus_encoder.c ('k') | tests/run_vectors.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698