Commit 1c13e1ef authored by Michael Niedermayer's avatar Michael Niedermayer

avformat/img2dec: Use avformat probing interface to identify format if it has...

avformat/img2dec: Use avformat probing interface to identify format if it has not been otherwise identified

This is used only for distinguishing .pix formats for now.
Which is the only case that has image2 demuxers currently
Reviewed-by: 's avatarwm4 <nfxjfg@googlemail.com>
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 075d6c06
......@@ -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 {
......
......@@ -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, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment