summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog1
-rw-r--r--libavformat/Makefile1
-rw-r--r--libavformat/allformats.c1
-rw-r--r--libavformat/asfdec.c5
-rw-r--r--libavformat/img2dec.c24
-rw-r--r--libavformat/mpegts.c4
-rw-r--r--libavformat/msnwc_tcp.c2
-rw-r--r--libavformat/version.h4
8 files changed, 32 insertions, 10 deletions
diff --git a/Changelog b/Changelog
index e3c94c7e4d..6e9ca8ef80 100644
--- a/Changelog
+++ b/Changelog
@@ -10,6 +10,7 @@ version <next>:
- ssim filter
- rewritten ASF demuxer
- showvolume filter
+- Many improvements to the JPEG 2000 decoder
version 2.7:
diff --git a/libavformat/Makefile b/libavformat/Makefile
index cfff6aab46..987f196859 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -202,6 +202,7 @@ OBJS-$(CONFIG_IMAGE2PIPE_MUXER) += img2enc.o img2.o
OBJS-$(CONFIG_IMAGE2_ALIAS_PIX_DEMUXER) += img2_alias_pix.o
OBJS-$(CONFIG_IMAGE2_BRENDER_PIX_DEMUXER) += img2_brender_pix.o
OBJS-$(CONFIG_IMAGE_BMP_PIPE_DEMUXER) += img2dec.o img2.o
+OBJS-$(CONFIG_IMAGE_DDS_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_IMAGE_DPX_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_IMAGE_EXR_PIPE_DEMUXER) += img2dec.o img2.o
OBJS-$(CONFIG_IMAGE_J2K_PIPE_DEMUXER) += img2dec.o img2.o
diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index d65b7d4681..2caa6b111b 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -335,6 +335,7 @@ void av_register_all(void)
/* image demuxers */
REGISTER_DEMUXER (IMAGE_BMP_PIPE, image_bmp_pipe);
+ REGISTER_DEMUXER (IMAGE_DDS_PIPE, image_dds_pipe);
REGISTER_DEMUXER (IMAGE_DPX_PIPE, image_dpx_pipe);
REGISTER_DEMUXER (IMAGE_EXR_PIPE, image_exr_pipe);
REGISTER_DEMUXER (IMAGE_J2K_PIPE, image_j2k_pipe);
diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c
index a8cae5658e..db8791e980 100644
--- a/libavformat/asfdec.c
+++ b/libavformat/asfdec.c
@@ -132,8 +132,9 @@ static const AVClass asf_class = {
#include <assert.h>
#define ASF_MAX_STREAMS 127
-#define FRAME_HEADER_SIZE 11
-// Fix Me! FRAME_HEADER_SIZE may be different. (17 is known to be too large)
+#define FRAME_HEADER_SIZE 6
+// Fix Me! FRAME_HEADER_SIZE may be different.
+// (7 is known to be too large for GipsyGuitar.wmv)
#ifdef DEBUG
static const ff_asf_guid stream_bitrate_guid = { /* (http://get.to/sdp) */
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
index 0830f0073c..cf848ce05e 100644
--- a/libavformat/img2dec.c
+++ b/libavformat/img2dec.c
@@ -609,6 +609,17 @@ static int bmp_probe(AVProbeData *p)
return AVPROBE_SCORE_EXTENSION / 4;
}
+static int dds_probe(AVProbeData *p)
+{
+ const uint8_t *b = p->buf;
+
+ if ( AV_RB64(b) == 0x444453207c000000
+ && AV_RL32(b + 8)
+ && AV_RL32(b + 12))
+ return AVPROBE_SCORE_MAX - 1;
+ return 0;
+}
+
static int dpx_probe(AVProbeData *p)
{
const uint8_t *b = p->buf;
@@ -714,9 +725,15 @@ static int qdraw_probe(AVProbeData *p)
{
const uint8_t *b = p->buf;
- if (!b[10] && AV_RB32(b+11) == 0x1102ff0c && !b[15] ||
- p->buf_size >= 528 && !b[522] && AV_RB32(b+523) == 0x1102ff0c && !b[527])
- return AVPROBE_SCORE_EXTENSION + 1;
+ if ( p->buf_size >= 528
+ && (AV_RB64(b + 520) & 0xFFFFFFFFFFFF) == 0x001102ff0c00
+ && AV_RB16(b + 520)
+ && AV_RB16(b + 518))
+ return AVPROBE_SCORE_MAX * 3 / 4;
+ if ( (AV_RB64(b + 8) & 0xFFFFFFFFFFFF) == 0x001102ff0c00
+ && AV_RB16(b + 8)
+ && AV_RB16(b + 6))
+ return AVPROBE_SCORE_EXTENSION / 4;
return 0;
}
@@ -799,6 +816,7 @@ AVInputFormat ff_image_ ## imgname ## _pipe_demuxer = {\
};
IMAGEAUTO_DEMUXER(bmp, AV_CODEC_ID_BMP)
+IMAGEAUTO_DEMUXER(dds, AV_CODEC_ID_DDS)
IMAGEAUTO_DEMUXER(dpx, AV_CODEC_ID_DPX)
IMAGEAUTO_DEMUXER(exr, AV_CODEC_ID_EXR)
IMAGEAUTO_DEMUXER(j2k, AV_CODEC_ID_JPEG2000)
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 37043a69f4..4a8a244a67 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -2439,7 +2439,7 @@ static int mpegts_probe(AVProbeData *p)
#define CHECK_BLOCK 100
if (check_count < CHECK_COUNT)
- return AVERROR_INVALIDDATA;
+ return 0;
for (i = 0; i<check_count; i+=CHECK_BLOCK) {
int left = FFMIN(check_count - i, CHECK_BLOCK);
@@ -2459,7 +2459,7 @@ static int mpegts_probe(AVProbeData *p)
if (sumscore > 6) return AVPROBE_SCORE_MAX + sumscore - CHECK_COUNT;
else if (maxscore > 6) return AVPROBE_SCORE_MAX/2 + sumscore - CHECK_COUNT;
else
- return AVERROR_INVALIDDATA;
+ return 0;
}
/* return the 90kHz PCR and the extension for the 27MHz PCR. return
diff --git a/libavformat/msnwc_tcp.c b/libavformat/msnwc_tcp.c
index 60225af61c..2ec18fb554 100644
--- a/libavformat/msnwc_tcp.c
+++ b/libavformat/msnwc_tcp.c
@@ -67,7 +67,7 @@ static int msnwc_tcp_probe(AVProbeData *p)
}
}
- return -1;
+ return 0;
}
static int msnwc_tcp_read_header(AVFormatContext *ctx)
diff --git a/libavformat/version.h b/libavformat/version.h
index 5efc934107..052551cfb5 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -30,8 +30,8 @@
#include "libavutil/version.h"
#define LIBAVFORMAT_VERSION_MAJOR 56
-#define LIBAVFORMAT_VERSION_MINOR 39
-#define LIBAVFORMAT_VERSION_MICRO 101
+#define LIBAVFORMAT_VERSION_MINOR 40
+#define LIBAVFORMAT_VERSION_MICRO 100
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \