Added a missing include and removed an unused variable.
[dtsenc:dtsenc.git] / main.c
1 /* 
2  * This file is part of dcaenc.
3  *
4  * Copyright (c) 2008-2011 Alexander E. Patrakov <patrakov@gmail.com>
5  *
6  * dcaenc is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * dcaenc is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with dcaenc; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20
21 #include <stdio.h>
22 #include <stdlib.h>
23 #include <string.h>
24 #include "config.h"
25 #include "dcaenc.h"
26 #include "wavfile.h"
27
28 int main(int argc, char *argv[])
29 {
30         dcaenc_context c;
31         int32_t data[512 * 6];
32         uint8_t output[16384];
33         wavfile * f;
34         FILE * outfile;
35         int bitrate;
36         int wrote;
37         int samples_total;
38         
39         static const int channel_map[6] = {DCAENC_CHANNELS_MONO, DCAENC_CHANNELS_STEREO, 0,
40         DCAENC_CHANNELS_2FRONT_2REAR, DCAENC_CHANNELS_3FRONT_2REAR, DCAENC_CHANNELS_3FRONT_2REAR };
41
42         if (argc != 4) {
43             if (argc == 2 && !strcmp(argv[1], "--version")) {
44                 printf(PACKAGE_NAME "-" PACKAGE_VERSION "\n");
45                 printf(PACKAGE_URL "\n");
46                 return 0;
47             } else {
48                 printf("Usage: dcaenc input.wav output.dts bits_per_second\n");
49                 return 1;
50             }
51         }
52         f = wavfile_open(argv[1]);
53         if (!f) {
54             printf("Could not open or parse %s\n", argv[1]);
55             return 1;
56         }
57         bitrate = atoi(argv[3]);
58         
59         samples_total = f->samples_left;
60         c = dcaenc_create(f->sample_rate, channel_map[f->channels - 1], bitrate, f->channels == 6 ? DCAENC_FLAG_LFE : 0);
61         
62         if (!c) {
63             printf("Wrong bitrate or sample rate\n");
64             return 1;
65         }
66         outfile = fopen(argv[2], "wb");
67         if (!outfile) {
68             printf("Could not open %s\n", argv[2]);
69             return 1;
70         }
71         while (wavfile_read_s32(f, data)) {
72                 wrote = dcaenc_convert_s32(c, data, output);
73                 fwrite(output, 1, wrote, outfile);
74         }
75         wrote = dcaenc_destroy(c, output);
76         fwrite(output, 1, wrote, outfile);
77         fclose(outfile);
78         wavfile_close(f);
79         return 0;
80 }