]> git.tuebingen.mpg.de Git - paraslash.git/commitdiff
mp4: Don't parse the esds atom any more.
authorAndre Noll <maan@tuebingen.mpg.de>
Wed, 11 Aug 2021 17:26:00 +0000 (19:26 +0200)
committerAndre Noll <maan@tuebingen.mpg.de>
Mon, 30 May 2022 19:37:35 +0000 (21:37 +0200)
With the decoder specific config no longer in use, we can simplify
mp4.c further by getting rid of some cryptic and underdocumented code
which no longer does anything useful for us.

mp4.c

diff --git a/mp4.c b/mp4.c
index be974b3c4e5c8186152f3e7a86b17ee1eaee52ed..5eef09de489829a3284d0eef36339e74a857e366 100644 (file)
--- a/mp4.c
+++ b/mp4.c
@@ -17,7 +17,6 @@ struct mp4_track {
        int32_t channelCount;
        int32_t sampleSize;
        uint16_t sampleRate;
-       int32_t audioType;
 
        /* stsd */
        int32_t stsd_entry_count;
@@ -47,10 +46,6 @@ struct mp4_track {
        int32_t *ctts_sample_count;
        int32_t *ctts_sample_offset;
 
-       /* esde */
-       uint8_t *decoderConfig;
-       int32_t decoderConfigLen;
-
        uint32_t maxBitrate;
        uint32_t avgBitrate;
 
@@ -591,74 +586,6 @@ static uint16_t read_int16(struct mp4 *f)
        return read_u16_be(data);
 }
 
-static uint32_t read_mp4_descr_length(struct mp4 *f)
-{
-       uint8_t b;
-       uint8_t numBytes = 0;
-       uint32_t length = 0;
-
-       do {
-               b = read_char(f);
-               numBytes++;
-               length = (length << 7) | (b & 0x7F);
-       } while ((b & 0x80) && numBytes < 4);
-
-       return length;
-}
-static int32_t read_esds(struct mp4 *f)
-{
-       uint8_t tag;
-       uint32_t temp;
-       struct mp4_track *t;
-
-       if (f->total_tracks == 0)
-               return f->error++;
-       t = f->track[f->total_tracks - 1];
-       read_char(f);   /* version */
-       read_int24(f);  /* flags */
-       /* get and verify ES_DescrTag */
-       tag = read_char(f);
-       if (tag == 0x03) {
-               /* read length */
-               if (read_mp4_descr_length(f) < 5 + 15) {
-                       return 1;
-               }
-               /* skip 3 bytes */
-               read_int24(f);
-       } else {
-               /* skip 2 bytes */
-               read_int16(f);
-       }
-
-       /* get and verify DecoderConfigDescrTab */
-       if (read_char(f) != 0x04) {
-               return 1;
-       }
-
-       /* read length */
-       temp = read_mp4_descr_length(f);
-       if (temp < 13)
-               return 1;
-
-       t->audioType = read_char(f);
-       read_int32(f);  //0x15000414 ????
-       t->maxBitrate = read_int32(f);
-       t->avgBitrate = read_int32(f);
-
-       /* get and verify DecSpecificInfoTag */
-       if (read_char(f) != 0x05) {
-               return 1;
-       }
-
-       /* read length */
-       t->decoderConfigLen = read_mp4_descr_length(f);
-       free(t->decoderConfig);
-       t->decoderConfig = para_malloc(t->decoderConfigLen);
-       read_data(f, t->decoderConfig, t->decoderConfigLen);
-       /* will skip the remainder of the atom */
-       return 0;
-}
-
 static int32_t read_mp4a(struct mp4 *f)
 {
        int32_t i;
@@ -689,8 +616,6 @@ static int32_t read_mp4a(struct mp4 *f)
        read_int16(f);
 
        atom_read_header(f, &atom_type, &header_size);
-       if (atom_type == ATOM_ESDS)
-               read_esds(f);
        return 0;
 }
 
@@ -1279,7 +1204,6 @@ void mp4_close(struct mp4 *ff)
                        free(ff->track[i]->stsc_samples_per_chunk);
                        free(ff->track[i]->stsc_sample_desc_index);
                        free(ff->track[i]->stco_chunk_offset);
-                       free(ff->track[i]->decoderConfig);
                        free(ff->track[i]->ctts_sample_count);
                        free(ff->track[i]->ctts_sample_offset);
                        free(ff->track[i]);