Mercurial > libavformat.hg
changeset 2335:5b5e1edd462e libavformat
move syncpoint timestamp resetting code to a common file
author | michael |
---|---|
date | Thu, 09 Aug 2007 16:29:30 +0000 |
parents | 2f7e67256bd1 |
children | 59fa1bf41c5d |
files | Makefile nut.c nut.h nutdec.c |
diffstat | 4 files changed, 37 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile Thu Aug 09 16:15:50 2007 +0000 +++ b/Makefile Thu Aug 09 16:29:30 2007 +0000 @@ -101,7 +101,7 @@ OBJS-$(CONFIG_MXF_DEMUXER) += mxf.o OBJS-$(CONFIG_NSV_DEMUXER) += nsvdec.o OBJS-$(CONFIG_NULL_MUXER) += raw.o -OBJS-$(CONFIG_NUT_DEMUXER) += nutdec.o riff.o +OBJS-$(CONFIG_NUT_DEMUXER) += nutdec.o nut.o riff.o OBJS-$(CONFIG_NUV_DEMUXER) += nuv.o riff.o OBJS-$(CONFIG_OGG_DEMUXER) += ogg2.o \ oggparsevorbis.o \
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nut.c Thu Aug 09 16:29:30 2007 +0000 @@ -0,0 +1,33 @@ +/* + * nut + * Copyright (c) 2004-2007 Michael Niedermayer + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "nut.h" + +void ff_nut_reset_ts(NUTContext *nut, AVRational time_base, int64_t val){ + int i; + for(i=0; i<nut->avf->nb_streams; i++){ + nut->stream[i].last_pts= av_rescale_rnd( + val / nut->time_base_count, + time_base.num * (int64_t)nut->stream[i].time_base->den, + time_base.den * (int64_t)nut->stream[i].time_base->num, + AV_ROUND_DOWN); + } +}
--- a/nut.h Thu Aug 09 16:15:50 2007 +0000 +++ b/nut.h Thu Aug 09 16:29:30 2007 +0000 @@ -98,4 +98,6 @@ return av_crc(av_crc04C11DB7, checksum, buf, len); } +void ff_nut_reset_ts(NUTContext *nut, AVRational time_base, int64_t val); + #endif /* AVFORMAT_NUT_H */
--- a/nutdec.c Thu Aug 09 16:15:50 2007 +0000 +++ b/nutdec.c Thu Aug 09 16:29:30 2007 +0000 @@ -447,7 +447,6 @@ AVFormatContext *s= nut->avf; ByteIOContext *bc = &s->pb; int64_t end, tmp; - int i; AVRational time_base; nut->last_syncpoint_pos= url_ftell(bc)-8; @@ -460,16 +459,7 @@ if(*back_ptr < 0) return -1; - time_base= nut->time_base[tmp % nut->time_base_count]; - for(i=0; i<s->nb_streams; i++){ - nut->stream[i].last_pts= av_rescale_rnd( - tmp / nut->time_base_count, - time_base.num * (int64_t)nut->stream[i].time_base->den, - time_base.den * (int64_t)nut->stream[i].time_base->num, - AV_ROUND_DOWN); - //last_key_frame ? - } - //FIXME put this in a reset func maybe + ff_nut_reset_ts(nut, nut->time_base[tmp % nut->time_base_count], tmp); if(skip_reserved(bc, end) || get_checksum(bc)){ av_log(s, AV_LOG_ERROR, "sync point checksum mismatch\n");