diff --git a/libavformat/nut.c b/libavformat/nut.c index 4c41db35dc..91509afbd8 100644 --- a/libavformat/nut.c +++ b/libavformat/nut.c @@ -35,3 +35,10 @@ void ff_nut_reset_ts(NUTContext *nut, AVRational time_base, int64_t val){ AV_ROUND_DOWN); } } + +int64_t ff_lsb2full(StreamContext *stream, int64_t lsb){ + int64_t mask = (1<msb_pts_shift)-1; + int64_t delta= stream->last_pts - mask/2; + return ((lsb - delta)&mask) + delta; +} + diff --git a/libavformat/nut.h b/libavformat/nut.h index a96d111d50..3c518acd4e 100644 --- a/libavformat/nut.h +++ b/libavformat/nut.h @@ -94,5 +94,6 @@ typedef struct { unsigned long av_crc04C11DB7_update(unsigned long checksum, const uint8_t *buf, unsigned int len); void ff_nut_reset_ts(NUTContext *nut, AVRational time_base, int64_t val); +int64_t ff_lsb2full(StreamContext *stream, int64_t lsb); #endif /* AVFORMAT_NUT_H */ diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c index 322ed2518e..3143f384d0 100644 --- a/libavformat/nutdec.c +++ b/libavformat/nutdec.c @@ -155,12 +155,6 @@ static int64_t find_startcode(ByteIOContext *bc, uint64_t code, int64_t pos){ } } -static int64_t lsb2full(StreamContext *stream, int64_t lsb){ - int64_t mask = (1<msb_pts_shift)-1; - int64_t delta= stream->last_pts - mask/2; - return ((lsb - delta)&mask) + delta; -} - static int nut_probe(AVProbeData *p){ int i; uint64_t code= 0; @@ -655,7 +649,7 @@ static int decode_frame_header(NUTContext *nut, int64_t *pts, int *stream_id, in int coded_pts= get_v(bc); //FIXME check last_pts validity? if(coded_pts < (1<msb_pts_shift)){ - *pts=lsb2full(stc, coded_pts); + *pts=ff_lsb2full(stc, coded_pts); }else *pts=coded_pts - (1<msb_pts_shift); }else