annotate Input/aac/libmp4v2/mp4.cpp @ 16:6a86fdd4dea4 trunk

[svn] Replacement libmp4v2.
author nenolod
date Mon, 24 Oct 2005 15:33:32 -0700
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1 /*
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2 * The contents of this file are subject to the Mozilla Public
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3 * License Version 1.1 (the "License"); you may not use this file
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
4 * except in compliance with the License. You may obtain a copy of
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
5 * the License at http://www.mozilla.org/MPL/
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
6 *
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
7 * Software distributed under the License is distributed on an "AS
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
8 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
9 * implied. See the License for the specific language governing
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
10 * rights and limitations under the License.
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
11 *
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
12 * The Original Code is MPEG4IP.
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
13 *
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
14 * The Initial Developer of the Original Code is Cisco Systems Inc.
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
15 * Portions created by Cisco Systems Inc. are
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
16 * Copyright (C) Cisco Systems Inc. 2001 - 2005. All Rights Reserved.
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
17 *
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
18 * 3GPP features implementation is based on 3GPP's TS26.234-v5.60,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
19 * and was contributed by Ximpo Group Ltd.
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
20 *
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
21 * Portions created by Ximpo Group Ltd. are
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
22 * Copyright (C) Ximpo Group Ltd. 2003, 2004. All Rights Reserved.
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
23 *
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
24 * Contributor(s):
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
25 * Dave Mackie dmackie@cisco.com
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
26 * Alix Marchandise-Franquet alix@cisco.com
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
27 * Ximpo Group Ltd. mp4v2@ximpo.com
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
28 * Bill May wmay@cisco.com
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
29 */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
30
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
31 /*
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
32 * MP4 library API functions
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
33 *
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
34 * These are wrapper functions that provide C linkage conventions
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
35 * to the library, and catch any internal errors, ensuring that
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
36 * a proper return value is given.
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
37 */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
38
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
39 #include "mp4common.h"
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
40
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
41 #define PRINT_ERROR(e) \
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
42 VERBOSE_ERROR(((MP4File*)hFile)->GetVerbosity(), e->Print());
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
43
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
44 /* file operations */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
45
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
46 extern "C" MP4FileHandle MP4Read(const char* fileName, u_int32_t verbosity)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
47 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
48 MP4File* pFile = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
49 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
50 pFile = new MP4File(verbosity);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
51 pFile->Read(fileName);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
52 return (MP4FileHandle)pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
53 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
54 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
55 VERBOSE_ERROR(verbosity, e->Print());
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
56 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
57 delete pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
58 return MP4_INVALID_FILE_HANDLE;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
59 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
60 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
61
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
62 extern "C" MP4FileHandle MP4Create (const char* fileName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
63 u_int32_t verbosity,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
64 u_int32_t flags)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
65 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
66 return MP4CreateEx(fileName, verbosity, flags);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
67 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
68
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
69 extern "C" MP4FileHandle MP4CreateEx (const char* fileName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
70 u_int32_t verbosity,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
71 u_int32_t flags,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
72 int add_ftyp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
73 int add_iods,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
74 char* majorBrand,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
75 u_int32_t minorVersion,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
76 char** supportedBrands,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
77 u_int32_t supportedBrandsCount)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
78 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
79 MP4File* pFile = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
80 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
81 pFile = new MP4File(verbosity);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
82 // LATER useExtensibleFormat, moov first, then mvex's
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
83 pFile->Create(fileName, flags, add_ftyp, add_iods,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
84 majorBrand, minorVersion,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
85 supportedBrands, supportedBrandsCount);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
86 return (MP4FileHandle)pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
87 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
88 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
89 VERBOSE_ERROR(verbosity, e->Print());
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
90 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
91 delete pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
92 return MP4_INVALID_FILE_HANDLE;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
93 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
94 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
95
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
96 extern "C" MP4FileHandle MP4Modify(const char* fileName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
97 u_int32_t verbosity, u_int32_t flags)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
98 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
99 MP4File* pFile = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
100 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
101 pFile = new MP4File(verbosity);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
102 // LATER useExtensibleFormat, moov first, then mvex's
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
103 pFile->Modify(fileName);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
104 return (MP4FileHandle)pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
105 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
106 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
107 VERBOSE_ERROR(verbosity, e->Print());
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
108 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
109 delete pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
110 return MP4_INVALID_FILE_HANDLE;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
111 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
112 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
113
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
114 extern "C" bool MP4Optimize(const char* existingFileName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
115 const char* newFileName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
116 u_int32_t verbosity)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
117 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
118 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
119 MP4File* pFile = new MP4File(verbosity);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
120 pFile->Optimize(existingFileName, newFileName);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
121 delete pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
122 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
123 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
124 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
125 VERBOSE_ERROR(verbosity, e->Print());
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
126 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
127 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
128 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
129 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
130
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
131 extern "C" bool MP4Close(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
132 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
133 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
134 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
135 ((MP4File*)hFile)->Close();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
136 delete (MP4File*)hFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
137 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
138 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
139 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
140 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
141 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
142 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
143 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
144 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
145 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
146
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
147 extern "C" bool MP4Dump(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
148 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
149 FILE* pDumpFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
150 bool dumpImplicits)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
151 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
152 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
153 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
154 ((MP4File*)hFile)->Dump(pDumpFile, dumpImplicits);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
155 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
156 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
157 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
158 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
159 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
160 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
161 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
162 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
163 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
164
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
165
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
166 /* specific file properties */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
167
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
168 extern "C" u_int32_t MP4GetVerbosity(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
169 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
170 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
171 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
172 return ((MP4File*)hFile)->GetVerbosity();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
173 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
174 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
175 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
176 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
177 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
178 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
179 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
180 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
181
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
182 extern "C" bool MP4SetVerbosity(MP4FileHandle hFile, u_int32_t verbosity)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
183 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
184 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
185 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
186 ((MP4File*)hFile)->SetVerbosity(verbosity);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
187 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
188 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
189 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
190 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
191 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
192 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
193 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
194 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
195 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
196
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
197 extern "C" MP4Duration MP4GetDuration(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
198 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
199 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
200 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
201 return ((MP4File*)hFile)->GetDuration();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
202 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
203 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
204 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
205 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
206 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
207 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
208 return MP4_INVALID_DURATION;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
209 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
210
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
211 extern "C" u_int32_t MP4GetTimeScale(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
212 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
213 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
214 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
215 return ((MP4File*)hFile)->GetTimeScale();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
216 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
217 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
218 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
219 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
220 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
221 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
222 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
223 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
224
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
225 extern "C" bool MP4SetTimeScale(MP4FileHandle hFile, u_int32_t value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
226 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
227 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
228 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
229 ((MP4File*)hFile)->SetTimeScale(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
230 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
231 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
232 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
233 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
234 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
235 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
236 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
237 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
238 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
239
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
240 extern "C" u_int8_t MP4GetODProfileLevel(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
241 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
242 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
243 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
244 return ((MP4File*)hFile)->GetODProfileLevel();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
245 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
246 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
247 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
248 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
249 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
250 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
251 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
252 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
253
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
254 extern "C" bool MP4SetODProfileLevel(MP4FileHandle hFile, u_int8_t value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
255 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
256 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
257 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
258 ((MP4File*)hFile)->SetODProfileLevel(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
259 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
260 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
261 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
262 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
263 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
264 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
265 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
266 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
267 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
268
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
269 extern "C" u_int8_t MP4GetSceneProfileLevel(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
270 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
271 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
272 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
273 return ((MP4File*)hFile)->GetSceneProfileLevel();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
274 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
275 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
276 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
277 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
278 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
279 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
280 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
281 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
282
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
283 extern "C" bool MP4SetSceneProfileLevel(MP4FileHandle hFile, u_int8_t value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
284 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
285 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
286 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
287 ((MP4File*)hFile)->SetSceneProfileLevel(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
288 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
289 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
290 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
291 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
292 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
293 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
294 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
295 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
296 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
297
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
298 extern "C" u_int8_t MP4GetVideoProfileLevel(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
299 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
300 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
301 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
302 return ((MP4File*)hFile)->GetVideoProfileLevel();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
303 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
304 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
305 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
306 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
307 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
308 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
309 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
310 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
311
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
312 extern "C" bool MP4SetVideoProfileLevel(MP4FileHandle hFile, u_int8_t value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
313 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
314 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
315 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
316 ((MP4File*)hFile)->SetVideoProfileLevel(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
317 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
318 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
319 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
320 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
321 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
322 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
323 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
324 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
325 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
326
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
327 extern "C" u_int8_t MP4GetAudioProfileLevel(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
328 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
329 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
330 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
331 return ((MP4File*)hFile)->GetAudioProfileLevel();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
332 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
333 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
334 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
335 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
336 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
337 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
338 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
339 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
340
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
341 extern "C" bool MP4SetAudioProfileLevel(MP4FileHandle hFile, u_int8_t value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
342 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
343 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
344 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
345 ((MP4File*)hFile)->SetAudioProfileLevel(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
346 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
347 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
348 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
349 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
350 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
351 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
352 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
353 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
354 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
355
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
356 extern "C" u_int8_t MP4GetGraphicsProfileLevel(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
357 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
358 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
359 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
360 return ((MP4File*)hFile)->GetGraphicsProfileLevel();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
361 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
362 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
363 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
364 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
365 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
366 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
367 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
368 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
369
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
370 extern "C" bool MP4SetGraphicsProfileLevel(MP4FileHandle hFile, u_int8_t value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
371 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
372 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
373 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
374 ((MP4File*)hFile)->SetGraphicsProfileLevel(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
375 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
376 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
377 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
378 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
379 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
380 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
381 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
382 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
383 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
384
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
385 /* generic file properties */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
386
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
387 extern "C" u_int64_t MP4GetIntegerProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
388 MP4FileHandle hFile, const char* propName)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
389 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
390 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
391 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
392 return ((MP4File*)hFile)->GetIntegerProperty(propName);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
393 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
394 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
395 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
396 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
397 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
398 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
399 return (u_int64_t)-1;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
400 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
401
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
402 extern "C" float MP4GetFloatProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
403 MP4FileHandle hFile, const char* propName)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
404 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
405 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
406 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
407 return ((MP4File*)hFile)->GetFloatProperty(propName);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
408 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
409 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
410 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
411 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
412 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
413 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
414 return NAN;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
415 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
416
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
417 extern "C" const char* MP4GetStringProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
418 MP4FileHandle hFile, const char* propName)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
419 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
420 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
421 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
422 return ((MP4File*)hFile)->GetStringProperty(propName);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
423 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
424 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
425 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
426 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
427 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
428 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
429 return NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
430 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
431
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
432 extern "C" void MP4GetBytesProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
433 MP4FileHandle hFile, const char* propName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
434 u_int8_t** ppValue, u_int32_t* pValueSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
435 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
436 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
437 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
438 ((MP4File*)hFile)->GetBytesProperty(propName, ppValue, pValueSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
439 return;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
440 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
441 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
442 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
443 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
444 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
445 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
446 *ppValue = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
447 *pValueSize = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
448 return;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
449 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
450
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
451 extern "C" bool MP4SetIntegerProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
452 MP4FileHandle hFile, const char* propName, int64_t value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
453 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
454 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
455 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
456 ((MP4File*)hFile)->SetIntegerProperty(propName, value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
457 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
458 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
459 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
460 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
461 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
462 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
463 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
464 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
465 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
466
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
467 extern "C" bool MP4SetFloatProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
468 MP4FileHandle hFile, const char* propName, float value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
469 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
470 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
471 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
472 ((MP4File*)hFile)->SetFloatProperty(propName, value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
473 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
474 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
475 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
476 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
477 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
478 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
479 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
480 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
481 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
482
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
483 extern "C" bool MP4SetStringProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
484 MP4FileHandle hFile, const char* propName, const char* value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
485 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
486 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
487 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
488 ((MP4File*)hFile)->SetStringProperty(propName, value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
489 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
490 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
491 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
492 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
493 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
494 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
495 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
496 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
497 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
498
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
499 extern "C" bool MP4SetBytesProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
500 MP4FileHandle hFile, const char* propName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
501 const u_int8_t* pValue, u_int32_t valueSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
502 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
503 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
504 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
505 ((MP4File*)hFile)->SetBytesProperty(propName, pValue, valueSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
506 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
507 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
508 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
509 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
510 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
511 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
512 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
513 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
514 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
515
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
516 /* track operations */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
517
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
518 extern "C" MP4TrackId MP4AddTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
519 MP4FileHandle hFile, const char* type)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
520 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
521 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
522 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
523 return ((MP4File*)hFile)->AddSystemsTrack(type);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
524 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
525 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
526 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
527 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
528 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
529 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
530 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
531 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
532
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
533 extern "C" MP4TrackId MP4AddSystemsTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
534 MP4FileHandle hFile, const char* type)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
535 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
536 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
537 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
538 return ((MP4File*)hFile)->AddSystemsTrack(type);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
539 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
540 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
541 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
542 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
543 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
544 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
545 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
546 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
547
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
548 extern "C" MP4TrackId MP4AddODTrack(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
549 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
550 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
551 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
552 return ((MP4File*)hFile)->AddODTrack();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
553 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
554 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
555 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
556 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
557 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
558 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
559 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
560 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
561
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
562 extern "C" MP4TrackId MP4AddSceneTrack(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
563 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
564 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
565 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
566 return ((MP4File*)hFile)->AddSceneTrack();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
567 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
568 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
569 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
570 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
571 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
572 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
573 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
574 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
575
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
576 extern "C" MP4TrackId MP4AddAudioTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
577 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
578 u_int32_t timeScale,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
579 MP4Duration sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
580 u_int8_t audioType)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
581 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
582 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
583 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
584 return ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
585 AddAudioTrack(timeScale, sampleDuration, audioType);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
586 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
587 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
588 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
589 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
590 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
591 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
592 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
593 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
594
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
595 extern "C" MP4TrackId MP4AddEncAudioTrack(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
596 u_int32_t timeScale,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
597 MP4Duration sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
598 mp4v2_ismacrypParams *icPp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
599 u_int8_t audioType
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
600 )
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
601 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
602 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
603 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
604 return ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
605 AddEncAudioTrack(timeScale, sampleDuration, audioType,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
606 icPp->scheme_type, icPp->scheme_version,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
607 icPp->key_ind_len, icPp->iv_len,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
608 icPp->selective_enc, icPp->kms_uri);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
609 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
610 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
611 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
612 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
613 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
614 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
615 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
616 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
617 extern "C" MP4TrackId MP4AddAmrAudioTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
618 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
619 u_int32_t timeScale,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
620 u_int16_t modeSet,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
621 u_int8_t modeChangePeriod,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
622 u_int8_t framesPerSample,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
623 bool isAmrWB)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
624 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
625 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
626 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
627 return ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
628 AddAmrAudioTrack(timeScale, modeSet, modeChangePeriod, framesPerSample, isAmrWB);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
629 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
630 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
631 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
632 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
633 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
634 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
635 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
636 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
637
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
638 extern "C" void MP4SetAmrVendor(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
639 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
640 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
641 u_int32_t vendor)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
642 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
643 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
644 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
645 ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
646 SetAmrVendor(trackId, vendor);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
647 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
648 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
649 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
650 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
651 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
652 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
653 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
654
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
655 extern "C" void MP4SetAmrDecoderVersion(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
656 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
657 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
658 u_int8_t decoderVersion)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
659 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
660 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
661 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
662 ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
663 SetAmrDecoderVersion(trackId, decoderVersion);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
664 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
665 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
666 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
667 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
668 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
669 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
670 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
671
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
672 extern "C" void MP4SetAmrModeSet(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
673 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
674 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
675 u_int16_t modeSet)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
676 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
677 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
678 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
679 ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
680 SetAmrModeSet(trackId, modeSet);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
681 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
682 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
683 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
684 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
685 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
686 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
687 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
688
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
689 extern "C" uint16_t MP4GetAmrModeSet(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
690 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
691 MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
692 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
693 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
694 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
695 return ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
696 GetAmrModeSet(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
697 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
698 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
699 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
700 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
701 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
702 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
703 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
704 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
705
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
706 extern "C" MP4TrackId MP4AddHrefTrack (MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
707 uint32_t timeScale,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
708 MP4Duration sampleDuration)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
709 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
710 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
711 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
712 MP4File *pFile = (MP4File *)hFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
713
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
714 return pFile->AddHrefTrack(timeScale,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
715 sampleDuration);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
716 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
717 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
718 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
719 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
720 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
721 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
722 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
723 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
724
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
725 extern "C" MP4TrackId MP4AddVideoTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
726 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
727 u_int32_t timeScale,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
728 MP4Duration sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
729 u_int16_t width,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
730 u_int16_t height,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
731 u_int8_t videoType)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
732 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
733 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
734 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
735 MP4File *pFile = (MP4File *)hFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
736
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
737 return pFile->AddMP4VideoTrack(timeScale,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
738 sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
739 width,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
740 height,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
741 videoType);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
742 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
743 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
744 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
745 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
746 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
747 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
748 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
749 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
750
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
751 extern "C" MP4TrackId MP4AddEncVideoTrack(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
752 u_int32_t timeScale,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
753 MP4Duration sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
754 u_int16_t width,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
755 u_int16_t height,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
756 mp4v2_ismacrypParams *icPp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
757 u_int8_t videoType )
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
758 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
759 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
760 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
761 return ((MP4File*)hFile)->AddEncVideoTrack(timeScale, sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
762 width, height, videoType,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
763 icPp->scheme_type, icPp->scheme_version,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
764 icPp->key_ind_len, icPp->iv_len,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
765 icPp->selective_enc, icPp->kms_uri);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
766 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
767 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
768 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
769 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
770 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
771 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
772 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
773 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
774
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
775 extern "C" MP4TrackId MP4AddH264VideoTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
776 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
777 u_int32_t timeScale,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
778 MP4Duration sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
779 u_int16_t width,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
780 u_int16_t height,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
781 uint8_t AVCProfileIndication,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
782 uint8_t profile_compat,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
783 uint8_t AVCLevelIndication,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
784 uint8_t sampleLenFieldSizeMinusOne)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
785 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
786 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
787 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
788 MP4File *pFile = (MP4File *)hFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
789
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
790 return pFile->AddH264VideoTrack(timeScale,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
791 sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
792 width,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
793 height,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
794 AVCProfileIndication,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
795 profile_compat,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
796 AVCLevelIndication,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
797 sampleLenFieldSizeMinusOne);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
798 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
799 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
800 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
801 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
802 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
803 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
804 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
805 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
806
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
807 extern "C" bool MP4AddH264SequenceParameterSet (MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
808 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
809 const uint8_t *pSequence,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
810 uint16_t sequenceLen)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
811 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
812 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
813 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
814 MP4File *pFile = (MP4File *)hFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
815
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
816 return pFile->AddH264SequenceParameterSet(trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
817 pSequence,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
818 sequenceLen);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
819 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
820 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
821 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
822 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
823 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
824 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
825 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
826 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
827 extern "C" bool MP4AddH264PictureParameterSet (MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
828 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
829 const uint8_t *pPict,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
830 uint16_t pictLen)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
831 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
832 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
833 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
834 MP4File *pFile = (MP4File *)hFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
835
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
836 return pFile->AddH264PictureParameterSet(trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
837 pPict,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
838 pictLen);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
839 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
840 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
841 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
842 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
843 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
844 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
845 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
846 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
847
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
848 extern "C" MP4TrackId MP4AddH263VideoTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
849 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
850 u_int32_t timeScale,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
851 MP4Duration sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
852 u_int16_t width,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
853 u_int16_t height,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
854 u_int8_t h263Level,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
855 u_int8_t h263Profile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
856 u_int32_t avgBitrate,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
857 u_int32_t maxBitrate)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
858 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
859 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
860 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
861 return ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
862 AddH263VideoTrack(timeScale, sampleDuration, width, height, h263Level, h263Profile, avgBitrate, maxBitrate);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
863 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
864 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
865 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
866 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
867 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
868 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
869
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
870 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
871 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
872
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
873 extern "C" void MP4SetH263Vendor(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
874 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
875 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
876 u_int32_t vendor)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
877 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
878 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
879 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
880 ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
881 SetH263Vendor(trackId, vendor);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
882 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
883 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
884 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
885 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
886 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
887 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
888 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
889
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
890 extern "C" void MP4SetH263DecoderVersion(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
891 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
892 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
893 u_int8_t decoderVersion)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
894 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
895 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
896
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
897 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
898 ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
899 SetH263DecoderVersion(trackId, decoderVersion);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
900 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
901 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
902 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
903 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
904 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
905 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
906 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
907
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
908 extern "C" void MP4SetH263Bitrates(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
909 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
910 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
911 u_int32_t avgBitrate,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
912 u_int32_t maxBitrate)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
913 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
914 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
915
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
916 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
917 ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
918 SetH263Bitrates(trackId, avgBitrate, maxBitrate);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
919 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
920 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
921 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
922 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
923 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
924 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
925 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
926
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
927 extern "C" MP4TrackId MP4AddHintTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
928 MP4FileHandle hFile, MP4TrackId refTrackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
929 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
930 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
931 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
932 return ((MP4File*)hFile)->AddHintTrack(refTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
933 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
934 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
935 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
936 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
937 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
938 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
939 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
940 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
941
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
942 extern "C" MP4TrackId MP4CloneTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
943 MP4FileHandle srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
944 MP4TrackId srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
945 MP4FileHandle dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
946 MP4TrackId dstHintTrackReferenceTrack)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
947 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
948 MP4TrackId dstTrackId = MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
949
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
950 if (dstFile == NULL) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
951 dstFile = srcFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
952 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
953
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
954 const char* trackType =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
955 MP4GetTrackType(srcFile, srcTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
956
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
957 if (!trackType) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
958 return dstTrackId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
959 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
960
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
961 if (MP4_IS_VIDEO_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
962 MP4SetVideoProfileLevel(dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
963 MP4GetVideoProfileLevel(srcFile));
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
964 dstTrackId = MP4AddVideoTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
965 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
966 MP4GetTrackTimeScale(srcFile, srcTrackId),
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
967 MP4GetTrackFixedSampleDuration(srcFile, srcTrackId),
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
968 MP4GetTrackVideoWidth(srcFile, srcTrackId),
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
969 MP4GetTrackVideoHeight(srcFile, srcTrackId),
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
970 MP4GetTrackEsdsObjectTypeId(srcFile, srcTrackId));
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
971
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
972 } else if (MP4_IS_AUDIO_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
973 MP4SetAudioProfileLevel(dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
974 MP4GetAudioProfileLevel(srcFile));
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
975 dstTrackId = MP4AddAudioTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
976 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
977 MP4GetTrackTimeScale(srcFile, srcTrackId),
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
978 MP4GetTrackFixedSampleDuration(srcFile, srcTrackId),
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
979 MP4GetTrackEsdsObjectTypeId(srcFile, srcTrackId));
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
980
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
981 } else if (MP4_IS_OD_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
982 dstTrackId = MP4AddODTrack(dstFile);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
983
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
984 } else if (MP4_IS_SCENE_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
985 dstTrackId = MP4AddSceneTrack(dstFile);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
986
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
987 } else if (MP4_IS_HINT_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
988 if (dstHintTrackReferenceTrack == MP4_INVALID_TRACK_ID) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
989 dstTrackId = MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
990 } else {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
991 dstTrackId = MP4AddHintTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
992 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
993 dstHintTrackReferenceTrack);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
994 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
995
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
996 } else if (MP4_IS_SYSTEMS_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
997 dstTrackId = MP4AddSystemsTrack(dstFile, trackType);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
998
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
999 } else {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1000 dstTrackId = MP4AddTrack(dstFile, trackType);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1001 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1002
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1003 if (dstTrackId == MP4_INVALID_TRACK_ID) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1004 return dstTrackId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1005 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1006
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1007 MP4SetTrackTimeScale(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1008 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1009 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1010 MP4GetTrackTimeScale(srcFile, srcTrackId));
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1011
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1012 if (MP4_IS_AUDIO_TRACK_TYPE(trackType)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1013 || MP4_IS_VIDEO_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1014 // copy track ES configuration
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1015 u_int8_t* pConfig = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1016 u_int32_t configSize = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1017
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1018 MP4GetTrackESConfiguration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1019 srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1020 srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1021 &pConfig,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1022 &configSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1023
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1024 MP4SetTrackESConfiguration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1025 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1026 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1027 pConfig,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1028 configSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1029
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1030 free(pConfig);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1031 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1032
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1033 if (MP4_IS_HINT_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1034 // probably not exactly what is wanted
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1035 // but caller can adjust later to fit their desires
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1036
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1037 char* payloadName = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1038 char *encodingParms = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1039 u_int8_t payloadNumber;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1040 u_int16_t maxPayloadSize;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1041
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1042 MP4GetHintTrackRtpPayload(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1043 srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1044 srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1045 &payloadName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1046 &payloadNumber,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1047 &maxPayloadSize,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1048 &encodingParms);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1049
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1050 MP4SetHintTrackRtpPayload(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1051 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1052 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1053 payloadName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1054 &payloadNumber,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1055 maxPayloadSize,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1056 encodingParms);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1057 #if 0
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1058 MP4SetHintTrackSdp(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1059 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1060 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1061 MP4GetHintTrackSdp(srcFile, srcTrackId));
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1062 #endif
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1063 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1064
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1065 return dstTrackId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1066 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1067
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1068 // Given a track, make an encrypted clone of it in the dest. file
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1069 extern "C" MP4TrackId MP4EncAndCloneTrack(MP4FileHandle srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1070 MP4TrackId srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1071 mp4v2_ismacrypParams *icPp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1072 MP4FileHandle dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1073 MP4TrackId dstHintTrackReferenceTrack
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1074 )
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1075 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1076 MP4TrackId dstTrackId = MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1077
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1078 if (dstFile == NULL) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1079 dstFile = srcFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1080 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1081
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1082 const char* trackType =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1083 MP4GetTrackType(srcFile, srcTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1084
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1085 if (!trackType) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1086 return dstTrackId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1087 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1088
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1089 if (MP4_IS_VIDEO_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1090 MP4SetVideoProfileLevel(dstFile, MP4GetVideoProfileLevel(srcFile));
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1091 dstTrackId = MP4AddEncVideoTrack(dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1092 MP4GetTrackTimeScale(srcFile, srcTrackId),
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1093 MP4GetTrackFixedSampleDuration(srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1094 srcTrackId),
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1095 MP4GetTrackVideoWidth(srcFile, srcTrackId),
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1096 MP4GetTrackVideoHeight(srcFile, srcTrackId),
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1097 icPp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1098 MP4GetTrackEsdsObjectTypeId(srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1099 srcTrackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1100 );
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1101
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1102 } else if (MP4_IS_AUDIO_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1103 MP4SetAudioProfileLevel(dstFile, MP4GetAudioProfileLevel(srcFile));
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1104 dstTrackId = MP4AddEncAudioTrack(dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1105 MP4GetTrackTimeScale(srcFile, srcTrackId),
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1106 MP4GetTrackFixedSampleDuration(srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1107 srcTrackId),
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1108 icPp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1109 MP4GetTrackEsdsObjectTypeId(srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1110 srcTrackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1111 );
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1112
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1113 } else if (MP4_IS_OD_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1114 dstTrackId = MP4AddODTrack(dstFile);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1115
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1116 } else if (MP4_IS_SCENE_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1117 dstTrackId = MP4AddSceneTrack(dstFile);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1118
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1119 } else if (MP4_IS_HINT_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1120 if (dstHintTrackReferenceTrack == MP4_INVALID_TRACK_ID) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1121 dstTrackId = MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1122 } else {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1123 dstTrackId = MP4AddHintTrack(dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1124 MP4GetHintTrackReferenceTrackId(srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1125 srcTrackId));
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1126 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1127 } else if (MP4_IS_SYSTEMS_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1128 dstTrackId = MP4AddSystemsTrack(dstFile, trackType);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1129
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1130 } else {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1131 dstTrackId = MP4AddTrack(dstFile, trackType);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1132 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1133
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1134 if (dstTrackId == MP4_INVALID_TRACK_ID) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1135 return dstTrackId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1136 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1137
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1138 MP4SetTrackTimeScale(dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1139 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1140 MP4GetTrackTimeScale(srcFile, srcTrackId));
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1141
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1142 if (MP4_IS_AUDIO_TRACK_TYPE(trackType)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1143 || MP4_IS_VIDEO_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1144 // copy track ES configuration
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1145 u_int8_t* pConfig = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1146 u_int32_t configSize = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1147 if (MP4GetTrackESConfiguration(srcFile, srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1148 &pConfig, &configSize)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1149
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1150 if (pConfig != NULL) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1151 MP4SetTrackESConfiguration(dstFile, dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1152 pConfig, configSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1153 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1154 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1155 if (pConfig != NULL)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1156 free(pConfig);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1157 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1158
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1159 // Bill's change to MP4CloneTrack
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1160 if (MP4_IS_HINT_TRACK_TYPE(trackType)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1161 // probably not exactly what is wanted
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1162 // but caller can adjust later to fit their desires
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1163
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1164 char* payloadName = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1165 char *encodingParms = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1166 u_int8_t payloadNumber;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1167 u_int16_t maxPayloadSize;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1168
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1169 MP4GetHintTrackRtpPayload(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1170 srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1171 srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1172 &payloadName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1173 &payloadNumber,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1174 &maxPayloadSize,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1175 &encodingParms);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1176
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1177 MP4SetHintTrackRtpPayload(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1178 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1179 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1180 payloadName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1181 &payloadNumber,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1182 maxPayloadSize,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1183 encodingParms);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1184 #if 0
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1185 MP4SetHintTrackSdp(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1186 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1187 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1188 MP4GetHintTrackSdp(srcFile, srcTrackId));
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1189 #endif
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1190 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1191
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1192 return dstTrackId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1193 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1194 extern "C" MP4TrackId MP4CopyTrack(MP4FileHandle srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1195 MP4TrackId srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1196 MP4FileHandle dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1197 bool applyEdits,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1198 MP4TrackId dstHintTrackReferenceTrack)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1199 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1200 bool copySamples = true; // LATER allow false => reference samples
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1201
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1202 MP4TrackId dstTrackId =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1203 MP4CloneTrack(srcFile, srcTrackId, dstFile, dstHintTrackReferenceTrack);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1204
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1205 if (dstTrackId == MP4_INVALID_TRACK_ID) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1206 return dstTrackId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1207 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1208
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1209 bool viaEdits =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1210 applyEdits && MP4GetTrackNumberOfEdits(srcFile, srcTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1211
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1212 MP4SampleId sampleId = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1213 MP4SampleId numSamples =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1214 MP4GetTrackNumberOfSamples(srcFile, srcTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1215
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1216 MP4Timestamp when = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1217 MP4Duration editsDuration =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1218 MP4GetTrackEditTotalDuration(srcFile, srcTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1219
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1220 while (true) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1221 MP4Duration sampleDuration = MP4_INVALID_DURATION;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1222
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1223 if (viaEdits) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1224 sampleId = MP4GetSampleIdFromEditTime(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1225 srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1226 srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1227 when,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1228 NULL,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1229 &sampleDuration);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1230
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1231 // in theory, this shouldn't happen
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1232 if (sampleId == MP4_INVALID_SAMPLE_ID) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1233 MP4DeleteTrack(dstFile, dstTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1234 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1235 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1236
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1237 when += sampleDuration;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1238
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1239 if (when >= editsDuration) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1240 break;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1241 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1242 } else {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1243 sampleId++;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1244 if (sampleId > numSamples) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1245 break;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1246 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1247 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1248
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1249 bool rc = false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1250
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1251 if (copySamples) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1252 rc = MP4CopySample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1253 srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1254 srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1255 sampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1256 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1257 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1258 sampleDuration);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1259
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1260 } else {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1261 rc = MP4ReferenceSample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1262 srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1263 srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1264 sampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1265 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1266 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1267 sampleDuration);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1268 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1269
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1270 if (!rc) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1271 MP4DeleteTrack(dstFile, dstTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1272 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1273 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1274 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1275
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1276 return dstTrackId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1277 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1278
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1279 // Given a source track in a source file, make an encrypted copy of
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1280 // the track in the destination file, including sample encryption
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1281 extern "C" MP4TrackId MP4EncAndCopyTrack(MP4FileHandle srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1282 MP4TrackId srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1283 mp4v2_ismacrypParams *icPp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1284 encryptFunc_t encfcnp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1285 u_int32_t encfcnparam1,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1286 MP4FileHandle dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1287 bool applyEdits,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1288 MP4TrackId dstHintTrackReferenceTrack
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1289 )
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1290 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1291 bool copySamples = true; // LATER allow false => reference samples
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1292
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1293 MP4TrackId dstTrackId =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1294 MP4EncAndCloneTrack(srcFile, srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1295 icPp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1296 dstFile, dstHintTrackReferenceTrack);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1297
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1298 if (dstTrackId == MP4_INVALID_TRACK_ID) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1299 return dstTrackId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1300 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1301
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1302 bool viaEdits =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1303 applyEdits && MP4GetTrackNumberOfEdits(srcFile, srcTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1304
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1305 MP4SampleId sampleId = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1306 MP4SampleId numSamples =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1307 MP4GetTrackNumberOfSamples(srcFile, srcTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1308
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1309 MP4Timestamp when = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1310 MP4Duration editsDuration =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1311 MP4GetTrackEditTotalDuration(srcFile, srcTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1312
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1313 while (true) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1314 MP4Duration sampleDuration = MP4_INVALID_DURATION;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1315
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1316 if (viaEdits) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1317 sampleId = MP4GetSampleIdFromEditTime(srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1318 srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1319 when,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1320 NULL,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1321 &sampleDuration);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1322
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1323 // in theory, this shouldn't happen
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1324 if (sampleId == MP4_INVALID_SAMPLE_ID) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1325 MP4DeleteTrack(dstFile, dstTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1326 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1327 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1328
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1329 when += sampleDuration;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1330
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1331 if (when >= editsDuration) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1332 break;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1333 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1334 } else {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1335 sampleId++;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1336 if (sampleId > numSamples) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1337 break;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1338 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1339 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1340
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1341 bool rc = false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1342
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1343 if (copySamples) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1344 // encrypt and copy
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1345 rc = MP4EncAndCopySample(srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1346 srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1347 sampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1348 encfcnp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1349 encfcnparam1,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1350 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1351 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1352 sampleDuration);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1353
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1354 } else {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1355 // not sure what these are - encrypt?
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1356 rc = MP4ReferenceSample(srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1357 srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1358 sampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1359 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1360 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1361 sampleDuration);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1362 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1363
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1364 if (!rc) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1365 MP4DeleteTrack(dstFile, dstTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1366 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1367 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1368 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1369
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1370 return dstTrackId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1371 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1372
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1373 extern "C" bool MP4DeleteTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1374 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1375 MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1376 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1377 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1378 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1379 ((MP4File*)hFile)->DeleteTrack(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1380 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1381 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1382 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1383 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1384 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1385 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1386 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1387 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1388 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1389
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1390 extern "C" u_int32_t MP4GetNumberOfTracks(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1391 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1392 const char* type,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1393 u_int8_t subType)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1394 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1395 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1396 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1397 return ((MP4File*)hFile)->GetNumberOfTracks(type, subType);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1398 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1399 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1400 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1401 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1402 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1403 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1404 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1405 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1406
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1407 extern "C" MP4TrackId MP4FindTrackId(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1408 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1409 u_int16_t index,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1410 const char* type,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1411 u_int8_t subType)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1412 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1413 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1414 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1415 return ((MP4File*)hFile)->FindTrackId(index, type, subType);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1416 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1417 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1418 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1419 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1420 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1421 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1422 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1423 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1424
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1425 extern "C" u_int16_t MP4FindTrackIndex(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1426 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1427 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1428 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1429 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1430 return ((MP4File*)hFile)->FindTrackIndex(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1431 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1432 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1433 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1434 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1435 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1436 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1437 return (u_int16_t)-1;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1438 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1439
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1440 /* specific track properties */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1441
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1442 extern "C" const char* MP4GetTrackType(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1443 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1444 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1445 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1446 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1447 return ((MP4File*)hFile)->GetTrackType(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1448 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1449 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1450 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1451 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1452 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1453 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1454 return NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1455 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1456 extern "C" const char* MP4GetTrackMediaDataName(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1457 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1458 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1459 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1460 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1461 return ((MP4File*)hFile)->GetTrackMediaDataName(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1462 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1463 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1464 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1465 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1466 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1467 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1468 return NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1469 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1470
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1471
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1472 extern "C" MP4Duration MP4GetTrackDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1473 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1474 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1475 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1476 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1477 return ((MP4File*)hFile)->GetTrackDuration(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1478 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1479 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1480 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1481 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1482 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1483 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1484 return MP4_INVALID_DURATION;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1485 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1486
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1487 extern "C" u_int32_t MP4GetTrackTimeScale(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1488 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1489 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1490 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1491 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1492 return ((MP4File*)hFile)->GetTrackTimeScale(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1493 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1494 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1495 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1496 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1497 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1498 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1499 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1500 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1501
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1502 extern "C" bool MP4SetTrackTimeScale(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1503 MP4FileHandle hFile, MP4TrackId trackId, u_int32_t value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1504 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1505 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1506 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1507 ((MP4File*)hFile)->SetTrackTimeScale(trackId, value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1508 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1509 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1510 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1511 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1512 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1513 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1514 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1515 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1516 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1517
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1518 extern "C" u_int8_t MP4GetTrackAudioMpeg4Type(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1519 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1520 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1521 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1522 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1523 return ((MP4File*)hFile)->GetTrackAudioMpeg4Type(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1524 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1525 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1526 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1527 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1528 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1529 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1530 return MP4_MPEG4_INVALID_AUDIO_TYPE;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1531 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1532
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1533
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1534
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1535 // Replacement to MP4GetTrackVideoType and MP4GetTrackAudioType
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1536 // Basically does the same thing but with a more self-explanatory name
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1537 extern "C" u_int8_t MP4GetTrackEsdsObjectTypeId(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1538 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1539 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1540 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1541 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1542
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1543 return ((MP4File*)hFile)->GetTrackEsdsObjectTypeId(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1544 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1545 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1546 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1547 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1548 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1549 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1550 return MP4_INVALID_AUDIO_TYPE;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1551 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1552
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1553 extern "C" MP4Duration MP4GetTrackFixedSampleDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1554 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1555 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1556 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1557 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1558 return ((MP4File*)hFile)->GetTrackFixedSampleDuration(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1559 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1560 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1561 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1562 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1563 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1564 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1565 return MP4_INVALID_DURATION;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1566 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1567
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1568 extern "C" u_int32_t MP4GetTrackBitRate(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1569 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1570 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1571 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1572 MP4File *pFile = (MP4File *)hFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1573 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1574 return pFile->GetTrackIntegerProperty(trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1575 "mdia.minf.stbl.stsd.*.esds.decConfigDescr.avgBitrate");
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1576 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1577 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1578 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1579 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1580 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1581 // if we're here, we can't get the bitrate from above -
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1582 // lets calculate it
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1583 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1584 MP4Duration trackDur;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1585 trackDur = MP4GetTrackDuration(hFile, trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1586 uint64_t msDuration =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1587 pFile->ConvertFromTrackDuration(trackId, trackDur,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1588 MP4_MSECS_TIME_SCALE);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1589 MP4Track *pTrack = pFile->GetTrack(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1590 uint64_t bytes = pTrack->GetTotalOfSampleSizes();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1591 bytes *= (u_int64_t) (8 * 1000);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1592 bytes /= msDuration;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1593 return (uint32_t)bytes;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1594 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1595 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1596 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1597 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1598 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1599
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1600 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1601 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1602 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1603
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1604 extern "C" bool MP4GetTrackESConfiguration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1605 MP4FileHandle hFile, MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1606 u_int8_t** ppConfig, u_int32_t* pConfigSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1607 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1608 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1609 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1610 ((MP4File*)hFile)->GetTrackESConfiguration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1611 trackId, ppConfig, pConfigSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1612 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1613 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1614 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1615 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1616 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1617 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1618 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1619 *ppConfig = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1620 *pConfigSize = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1621 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1622 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1623 extern "C" bool MP4GetTrackVideoMetadata(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1624 MP4FileHandle hFile, MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1625 u_int8_t** ppConfig, u_int32_t* pConfigSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1626 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1627 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1628 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1629 ((MP4File*)hFile)->GetTrackVideoMetadata(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1630 trackId, ppConfig, pConfigSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1631 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1632 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1633 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1634 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1635 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1636 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1637 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1638 *ppConfig = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1639 *pConfigSize = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1640 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1641 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1642
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1643 extern "C" bool MP4SetTrackESConfiguration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1644 MP4FileHandle hFile, MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1645 const u_int8_t* pConfig, u_int32_t configSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1646 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1647 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1648 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1649 ((MP4File*)hFile)->SetTrackESConfiguration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1650 trackId, pConfig, configSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1651 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1652 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1653 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1654 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1655 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1656 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1657 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1658 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1659 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1660
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1661 extern "C" bool MP4GetTrackH264ProfileLevel (MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1662 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1663 uint8_t *pProfile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1664 uint8_t *pLevel)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1665 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1666 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1667 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1668 ((MP4File*)hFile)->GetTrackH264ProfileLevel(trackId, pProfile, pLevel);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1669 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1670 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1671 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1672 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1673 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1674 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1675 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1676 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1677 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1678 extern "C" bool MP4GetTrackH264SeqPictHeaders (MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1679 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1680 uint8_t ***pSeqHeader,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1681 uint32_t **pSeqHeaderSize,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1682 uint8_t ***pPictHeader,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1683 uint32_t **pPictHeaderSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1684 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1685 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1686 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1687 ((MP4File*)hFile)->GetTrackH264SeqPictHeaders(trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1688 pSeqHeader,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1689 pSeqHeaderSize,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1690 pPictHeader,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1691 pPictHeaderSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1692 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1693 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1694 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1695 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1696 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1697 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1698 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1699 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1700 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1701 extern "C" bool MP4GetTrackH264LengthSize (MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1702 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1703 uint32_t *pLength)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1704 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1705 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1706 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1707 ((MP4File*)hFile)->GetTrackH264LengthSize(trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1708 pLength);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1709 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1710 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1711 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1712 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1713 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1714 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1715 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1716 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1717 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1718
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1719 extern "C" MP4SampleId MP4GetTrackNumberOfSamples(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1720 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1721 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1722 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1723 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1724 return ((MP4File*)hFile)->GetTrackNumberOfSamples(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1725 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1726 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1727 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1728 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1729 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1730 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1731 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1732 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1733
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1734 extern "C" u_int16_t MP4GetTrackVideoWidth(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1735 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1736 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1737 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1738 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1739 return ((MP4File*)hFile)->GetTrackIntegerProperty(trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1740 "mdia.minf.stbl.stsd.*.width");
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1741 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1742 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1743 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1744 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1745 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1746 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1747 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1748 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1749
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1750 extern "C" u_int16_t MP4GetTrackVideoHeight(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1751 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1752 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1753 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1754 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1755 return ((MP4File*)hFile)->GetTrackIntegerProperty(trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1756 "mdia.minf.stbl.stsd.*.height");
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1757 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1758 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1759 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1760 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1761 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1762 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1763 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1764 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1765
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1766 extern "C" double MP4GetTrackVideoFrameRate(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1767 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1768 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1769 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1770 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1771 return ((MP4File*)hFile)->GetTrackVideoFrameRate(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1772 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1773 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1774 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1775 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1776 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1777 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1778 return 0.0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1779 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1780
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1781 extern "C" int MP4GetTrackAudioChannels (MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1782 MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1783 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1784 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1785 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1786 return ((MP4File*)hFile)->GetTrackAudioChannels(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1787 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1788 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1789 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1790 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1791 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1792 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1793 return -1;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1794 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1795
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1796 // returns true if the track is a media track encrypted according to ismacryp
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1797 extern "C" bool MP4IsIsmaCrypMediaTrack(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1798 MP4FileHandle hFile, MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1799 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1800 bool retval = false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1801 uint32_t verb = MP4GetVerbosity(hFile);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1802 MP4SetVerbosity(hFile, verb & ~(MP4_DETAILS_ERROR));
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1803
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1804 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1805 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1806 retval = ((MP4File*)hFile)->IsIsmaCrypMediaTrack(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1807 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1808 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1809 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1810 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1811 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1812 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1813 MP4SetVerbosity(hFile, verb);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1814 return retval;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1815 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1816
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1817
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1818 /* generic track properties */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1819
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1820 extern "C" u_int64_t MP4GetTrackIntegerProperty (
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1821 MP4FileHandle hFile, MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1822 const char* propName)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1823 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1824 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1825 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1826 return ((MP4File*)hFile)->GetTrackIntegerProperty(trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1827 propName);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1828 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1829 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1830 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1831 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1832 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1833 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1834 return (u_int64_t)-1;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1835 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1836 extern "C" bool MP4HaveTrackIntegerProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1837 MP4FileHandle hFile, MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1838 const char* propName)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1839 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1840 // The same as MP4GetTrackIntegerProperty but with no error reporting
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1841 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1842 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1843 return ((MP4File*)hFile)->GetTrackIntegerProperty(trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1844 propName) != (u_int64_t)-1;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1845 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1846 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1847 // No error reporting
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1848 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1849 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1850 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1851 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1852 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1853
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1854 extern "C" float MP4GetTrackFloatProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1855 MP4FileHandle hFile, MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1856 const char* propName)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1857 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1858 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1859 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1860 return ((MP4File*)hFile)->GetTrackFloatProperty(trackId, propName);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1861 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1862 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1863 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1864 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1865 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1866 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1867 return NAN;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1868 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1869
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1870 extern "C" const char* MP4GetTrackStringProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1871 MP4FileHandle hFile, MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1872 const char* propName)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1873 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1874 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1875 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1876 return ((MP4File*)hFile)->GetTrackStringProperty(trackId, propName);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1877 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1878 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1879 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1880 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1881 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1882 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1883 return NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1884 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1885
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1886 extern "C" void MP4GetTrackBytesProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1887 MP4FileHandle hFile, MP4TrackId trackId, const char* propName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1888 u_int8_t** ppValue, u_int32_t* pValueSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1889 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1890 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1891 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1892 ((MP4File*)hFile)->GetTrackBytesProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1893 trackId, propName, ppValue, pValueSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1894 return;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1895 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1896 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1897 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1898 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1899 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1900 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1901 *ppValue = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1902 *pValueSize = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1903 return;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1904 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1905
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1906 extern "C" bool MP4SetTrackIntegerProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1907 MP4FileHandle hFile, MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1908 const char* propName, int64_t value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1909 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1910 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1911 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1912 ((MP4File*)hFile)->SetTrackIntegerProperty(trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1913 propName, value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1914 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1915 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1916 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1917 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1918 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1919 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1920 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1921 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1922 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1923
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1924 extern "C" bool MP4SetTrackFloatProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1925 MP4FileHandle hFile, MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1926 const char* propName, float value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1927 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1928 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1929 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1930 ((MP4File*)hFile)->SetTrackFloatProperty(trackId, propName, value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1931 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1932 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1933 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1934 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1935 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1936 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1937 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1938 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1939 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1940
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1941 extern "C" bool MP4SetTrackStringProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1942 MP4FileHandle hFile, MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1943 const char* propName, const char* value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1944 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1945 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1946 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1947 ((MP4File*)hFile)->SetTrackStringProperty(trackId, propName, value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1948 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1949 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1950 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1951 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1952 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1953 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1954 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1955 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1956 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1957
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1958 extern "C" bool MP4SetTrackBytesProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1959 MP4FileHandle hFile, MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1960 const char* propName, const u_int8_t* pValue, u_int32_t valueSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1961 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1962 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1963 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1964 ((MP4File*)hFile)->SetTrackBytesProperty(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1965 trackId, propName, pValue, valueSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1966 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1967 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1968 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1969 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1970 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1971 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1972 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1973 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1974 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1975
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1976 /* sample operations */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1977
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1978 extern "C" bool MP4ReadSample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1979 /* input parameters */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1980 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1981 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1982 MP4SampleId sampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1983 /* output parameters */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1984 u_int8_t** ppBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1985 u_int32_t* pNumBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1986 MP4Timestamp* pStartTime,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1987 MP4Duration* pDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1988 MP4Duration* pRenderingOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1989 bool* pIsSyncSample)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1990 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1991 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1992 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1993 ((MP4File*)hFile)->ReadSample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1994 trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1995 sampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1996 ppBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1997 pNumBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1998 pStartTime,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
1999 pDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2000 pRenderingOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2001 pIsSyncSample);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2002 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2003 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2004 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2005 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2006 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2007 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2008 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2009 *pNumBytes = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2010 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2011 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2012
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2013 extern "C" bool MP4ReadSampleFromTime(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2014 /* input parameters */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2015 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2016 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2017 MP4Timestamp when,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2018 /* output parameters */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2019 u_int8_t** ppBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2020 u_int32_t* pNumBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2021 MP4Timestamp* pStartTime,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2022 MP4Duration* pDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2023 MP4Duration* pRenderingOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2024 bool* pIsSyncSample)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2025 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2026 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2027 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2028 MP4SampleId sampleId =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2029 ((MP4File*)hFile)->GetSampleIdFromTime(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2030 trackId, when, false);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2031
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2032 ((MP4File*)hFile)->ReadSample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2033 trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2034 sampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2035 ppBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2036 pNumBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2037 pStartTime,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2038 pDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2039 pRenderingOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2040 pIsSyncSample);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2041
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2042 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2043 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2044 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2045 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2046 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2047 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2048 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2049 *pNumBytes = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2050 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2051 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2052
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2053 extern "C" bool MP4WriteSample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2054 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2055 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2056 const u_int8_t* pBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2057 u_int32_t numBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2058 MP4Duration duration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2059 MP4Duration renderingOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2060 bool isSyncSample)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2061 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2062 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2063 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2064 ((MP4File*)hFile)->WriteSample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2065 trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2066 pBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2067 numBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2068 duration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2069 renderingOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2070 isSyncSample);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2071 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2072 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2073 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2074 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2075 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2076 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2077 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2078 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2079 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2080
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2081 extern "C" bool MP4CopySample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2082 MP4FileHandle srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2083 MP4TrackId srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2084 MP4SampleId srcSampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2085 MP4FileHandle dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2086 MP4TrackId dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2087 MP4Duration dstSampleDuration)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2088 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2089 bool rc;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2090 u_int8_t* pBytes = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2091 u_int32_t numBytes = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2092 MP4Duration sampleDuration;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2093 MP4Duration renderingOffset;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2094 bool isSyncSample;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2095
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2096 // Note: we leave it up to the caller to ensure that the
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2097 // source and destination tracks are compatible.
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2098 // i.e. copying audio samples into a video track
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2099 // is unlikely to do anything useful
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2100
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2101 rc = MP4ReadSample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2102 srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2103 srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2104 srcSampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2105 &pBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2106 &numBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2107 NULL,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2108 &sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2109 &renderingOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2110 &isSyncSample);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2111
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2112 if (!rc) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2113 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2114 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2115
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2116 if (dstFile == MP4_INVALID_FILE_HANDLE) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2117 dstFile = srcFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2118 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2119 if (dstTrackId == MP4_INVALID_TRACK_ID) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2120 dstTrackId = srcTrackId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2121 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2122 if (dstSampleDuration != MP4_INVALID_DURATION) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2123 sampleDuration = dstSampleDuration;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2124 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2125
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2126 rc = MP4WriteSample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2127 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2128 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2129 pBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2130 numBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2131 sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2132 renderingOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2133 isSyncSample);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2134
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2135 free(pBytes);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2136
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2137 return rc;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2138 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2139
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2140 extern "C" bool MP4EncAndCopySample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2141 MP4FileHandle srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2142 MP4TrackId srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2143 MP4SampleId srcSampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2144 encryptFunc_t encfcnp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2145 u_int32_t encfcnparam1,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2146 MP4FileHandle dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2147 MP4TrackId dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2148 MP4Duration dstSampleDuration)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2149 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2150 bool rc;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2151 u_int8_t* pBytes = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2152 u_int32_t numBytes = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2153 u_int8_t* encSampleData = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2154 u_int32_t encSampleLength = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2155 MP4Duration sampleDuration;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2156 MP4Duration renderingOffset;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2157 bool isSyncSample;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2158
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2159 // Note: we leave it up to the caller to ensure that the
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2160 // source and destination tracks are compatible.
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2161 // i.e. copying audio samples into a video track
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2162 // is unlikely to do anything useful
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2163
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2164 rc = MP4ReadSample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2165 srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2166 srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2167 srcSampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2168 &pBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2169 &numBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2170 NULL,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2171 &sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2172 &renderingOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2173 &isSyncSample);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2174
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2175 if (!rc) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2176 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2177 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2178
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2179 if (dstFile == MP4_INVALID_FILE_HANDLE) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2180 dstFile = srcFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2181 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2182 if (dstTrackId == MP4_INVALID_TRACK_ID) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2183 dstTrackId = srcTrackId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2184 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2185 if (dstSampleDuration != MP4_INVALID_DURATION) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2186 sampleDuration = dstSampleDuration;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2187 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2188
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2189 //if (ismacrypEncryptSampleAddHeader(ismaCryptSId, numBytes, pBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2190 // &encSampleLength, &encSampleData) != 0) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2191 if (encfcnp(encfcnparam1, numBytes, pBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2192 &encSampleLength, &encSampleData) != 0) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2193 fprintf(stderr,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2194 "Can't encrypt the sample and add its header %u\n",
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2195 srcSampleId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2196 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2197
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2198 rc = MP4WriteSample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2199 dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2200 dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2201 encSampleData,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2202 encSampleLength,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2203 sampleDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2204 renderingOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2205 isSyncSample);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2206
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2207 free(pBytes);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2208
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2209 if (encSampleData != NULL) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2210 free(encSampleData);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2211 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2212
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2213 return rc;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2214 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2215
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2216 extern "C" bool MP4ReferenceSample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2217 MP4FileHandle srcFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2218 MP4TrackId srcTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2219 MP4SampleId srcSampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2220 MP4FileHandle dstFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2221 MP4TrackId dstTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2222 MP4Duration dstSampleDuration)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2223 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2224 // LATER Not yet implemented
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2225 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2226 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2227
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2228 extern "C" u_int32_t MP4GetSampleSize(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2229 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2230 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2231 MP4SampleId sampleId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2232 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2233 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2234 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2235 return ((MP4File*)hFile)->GetSampleSize(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2236 trackId, sampleId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2237 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2238 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2239 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2240 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2241 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2242 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2243 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2244 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2245
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2246 extern "C" u_int32_t MP4GetTrackMaxSampleSize(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2247 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2248 MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2249 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2250 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2251 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2252 return ((MP4File*)hFile)->GetTrackMaxSampleSize(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2253 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2254 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2255 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2256 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2257 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2258 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2259 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2260 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2261
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2262 extern "C" MP4SampleId MP4GetSampleIdFromTime(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2263 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2264 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2265 MP4Timestamp when,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2266 bool wantSyncSample)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2267 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2268 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2269 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2270 return ((MP4File*)hFile)->GetSampleIdFromTime(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2271 trackId, when, wantSyncSample);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2272 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2273 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2274 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2275 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2276 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2277 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2278 return MP4_INVALID_SAMPLE_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2279 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2280
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2281 extern "C" MP4Timestamp MP4GetSampleTime(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2282 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2283 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2284 MP4SampleId sampleId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2285 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2286 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2287 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2288 return ((MP4File*)hFile)->GetSampleTime(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2289 trackId, sampleId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2290 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2291 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2292 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2293 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2294 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2295 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2296 return MP4_INVALID_TIMESTAMP;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2297 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2298
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2299 extern "C" MP4Duration MP4GetSampleDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2300 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2301 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2302 MP4SampleId sampleId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2303 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2304 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2305 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2306 return ((MP4File*)hFile)->GetSampleDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2307 trackId, sampleId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2308 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2309 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2310 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2311 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2312 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2313 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2314 return MP4_INVALID_DURATION;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2315 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2316
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2317 extern "C" MP4Duration MP4GetSampleRenderingOffset(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2318 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2319 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2320 MP4SampleId sampleId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2321 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2322 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2323 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2324 return ((MP4File*)hFile)->GetSampleRenderingOffset(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2325 trackId, sampleId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2326 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2327 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2328 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2329 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2330 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2331 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2332 return MP4_INVALID_DURATION;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2333 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2334
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2335 extern "C" bool MP4SetSampleRenderingOffset(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2336 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2337 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2338 MP4SampleId sampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2339 MP4Duration renderingOffset)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2340 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2341 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2342 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2343 ((MP4File*)hFile)->SetSampleRenderingOffset(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2344 trackId, sampleId, renderingOffset);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2345 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2346 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2347 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2348 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2349 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2350 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2351 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2352 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2353 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2354
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2355 extern "C" int8_t MP4GetSampleSync(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2356 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2357 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2358 MP4SampleId sampleId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2359 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2360 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2361 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2362 return ((MP4File*)hFile)->GetSampleSync(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2363 trackId, sampleId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2364 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2365 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2366 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2367 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2368 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2369 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2370 return -1;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2371 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2372
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2373
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2374 extern "C" u_int64_t MP4ConvertFromMovieDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2375 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2376 MP4Duration duration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2377 u_int32_t timeScale)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2378 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2379 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2380 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2381 return ((MP4File*)hFile)->ConvertFromMovieDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2382 duration, timeScale);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2383 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2384 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2385 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2386 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2387 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2388 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2389 return (u_int64_t)MP4_INVALID_DURATION;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2390 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2391
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2392 extern "C" u_int64_t MP4ConvertFromTrackTimestamp(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2393 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2394 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2395 MP4Timestamp timeStamp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2396 u_int32_t timeScale)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2397 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2398 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2399 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2400 return ((MP4File*)hFile)->ConvertFromTrackTimestamp(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2401 trackId, timeStamp, timeScale);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2402 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2403 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2404 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2405 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2406 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2407 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2408 return (u_int64_t)MP4_INVALID_TIMESTAMP;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2409 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2410
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2411 extern "C" MP4Timestamp MP4ConvertToTrackTimestamp(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2412 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2413 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2414 u_int64_t timeStamp,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2415 u_int32_t timeScale)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2416 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2417 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2418 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2419 return ((MP4File*)hFile)->ConvertToTrackTimestamp(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2420 trackId, timeStamp, timeScale);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2421 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2422 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2423 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2424 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2425 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2426 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2427 return MP4_INVALID_TIMESTAMP;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2428 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2429
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2430 extern "C" u_int64_t MP4ConvertFromTrackDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2431 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2432 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2433 MP4Duration duration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2434 u_int32_t timeScale)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2435 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2436 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2437 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2438 return ((MP4File*)hFile)->ConvertFromTrackDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2439 trackId, duration, timeScale);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2440 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2441 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2442 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2443 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2444 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2445 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2446 return (u_int64_t)MP4_INVALID_DURATION;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2447 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2448
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2449 extern "C" MP4Duration MP4ConvertToTrackDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2450 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2451 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2452 u_int64_t duration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2453 u_int32_t timeScale)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2454 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2455 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2456 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2457 return ((MP4File*)hFile)->ConvertToTrackDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2458 trackId, duration, timeScale);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2459 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2460 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2461 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2462 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2463 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2464 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2465 return MP4_INVALID_DURATION;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2466 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2467
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2468 extern "C" bool MP4GetHintTrackRtpPayload(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2469 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2470 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2471 char** ppPayloadName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2472 u_int8_t* pPayloadNumber,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2473 u_int16_t* pMaxPayloadSize,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2474 char **ppEncodingParams)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2475 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2476 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2477 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2478 ((MP4File*)hFile)->GetHintTrackRtpPayload(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2479 hintTrackId, ppPayloadName, pPayloadNumber, pMaxPayloadSize,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2480 ppEncodingParams);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2481 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2482 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2483 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2484 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2485 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2486 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2487 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2488 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2489 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2490
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2491 extern "C" bool MP4SetHintTrackRtpPayload(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2492 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2493 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2494 const char* pPayloadName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2495 u_int8_t* pPayloadNumber,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2496 u_int16_t maxPayloadSize,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2497 const char *encode_params,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2498 bool include_rtp_map,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2499 bool include_mpeg4_esid)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2500 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2501 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2502 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2503 ((MP4File*)hFile)->SetHintTrackRtpPayload(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2504 hintTrackId, pPayloadName, pPayloadNumber, maxPayloadSize, encode_params,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2505 include_rtp_map, include_mpeg4_esid);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2506 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2507 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2508 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2509 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2510 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2511 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2512 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2513 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2514 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2515
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2516 extern "C" const char* MP4GetSessionSdp(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2517 MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2518 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2519 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2520 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2521 return ((MP4File*)hFile)->GetSessionSdp();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2522 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2523 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2524 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2525 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2526 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2527 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2528 return NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2529 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2530
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2531 extern "C" bool MP4SetSessionSdp(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2532 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2533 const char* sdpString)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2534 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2535 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2536 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2537 ((MP4File*)hFile)->SetSessionSdp(sdpString);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2538 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2539 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2540 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2541 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2542 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2543 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2544 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2545 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2546 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2547
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2548 extern "C" bool MP4AppendSessionSdp(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2549 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2550 const char* sdpString)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2551 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2552 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2553 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2554 ((MP4File*)hFile)->AppendSessionSdp(sdpString);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2555 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2556 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2557 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2558 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2559 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2560 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2561 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2562 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2563 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2564
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2565 extern "C" const char* MP4GetHintTrackSdp(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2566 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2567 MP4TrackId hintTrackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2568 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2569 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2570 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2571 return ((MP4File*)hFile)->GetHintTrackSdp(hintTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2572 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2573 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2574 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2575 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2576 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2577 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2578 return NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2579 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2580
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2581 extern "C" bool MP4SetHintTrackSdp(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2582 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2583 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2584 const char* sdpString)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2585 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2586 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2587 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2588 ((MP4File*)hFile)->SetHintTrackSdp(hintTrackId, sdpString);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2589 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2590 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2591 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2592 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2593 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2594 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2595 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2596 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2597 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2598
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2599 extern "C" bool MP4AppendHintTrackSdp(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2600 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2601 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2602 const char* sdpString)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2603 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2604 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2605 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2606 ((MP4File*)hFile)->AppendHintTrackSdp(hintTrackId, sdpString);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2607 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2608 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2609 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2610 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2611 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2612 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2613 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2614 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2615 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2616
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2617 extern "C" MP4TrackId MP4GetHintTrackReferenceTrackId(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2618 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2619 MP4TrackId hintTrackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2620 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2621 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2622 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2623 return ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2624 GetHintTrackReferenceTrackId(hintTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2625 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2626 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2627 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2628 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2629 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2630 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2631 return MP4_INVALID_TRACK_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2632 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2633
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2634 extern "C" bool MP4ReadRtpHint(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2635 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2636 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2637 MP4SampleId hintSampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2638 u_int16_t* pNumPackets)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2639 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2640 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2641 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2642 ((MP4File*)hFile)->ReadRtpHint(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2643 hintTrackId, hintSampleId, pNumPackets);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2644 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2645 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2646 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2647 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2648 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2649 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2650 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2651 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2652 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2653
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2654 extern "C" u_int16_t MP4GetRtpHintNumberOfPackets(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2655 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2656 MP4TrackId hintTrackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2657 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2658 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2659 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2660 return ((MP4File*)hFile)->GetRtpHintNumberOfPackets(hintTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2661 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2662 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2663 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2664 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2665 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2666 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2667 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2668 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2669
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2670 extern "C" int8_t MP4GetRtpPacketBFrame(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2671 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2672 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2673 u_int16_t packetIndex)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2674 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2675 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2676 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2677 return ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2678 GetRtpPacketBFrame(hintTrackId, packetIndex);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2679 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2680 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2681 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2682 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2683 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2684 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2685 return -1;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2686 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2687
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2688 extern "C" int32_t MP4GetRtpPacketTransmitOffset(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2689 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2690 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2691 u_int16_t packetIndex)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2692 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2693 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2694 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2695 return ((MP4File*)hFile)->
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2696 GetRtpPacketTransmitOffset(hintTrackId, packetIndex);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2697 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2698 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2699 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2700 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2701 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2702 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2703 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2704 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2705
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2706 extern "C" bool MP4ReadRtpPacket(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2707 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2708 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2709 u_int16_t packetIndex,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2710 u_int8_t** ppBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2711 u_int32_t* pNumBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2712 u_int32_t ssrc,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2713 bool includeHeader,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2714 bool includePayload)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2715 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2716 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2717 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2718 ((MP4File*)hFile)->ReadRtpPacket(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2719 hintTrackId, packetIndex,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2720 ppBytes, pNumBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2721 ssrc, includeHeader, includePayload);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2722 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2723 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2724 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2725 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2726 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2727 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2728 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2729 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2730 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2731
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2732 extern "C" MP4Timestamp MP4GetRtpTimestampStart(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2733 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2734 MP4TrackId hintTrackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2735 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2736 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2737 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2738 return ((MP4File*)hFile)->GetRtpTimestampStart(hintTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2739 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2740 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2741 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2742 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2743 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2744 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2745 return MP4_INVALID_TIMESTAMP;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2746 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2747
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2748 extern "C" bool MP4SetRtpTimestampStart(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2749 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2750 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2751 MP4Timestamp rtpStart)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2752 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2753 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2754 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2755 ((MP4File*)hFile)->SetRtpTimestampStart(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2756 hintTrackId, rtpStart);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2757 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2758 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2759 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2760 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2761 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2762 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2763 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2764 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2765 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2766
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2767 extern "C" bool MP4AddRtpHint(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2768 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2769 MP4TrackId hintTrackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2770 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2771 return MP4AddRtpVideoHint(hFile, hintTrackId, false, 0);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2772 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2773
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2774 extern "C" bool MP4AddRtpVideoHint(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2775 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2776 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2777 bool isBframe,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2778 u_int32_t timestampOffset)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2779 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2780 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2781 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2782 ((MP4File*)hFile)->AddRtpHint(hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2783 isBframe, timestampOffset);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2784 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2785 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2786 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2787 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2788 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2789 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2790 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2791 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2792 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2793
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2794 extern "C" bool MP4AddRtpPacket(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2795 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2796 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2797 bool setMbit,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2798 int32_t transmitOffset)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2799 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2800 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2801 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2802 ((MP4File*)hFile)->AddRtpPacket(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2803 hintTrackId, setMbit, transmitOffset);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2804 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2805 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2806 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2807 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2808 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2809 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2810 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2811 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2812 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2813
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2814 extern "C" bool MP4AddRtpImmediateData(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2815 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2816 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2817 const u_int8_t* pBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2818 u_int32_t numBytes)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2819 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2820 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2821 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2822 ((MP4File*)hFile)->AddRtpImmediateData(hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2823 pBytes, numBytes);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2824 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2825 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2826 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2827 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2828 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2829 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2830 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2831 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2832 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2833
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2834 extern "C" bool MP4AddRtpSampleData(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2835 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2836 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2837 MP4SampleId sampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2838 u_int32_t dataOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2839 u_int32_t dataLength)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2840 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2841 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2842 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2843 ((MP4File*)hFile)->AddRtpSampleData(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2844 hintTrackId, sampleId, dataOffset, dataLength);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2845 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2846 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2847 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2848 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2849 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2850 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2851 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2852 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2853 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2854
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2855 extern "C" bool MP4AddRtpESConfigurationPacket(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2856 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2857 MP4TrackId hintTrackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2858 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2859 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2860 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2861 ((MP4File*)hFile)->AddRtpESConfigurationPacket(hintTrackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2862 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2863 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2864 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2865 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2866 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2867 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2868 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2869 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2870 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2871
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2872 extern "C" bool MP4WriteRtpHint(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2873 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2874 MP4TrackId hintTrackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2875 MP4Duration duration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2876 bool isSyncSample)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2877 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2878 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2879 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2880 ((MP4File*)hFile)->WriteRtpHint(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2881 hintTrackId, duration, isSyncSample);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2882 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2883 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2884 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2885 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2886 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2887 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2888 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2889 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2890 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2891 /* 3GPP specific operations */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2892
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2893 extern "C" bool MP4Make3GPCompliant(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2894 const char* fileName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2895 u_int32_t verbosity,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2896 char* majorBrand,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2897 u_int32_t minorVersion,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2898 char** supportedBrands,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2899 u_int32_t supportedBrandsCount,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2900 bool deleteIodsAtom)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2901 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2902 MP4File* pFile = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2903
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2904 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2905 pFile = new MP4File(verbosity);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2906 pFile->Modify(fileName);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2907 pFile->Make3GPCompliant(fileName, majorBrand, minorVersion, supportedBrands, supportedBrandsCount, deleteIodsAtom);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2908 pFile->Close();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2909 delete pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2910 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2911 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2912 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2913 VERBOSE_ERROR(verbosity, e->Print());
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2914 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2915 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2916 delete pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2917 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2918 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2919
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2920 /* ISMA specific operations */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2921
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2922 extern "C" bool MP4MakeIsmaCompliant(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2923 const char* fileName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2924 u_int32_t verbosity,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2925 bool addIsmaComplianceSdp)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2926 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2927 MP4File* pFile = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2928
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2929 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2930 pFile = new MP4File(verbosity);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2931 pFile->Modify(fileName);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2932 pFile->MakeIsmaCompliant(addIsmaComplianceSdp);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2933 pFile->Close();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2934 delete pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2935 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2936 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2937 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2938 VERBOSE_ERROR(verbosity, e->Print());
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2939 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2940 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2941 delete pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2942 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2943 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2944
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2945 extern "C" char* MP4MakeIsmaSdpIod(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2946 u_int8_t videoProfile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2947 u_int32_t videoBitrate,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2948 u_int8_t* videoConfig,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2949 u_int32_t videoConfigLength,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2950 u_int8_t audioProfile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2951 u_int32_t audioBitrate,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2952 u_int8_t* audioConfig,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2953 u_int32_t audioConfigLength,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2954 u_int32_t verbosity)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2955 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2956 MP4File* pFile = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2957
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2958 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2959 pFile = new MP4File(verbosity);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2960
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2961 u_int8_t* pBytes = NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2962 u_int64_t numBytes = 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2963
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2964 pFile->CreateIsmaIodFromParams(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2965 videoProfile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2966 videoBitrate,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2967 videoConfig,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2968 videoConfigLength,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2969 audioProfile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2970 audioBitrate,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2971 audioConfig,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2972 audioConfigLength,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2973 &pBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2974 &numBytes);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2975
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2976 char* iodBase64 =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2977 MP4ToBase64(pBytes, numBytes);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2978 MP4Free(pBytes);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2979
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2980 char* sdpIod =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2981 (char*)MP4Malloc(strlen(iodBase64) + 64);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2982 sprintf(sdpIod,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2983 "a=mpeg4-iod: \042data:application/mpeg4-iod;base64,%s\042",
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2984 iodBase64);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2985 MP4Free(iodBase64);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2986
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2987 delete pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2988
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2989 return sdpIod;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2990 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2991 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2992 VERBOSE_ERROR(verbosity, e->Print());
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2993 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2994 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2995 delete pFile;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2996 return NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2997 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2998
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
2999 /* Edit list */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3000
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3001 extern "C" MP4EditId MP4AddTrackEdit(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3002 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3003 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3004 MP4EditId editId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3005 MP4Timestamp startTime,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3006 MP4Duration duration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3007 bool dwell)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3008 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3009 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3010 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3011 MP4EditId newEditId =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3012 ((MP4File*)hFile)->AddTrackEdit(trackId, editId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3013
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3014 if (newEditId != MP4_INVALID_EDIT_ID) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3015 ((MP4File*)hFile)->SetTrackEditMediaStart(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3016 trackId, newEditId, startTime);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3017 ((MP4File*)hFile)->SetTrackEditDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3018 trackId, newEditId, duration);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3019 ((MP4File*)hFile)->SetTrackEditDwell(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3020 trackId, newEditId, dwell);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3021 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3022
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3023 return newEditId;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3024 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3025 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3026 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3027 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3028 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3029 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3030 return MP4_INVALID_EDIT_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3031 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3032
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3033 extern "C" bool MP4DeleteTrackEdit(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3034 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3035 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3036 MP4EditId editId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3037 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3038 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3039 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3040 ((MP4File*)hFile)->DeleteTrackEdit(trackId, editId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3041 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3042 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3043 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3044 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3045 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3046 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3047 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3048 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3049 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3050
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3051 extern "C" u_int32_t MP4GetTrackNumberOfEdits(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3052 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3053 MP4TrackId trackId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3054 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3055 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3056 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3057 return ((MP4File*)hFile)->GetTrackNumberOfEdits(trackId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3058 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3059 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3060 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3061 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3062 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3063 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3064 return 0;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3065 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3066
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3067 extern "C" MP4Timestamp MP4GetTrackEditMediaStart(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3068 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3069 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3070 MP4EditId editId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3071 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3072 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3073 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3074 return ((MP4File*)hFile)->GetTrackEditMediaStart(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3075 trackId, editId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3076 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3077 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3078 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3079 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3080 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3081 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3082 return MP4_INVALID_TIMESTAMP;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3083 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3084
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3085 extern "C" MP4Duration MP4GetTrackEditTotalDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3086 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3087 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3088 MP4EditId editId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3089 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3090 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3091 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3092 return ((MP4File*)hFile)->GetTrackEditTotalDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3093 trackId, editId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3094 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3095 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3096 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3097 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3098 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3099 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3100 return MP4_INVALID_DURATION;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3101 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3102
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3103 extern "C" bool MP4SetTrackEditMediaStart(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3104 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3105 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3106 MP4EditId editId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3107 MP4Timestamp startTime)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3108 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3109 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3110 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3111 ((MP4File*)hFile)->SetTrackEditMediaStart(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3112 trackId, editId, startTime);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3113 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3114 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3115 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3116 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3117 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3118 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3119 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3120 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3121 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3122
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3123 extern "C" MP4Duration MP4GetTrackEditDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3124 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3125 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3126 MP4EditId editId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3127 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3128 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3129 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3130 return ((MP4File*)hFile)->GetTrackEditDuration(trackId, editId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3131 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3132 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3133 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3134 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3135 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3136 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3137 return MP4_INVALID_DURATION;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3138 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3139
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3140 extern "C" bool MP4SetTrackEditDuration(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3141 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3142 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3143 MP4EditId editId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3144 MP4Duration duration)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3145 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3146 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3147 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3148 ((MP4File*)hFile)->SetTrackEditDuration(trackId, editId, duration);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3149 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3150 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3151 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3152 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3153 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3154 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3155 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3156 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3157 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3158
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3159 extern "C" int8_t MP4GetTrackEditDwell(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3160 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3161 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3162 MP4EditId editId)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3163 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3164 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3165 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3166 return ((MP4File*)hFile)->GetTrackEditDwell(trackId, editId);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3167 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3168 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3169 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3170 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3171 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3172 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3173 return -1;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3174 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3175
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3176 extern "C" bool MP4SetTrackEditDwell(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3177 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3178 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3179 MP4EditId editId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3180 bool dwell)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3181 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3182 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3183 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3184 ((MP4File*)hFile)->SetTrackEditDwell(trackId, editId, dwell);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3185 return true;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3186 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3187 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3188 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3189 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3190 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3191 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3192 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3193 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3194
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3195 extern "C" bool MP4ReadSampleFromEditTime(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3196 /* input parameters */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3197 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3198 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3199 MP4Timestamp when,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3200 /* output parameters */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3201 u_int8_t** ppBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3202 u_int32_t* pNumBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3203 MP4Timestamp* pStartTime,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3204 MP4Duration* pDuration,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3205 MP4Duration* pRenderingOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3206 bool* pIsSyncSample)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3207 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3208 MP4SampleId sampleId =
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3209 MP4GetSampleIdFromEditTime(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3210 hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3211 trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3212 when,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3213 pStartTime,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3214 pDuration);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3215
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3216 return MP4ReadSample(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3217 hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3218 trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3219 sampleId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3220 ppBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3221 pNumBytes,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3222 NULL,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3223 NULL,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3224 pRenderingOffset,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3225 pIsSyncSample);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3226 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3227
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3228 extern "C" MP4SampleId MP4GetSampleIdFromEditTime(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3229 MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3230 MP4TrackId trackId,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3231 MP4Timestamp when,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3232 MP4Timestamp* pStartTime,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3233 MP4Duration* pDuration)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3234 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3235 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3236 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3237 return ((MP4File*)hFile)->GetSampleIdFromEditTime(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3238 trackId, when, pStartTime, pDuration);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3239 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3240 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3241 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3242 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3243 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3244 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3245 return MP4_INVALID_SAMPLE_ID;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3246 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3247
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3248 /* Utlities */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3249
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3250 extern "C" char* MP4BinaryToBase16(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3251 const u_int8_t* pData,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3252 u_int32_t dataSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3253 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3254 if (pData || dataSize == 0) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3255 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3256 return MP4ToBase16(pData, dataSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3257 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3258 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3259 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3260 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3261 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3262 return NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3263 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3264
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3265 extern "C" char* MP4BinaryToBase64(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3266 const u_int8_t* pData,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3267 u_int32_t dataSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3268 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3269 if (pData || dataSize == 0) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3270 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3271 return MP4ToBase64(pData, dataSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3272 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3273 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3274 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3275 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3276 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3277 return NULL;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3278 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3279
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3280 /* iTunes meta data handling */
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3281 extern "C" bool MP4GetMetadataByIndex(MP4FileHandle hFile, u_int32_t index,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3282 const char** ppName,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3283 u_int8_t** ppValue, u_int32_t* pValueSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3284 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3285 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3286 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3287 return ((MP4File*)hFile)->GetMetadataByIndex(
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3288 index, ppName, ppValue, pValueSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3289 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3290 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3291 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3292 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3293 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3294 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3295 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3296 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3297
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3298 extern "C" bool MP4MetadataDelete(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3299 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3300 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3301 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3302 return ((MP4File*)hFile)->MetadataDelete();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3303 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3304 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3305 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3306 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3307 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3308 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3309 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3310 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3311
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3312 extern "C" bool MP4SetMetadataName(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3313 const char* value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3314 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3315 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3316 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3317 return ((MP4File*)hFile)->SetMetadataName(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3318 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3319 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3320 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3321 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3322 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3323 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3324 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3325 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3326
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3327 extern "C" bool MP4GetMetadataName(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3328 char** value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3329 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3330 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3331 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3332 return ((MP4File*)hFile)->GetMetadataName(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3333 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3334 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3335 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3336 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3337 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3338 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3339 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3340 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3341
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3342 extern "C" bool MP4DeleteMetadataName(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3343 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3344 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3345 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3346 return ((MP4File*)hFile)->DeleteMetadataName();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3347 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3348 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3349 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3350 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3351 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3352 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3353 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3354 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3355
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3356 extern "C" bool MP4SetMetadataWriter(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3357 const char* value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3358 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3359 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3360 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3361 return ((MP4File*)hFile)->SetMetadataWriter(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3362 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3363 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3364 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3365 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3366 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3367 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3368 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3369 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3370
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3371 extern "C" bool MP4GetMetadataWriter(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3372 char** value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3373 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3374 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3375 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3376 return ((MP4File*)hFile)->GetMetadataWriter(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3377 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3378 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3379 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3380 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3381 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3382 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3383 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3384 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3385
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3386 extern "C" bool MP4DeleteMetadataWriter(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3387 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3388 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3389 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3390 return ((MP4File*)hFile)->DeleteMetadataWriter();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3391 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3392 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3393 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3394 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3395 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3396 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3397 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3398 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3399
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3400 extern "C" bool MP4SetMetadataAlbum(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3401 const char* value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3402 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3403 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3404 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3405 return ((MP4File*)hFile)->SetMetadataAlbum(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3406 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3407 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3408 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3409 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3410 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3411 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3412 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3413 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3414
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3415 extern "C" bool MP4GetMetadataAlbum(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3416 char** value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3417 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3418 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3419 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3420 return ((MP4File*)hFile)->GetMetadataAlbum(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3421 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3422 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3423 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3424 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3425 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3426 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3427 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3428 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3429
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3430 extern "C" bool MP4DeleteMetadataAlbum(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3431 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3432 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3433 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3434 return ((MP4File*)hFile)->DeleteMetadataAlbum();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3435 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3436 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3437 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3438 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3439 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3440 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3441 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3442 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3443
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3444 extern "C" bool MP4SetMetadataArtist(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3445 const char* value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3446 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3447 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3448 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3449 return ((MP4File*)hFile)->SetMetadataArtist(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3450 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3451 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3452 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3453 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3454 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3455 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3456 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3457 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3458
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3459 extern "C" bool MP4GetMetadataArtist(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3460 char** value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3461 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3462 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3463 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3464 return ((MP4File*)hFile)->GetMetadataArtist(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3465 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3466 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3467 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3468 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3469 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3470 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3471 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3472 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3473
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3474 extern "C" bool MP4DeleteMetadataArtist(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3475 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3476 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3477 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3478 return ((MP4File*)hFile)->DeleteMetadataArtist();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3479 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3480 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3481 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3482 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3483 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3484 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3485 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3486 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3487
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3488 extern "C" bool MP4SetMetadataTool(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3489 const char* value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3490 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3491 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3492 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3493 return ((MP4File*)hFile)->SetMetadataTool(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3494 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3495 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3496 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3497 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3498 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3499 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3500 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3501 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3502
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3503 extern "C" bool MP4GetMetadataTool(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3504 char** value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3505 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3506 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3507 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3508 return ((MP4File*)hFile)->GetMetadataTool(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3509 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3510 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3511 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3512 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3513 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3514 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3515 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3516 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3517
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3518 extern "C" bool MP4DeleteMetadataTool(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3519 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3520 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3521 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3522 return ((MP4File*)hFile)->DeleteMetadataTool();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3523 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3524 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3525 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3526 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3527 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3528 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3529 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3530 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3531
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3532 extern "C" bool MP4SetMetadataComment(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3533 const char* value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3534 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3535 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3536 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3537 return ((MP4File*)hFile)->SetMetadataComment(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3538 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3539 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3540 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3541 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3542 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3543 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3544 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3545 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3546
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3547 extern "C" bool MP4GetMetadataComment(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3548 char** value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3549 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3550 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3551 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3552 return ((MP4File*)hFile)->GetMetadataComment(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3553 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3554 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3555 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3556 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3557 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3558 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3559 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3560 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3561
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3562 extern "C" bool MP4DeleteMetadataComment(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3563 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3564 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3565 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3566 return ((MP4File*)hFile)->DeleteMetadataComment();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3567 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3568 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3569 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3570 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3571 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3572 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3573 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3574 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3575
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3576 extern "C" bool MP4SetMetadataYear(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3577 const char* value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3578 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3579 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3580 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3581 return ((MP4File*)hFile)->SetMetadataYear(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3582 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3583 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3584 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3585 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3586 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3587 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3588 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3589 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3590
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3591 extern "C" bool MP4GetMetadataYear(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3592 char** value)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3593 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3594 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3595 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3596 return ((MP4File*)hFile)->GetMetadataYear(value);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3597 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3598 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3599 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3600 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3601 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3602 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3603 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3604 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3605
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3606 extern "C" bool MP4DeleteMetadataYear(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3607 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3608 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3609 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3610 return ((MP4File*)hFile)->DeleteMetadataYear();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3611 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3612 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3613 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3614 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3615 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3616 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3617 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3618 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3619
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3620 extern "C" bool MP4SetMetadataTrack(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3621 u_int16_t track, u_int16_t totalTracks)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3622 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3623 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3624 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3625 return ((MP4File*)hFile)->SetMetadataTrack(track, totalTracks);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3626 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3627 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3628 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3629 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3630 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3631 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3632 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3633 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3634
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3635 extern "C" bool MP4GetMetadataTrack(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3636 u_int16_t* track, u_int16_t* totalTracks)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3637 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3638 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3639 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3640 return ((MP4File*)hFile)->GetMetadataTrack(track, totalTracks);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3641 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3642 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3643 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3644 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3645 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3646 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3647 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3648 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3649
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3650 extern "C" bool MP4DeleteMetadataTrack(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3651 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3652 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3653 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3654 return ((MP4File*)hFile)->DeleteMetadataTrack();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3655 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3656 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3657 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3658 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3659 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3660 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3661 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3662 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3663
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3664 extern "C" bool MP4SetMetadataDisk(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3665 u_int16_t disk, u_int16_t totalDisks)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3666 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3667 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3668 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3669 return ((MP4File*)hFile)->SetMetadataDisk(disk, totalDisks);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3670 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3671 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3672 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3673 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3674 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3675 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3676 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3677 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3678
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3679 extern "C" bool MP4GetMetadataDisk(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3680 u_int16_t* disk, u_int16_t* totalDisks)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3681 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3682 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3683 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3684 return ((MP4File*)hFile)->GetMetadataDisk(disk, totalDisks);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3685 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3686 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3687 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3688 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3689 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3690 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3691 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3692 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3693
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3694 extern "C" bool MP4DeleteMetadataDisk(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3695 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3696 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3697 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3698 return ((MP4File*)hFile)->DeleteMetadataDisk();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3699 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3700 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3701 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3702 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3703 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3704 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3705 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3706 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3707
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3708 extern "C" bool MP4SetMetadataGenre(MP4FileHandle hFile, const char *genre)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3709 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3710 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3711 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3712 return ((MP4File*)hFile)->SetMetadataGenre(genre);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3713 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3714 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3715 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3716 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3717 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3718 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3719 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3720 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3721
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3722 extern "C" bool MP4GetMetadataGenre(MP4FileHandle hFile, char **genre)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3723 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3724 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3725 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3726 return ((MP4File*)hFile)->GetMetadataGenre(genre);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3727 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3728 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3729 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3730 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3731 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3732 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3733 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3734 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3735
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3736 extern "C" bool MP4DeleteMetadataGenre(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3737 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3738 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3739 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3740 return ((MP4File*)hFile)->DeleteMetadataGenre();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3741 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3742 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3743 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3744 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3745 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3746 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3747 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3748 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3749
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3750 extern "C" bool MP4SetMetadataGrouping(MP4FileHandle hFile, const char *grouping)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3751 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3752 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3753 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3754 return ((MP4File*)hFile)->SetMetadataGrouping(grouping);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3755 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3756 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3757 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3758 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3759 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3760 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3761 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3762 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3763
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3764 extern "C" bool MP4GetMetadataGrouping(MP4FileHandle hFile, char **grouping)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3765 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3766 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3767 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3768 return ((MP4File*)hFile)->GetMetadataGrouping(grouping);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3769 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3770 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3771 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3772 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3773 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3774 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3775 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3776 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3777
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3778 extern "C" bool MP4DeleteMetadataGrouping(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3779 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3780 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3781 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3782 return ((MP4File*)hFile)->DeleteMetadataGrouping();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3783 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3784 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3785 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3786 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3787 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3788 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3789 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3790 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3791
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3792 extern "C" bool MP4SetMetadataTempo(MP4FileHandle hFile, u_int16_t tempo)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3793 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3794 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3795 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3796 return ((MP4File*)hFile)->SetMetadataTempo(tempo);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3797 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3798 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3799 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3800 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3801 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3802 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3803 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3804 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3805
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3806 extern "C" bool MP4GetMetadataTempo(MP4FileHandle hFile, u_int16_t* tempo)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3807 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3808 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3809 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3810 return ((MP4File*)hFile)->GetMetadataTempo(tempo);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3811 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3812 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3813 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3814 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3815 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3816 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3817 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3818 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3819
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3820 extern "C" bool MP4DeleteMetadataTempo(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3821 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3822 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3823 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3824 return ((MP4File*)hFile)->DeleteMetadataTempo();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3825 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3826 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3827 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3828 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3829 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3830 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3831 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3832 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3833
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3834 extern "C" bool MP4SetMetadataCompilation(MP4FileHandle hFile, u_int8_t cpl)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3835 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3836 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3837 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3838 return ((MP4File*)hFile)->SetMetadataCompilation(cpl);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3839 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3840 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3841 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3842 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3843 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3844 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3845 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3846 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3847
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3848 extern "C" bool MP4GetMetadataCompilation(MP4FileHandle hFile, u_int8_t* cpl)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3849 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3850 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3851 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3852 return ((MP4File*)hFile)->GetMetadataCompilation(cpl);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3853 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3854 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3855 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3856 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3857 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3858 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3859 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3860 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3861
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3862 extern "C" bool MP4DeleteMetadataCompilation(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3863 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3864 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3865 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3866 return ((MP4File*)hFile)->DeleteMetadataCompilation();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3867 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3868 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3869 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3870 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3871 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3872 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3873 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3874 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3875
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3876 extern "C" bool MP4SetMetadataCoverArt(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3877 u_int8_t *coverArt, u_int32_t size)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3878 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3879 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3880 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3881 return ((MP4File*)hFile)->SetMetadataCoverArt(coverArt, size);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3882 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3883 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3884 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3885 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3886 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3887 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3888 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3889 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3890
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3891 extern "C" bool MP4GetMetadataCoverArt(MP4FileHandle hFile,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3892 u_int8_t **coverArt, u_int32_t* size)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3893 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3894 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3895 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3896 return ((MP4File*)hFile)->GetMetadataCoverArt(coverArt, size);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3897 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3898 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3899 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3900 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3901 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3902 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3903 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3904 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3905
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3906 extern "C" bool MP4DeleteMetadataCoverArt(MP4FileHandle hFile)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3907 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3908 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3909 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3910 return ((MP4File*)hFile)->DeleteMetadataCoverArt();
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3911 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3912 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3913 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3914 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3915 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3916 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3917 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3918 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3919
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3920 extern "C" bool MP4SetMetadataFreeForm(MP4FileHandle hFile, char *name,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3921 u_int8_t* pValue, u_int32_t valueSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3922 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3923 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3924 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3925 return ((MP4File*)hFile)->SetMetadataFreeForm(name, pValue, valueSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3926 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3927 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3928 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3929 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3930 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3931 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3932 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3933 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3934
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3935 extern "C" bool MP4GetMetadataFreeForm(MP4FileHandle hFile, char *name,
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3936 u_int8_t** pValue, u_int32_t* valueSize)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3937 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3938 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3939 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3940 return ((MP4File*)hFile)->GetMetadataFreeForm(name, pValue, valueSize);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3941 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3942 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3943 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3944 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3945 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3946 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3947 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3948 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3949
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3950 extern "C" bool MP4DeleteMetadataFreeForm(MP4FileHandle hFile, char *name)
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3951 {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3952 if (MP4_IS_VALID_FILE_HANDLE(hFile)) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3953 try {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3954 return ((MP4File*)hFile)->DeleteMetadataFreeForm(name);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3955 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3956 catch (MP4Error* e) {
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3957 PRINT_ERROR(e);
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3958 delete e;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3959 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3960 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3961 return false;
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3962 }
6a86fdd4dea4 [svn] Replacement libmp4v2.
nenolod
parents:
diff changeset
3963