File: | libs/opus-1.1-p2/src/repacketizer_demo.c |
Location: | line 140, column 10 |
Description: | Value stored to 'err' is never read |
1 | /* Copyright (c) 2011 Xiph.Org Foundation |
2 | Written by Jean-Marc Valin */ |
3 | /* |
4 | Redistribution and use in source and binary forms, with or without |
5 | modification, are permitted provided that the following conditions |
6 | are met: |
7 | |
8 | - Redistributions of source code must retain the above copyright |
9 | notice, this list of conditions and the following disclaimer. |
10 | |
11 | - Redistributions in binary form must reproduce the above copyright |
12 | notice, this list of conditions and the following disclaimer in the |
13 | documentation and/or other materials provided with the distribution. |
14 | |
15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
16 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
17 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
18 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER |
19 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
20 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
21 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
22 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
23 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
24 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ |
27 | |
28 | #ifdef HAVE_CONFIG_H1 |
29 | #include "config.h" |
30 | #endif |
31 | |
32 | #include "opus.h" |
33 | #include <stdio.h> |
34 | #include <stdlib.h> |
35 | #include <string.h> |
36 | |
37 | #define MAX_PACKETOUT32000 32000 |
38 | |
39 | void usage(char *argv0) |
40 | { |
41 | fprintf(stderrstderr, "usage: %s [options] input_file output_file\n", argv0); |
42 | } |
43 | |
44 | static void int_to_char(opus_uint32 i, unsigned char ch[4]) |
45 | { |
46 | ch[0] = i>>24; |
47 | ch[1] = (i>>16)&0xFF; |
48 | ch[2] = (i>>8)&0xFF; |
49 | ch[3] = i&0xFF; |
50 | } |
51 | |
52 | static opus_uint32 char_to_int(unsigned char ch[4]) |
53 | { |
54 | return ((opus_uint32)ch[0]<<24) | ((opus_uint32)ch[1]<<16) |
55 | | ((opus_uint32)ch[2]<< 8) | (opus_uint32)ch[3]; |
56 | } |
57 | |
58 | int main(int argc, char *argv[]) |
59 | { |
60 | int i, eof=0; |
61 | FILE *fin, *fout; |
62 | unsigned char packets[48][1500]; |
63 | int len[48]; |
64 | int rng[48]; |
65 | OpusRepacketizer *rp; |
66 | unsigned char output_packet[MAX_PACKETOUT32000]; |
67 | int merge = 1, split=0; |
68 | |
69 | if (argc < 3) |
70 | { |
71 | usage(argv[0]); |
72 | return EXIT_FAILURE1; |
73 | } |
74 | for (i=1;i<argc-2;i++) |
75 | { |
76 | if (strcmp(argv[i], "-merge")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (argv[i]) && __builtin_constant_p ("-merge") && (__s1_len = __builtin_strlen (argv[i]), __s2_len = __builtin_strlen ("-merge"), (!((size_t)(const void *)((argv[i]) + 1) - (size_t )(const void *)(argv[i]) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("-merge") + 1) - (size_t)(const void *)("-merge") == 1) || __s2_len >= 4)) ? __builtin_strcmp ( argv[i], "-merge") : (__builtin_constant_p (argv[i]) && ((size_t)(const void *)((argv[i]) + 1) - (size_t)(const void *)(argv[i]) == 1) && (__s1_len = __builtin_strlen (argv [i]), __s1_len < 4) ? (__builtin_constant_p ("-merge") && ((size_t)(const void *)(("-merge") + 1) - (size_t)(const void *)("-merge") == 1) ? __builtin_strcmp (argv[i], "-merge") : ( __extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ("-merge"); int __result = (((const unsigned char *) (const char *) (argv[i]))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (argv[i]))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (argv[i]))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (argv[i]))[3] - __s2[3]); } } __result ; }))) : (__builtin_constant_p ("-merge") && ((size_t )(const void *)(("-merge") + 1) - (size_t)(const void *)("-merge" ) == 1) && (__s2_len = __builtin_strlen ("-merge"), __s2_len < 4) ? (__builtin_constant_p (argv[i]) && ((size_t )(const void *)((argv[i]) + 1) - (size_t)(const void *)(argv[ i]) == 1) ? __builtin_strcmp (argv[i], "-merge") : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (argv[i]); int __result = (((const unsigned char *) ( const char *) ("-merge"))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) ("-merge"))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) ("-merge"))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ("-merge"))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (argv[i], "-merge")))); })==0) |
77 | { |
78 | merge = atoi(argv[i+1]); |
79 | if(merge<1) |
80 | { |
81 | fprintf(stderrstderr, "-merge parameter must be at least 1.\n"); |
82 | return EXIT_FAILURE1; |
83 | } |
84 | if(merge>48) |
85 | { |
86 | fprintf(stderrstderr, "-merge parameter must be less than 48.\n"); |
87 | return EXIT_FAILURE1; |
88 | } |
89 | i++; |
90 | } else if (strcmp(argv[i], "-split")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (argv[i]) && __builtin_constant_p ("-split") && (__s1_len = __builtin_strlen (argv[i]), __s2_len = __builtin_strlen ("-split"), (!((size_t)(const void *)((argv[i]) + 1) - (size_t )(const void *)(argv[i]) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("-split") + 1) - (size_t)(const void *)("-split") == 1) || __s2_len >= 4)) ? __builtin_strcmp ( argv[i], "-split") : (__builtin_constant_p (argv[i]) && ((size_t)(const void *)((argv[i]) + 1) - (size_t)(const void *)(argv[i]) == 1) && (__s1_len = __builtin_strlen (argv [i]), __s1_len < 4) ? (__builtin_constant_p ("-split") && ((size_t)(const void *)(("-split") + 1) - (size_t)(const void *)("-split") == 1) ? __builtin_strcmp (argv[i], "-split") : ( __extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ("-split"); int __result = (((const unsigned char *) (const char *) (argv[i]))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (argv[i]))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (argv[i]))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (argv[i]))[3] - __s2[3]); } } __result ; }))) : (__builtin_constant_p ("-split") && ((size_t )(const void *)(("-split") + 1) - (size_t)(const void *)("-split" ) == 1) && (__s2_len = __builtin_strlen ("-split"), __s2_len < 4) ? (__builtin_constant_p (argv[i]) && ((size_t )(const void *)((argv[i]) + 1) - (size_t)(const void *)(argv[ i]) == 1) ? __builtin_strcmp (argv[i], "-split") : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (argv[i]); int __result = (((const unsigned char *) ( const char *) ("-split"))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) ("-split"))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) ("-split"))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) ("-split"))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (argv[i], "-split")))); })==0) |
91 | split = 1; |
92 | else |
93 | { |
94 | fprintf(stderrstderr, "Unknown option: %s\n", argv[i]); |
95 | usage(argv[0]); |
96 | return EXIT_FAILURE1; |
97 | } |
98 | } |
99 | fin = fopen(argv[argc-2], "r"); |
100 | if(fin==NULL((void*)0)) |
101 | { |
102 | fprintf(stderrstderr, "Error opening input file: %s\n", argv[argc-2]); |
103 | return EXIT_FAILURE1; |
104 | } |
105 | fout = fopen(argv[argc-1], "w"); |
106 | if(fout==NULL((void*)0)) |
107 | { |
108 | fprintf(stderrstderr, "Error opening output file: %s\n", argv[argc-1]); |
109 | fclose(fin); |
110 | return EXIT_FAILURE1; |
111 | } |
112 | |
113 | rp = opus_repacketizer_create(); |
114 | while (!eof) |
115 | { |
116 | int err; |
117 | int nb_packets=merge; |
118 | opus_repacketizer_init(rp); |
119 | for (i=0;i<nb_packets;i++) |
120 | { |
121 | unsigned char ch[4]; |
122 | err = fread(ch, 1, 4, fin); |
123 | len[i] = char_to_int(ch); |
124 | /*fprintf(stderr, "in len = %d\n", len[i]);*/ |
125 | if (len[i]>1500 || len[i]<0) |
126 | { |
127 | if (feof(fin)) |
128 | { |
129 | eof = 1; |
130 | } else { |
131 | fprintf(stderrstderr, "Invalid payload length\n"); |
132 | fclose(fin); |
133 | fclose(fout); |
134 | return EXIT_FAILURE1; |
135 | } |
136 | break; |
137 | } |
138 | err = fread(ch, 1, 4, fin); |
139 | rng[i] = char_to_int(ch); |
140 | err = fread(packets[i], 1, len[i], fin); |
Value stored to 'err' is never read | |
141 | if (feof(fin)) |
142 | { |
143 | eof = 1; |
144 | break; |
145 | } |
146 | err = opus_repacketizer_cat(rp, packets[i], len[i]); |
147 | if (err!=OPUS_OK0) |
148 | { |
149 | fprintf(stderrstderr, "opus_repacketizer_cat() failed: %s\n", opus_strerror(err)); |
150 | break; |
151 | } |
152 | } |
153 | nb_packets = i; |
154 | |
155 | if (eof) |
156 | break; |
157 | |
158 | if (!split) |
159 | { |
160 | err = opus_repacketizer_out(rp, output_packet, MAX_PACKETOUT32000); |
161 | if (err>0) { |
162 | unsigned char int_field[4]; |
163 | int_to_char(err, int_field); |
164 | if(fwrite(int_field, 1, 4, fout)!=4){ |
165 | fprintf(stderrstderr, "Error writing.\n"); |
166 | return EXIT_FAILURE1; |
167 | } |
168 | int_to_char(rng[nb_packets-1], int_field); |
169 | if (fwrite(int_field, 1, 4, fout)!=4) { |
170 | fprintf(stderrstderr, "Error writing.\n"); |
171 | return EXIT_FAILURE1; |
172 | } |
173 | if (fwrite(output_packet, 1, err, fout)!=(unsigned)err) { |
174 | fprintf(stderrstderr, "Error writing.\n"); |
175 | return EXIT_FAILURE1; |
176 | } |
177 | /*fprintf(stderr, "out len = %d\n", err);*/ |
178 | } else { |
179 | fprintf(stderrstderr, "opus_repacketizer_out() failed: %s\n", opus_strerror(err)); |
180 | } |
181 | } else { |
182 | int nb_frames = opus_repacketizer_get_nb_frames(rp); |
183 | for (i=0;i<nb_frames;i++) |
184 | { |
185 | err = opus_repacketizer_out_range(rp, i, i+1, output_packet, MAX_PACKETOUT32000); |
186 | if (err>0) { |
187 | unsigned char int_field[4]; |
188 | int_to_char(err, int_field); |
189 | if (fwrite(int_field, 1, 4, fout)!=4) { |
190 | fprintf(stderrstderr, "Error writing.\n"); |
191 | return EXIT_FAILURE1; |
192 | } |
193 | if (i==nb_frames-1) |
194 | int_to_char(rng[nb_packets-1], int_field); |
195 | else |
196 | int_to_char(0, int_field); |
197 | if (fwrite(int_field, 1, 4, fout)!=4) { |
198 | fprintf(stderrstderr, "Error writing.\n"); |
199 | return EXIT_FAILURE1; |
200 | } |
201 | if (fwrite(output_packet, 1, err, fout)!=(unsigned)err) { |
202 | fprintf(stderrstderr, "Error writing.\n"); |
203 | return EXIT_FAILURE1; |
204 | } |
205 | /*fprintf(stderr, "out len = %d\n", err);*/ |
206 | } else { |
207 | fprintf(stderrstderr, "opus_repacketizer_out() failed: %s\n", opus_strerror(err)); |
208 | } |
209 | |
210 | } |
211 | } |
212 | } |
213 | |
214 | fclose(fin); |
215 | fclose(fout); |
216 | return EXIT_SUCCESS0; |
217 | } |