track->vosData = vosDataBackup; track->vosLen = vosLenBackup;
static int mov_write_esds_tag(ByteIOContext *pb, MOVTrack* track) // Basic{    int decoderSpecificInfoLen = track->vosLen ? descrLength(track->vosLen):0;    int pos = url_ftell(pb);    put_be32(pb, 0);               // size    put_tag(pb, "esds");    put_be32(pb, 0);               // Version    // ES descriptor    putDescr(pb, 0x03, 3 + descrLength(13 + decoderSpecificInfoLen) +             descrLength(1));    put_be16(pb, 0x0001);          // ID (= 1)    put_byte(pb, 0x00);            // flags (= no flags)    // DecoderConfig descriptor    putDescr(pb, 0x04, 13 + decoderSpecificInfoLen);    if(track->enc->codec_id == CODEC_ID_AAC)        put_byte(pb, 0x40);        // Object type indication    else if(track->enc->codec_id == CODEC_ID_MPEG4)        put_byte(pb, 0x20);        // Object type indication (Visual 14496-2)    if(track->enc->codec_type == CODEC_TYPE_AUDIO)        put_byte(pb, 0x15);            // flags (= Audiostream)    else        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    if (track->vosLen)    {        // DecoderSpecific info descriptor        putDescr(pb, 0x05, track->vosLen);        put_buffer(pb, track->vosData, track->vosLen);    }    // SL descriptor    putDescr(pb, 0x06, 1);    put_byte(pb, 0x02);    return updateSize (pb, pos);}