mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-05-31 00:47:44 +00:00
Merge remote-tracking branch 'qatar/master'
* qatar/master: (36 commits) adpcmenc: Use correct frame_size for Yamaha ADPCM. avcodec: add ff_samples_to_time_base() convenience function to internal.h adx parser: set duration mlp parser: set duration instead of frame_size gsm parser: set duration mpegaudio parser: set duration instead of frame_size (e)ac3 parser: set duration instead of frame_size flac parser: set duration instead of frame_size avcodec: add duration field to AVCodecParserContext avutil: add av_rescale_q_rnd() to allow different rounding pnmdec: remove useless .pix_fmts libmp3lame: support float and s32 sample formats libmp3lame: renaming, rearrangement, alignment, and comments libmp3lame: use the LAME default bit rate libmp3lame: use avpriv_mpegaudio_decode_header() for output frame parsing libmp3lame: cosmetics: remove some pointless comments libmp3lame: convert some debugging code to av_dlog() libmp3lame: remove outdated comment. libmp3lame: do not set coded_frame->key_frame. libmp3lame: improve error handling in MP3lame_encode_init() ... Conflicts: doc/APIchanges libavcodec/libmp3lame.c libavcodec/pcxenc.c libavcodec/pnmdec.c libavcodec/pnmenc.c libavcodec/sgienc.c libavcodec/utils.c libavformat/hls.c libavutil/avutil.h libswscale/x86/swscale_mmx.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
eadd4264ee
34 changed files with 488 additions and 385 deletions
|
@ -942,11 +942,10 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
|
|||
compute_frame_duration(&num, &den, st, pc, pkt);
|
||||
if (den && num) {
|
||||
pkt->duration = av_rescale_rnd(1, num * (int64_t)st->time_base.den, den * (int64_t)st->time_base.num, AV_ROUND_DOWN);
|
||||
|
||||
if(pkt->duration != 0 && s->packet_buffer)
|
||||
update_initial_durations(s, st, pkt);
|
||||
}
|
||||
}
|
||||
if(pkt->duration != 0 && s->packet_buffer)
|
||||
update_initial_durations(s, st, pkt);
|
||||
|
||||
/* correct timestamps with byte offset if demuxers only have timestamps
|
||||
on packet boundaries */
|
||||
|
@ -1099,6 +1098,20 @@ static int read_frame_internal(AVFormatContext *s, AVPacket *pkt)
|
|||
if (pkt->size) {
|
||||
got_packet:
|
||||
pkt->duration = 0;
|
||||
if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
|
||||
if (st->codec->sample_rate > 0) {
|
||||
pkt->duration = av_rescale_q_rnd(st->parser->duration,
|
||||
(AVRational){ 1, st->codec->sample_rate },
|
||||
st->time_base,
|
||||
AV_ROUND_DOWN);
|
||||
}
|
||||
} else if (st->codec->time_base.num != 0 &&
|
||||
st->codec->time_base.den != 0) {
|
||||
pkt->duration = av_rescale_q_rnd(st->parser->duration,
|
||||
st->codec->time_base,
|
||||
st->time_base,
|
||||
AV_ROUND_DOWN);
|
||||
}
|
||||
pkt->stream_index = st->index;
|
||||
pkt->pts = st->parser->pts;
|
||||
pkt->dts = st->parser->dts;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue