From 219c42522f938c5fff08d962a1a54c0872322f00 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Sun, 7 Sep 2014 22:05:33 +0200
Subject: [PATCH] decoder/ffmpeg: pass MIME type to ffmpeg/libav version 11

That attribute was uninitialized before, which could crash
libavformat.

See Debian bug 760669
---
 NEWS                                | 1 +
 src/decoder/FfmpegDecoderPlugin.cxx | 7 +++++++
 2 files changed, 8 insertions(+)

diff --git a/NEWS b/NEWS
index d5612bfdc..d0fb64623 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ ver 0.18.14 (not yet released)
   - fix range parser bug on certain 32 bit architectures
 * decoder
   - audiofile: fix crash after seeking
+  - ffmpeg: fix crash with ffmpeg/libav version 11
   - fix assertion failure after seeking
 
 ver 0.18.13 (2014/08/31)
diff --git a/src/decoder/FfmpegDecoderPlugin.cxx b/src/decoder/FfmpegDecoderPlugin.cxx
index 5133f91ac..1409a3c47 100644
--- a/src/decoder/FfmpegDecoderPlugin.cxx
+++ b/src/decoder/FfmpegDecoderPlugin.cxx
@@ -387,6 +387,13 @@ ffmpeg_probe(Decoder *decoder, InputStream &is)
 	avpd.buf_size = nbytes;
 	avpd.filename = is.uri.c_str();
 
+#ifdef AVPROBE_SCORE_MIME
+	/* this attribute was added in libav/ffmpeg version 11, but
+	   unfortunately it's "uint8_t" instead of "char", and it's
+	   not "const" - wtf? */
+	avpd.mime_type = (uint8_t *)const_cast<char *>(is.GetMimeType());
+#endif
+
 	return av_probe_input_format(&avpd, true);
 }