ast->scale = get_le32(pb);
ast->rate = get_le32(pb);
if(!(ast->scale && ast->rate)){
+ av_log(s, AV_LOG_WARNING, "Scale/Rate is %u/%u which is invalid. (This file has been generated by broken software)\n", ast->scale, ast->rate);
if(frame_period){
ast->rate = 1000000;
ast->scale = frame_period;
//FIXME
codec_type = CODEC_TYPE_DATA; //CODEC_TYPE_SUB ? FIXME
break;
+ case MKTAG('d', 'a', 't', 's'):
+ codec_type = CODEC_TYPE_DATA;
+ break;
default:
av_log(s, AV_LOG_ERROR, "unknown stream type %X\n", tag1);
goto fail;
/* check stream number */
if (stream_index != s->nb_streams - 1) {
fail:
- for(i=0;i<s->nb_streams;i++) {
- av_freep(&s->streams[i]->codec->extradata);
- av_freep(&s->streams[i]);
- }
return -1;
}
avi_load_index(s);
avi->index_loaded = 1;
avi->non_interleaved |= guess_ni_flag(s);
- if(avi->non_interleaved)
+ if(avi->non_interleaved) {
+ av_log(s, AV_LOG_INFO, "Non interleaved AVI\n");
clean_index(s);
+ }
return 0;
}
ts= av_rescale(ts, AV_TIME_BASE * (int64_t)st->time_base.num, st->time_base.den);
// av_log(NULL, AV_LOG_DEBUG, "%"PRId64" %d/%d %"PRId64"\n", ts, st->time_base.num, st->time_base.den, ast->frame_offset);
- if(ts < best_ts){
+ if(ts < best_ts && st->nb_index_entries){
best_ts= ts;
best_st= st;
best_stream_index= i;
}
}
+ if(!best_st)
+ return -1;
+
best_ast = best_st->priv_data;
best_ts= av_rescale(best_ts, best_st->time_base.den, AV_TIME_BASE * (int64_t)best_st->time_base.num); //FIXME a little ugly
if(best_ast->remaining)
if (ENABLE_DV_DEMUXER && avi->dv_demux) {
/* One and only one real stream for DV in AVI, and it has video */
- /* offsets. Calling with other stream indices should have failed */
+ /* offsets. Calling with other stream indexes should have failed */
/* the av_index_search_timestamp call above. */
assert(stream_index == 0);
for(i=0;i<s->nb_streams;i++) {
AVStream *st = s->streams[i];
- AVIStream *ast = st->priv_data;
- av_free(ast);
av_free(st->codec->palctrl);
}
AVInputFormat avi_demuxer = {
"avi",
- "avi format",
+ NULL_IF_CONFIG_SMALL("AVI format"),
sizeof(AVIContext),
avi_probe,
avi_read_header,