deps/media-playback: Don't exit thread on AVERROR_EXIT

The interrupt callback is designed to prevent the media source from
blocking; FFmpeg will internally call it periodically to prevent FFmpeg
function calls from blocking too long, and allow the caller to determine
whether blocking should stop.

The problem with this however is that AVERROR_EXIT causes the thread to
completely exit.  This fixes it so that it treats it as an EOF rather
than as an abnormal error.
master
jp9000 2019-11-25 22:51:20 -08:00
parent 3a49d48062
commit 2fae85ab4a
1 changed files with 2 additions and 2 deletions

View File

@ -139,7 +139,7 @@ static int mp_media_next_packet(mp_media_t *media)
int ret = av_read_frame(media->fmt, &pkt);
if (ret < 0) {
if (ret != AVERROR_EOF)
if (ret != AVERROR_EOF && ret != AVERROR_EXIT)
blog(LOG_WARNING, "MP: av_read_frame failed: %s (%d)",
av_err2str(ret), ret);
return ret;
@ -230,7 +230,7 @@ static bool mp_media_prepare_frames(mp_media_t *m)
while (!mp_media_ready_to_start(m)) {
if (!m->eof) {
int ret = mp_media_next_packet(m);
if (ret == AVERROR_EOF)
if (ret == AVERROR_EOF || ret == AVERROR_EXIT)
m->eof = true;
else if (ret < 0)
return false;