put_byte(pb, 0x04); put_be32(pb, esdsLength(track->vosLen+18)); put_byte(pb, 0x20); put_byte(pb, 0x11);
putDescr(pb, 0x04, 13 + decoderSpecificInfoLen);  if(track->enc->codec_id == CODEC_ID_AAC) put_byte(pb, 0x40); else if(track->enc->codec_id == CODEC_ID_MPEG4) put_byte(pb, 0x20);  if(track->enc->codec_type == CODEC_TYPE_AUDIO) put_byte(pb, 0x15); else put_byte(pb, 0x11);
static int mov_write_esds_tag(ByteIOContext *pb, MOVTrack* track) // Basic{    put_be32(pb, track->vosLen+18+14+17);    put_tag(pb, "esds");    put_be32(pb, 0);              // Version    put_byte(pb, 0x03);            // tag = ES_DescriptorTag    put_be32(pb, esdsLength(track->vosLen+18+14));  // Length    put_be16(pb, 0x0001);         // ID (= 1)    put_byte(pb, 0x00);            // flags (= no flags)// Decoderconfigdescriptor = 4    put_byte(pb, 0x04);            // tag = DecoderConfigDescriptor    put_be32(pb, esdsLength(track->vosLen+18));  // Length    put_byte(pb, 0x20);            // Object type indication (Visual 14496-2)    put_byte(pb, 0x11);            // flags (= Visualstream)    put_byte(pb, 0x0);             // Buffersize DB (24 bits)    put_be16(pb, 0x0dd2);          // Buffersize DB    // TODO: find real values for these    put_be32(pb, 0x0002e918);     // maxbitrate    put_be32(pb, 0x00017e6b);     // avg bitrate// Decoderspecific info Tag = 5    put_byte(pb, 0x05);           // tag = Decoderspecific info    put_be32(pb, esdsLength(track->vosLen));   // length    put_buffer(pb, track->vosData, track->vosLen);        put_byte(pb, 0x06);    put_be32(pb, esdsLength(1));  // length    put_byte(pb, 0x02);    return track->vosLen+18+14+17;}