Modification of stsc_decompact function
authorFrancois-Olivier Devaux <fodevaux@users.noreply.github.com>
Wed, 8 Sep 2004 15:12:21 +0000 (15:12 +0000)
committerFrancois-Olivier Devaux <fodevaux@users.noreply.github.com>
Wed, 8 Sep 2004 15:12:21 +0000 (15:12 +0000)
mj2/mj2.c

index 59dac00f8e36750958712f4243329db5c7fc971b..1d7706795121db286a26d1a966e7af0826677ca9 100644 (file)
--- 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 -; 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
 *