| @@ -587,7 +587,7 @@ static int init_input(AVFormatContext *s, const char *filename) | |||
| return 0; | |||
| if ((ret = avio_open(&s->pb, filename, AVIO_FLAG_READ)) < 0) | |||
| return ret; | |||
| return ret; | |||
| if (s->iformat) | |||
| return 0; | |||
| return av_probe_input_buffer(s->pb, &s->iformat, filename, s, 0, 0); | |||
| @@ -1146,7 +1146,7 @@ static int read_frame_internal(AVFormatContext *s, AVPacket *pkt) | |||
| st->cur_pkt.data = NULL; | |||
| assert(st->cur_len == 0); | |||
| }else{ | |||
| pkt->destruct = NULL; | |||
| pkt->destruct = NULL; | |||
| } | |||
| compute_pkt_fields(s, st, st->parser, pkt); | |||
| @@ -1760,7 +1760,7 @@ int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int f | |||
| return -1; | |||
| st= s->streams[stream_index]; | |||
| /* timestamp for default must be expressed in AV_TIME_BASE units */ | |||
| /* timestamp for default must be expressed in AV_TIME_BASE units */ | |||
| timestamp = av_rescale(timestamp, st->time_base.den, AV_TIME_BASE * (int64_t)st->time_base.num); | |||
| } | |||
| @@ -1959,39 +1959,40 @@ static void estimate_timings_from_pts(AVFormatContext *ic, int64_t old_offset) | |||
| filesize = ic->file_size; | |||
| end_time = AV_NOPTS_VALUE; | |||
| do{ | |||
| offset = filesize - (DURATION_MAX_READ_SIZE<<retry); | |||
| if (offset < 0) | |||
| offset = 0; | |||
| offset = filesize - (DURATION_MAX_READ_SIZE<<retry); | |||
| if (offset < 0) | |||
| offset = 0; | |||
| avio_seek(ic->pb, offset, SEEK_SET); | |||
| read_size = 0; | |||
| for(;;) { | |||
| if (read_size >= DURATION_MAX_READ_SIZE<<(FFMAX(retry-1,0))) | |||
| break; | |||
| avio_seek(ic->pb, offset, SEEK_SET); | |||
| read_size = 0; | |||
| for(;;) { | |||
| if (read_size >= DURATION_MAX_READ_SIZE<<(FFMAX(retry-1,0))) | |||
| break; | |||
| do{ | |||
| ret = av_read_packet(ic, pkt); | |||
| }while(ret == AVERROR(EAGAIN)); | |||
| if (ret != 0) | |||
| break; | |||
| read_size += pkt->size; | |||
| st = ic->streams[pkt->stream_index]; | |||
| if (pkt->pts != AV_NOPTS_VALUE && | |||
| (st->start_time != AV_NOPTS_VALUE || | |||
| st->first_dts != AV_NOPTS_VALUE)) { | |||
| duration = end_time = pkt->pts; | |||
| if (st->start_time != AV_NOPTS_VALUE) duration -= st->start_time; | |||
| else duration -= st->first_dts; | |||
| if (duration < 0) | |||
| duration += 1LL<<st->pts_wrap_bits; | |||
| if (duration > 0) { | |||
| if (st->duration == AV_NOPTS_VALUE || | |||
| st->duration < duration) | |||
| st->duration = duration; | |||
| do { | |||
| ret = av_read_packet(ic, pkt); | |||
| } while(ret == AVERROR(EAGAIN)); | |||
| if (ret != 0) | |||
| break; | |||
| read_size += pkt->size; | |||
| st = ic->streams[pkt->stream_index]; | |||
| if (pkt->pts != AV_NOPTS_VALUE && | |||
| (st->start_time != AV_NOPTS_VALUE || | |||
| st->first_dts != AV_NOPTS_VALUE)) { | |||
| duration = end_time = pkt->pts; | |||
| if (st->start_time != AV_NOPTS_VALUE) | |||
| duration -= st->start_time; | |||
| else | |||
| duration -= st->first_dts; | |||
| if (duration < 0) | |||
| duration += 1LL<<st->pts_wrap_bits; | |||
| if (duration > 0) { | |||
| if (st->duration == AV_NOPTS_VALUE || st->duration < duration) | |||
| st->duration = duration; | |||
| } | |||
| } | |||
| av_free_packet(pkt); | |||
| } | |||
| av_free_packet(pkt); | |||
| } | |||
| }while( end_time==AV_NOPTS_VALUE | |||
| && filesize > (DURATION_MAX_READ_SIZE<<retry) | |||
| && ++retry <= DURATION_MAX_RETRY); | |||
| @@ -3914,7 +3915,7 @@ int avformat_query_codec(AVOutputFormat *ofmt, enum CodecID codec_id, int std_co | |||
| return !!av_codec_get_tag(ofmt->codec_tag, codec_id); | |||
| else if (codec_id == ofmt->video_codec || codec_id == ofmt->audio_codec || | |||
| codec_id == ofmt->subtitle_codec) | |||
| return 1; | |||
| return 1; | |||
| } | |||
| return AVERROR_PATCHWELCOME; | |||
| } | |||