Reformat whole codebase with astyle.options (#128)
[openjpeg.git] / src / bin / jpip / opj_jpip_transcode.c
1 /*
2  * $Id$
3  *
4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
5  * Copyright (c) 2002-2014, Professor Benoit Macq
6  * Copyright (c) 2010-2011, Kaori Hagihara
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #include <stdio.h>
32 #include "openjpip.h"
33
34 /*! \file
35  *  \brief jpip_to_jp2 is a program to convert JPT- JPP- stream to JP2 file
36  *
37  *  \section impinst Implementing instructions
38  *  This program takes two arguments. \n
39  *   -# Input JPT or JPP file
40  *   -# Output JP2 file\n
41  *   % ./jpip_to_jp2 input.jpt output.jp2
42  *   or
43  *   % ./jpip_to_jp2 input.jpp output.jp2
44  */
45 static int jpip_to_jp2(char *argv[])
46 {
47     jpip_dec_param_t *dec;
48
49     dec = init_jpipdecoder(OPJ_TRUE);
50
51     if (!(fread_jpip(argv[1], dec))) {
52         return 1;
53     }
54
55     decode_jpip(dec);
56
57     if (!(fwrite_jp2k(argv[2], dec))) {
58         return 1;
59     }
60
61     /* output_log( OPJ_TRUE, OPJ_FALSE, OPJ_TRUE, dec); */
62
63     destroy_jpipdecoder(&dec);
64
65     return 0;
66 }
67
68 /*! \file
69  *  \brief jpip_to_j2k is a program to convert JPT- JPP- stream to J2K file
70  *
71  *  \section impinst Implementing instructions
72  *  This program takes two arguments. \n
73  *   -# Input  JPT or JPP file
74  *   -# Output J2K file\n
75  *   % ./jpip_to_j2k input.jpt output.j2k
76  *   or
77  *   % ./jpip_to_j2k input.jpp output.j2k
78  */
79 static int jpip_to_j2k(char *argv[])
80 {
81     jpip_dec_param_t *dec;
82
83     dec = init_jpipdecoder(OPJ_FALSE);
84
85     if (!(fread_jpip(argv[1], dec))) {
86         return 1;
87     }
88
89     decode_jpip(dec);
90
91     if (!(fwrite_jp2k(argv[2], dec))) {
92         return 1;
93     }
94
95     /*  output_log( OPJ_TRUE, OPJ_FALSE, OPJ_FALSE, dec); */
96
97     destroy_jpipdecoder(&dec);
98
99     return 0;
100 }
101
102 int main(int argc, char *argv[])
103 {
104     char *ext;
105     if (argc < 3) {
106         fprintf(stderr, "Too few arguments:\n");
107         fprintf(stderr, " - input  jpt or jpp file\n");
108         fprintf(stderr, " - output j2k file\n");
109         return 1;
110     }
111
112     ext = strrchr(argv[2], '.');
113     if (ext) {
114         /* strcasecmp ? */
115         if (strcmp(ext, ".jp2") == 0) {
116             return jpip_to_jp2(argv);
117         }
118         if (strcmp(ext, ".j2k") == 0) {
119             return jpip_to_j2k(argv);
120         }
121     }
122
123     fprintf(stderr, "Invalid file extension for output file: %s\n", argv[2]);
124     return 1;
125 }