aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-12-24 12:20:24 +0100
committerMax Kellermann <max@duempel.org>2013-12-24 12:20:24 +0100
commit64e898f6dbcfe5e584cb308dd3eca411bfd7667d (patch)
tree6b0e7ea929ad019a8591cc54a3b88febc74e8983 /src/decoder
parent1732166328f3e2db3d959b60bbe46f85d36d8e77 (diff)
parentfb34519b96629291d0f26990931ec89c47a4ade2 (diff)
downloadmpd-64e898f6dbcfe5e584cb308dd3eca411bfd7667d.tar.gz
mpd-64e898f6dbcfe5e584cb308dd3eca411bfd7667d.tar.xz
mpd-64e898f6dbcfe5e584cb308dd3eca411bfd7667d.zip
Merge tag 'release-0.18.6'
Diffstat (limited to 'src/decoder')
-rw-r--r--src/decoder/FfmpegDecoderPlugin.cxx10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/decoder/FfmpegDecoderPlugin.cxx b/src/decoder/FfmpegDecoderPlugin.cxx
index a14b04510..01b551bb1 100644
--- a/src/decoder/FfmpegDecoderPlugin.cxx
+++ b/src/decoder/FfmpegDecoderPlugin.cxx
@@ -250,13 +250,14 @@ static DecoderCommand
ffmpeg_send_packet(Decoder &decoder, InputStream &is,
const AVPacket *packet,
AVCodecContext *codec_context,
- const AVRational *time_base,
+ const AVStream *stream,
AVFrame *frame,
uint8_t **buffer, int *buffer_size)
{
if (packet->pts >= 0 && packet->pts != (int64_t)AV_NOPTS_VALUE)
decoder_timestamp(decoder,
- time_from_ffmpeg(packet->pts, *time_base));
+ time_from_ffmpeg(packet->pts - stream->start_time,
+ stream->time_base));
AVPacket packet2 = *packet;
@@ -469,7 +470,7 @@ ffmpeg_decode(Decoder &decoder, InputStream &input)
if (packet.stream_index == audio_stream)
cmd = ffmpeg_send_packet(decoder, input,
&packet, codec_context,
- &av_stream->time_base,
+ av_stream,
frame,
&interleaved_buffer, &interleaved_buffer_size);
else
@@ -480,7 +481,8 @@ ffmpeg_decode(Decoder &decoder, InputStream &input)
if (cmd == DecoderCommand::SEEK) {
int64_t where =
time_to_ffmpeg(decoder_seek_where(decoder),
- av_stream->time_base);
+ av_stream->time_base) +
+ av_stream->start_time;
if (av_seek_frame(format_context, audio_stream, where,
AV_TIME_BASE) < 0)