if ((res = ebml_read_uint (matroska, &id,
&num)) < 0)
break;
- track->default_duration = num/matroska->time_scale;
+ track->default_duration = num;
break;
}
if ((res = ebml_read_float(matroska, &id,
&num)) < 0)
break;
- track->default_duration = 1000000000/(matroska->time_scale*num);
+ if (!track->default_duration)
+ track->default_duration = 1000000000/num;
break;
}
uint64_t num;
if ((res = ebml_read_uint(matroska, &id, &num)) < 0)
break;
- track->default_duration = num / matroska->time_scale;
+ track->default_duration = num;
break;
}
} else {
extradata_size = 2;
}
- track->default_duration = 1024*1000 / audiotrack->internal_samplerate;
}
else if (codec_id == CODEC_ID_TTA) {
if (track->default_duration)
av_reduce(&st->codec->time_base.num, &st->codec->time_base.den,
- track->default_duration, 1000, 30000);
+ track->default_duration, 1000000000, 30000);
if(extradata){
st->codec->extradata = extradata;
return res;
}
if (duration == AV_NOPTS_VALUE)
- duration = matroska->tracks[track]->default_duration;
+ duration = matroska->tracks[track]->default_duration / matroska->time_scale;
/* block_time (relative to cluster time) */
block_time = AV_RB16(data);
flags = *data++;
size -= 3;
if (is_keyframe == -1)
- is_keyframe = flags & 1 ? PKT_FLAG_KEY : 0;
+ is_keyframe = flags & 0x80 ? PKT_FLAG_KEY : 0;
if (matroska->skip_to_keyframe) {
if (!is_keyframe || st != matroska->skip_to_stream)