summaryrefslogtreecommitdiff
path: root/libavformat/mux.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2015-08-17 16:30:16 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2015-08-23 04:16:02 +0200
commitb4d68e7cdb3be029c669b15ac0da158454fb910d (patch)
tree76e2e056b875efe6c24170b7df76f4de6173acee /libavformat/mux.c
parent6638e4a950a0208534b1081660fa4549aef61d74 (diff)
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.c22
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;