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: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
2c2f25eb89
commit
cd1ff3e45d
@ -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 {
|
|||||||
* 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)
|
|||||||
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 *
|
|||||||
}
|
}
|
||||||
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 *
|
|||||||
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 *
|
|||||||
/* 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
|
|||||||
|
|
||||||
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)
|
|||||||
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
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user