index_list = &matroska->index;
index = index_list->elem;
- if (index_list->nb_elem &&
- index[0].time > 1E14 / matroska->time_scale) {
- av_log(matroska->ctx, AV_LOG_WARNING, "Working around broken index.\n");
- index_scale = matroska->time_scale;
+ if (index_list->nb_elem < 2)
+ return;
+ if (index[1].time > 1E14 / matroska->time_scale) {
+ av_log(matroska->ctx, AV_LOG_WARNING, "Dropping apparently-broken index.\n");
+ return;
}
for (i = 0; i < index_list->nb_elem; i++) {
EbmlList *pos_list = &index[i].pos;
if (matroska->packets) {
int n;
for (n = 0; n < matroska->num_packets; n++) {
- av_free_packet(matroska->packets[n]);
+ av_packet_unref(matroska->packets[n]);
av_freep(&matroska->packets[n]);
}
av_freep(&matroska->packets);
AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,
additional_size + 8);
if (!side_data) {
- av_free_packet(pkt);
+ av_packet_unref(pkt);
av_free(pkt);
return AVERROR(ENOMEM);
}
AV_PKT_DATA_SKIP_SAMPLES,
10);
if (!side_data) {
- av_free_packet(pkt);
+ av_packet_unref(pkt);
av_free(pkt);
return AVERROR(ENOMEM);
}