diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2015-08-17 16:30:16 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2015-08-23 04:16:02 +0200 |
commit | b4d68e7cdb3be029c669b15ac0da158454fb910d (patch) | |
tree | 76e2e056b875efe6c24170b7df76f4de6173acee /libavformat/mux.c | |
parent | 6638e4a950a0208534b1081660fa4549aef61d74 (diff) | |
download | ffmpeg-b4d68e7cdb3be029c669b15ac0da158454fb910d.tar.gz |
avformat: Remove use of AVFrac and AVStream->pts
Move field to internal part of AVStream and struct to internal.h
Reviewed-by: Andreas Cadhalpun <andreas.cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavformat/mux.c')
-rw-r--r-- | libavformat/mux.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/libavformat/mux.c b/libavformat/mux.c index 7664872a4a..81c467648e 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -61,7 +61,7 @@ * @param num must be >= 0 * @param den must be >= 1 */ -static void frac_init(AVFrac *f, int64_t val, int64_t num, int64_t den) +static void frac_init(FFFrac *f, int64_t val, int64_t num, int64_t den) { num += (den >> 1); if (num >= den) { @@ -79,7 +79,7 @@ static void frac_init(AVFrac *f, int64_t val, int64_t num, int64_t den) * @param f fractional number * @param incr increment, can be positive or negative */ -static void frac_add(AVFrac *f, int64_t incr) +static void frac_add(FFFrac *f, int64_t incr) { int64_t num, den; @@ -414,11 +414,17 @@ static int init_pts(AVFormatContext *s) default: break; } + + if (!st->priv_pts) + st->priv_pts = av_mallocz(sizeof(*st->priv_pts)); + if (!st->priv_pts) + return AVERROR(ENOMEM); + if (den != AV_NOPTS_VALUE) { if (den <= 0) return AVERROR_INVALIDDATA; - frac_init(&st->pts, 0, 0, den); + frac_init(st->priv_pts, 0, 0, den); } } @@ -502,7 +508,7 @@ static int compute_pkt_fields2(AVFormatContext *s, AVStream *st, AVPacket *pkt) } pkt->dts = // pkt->pts= st->cur_dts; - pkt->pts = st->pts.val; + pkt->pts = st->priv_pts->val; } //calculate dts from pts @@ -538,7 +544,7 @@ static int compute_pkt_fields2(AVFormatContext *s, AVStream *st, AVPacket *pkt) av_ts2str(pkt->pts), av_ts2str(pkt->dts)); st->cur_dts = pkt->dts; - st->pts.val = pkt->dts; + st->priv_pts->val = pkt->dts; /* update pts */ switch (st->codec->codec_type) { @@ -550,12 +556,12 @@ static int compute_pkt_fields2(AVFormatContext *s, AVStream *st, AVPacket *pkt) /* HACK/FIXME, we skip the initial 0 size packets as they are most * likely equal to the encoder delay, but it would be better if we * had the real timestamps from the encoder */ - if (frame_size >= 0 && (pkt->size || st->pts.num != st->pts.den >> 1 || st->pts.val)) { - frac_add(&st->pts, (int64_t)st->time_base.den * frame_size); + if (frame_size >= 0 && (pkt->size || st->priv_pts->num != st->priv_pts->den >> 1 || st->priv_pts->val)) { + frac_add(st->priv_pts, (int64_t)st->time_base.den * frame_size); } break; case AVMEDIA_TYPE_VIDEO: - frac_add(&st->pts, (int64_t)st->time_base.den * st->codec->time_base.num); + frac_add(st->priv_pts, (int64_t)st->time_base.den * st->codec->time_base.num); break; } return 0; |