summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>2007-04-21 18:09:14 +0000
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>2007-04-21 18:09:14 +0000
commit0b07ac425aa8bf0df553c27d286ad97fdda4702c (patch)
tree09599f5319b86def654c454a831eb3849b23dbb2 /libavformat
parentd614f57978c3b8d68fd719ba86b4907fca5849d4 (diff)
clean and simplify esds reading function
Originally committed as revision 8772 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/mov.c70
1 files changed, 12 insertions, 58 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 148664457e..24d5ed529a 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -88,54 +88,6 @@ typedef struct MOV_mdat_atom_s {
int64_t size;
} MOV_mdat_atom_t;
-typedef struct {
- uint8_t version;
- uint32_t flags; // 24bit
-
- /* 0x03 ESDescrTag */
- uint16_t es_id;
-#define MP4ODescrTag 0x01
-#define MP4IODescrTag 0x02
-#define MP4ESDescrTag 0x03
-#define MP4DecConfigDescrTag 0x04
-#define MP4DecSpecificDescrTag 0x05
-#define MP4SLConfigDescrTag 0x06
-#define MP4ContentIdDescrTag 0x07
-#define MP4SupplContentIdDescrTag 0x08
-#define MP4IPIPtrDescrTag 0x09
-#define MP4IPMPPtrDescrTag 0x0A
-#define MP4IPMPDescrTag 0x0B
-#define MP4RegistrationDescrTag 0x0D
-#define MP4ESIDIncDescrTag 0x0E
-#define MP4ESIDRefDescrTag 0x0F
-#define MP4FileIODescrTag 0x10
-#define MP4FileODescrTag 0x11
-#define MP4ExtProfileLevelDescrTag 0x13
-#define MP4ExtDescrTagsStart 0x80
-#define MP4ExtDescrTagsEnd 0xFE
- uint8_t stream_priority;
-
- /* 0x04 DecConfigDescrTag */
- uint8_t object_type_id;
- uint8_t stream_type;
- /* XXX: really streamType is
- * only 6bit, followed by:
- * 1bit upStream
- * 1bit reserved
- */
- uint32_t buffer_size_db; // 24
- uint32_t max_bitrate;
- uint32_t avg_bitrate;
-
- /* 0x05 DecSpecificDescrTag */
- uint8_t decoder_cfg_len;
- uint8_t *decoder_cfg;
-
- /* 0x06 SLConfigDescrTag */
- uint8_t sl_config_len;
- uint8_t *sl_config;
-} MOV_esds_t;
-
struct MOVParseTableEntry;
typedef struct MOVStreamContext {
@@ -160,7 +112,6 @@ typedef struct MOVStreamContext {
int time_scale;
int time_rate;
long current_sample;
- MOV_esds_t esds;
unsigned int bytes_per_frame;
unsigned int samples_per_frame;
int dv_audio_container;
@@ -325,10 +276,13 @@ static int mov_mp4_read_descr(MOVContext *c, ByteIOContext *pb, int *tag)
return len;
}
+#define MP4ESDescrTag 0x03
+#define MP4DecConfigDescrTag 0x04
+#define MP4DecSpecificDescrTag 0x05
+
static int mov_read_esds(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
{
AVStream *st = c->fc->streams[c->fc->nb_streams-1];
- MOVStreamContext *sc = st->priv_data;
int tag, len;
/* Well, broken but suffisant for some MP4 streams */
@@ -342,14 +296,14 @@ static int mov_read_esds(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
len = mov_mp4_read_descr(c, pb, &tag);
if (tag == MP4DecConfigDescrTag) {
- sc->esds.object_type_id = get_byte(pb);
- sc->esds.stream_type = get_byte(pb);
- sc->esds.buffer_size_db = get_be24(pb);
- sc->esds.max_bitrate = get_be32(pb);
- sc->esds.avg_bitrate = get_be32(pb);
-
- st->codec->codec_id= codec_get_id(ff_mp4_obj_type, sc->esds.object_type_id);
- dprintf(c->fc, "esds object type id %d\n", sc->esds.object_type_id);
+ int object_type_id = get_byte(pb);
+ get_byte(pb); /* stream type */
+ get_be24(pb); /* buffer size db */
+ get_be32(pb); /* max bitrate */
+ get_be32(pb); /* avg bitrate */
+
+ st->codec->codec_id= codec_get_id(ff_mp4_obj_type, object_type_id);
+ dprintf(c->fc, "esds object type id %d\n", object_type_id);
len = mov_mp4_read_descr(c, pb, &tag);
if (tag == MP4DecSpecificDescrTag) {
dprintf(c->fc, "Specific MPEG4 header len=%d\n", len);