Skip to content
Snippets Groups Projects
Commit 193b0d81 authored by Reynaldo H. Verdejo Pinochet's avatar Reynaldo H. Verdejo Pinochet
Browse files

Require libav provided by FFmpeg at run-time

Error out if system's libav* libraries are not
provided by FFmpeg. Libav-incompatible changes
were introduced to support the latter so we
can no longer support both.

https://bugzilla.gnome.org/show_bug.cgi?id=758183
parent d9dec689
No related branches found
No related tags found
No related merge requests found
......@@ -38,6 +38,23 @@ GST_DEBUG_CATEGORY (ffmpeg_debug);
static GMutex gst_avcodec_mutex;
/*
* Check for FFmpeg-provided libavcodec/format
*/
static inline gboolean
gst_ffmpeg_avcodec_is_ffmpeg (void)
{
guint av_version = avutil_version ();
GST_DEBUG ("Using libavcodec version %d.%d.%d",
av_version >> 16, (av_version & 0x00ff00) >> 8, av_version & 0xff);
/* FFmpeg *_MICRO versions start at 100 and Libav's at 0 */
if ((av_version & 0xff) < 100)
return FALSE;
return TRUE;
}
int
gst_ffmpeg_avcodec_open (AVCodecContext * avctx, AVCodec * codec)
......@@ -118,8 +135,14 @@ static gboolean
plugin_init (GstPlugin * plugin)
{
GST_DEBUG_CATEGORY_INIT (ffmpeg_debug, "libav", 0, "libav elements");
#ifndef GST_DISABLE_GST_DEBUG
/* Bail if not FFmpeg. We can no longer ensure operation with Libav */
if (!gst_ffmpeg_avcodec_is_ffmpeg ()) {
GST_ERROR_OBJECT (plugin,
"Incompatible, non-FFmpeg libavcodec/format found");
return FALSE;
}
#ifndef GST_DISABLE_GST_DEBUG
av_log_set_callback (gst_ffmpeg_log_callback);
#endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment