ffmpeg: check if the time stamp is valid
When ffmpeg cannot estimate the elapsed time, it sets AVPacket.pts=AV_NOPTS_VALUE. Our ffmpeg decoder plugin did not check for that special value.
This commit is contained in:
parent
81b6c0d77b
commit
f3b73b824f
1
NEWS
1
NEWS
|
@ -38,6 +38,7 @@ ver 0.14.2 (2009/??/??)
|
|||
* decoders:
|
||||
- ffmpeg: added support for the tags comment, genre, year
|
||||
- ffmpeg: don't warn of empty packet output
|
||||
- ffmpeg: check if the time stamp is valid
|
||||
- wavpack: pass NULL if the .wvc file fails to open
|
||||
- mikmod: call MikMod_Exit() only in the finish() method
|
||||
* audio outputs:
|
||||
|
|
|
@ -230,10 +230,6 @@ ffmpeg_send_packet(struct decoder *decoder, struct input_stream *is,
|
|||
&audio_size,
|
||||
packet_data, packet_size);
|
||||
|
||||
|
||||
position = av_rescale_q(packet->pts, *time_base,
|
||||
(AVRational){1, 1});
|
||||
|
||||
if (len < 0) {
|
||||
/* if error, we skip the frame */
|
||||
g_message("decoding failed\n");
|
||||
|
@ -246,6 +242,11 @@ ffmpeg_send_packet(struct decoder *decoder, struct input_stream *is,
|
|||
if (audio_size <= 0)
|
||||
continue;
|
||||
|
||||
position = packet->pts != (int64_t)AV_NOPTS_VALUE
|
||||
? av_rescale_q(packet->pts, *time_base,
|
||||
(AVRational){1, 1})
|
||||
: 0;
|
||||
|
||||
cmd = decoder_data(decoder, is,
|
||||
audio_buf, audio_size,
|
||||
position,
|
||||
|
|
Loading…
Reference in New Issue