[FFmpeg-devel] [PATCH]lavf/ingenient: Add a probe function

Carl Eugen Hoyos cehoyos at ag.or.at
Sun Oct 18 14:12:16 CEST 2015


Hi!

In the past, the ingenient demuxer was the reason for many bug reports.
This has changed since mjpeg autodetection exists, but since ingenient 
auto-detection is easily possible, it should be added.
Unfortunately, I cannot test attached patch, please review wrt 
http://multimedia.cx/ingenient.txt and the current ingenientdec.c 
source.

Thank you, Carl Eugen
-------------- next part --------------
diff --git a/libavformat/ingenientdec.c b/libavformat/ingenientdec.c
index 94c549c..c0ba61e 100644
--- a/libavformat/ingenientdec.c
+++ b/libavformat/ingenientdec.c
@@ -21,8 +21,18 @@
 
 #include "avformat.h"
 #include "rawdec.h"
+#include "libavutil/intreadwrite.h"
+
+// http://multimedia.cx/ingenient.txt
+static int ingenient_probe(AVProbeData *p)
+{
+    if (   AV_RN32(p->buf) != AV_RN32("MJPG")
+        || p->buf_size < 50
+        || AV_RB16(p->buf + 48) != 0xffd8)
+        return 0;
+    return AVPROBE_SCORE_MAX * 3 / 4;
+}
 
-// http://www.artificis.hu/files/texts/ingenient.txt
 static int ingenient_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
     int ret, size, w, h, unk1, unk2;
@@ -57,6 +67,7 @@ AVInputFormat ff_ingenient_demuxer = {
     .name           = "ingenient",
     .long_name      = NULL_IF_CONFIG_SMALL("raw Ingenient MJPEG"),
     .priv_data_size = sizeof(FFRawVideoDemuxerContext),
+    .read_probe     = ingenient_probe,
     .read_header    = ff_raw_video_read_header,
     .read_packet    = ingenient_read_packet,
     .flags          = AVFMT_GENERIC_INDEX,


More information about the ffmpeg-devel mailing list