blob: a61c4800635ff7d781bb3062e13691c62d521652 [file] [log] [blame]
/*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is MPEG4IP.
*
* The Initial Developer of the Original Code is Cisco Systems Inc.
* Portions created by Cisco Systems Inc. are
* Copyright (C) Cisco Systems Inc. 2001. All Rights Reserved.
*
* Contributor(s):
* Dave Mackie dmackie@cisco.com
*/
#include "mp4.h"
main(int argc, char** argv)
{
if (argc < 2) {
fprintf(stderr, "Usage: %s <file>\n", argv[0]);
exit(1);
}
u_int32_t verbosity = 0 /* MP4_DETAILS_ALL */;
MP4FileHandle mp4File = MP4Create(argv[1], verbosity);
if (!mp4File) {
exit(1);
}
MP4TrackId urlTrackId =
#if 0
MP4AddTrack(mp4File, "URLF");
#else
MP4AddHrefTrack(mp4File, 90000, MP4_INVALID_DURATION);
#endif
printf("urlTrackId %d\n", urlTrackId);
u_int8_t i;
char url[128];
for (i = 1; i <= 5; i++) {
sprintf(url, "http://server.com/foo/bar%u.html", i);
MP4WriteSample(mp4File, urlTrackId,
(u_int8_t*)url, strlen(url) + 1, (MP4Duration)i);
}
MP4Close(mp4File);
mp4File = MP4Read(argv[1], verbosity);
// check that we can find the track again
#if 0
urlTrackId = MP4FindTrackId(mp4File, 0, "URLF");
#else
urlTrackId = MP4FindTrackId(mp4File, 0, MP4_CNTL_TRACK_TYPE);
#endif
printf("urlTrackId %d\n", urlTrackId);
for (i = 1; i <= 5; i++) {
u_int8_t* pSample = NULL;
u_int32_t sampleSize = 0;
MP4Duration duration;
bool rc;
rc = MP4ReadSample(mp4File, urlTrackId, i,
&pSample, &sampleSize, NULL, &duration);
if (rc) {
printf("Sample %i duration "D64": %s\n",
i, duration, pSample);
free(pSample);
} else {
printf("Couldn't read sample %i\n", i);
}
}
MP4Close(mp4File);
exit(0);
}