Commit cd1ff3e4 authored by James Almer's avatar James Almer

avformat: move priv_pts from AVStream to an internal struct

It has no reason to be in a public header, even if defined as private.
Reviewed-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
parent 2c2f25eb
...@@ -1200,8 +1200,6 @@ typedef struct AVStream { ...@@ -1200,8 +1200,6 @@ typedef struct AVStream {
*/ */
AVRational display_aspect_ratio; AVRational display_aspect_ratio;
struct FFFrac *priv_pts;
/** /**
* An opaque field for libavformat internal usage. * An opaque field for libavformat internal usage.
* Must not be accessed in any way by callers. * Must not be accessed in any way by callers.
......
...@@ -196,6 +196,8 @@ struct AVStreamInternal { ...@@ -196,6 +196,8 @@ struct AVStreamInternal {
* Whether the internal avctx needs to be updated from codecpar (after a late change to codecpar) * Whether the internal avctx needs to be updated from codecpar (after a late change to codecpar)
*/ */
int need_context_update; int need_context_update;
FFFrac *priv_pts;
}; };
#ifdef __GNUC__ #ifdef __GNUC__
......
...@@ -432,16 +432,16 @@ static int init_pts(AVFormatContext *s) ...@@ -432,16 +432,16 @@ static int init_pts(AVFormatContext *s)
break; break;
} }
if (!st->priv_pts) if (!st->internal->priv_pts)
st->priv_pts = av_mallocz(sizeof(*st->priv_pts)); st->internal->priv_pts = av_mallocz(sizeof(*st->internal->priv_pts));
if (!st->priv_pts) if (!st->internal->priv_pts)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
if (den != AV_NOPTS_VALUE) { if (den != AV_NOPTS_VALUE) {
if (den <= 0) if (den <= 0)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
frac_init(st->priv_pts, 0, 0, den); frac_init(st->internal->priv_pts, 0, 0, den);
} }
} }
...@@ -601,7 +601,7 @@ static int compute_muxer_pkt_fields(AVFormatContext *s, AVStream *st, AVPacket * ...@@ -601,7 +601,7 @@ static int compute_muxer_pkt_fields(AVFormatContext *s, AVStream *st, AVPacket *
} }
pkt->dts = pkt->dts =
// pkt->pts= st->cur_dts; // pkt->pts= st->cur_dts;
pkt->pts = st->priv_pts->val; pkt->pts = st->internal->priv_pts->val;
} }
//calculate dts from pts //calculate dts from pts
...@@ -638,7 +638,7 @@ static int compute_muxer_pkt_fields(AVFormatContext *s, AVStream *st, AVPacket * ...@@ -638,7 +638,7 @@ static int compute_muxer_pkt_fields(AVFormatContext *s, AVStream *st, AVPacket *
av_ts2str(pkt->pts), av_ts2str(pkt->dts)); av_ts2str(pkt->pts), av_ts2str(pkt->dts));
st->cur_dts = pkt->dts; st->cur_dts = pkt->dts;
st->priv_pts->val = pkt->dts; st->internal->priv_pts->val = pkt->dts;
/* update pts */ /* update pts */
switch (st->codecpar->codec_type) { switch (st->codecpar->codec_type) {
...@@ -650,12 +650,12 @@ static int compute_muxer_pkt_fields(AVFormatContext *s, AVStream *st, AVPacket * ...@@ -650,12 +650,12 @@ static int compute_muxer_pkt_fields(AVFormatContext *s, AVStream *st, AVPacket *
/* HACK/FIXME, we skip the initial 0 size packets as they are most /* 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 * likely equal to the encoder delay, but it would be better if we
* had the real timestamps from the encoder */ * had the real timestamps from the encoder */
if (frame_size >= 0 && (pkt->size || st->priv_pts->num != st->priv_pts->den >> 1 || st->priv_pts->val)) { if (frame_size >= 0 && (pkt->size || st->internal->priv_pts->num != st->internal->priv_pts->den >> 1 || st->internal->priv_pts->val)) {
frac_add(st->priv_pts, (int64_t)st->time_base.den * frame_size); frac_add(st->internal->priv_pts, (int64_t)st->time_base.den * frame_size);
} }
break; break;
case AVMEDIA_TYPE_VIDEO: case AVMEDIA_TYPE_VIDEO:
frac_add(st->priv_pts, (int64_t)st->time_base.den * st->time_base.num); frac_add(st->internal->priv_pts, (int64_t)st->time_base.den * st->time_base.num);
break; break;
} }
return 0; return 0;
......
...@@ -123,8 +123,8 @@ FF_ENABLE_DEPRECATION_WARNINGS ...@@ -123,8 +123,8 @@ FF_ENABLE_DEPRECATION_WARNINGS
int64_t av_stream_get_end_pts(const AVStream *st) int64_t av_stream_get_end_pts(const AVStream *st)
{ {
if (st->priv_pts) { if (st->internal->priv_pts) {
return st->priv_pts->val; return st->internal->priv_pts->val;
} else } else
return AV_NOPTS_VALUE; return AV_NOPTS_VALUE;
} }
...@@ -4263,6 +4263,7 @@ static void free_stream(AVStream **pst) ...@@ -4263,6 +4263,7 @@ static void free_stream(AVStream **pst)
av_bsf_free(&st->internal->bsfcs[i]); av_bsf_free(&st->internal->bsfcs[i]);
av_freep(&st->internal->bsfcs); av_freep(&st->internal->bsfcs);
} }
av_freep(&st->internal->priv_pts);
av_bsf_free(&st->internal->extract_extradata.bsf); av_bsf_free(&st->internal->extract_extradata.bsf);
av_packet_free(&st->internal->extract_extradata.pkt); av_packet_free(&st->internal->extract_extradata.pkt);
} }
...@@ -4282,7 +4283,6 @@ FF_ENABLE_DEPRECATION_WARNINGS ...@@ -4282,7 +4283,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
av_freep(&st->info->duration_error); av_freep(&st->info->duration_error);
av_freep(&st->info); av_freep(&st->info);
av_freep(&st->recommended_encoder_configuration); av_freep(&st->recommended_encoder_configuration);
av_freep(&st->priv_pts);
av_freep(pst); av_freep(pst);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment