aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2016-10-30 10:52:30 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2016-10-30 10:52:30 +0000
commita97fb9120aa7c177cc7018c64cbc4153a5234ae8 (patch)
treec645e5f712dd33235066f0a95e562694caf2c3c1 /src/plugins
parent640afe96b1b2f53d579b93c46d5d9e760502daa9 (diff)
downloadqmmp-a97fb9120aa7c177cc7018c64cbc4153a5234ae8.tar.gz
qmmp-a97fb9120aa7c177cc7018c64cbc4153a5234ae8.tar.bz2
qmmp-a97fb9120aa7c177cc7018c64cbc4153a5234ae8.zip
added ffmpeg 3.2 support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6831 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp23
1 files changed, 9 insertions, 14 deletions
diff --git a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp b/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp
index 0e9ca5781..eb3371e32 100644
--- a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp
+++ b/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp
@@ -376,26 +376,23 @@ qint64 DecoderFFmpeg::ffmpeg_decode()
#endif
#if (LIBAVCODEC_VERSION_INT >= ((57<<16)+(48<<8)+0)) //ffmpeg-3.1: 57.48.101
- int err = 0;
- if((err = avcodec_send_packet(c, &m_temp_pkt)) < 0)
+ int err = avcodec_send_packet(c, &m_temp_pkt);
+ if(err != 0 && err != AVERROR(EAGAIN) && err != AVERROR(EINVAL))
{
- if(err == EAGAIN) //try again
- return 0;
- else
- {
- qWarning("DecoderFFmpeg: avcodec_send_packet error: %d", err);
- return -1;
- }
+ qWarning("DecoderFFmpeg: avcodec_send_packet error: %d", err);
+ return -1;
}
+
+ int l = (err == AVERROR(EAGAIN)) ? 0 : m_temp_pkt.size;
+
if((err = avcodec_receive_frame(c, m_decoded_frame)) < 0)
{
- if(err == EAGAIN) //try again
+ if(err == AVERROR(EAGAIN)) //try again
return 0;
qWarning("DecoderFFmpeg: avcodec_receive_frame error: %d", err);
return -1;
}
got_frame = av_frame_get_pkt_size(m_decoded_frame);
- int l = m_temp_pkt.size;
#else
int l = avcodec_decode_audio4(c, m_decoded_frame, &got_frame, &m_temp_pkt);
#endif
@@ -443,7 +440,7 @@ void DecoderFFmpeg::seek(qint64 pos)
void DecoderFFmpeg::fillBuffer()
{
- while(!m_output_at)
+ while(!m_output_at || m_skipBytes > 0)
{
if(!m_temp_pkt.size)
{
@@ -478,8 +475,6 @@ void DecoderFFmpeg::fillBuffer()
ic->streams[m_pkt.stream_index]->time_base.den);
m_skipBytes = (m_seekTime - rescaledPts) * c->sample_rate * 4 / AV_TIME_BASE;
}
- else
- m_skipBytes = 0;
m_seekTime = 0;
}
#if (LIBAVCODEC_VERSION_INT >= ((55<<16)+(34<<8)+0)) //libav 10