1 /*
2 * Cryo Interactive Entertainment HNM4 demuxer
3 *
4 * Copyright (c) 2012 David Kment
5 *
6 * This file is part of FFmpeg .
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg ; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23 #include <inttypes.h>
24
28
29 #define HNM4_TAG MKTAG('H', 'N', 'M', '4')
30
31 #define HNM4_SAMPLE_RATE 22050
32 #define HNM4_FRAME_FPS 24
33
34 #define HNM4_CHUNK_ID_PL 19536
35 #define HNM4_CHUNK_ID_IZ 23113
36 #define HNM4_CHUNK_ID_IU 21833
37 #define HNM4_CHUNK_ID_SD 17491
38
54
56 {
58 return 0;
59
60 // check for HNM4 header.
61 // currently only HNM v4/v4A is supported
64
65 return 0;
66 }
67
69 {
73
74 /* default context members */
79
81
92
94
98 "invalid resolution: %ux%u\n", hnm->
width, hnm->
height);
100 }
101
102 // TODO: find a better way to detect HNM4A
103 if (hnm->
width == 640)
105 else
107
110
117
120
122
124
125 return 0;
126 }
127
129 {
133
134 uint32_t superchunk_size, chunk_size;
135 uint16_t chunk_id;
136
139
141 /* parse next superchunk */
144
146 }
147
152
155 "invalid chunk size: %"PRIu32", offset: %"PRId64"\n",
159 }
160
161 switch (chunk_id) {
170 break;
171
175 break;
176
177 default:
182 break;
183 }
184
186 }
187
189 {
191
194
195 return 0;
196 }
197
207 };