You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-07-16 22:42:38 +02:00
lavf: move AVStream.{nb_decoded_frames,mux_ts_offset} to AVStreamInternal
Those are private fields, no reason to have them exposed in a public header.
This commit is contained in:
@ -1151,17 +1151,6 @@ typedef struct AVStream {
|
|||||||
*/
|
*/
|
||||||
int64_t last_discard_sample;
|
int64_t last_discard_sample;
|
||||||
|
|
||||||
/**
|
|
||||||
* Number of internally decoded frames, used internally in libavformat, do not access
|
|
||||||
* its lifetime differs from info which is why it is not in that structure.
|
|
||||||
*/
|
|
||||||
int nb_decoded_frames;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Timestamp offset added to timestamps before muxing
|
|
||||||
*/
|
|
||||||
int64_t mux_ts_offset;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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.
|
||||||
|
@ -225,6 +225,17 @@ struct AVStreamInternal {
|
|||||||
|
|
||||||
} *info;
|
} *info;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of internally decoded frames, used internally in libavformat, do not access
|
||||||
|
* its lifetime differs from info which is why it is not in that structure.
|
||||||
|
*/
|
||||||
|
int nb_decoded_frames;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Timestamp offset added to timestamps before muxing
|
||||||
|
*/
|
||||||
|
int64_t mux_ts_offset;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal data to check for wrapping of the time stamp
|
* Internal data to check for wrapping of the time stamp
|
||||||
*/
|
*/
|
||||||
|
@ -678,7 +678,7 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
|
|
||||||
if (s->avoid_negative_ts > 0) {
|
if (s->avoid_negative_ts > 0) {
|
||||||
AVStream *st = s->streams[pkt->stream_index];
|
AVStream *st = s->streams[pkt->stream_index];
|
||||||
int64_t offset = st->mux_ts_offset;
|
int64_t offset = st->internal->mux_ts_offset;
|
||||||
int64_t ts = s->internal->avoid_negative_ts_use_pts ? pkt->pts : pkt->dts;
|
int64_t ts = s->internal->avoid_negative_ts_use_pts ? pkt->pts : pkt->dts;
|
||||||
|
|
||||||
if (s->internal->offset == AV_NOPTS_VALUE && ts != AV_NOPTS_VALUE &&
|
if (s->internal->offset == AV_NOPTS_VALUE && ts != AV_NOPTS_VALUE &&
|
||||||
@ -688,7 +688,7 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (s->internal->offset != AV_NOPTS_VALUE && !offset) {
|
if (s->internal->offset != AV_NOPTS_VALUE && !offset) {
|
||||||
offset = st->mux_ts_offset =
|
offset = st->internal->mux_ts_offset =
|
||||||
av_rescale_q_rnd(s->internal->offset,
|
av_rescale_q_rnd(s->internal->offset,
|
||||||
s->internal->offset_timebase,
|
s->internal->offset_timebase,
|
||||||
st->time_base,
|
st->time_base,
|
||||||
@ -1038,7 +1038,7 @@ int ff_interleaved_peek(AVFormatContext *s, int stream,
|
|||||||
*pkt = pktl->pkt;
|
*pkt = pktl->pkt;
|
||||||
if (add_offset) {
|
if (add_offset) {
|
||||||
AVStream *st = s->streams[pkt->stream_index];
|
AVStream *st = s->streams[pkt->stream_index];
|
||||||
int64_t offset = st->mux_ts_offset;
|
int64_t offset = st->internal->mux_ts_offset;
|
||||||
|
|
||||||
if (s->output_ts_offset)
|
if (s->output_ts_offset)
|
||||||
offset += av_rescale_q(s->output_ts_offset, AV_TIME_BASE_Q, st->time_base);
|
offset += av_rescale_q(s->output_ts_offset, AV_TIME_BASE_Q, st->time_base);
|
||||||
|
@ -1000,11 +1000,11 @@ static int has_decode_delay_been_guessed(AVStream *st)
|
|||||||
return 1;
|
return 1;
|
||||||
#endif
|
#endif
|
||||||
if (st->internal->avctx->has_b_frames<3)
|
if (st->internal->avctx->has_b_frames<3)
|
||||||
return st->nb_decoded_frames >= 7;
|
return st->internal->nb_decoded_frames >= 7;
|
||||||
else if (st->internal->avctx->has_b_frames<4)
|
else if (st->internal->avctx->has_b_frames<4)
|
||||||
return st->nb_decoded_frames >= 18;
|
return st->internal->nb_decoded_frames >= 18;
|
||||||
else
|
else
|
||||||
return st->nb_decoded_frames >= 20;
|
return st->internal->nb_decoded_frames >= 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
static AVPacketList *get_next_pkt(AVFormatContext *s, AVStream *st, AVPacketList *pktl)
|
static AVPacketList *get_next_pkt(AVFormatContext *s, AVStream *st, AVPacketList *pktl)
|
||||||
@ -2960,7 +2960,7 @@ static int has_codec_parameters(AVStream *st, const char **errmsg_ptr)
|
|||||||
FAIL("unspecified sample rate");
|
FAIL("unspecified sample rate");
|
||||||
if (!avctx->channels)
|
if (!avctx->channels)
|
||||||
FAIL("unspecified number of channels");
|
FAIL("unspecified number of channels");
|
||||||
if (st->internal->info->found_decoder >= 0 && !st->nb_decoded_frames && avctx->codec_id == AV_CODEC_ID_DTS)
|
if (st->internal->info->found_decoder >= 0 && !st->internal->nb_decoded_frames && avctx->codec_id == AV_CODEC_ID_DTS)
|
||||||
FAIL("no decodable DTS frames");
|
FAIL("no decodable DTS frames");
|
||||||
break;
|
break;
|
||||||
case AVMEDIA_TYPE_VIDEO:
|
case AVMEDIA_TYPE_VIDEO:
|
||||||
@ -3067,7 +3067,7 @@ static int try_decode_frame(AVFormatContext *s, AVStream *st,
|
|||||||
}
|
}
|
||||||
if (ret >= 0) {
|
if (ret >= 0) {
|
||||||
if (got_picture)
|
if (got_picture)
|
||||||
st->nb_decoded_frames++;
|
st->internal->nb_decoded_frames++;
|
||||||
ret = got_picture;
|
ret = got_picture;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user