summaryrefslogtreecommitdiff
path: root/mj2
diff options
context:
space:
mode:
authorFrancois-Olivier Devaux <fodevaux@users.noreply.github.com>2004-09-08 15:12:21 +0000
committerFrancois-Olivier Devaux <fodevaux@users.noreply.github.com>2004-09-08 15:12:21 +0000
commit02e3a4ec772996318bf26676cfa49a359adf0f39 (patch)
treed66a9b0e786e961e889e45b13f079a6beac6f084 /mj2
parent7250ce066850778c128ceff3648d6c7edb7bc902 (diff)
Modification of stsc_decompact function
Diffstat (limited to 'mj2')
-rw-r--r--mj2/mj2.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/mj2/mj2.c b/mj2/mj2.c
index 59dac00f..1d770679 100644
--- a/mj2/mj2.c
+++ b/mj2/mj2.c
@@ -287,39 +287,42 @@ void mj2_stsc_decompact(mj2_tk_t * tk)
{
int j, i;
unsigned int k;
-
+ int sampleno=0;
+
if (tk->num_samplestochunk == 1) {
tk->num_chunks =
(unsigned int) ceil((double) tk->num_samples /
- (double) tk->sampletochunk[0].samples_per_chunk);
+ (double) tk->sampletochunk[0].samples_per_chunk);
tk->chunk =
(mj2_chunk_t *) malloc(tk->num_chunks * sizeof(mj2_chunk_t));
for (k = 0; k < tk->num_chunks; k++) {
tk->chunk[k].num_samples = tk->sampletochunk[0].samples_per_chunk;
}
-
+
} else {
tk->chunk =
(mj2_chunk_t *) malloc(tk->num_samples * sizeof(mj2_chunk_t));
tk->num_chunks = 0;
- for (i = 0; i < tk->num_samplestochunk - 1; i++) {
+ for (i = 0; i < tk->num_samplestochunk -1 ; i++) {
for (j = tk->sampletochunk[i].first_chunk - 1;
- j < tk->sampletochunk[i + 1].first_chunk - 1; j++) {
+ j < tk->sampletochunk[i + 1].first_chunk - 1; j++) {
tk->chunk[j].num_samples = tk->sampletochunk[i].samples_per_chunk;
tk->num_chunks++;
+ sampleno += tk->chunk[j].num_samples;
}
}
- tk->num_chunks++;
- for (k = tk->sampletochunk[tk->num_samplestochunk].first_chunk - 1;
- k < tk->num_chunks; k++) {
+ tk->num_chunks += (int)(tk->num_samples - sampleno) / tk->sampletochunk[tk->num_samplestochunk - 1].samples_per_chunk;
+ for (k = tk->sampletochunk[tk->num_samplestochunk - 1].first_chunk - 1;
+ k < tk->num_chunks; k++) {
tk->chunk[k].num_samples =
- tk->sampletochunk[tk->num_samplestochunk].samples_per_chunk;
+ tk->sampletochunk[tk->num_samplestochunk - 1].samples_per_chunk;
}
tk->chunk = realloc(tk->chunk, tk->num_chunks * sizeof(mj2_chunk_t));
}
-
+
}
+
/*
* Chunk offset box Decompact
*