]> git.sesse.net Git - ffmpeg/commitdiff
avformat/img2dec: Use avformat probing interface to identify format if it has not...
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 28 Mar 2014 16:24:48 +0000 (17:24 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 28 Mar 2014 22:54:51 +0000 (23:54 +0100)
This is used only for distinguishing .pix formats for now.
Which is the only case that has image2 demuxers currently

Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/img2dec.c
libavformat/version.h

index 026fd5f14ba2f54a88b1e0db2c92978b1989ce1c..f6df41d4e6f95c323b6fae3ddd853ea41eed2348 100644 (file)
@@ -298,6 +298,8 @@ int ff_img_read_header(AVFormatContext *s1)
         st->codec->codec_id   = ff_guess_image2_codec(s->path);
         if (st->codec->codec_id == AV_CODEC_ID_LJPEG)
             st->codec->codec_id = AV_CODEC_ID_MJPEG;
+        if (st->codec->codec_id == AV_CODEC_ID_ALIAS_PIX) // we cannot distingiush this from BRENDER_PIX
+            st->codec->codec_id = AV_CODEC_ID_NONE;
     }
     if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO &&
         pix_fmt != AV_PIX_FMT_NONE)
@@ -349,6 +351,26 @@ int ff_img_read_packet(AVFormatContext *s1, AVPacket *pkt)
             filename[strlen(filename) - 1] = 'U' + i;
         }
 
+        if (codec->codec_id == AV_CODEC_ID_NONE) {
+            AVProbeData pd;
+            AVInputFormat *ifmt;
+            uint8_t header[20 + AVPROBE_PADDING_SIZE];
+            int ret;
+            int score = 0;
+
+            ret = avio_read(f[0], header, 20);
+            if (ret < 0)
+                return ret;
+            avio_skip(f[0], -ret);
+            pd.buf = header;
+            pd.buf_size = ret;
+            pd.filename = filename;
+
+            ifmt = av_probe_input_format3(&pd, 1, &score);
+            if (ifmt && ifmt->read_packet == ff_img_read_packet && ifmt->raw_codec_id)
+                codec->codec_id = ifmt->raw_codec_id;
+        }
+
         if (codec->codec_id == AV_CODEC_ID_RAWVIDEO && !codec->width)
             infer_size(&codec->width, &codec->height, size[0]);
     } else {
index 55b85914573747331650fbda41d1b427635ad614..cb17faee162b66c047f9205fb7a3c3c4d713409c 100644 (file)
@@ -30,8 +30,8 @@
 #include "libavutil/version.h"
 
 #define LIBAVFORMAT_VERSION_MAJOR 55
-#define LIBAVFORMAT_VERSION_MINOR 35
-#define LIBAVFORMAT_VERSION_MICRO 102
+#define LIBAVFORMAT_VERSION_MINOR 36
+#define LIBAVFORMAT_VERSION_MICRO 100
 
 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
                                                LIBAVFORMAT_VERSION_MINOR, \