mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-27 21:20:41 +00:00
ffmpeg: Use the correct (dts) variables for stream copy.
Strongly based on Anton Khirnovs code. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
f070bf0894
commit
e806ceaa7b
8
ffmpeg.c
8
ffmpeg.c
@ -2297,18 +2297,18 @@ static int output_packet(InputStream *ist,
|
||||
/* handle stream copy */
|
||||
if (!ist->decoding_needed) {
|
||||
rate_emu_sleep(ist);
|
||||
ist->pts = ist->next_pts;
|
||||
ist->dts = ist->next_dts;
|
||||
switch (ist->st->codec->codec_type) {
|
||||
case AVMEDIA_TYPE_AUDIO:
|
||||
ist->next_pts += ((int64_t)AV_TIME_BASE * ist->st->codec->frame_size) /
|
||||
ist->next_dts += ((int64_t)AV_TIME_BASE * ist->st->codec->frame_size) /
|
||||
ist->st->codec->sample_rate;
|
||||
break;
|
||||
case AVMEDIA_TYPE_VIDEO:
|
||||
if (pkt->duration) {
|
||||
ist->next_pts += av_rescale_q(pkt->duration, ist->st->time_base, AV_TIME_BASE_Q);
|
||||
ist->next_dts += av_rescale_q(pkt->duration, ist->st->time_base, AV_TIME_BASE_Q);
|
||||
} else if(ist->st->codec->time_base.num != 0) {
|
||||
int ticks= ist->st->parser ? ist->st->parser->repeat_pict + 1 : ist->st->codec->ticks_per_frame;
|
||||
ist->next_pts += ((int64_t)AV_TIME_BASE *
|
||||
ist->next_dts += ((int64_t)AV_TIME_BASE *
|
||||
ist->st->codec->time_base.num * ticks) /
|
||||
ist->st->codec->time_base.den;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user