]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - mp4.c
mp4: Remove member moov_read of struct mp4ff.
[paraslash.git] / mp4.c
diff --git a/mp4.c b/mp4.c
index 9368a790ace71400cf7d77cd86de7806b62a8a1f..cdcfa6511abdae0ffc0dbfd8ac77be1288d39427 100644 (file)
--- a/mp4.c
+++ b/mp4.c
@@ -8,7 +8,6 @@
 #include "para.h"
 #include "mp4.h"
 
-#define USE_TAGGING
 int32_t mp4ff_total_tracks(const mp4ff_t * f)
 {
        return f->total_tracks;
@@ -40,8 +39,6 @@ static int32_t mp4ff_atom_get_size(const int8_t * data)
        d = (uint8_t) data[3];
 
        result = (a << 24) | (b << 16) | (c << 8) | d;
-       //if (result > 0 && result < 8) result = 8;
-
        return (int32_t) result;
 }
 
@@ -343,8 +340,6 @@ static uint64_t mp4ff_atom_read_header(mp4ff_t * f, uint8_t * atom_type,
                *header_size = 16;
                size = mp4ff_read_int64(f);
        }
-       //printf("%c%c%c%c\n", atom_header[4], atom_header[5], atom_header[6], atom_header[7]);
-
        *atom_type = mp4ff_atom_name_to_type(atom_header[4], atom_header[5],
                atom_header[6], atom_header[7]);
        return size;
@@ -359,19 +354,14 @@ static int need_parse_when_meta_only(uint8_t atom_type)
 {
        switch (atom_type) {
        case ATOM_EDTS:
-//      case ATOM_MDIA:
-//      case ATOM_MINF:
        case ATOM_DRMS:
        case ATOM_SINF:
        case ATOM_SCHI:
-//      case ATOM_STBL:
-//      case ATOM_STSD:
        case ATOM_STTS:
        case ATOM_STSZ:
        case ATOM_STZ2:
        case ATOM_STCO:
        case ATOM_STSC:
-//      case ATOM_CTTS:
        case ATOM_FRMA:
        case ATOM_IVIV:
        case ATOM_PRIV:
@@ -1079,8 +1069,6 @@ static int32_t mp4ff_parse_tag(mp4ff_t * f, const uint8_t parent_atom_type,
                                                done = 1;
                                        }
                                } else if (parent_atom_type == ATOM_TRACK || parent_atom_type == ATOM_DISC) {
-                                       /* if (!done && subsize - header_size >= 8 + 8) */
-                                       /* modified by AJS */
                                        if (!done && (subsize - header_size) >= (sizeof (char) + sizeof (uint8_t) * 3 + sizeof (uint32_t) +     /* version + flags + reserved */
                                                                                 +(parent_atom_type == ATOM_TRACK ? sizeof (uint16_t) : 0)      /* leading uint16_t if ATOM_TRACK */
                                                                                 +sizeof (uint16_t)     /* track / disc */
@@ -1240,11 +1228,9 @@ static int32_t mp4ff_atom_read(mp4ff_t * f, const int32_t size,
        } else if (atom_type == ATOM_MDHD) {
                /* track header */
                mp4ff_read_mdhd(f);
-#ifdef USE_TAGGING
        } else if (atom_type == ATOM_META) {
                /* iTunes Metadata box */
                mp4ff_read_meta(f, size);
-#endif
        }
 
        mp4ff_set_position(f, dest_position);
@@ -1302,14 +1288,7 @@ static int32_t parse_atoms(mp4ff_t * f, int meta_only)
                f->file_size += size;
                f->last_atom = atom_type;
 
-               if (atom_type == ATOM_MDAT && f->moov_read) {
-                       /* moov atom is before mdat, we can stop reading when mdat is encountered */
-                       /* file position will stay at beginning of mdat data */
-//            break;
-               }
-
                if (atom_type == ATOM_MOOV && size > header_size) {
-                       f->moov_read = 1;
                        f->moov_offset = mp4ff_position(f) - header_size;
                        f->moov_size = size;
                }
@@ -1417,17 +1396,11 @@ void mp4ff_close(mp4ff_t * ff)
                                free(ff->track[i]->ctts_sample_count);
                        if (ff->track[i]->ctts_sample_offset)
                                free(ff->track[i]->ctts_sample_offset);
-#ifdef ITUNES_DRM
-                       if (ff->track[i]->p_drms)
-                               drms_free(ff->track[i]->p_drms);
-#endif
                        free(ff->track[i]);
                }
        }
 
-#ifdef USE_TAGGING
        mp4ff_tag_delete(&(ff->tags));
-#endif
 
        if (ff)
                free(ff);
@@ -1528,39 +1501,20 @@ static int32_t mp4ff_sample_to_offset(const mp4ff_t * f, const int32_t track,
        return chunk_offset2;
 }
 
-int32_t mp4ff_set_sample_position(mp4ff_t * f, const int32_t track,
-                                 const int32_t sample)
+void mp4ff_set_sample_position(mp4ff_t *f, const int32_t track,
+               const int32_t sample)
 {
-       int32_t offset;
-
-       offset = mp4ff_sample_to_offset(f, track, sample);
+       int32_t offset = mp4ff_sample_to_offset(f, track, sample);
        mp4ff_set_position(f, offset);
-
-       return 0;
 }
 
-static int32_t mp4ff_audio_frame_size(const mp4ff_t * f, const int32_t track,
-               const int32_t sample)
+int32_t mp4ff_get_sample_size(const mp4ff_t *f, int track, int sample)
 {
-       int32_t bytes;
-       const mp4ff_track_t *p_track = f->track[track];
+       const mp4ff_track_t *t = f->track[track];
 
-       if (p_track->stsz_sample_size) {
-               bytes = p_track->stsz_sample_size;
-       } else {
-               bytes = p_track->stsz_table[sample];
-       }
-
-       return bytes;
-}
-
-int32_t mp4ff_read_sample_getsize(mp4ff_t * f, const int track,
-                                 const int sample)
-{
-       int32_t temp = mp4ff_audio_frame_size(f, track, sample);
-       if (temp < 0)
-               temp = 0;
-       return temp;
+       if (t->stsz_sample_size != 0)
+               return t->stsz_sample_size;
+       return t->stsz_table[sample];
 }
 
 uint32_t mp4ff_get_sample_rate(const mp4ff_t * f, const int32_t track)
@@ -1736,24 +1690,22 @@ static unsigned membuffer_write(membuffer * buf, const void *ptr, unsigned bytes
        return bytes;
 }
 
-#define membuffer_write_data membuffer_write
-
 static unsigned membuffer_write_atom_name(membuffer * buf, const char *data)
 {
-       return membuffer_write_data(buf, data, 4) == 4 ? 1 : 0;
+       return membuffer_write(buf, data, 4) == 4 ? 1 : 0;
 }
 
 static unsigned membuffer_write_int16(membuffer * buf, uint16_t data)
 {
        uint8_t temp[2] = { (uint8_t) (data >> 8), (uint8_t) data };
-       return membuffer_write_data(buf, temp, 2);
+       return membuffer_write(buf, temp, 2);
 }
 
 static unsigned membuffer_write_int32(membuffer * buf, uint32_t data)
 {
        uint8_t temp[4] = { (uint8_t) (data >> 24), (uint8_t) (data >> 16),
                (uint8_t) (data >> 8), (uint8_t) data };
-       return membuffer_write_data(buf, temp, 4);
+       return membuffer_write(buf, temp, 4);
 }
 
 static void membuffer_write_track_tag(membuffer * buf, const char *name,
@@ -1819,13 +1771,8 @@ static stdmeta_entry stdmetas[] = {
        {"\xA9" "day", "date"},
        {"\xA9" "too", "tool"},
        {"\xA9" "cmt", "comment"},
-//      {"\xA9" "gen","genre"},
        {"cpil", "compilation"},
-//      {"trkn","track"},
-//      {"disk","disc"},
-//      {"gnre","genre"},
        {"covr", "cover"},
-       /* added by AJS */
        {"aART", "album_artist"},
 };
 
@@ -1842,7 +1789,6 @@ static const char *find_standard_meta(const char *name)   //returns atom name if f
 static void membuffer_write_std_tag(membuffer * buf, const char *name,
                const char *value)
 {
-       /* added by AJS */
        uint32_t flags = 1;
 
        /* special check for compilation flag */
@@ -1860,7 +1806,7 @@ static void membuffer_write_std_tag(membuffer * buf, const char *name,
        membuffer_write_atom_name(buf, "data");
        membuffer_write_int32(buf, flags);      //flags
        membuffer_write_int32(buf, 0);  //reserved
-       membuffer_write_data(buf, value, strlen(value));
+       membuffer_write(buf, value, strlen(value));
 }
 
 static void membuffer_write_custom_tag(membuffer * buf, const char *name,
@@ -1875,18 +1821,18 @@ static void membuffer_write_custom_tag(membuffer * buf, const char *name,
        membuffer_write_int32(buf, 0x1C);       //weirdo itunes atom
        membuffer_write_atom_name(buf, "mean");
        membuffer_write_int32(buf, 0);
-       membuffer_write_data(buf, "com.apple.iTunes", 16);
+       membuffer_write(buf, "com.apple.iTunes", 16);
        membuffer_write_int32(buf, 12 + strlen(name));
        membuffer_write_atom_name(buf, "name");
        membuffer_write_int32(buf, 0);
-       membuffer_write_data(buf, name, strlen(name));
+       membuffer_write(buf, name, strlen(name));
        membuffer_write_int32(buf,
                8 /*data atom header */  +
                8 /*flags + reserved */  + strlen(value));
        membuffer_write_atom_name(buf, "data");
        membuffer_write_int32(buf, 1);  //flags
        membuffer_write_int32(buf, 0);  //reserved
-       membuffer_write_data(buf, value, strlen(value));
+       membuffer_write(buf, value, strlen(value));
 }
 
 static unsigned membuffer_error(const membuffer * buf)
@@ -2023,7 +1969,7 @@ static void membuffer_write_atom(membuffer * buf, const char *name, unsigned siz
 {
        membuffer_write_int32(buf, size + 8);
        membuffer_write_atom_name(buf, name);
-       membuffer_write_data(buf, data, size);
+       membuffer_write(buf, data, size);
 }
 
 static void *membuffer_get_ptr(const membuffer * buf)
@@ -2043,7 +1989,7 @@ static unsigned membuffer_transfer_from_file(membuffer * buf, mp4ff_t * src,
        void *bufptr;
 
        oldsize = membuffer_get_size(buf);
-       if (membuffer_write_data(buf, 0, bytes) != bytes)
+       if (membuffer_write(buf, 0, bytes) != bytes)
                return 0;
 
        bufptr = membuffer_get_ptr(buf);