mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-27 13:10:37 +00:00
fixed output pts computation in case of pcm audio (fixes ffplay status display)
Originally committed as revision 1231 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
4364a3e016
commit
7feb950a80
@ -751,7 +751,7 @@ int av_write_frame(AVFormatContext *s, int stream_index, const uint8_t *buf,
|
||||
{
|
||||
AVStream *st;
|
||||
INT64 pts_mask;
|
||||
int ret;
|
||||
int ret, frame_size;
|
||||
|
||||
st = s->streams[stream_index];
|
||||
pts_mask = (1LL << s->pts_wrap_bits) - 1;
|
||||
@ -763,8 +763,24 @@ int av_write_frame(AVFormatContext *s, int stream_index, const uint8_t *buf,
|
||||
/* update pts */
|
||||
switch (st->codec.codec_type) {
|
||||
case CODEC_TYPE_AUDIO:
|
||||
if (st->codec.frame_size <= 1) {
|
||||
frame_size = size / st->codec.channels;
|
||||
/* specific hack for pcm codecs because no frame size is provided */
|
||||
switch(st->codec.codec->id) {
|
||||
case CODEC_ID_PCM_S16LE:
|
||||
case CODEC_ID_PCM_S16BE:
|
||||
case CODEC_ID_PCM_U16LE:
|
||||
case CODEC_ID_PCM_U16BE:
|
||||
frame_size >>= 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
frame_size = st->codec.frame_size;
|
||||
}
|
||||
av_frac_add(&st->pts,
|
||||
(INT64)s->pts_den * st->codec.frame_size);
|
||||
(INT64)s->pts_den * frame_size);
|
||||
break;
|
||||
case CODEC_TYPE_VIDEO:
|
||||
av_frac_add(&st->pts,
|
||||
|
Loading…
Reference in New Issue
Block a user