From a876a4da4a926068a0a0c5c1a910be0e34f9e991 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Mon, 29 Jun 2015 16:13:26 +0200 Subject: [PATCH 1/6] lavf/img2dec: Autodetect dds frames. --- libavformat/Makefile | 1 + libavformat/allformats.c | 1 + libavformat/img2dec.c | 12 ++++++++++++ libavformat/version.h | 2 +- 4 files changed, 15 insertions(+), 1 deletion(-) 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/img2dec.c b/libavformat/img2dec.c index 0830f0073c..772204cde6 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; @@ -799,6 +810,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/version.h b/libavformat/version.h index a6d368ec0f..052551cfb5 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -30,7 +30,7 @@ #include "libavutil/version.h" #define LIBAVFORMAT_VERSION_MAJOR 56 -#define LIBAVFORMAT_VERSION_MINOR 39 +#define LIBAVFORMAT_VERSION_MINOR 40 #define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ From 45441eb0f643823c1f9edb7ee6724d70b2e36c1f Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Mon, 29 Jun 2015 16:17:05 +0200 Subject: [PATCH 2/6] Changelog: Add jpeg 2000 improvements before they get forgotten. --- Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/Changelog b/Changelog index e3c94c7e4d..6e9ca8ef80 100644 --- a/Changelog +++ b/Changelog @@ -10,6 +10,7 @@ version : - ssim filter - rewritten ASF demuxer - showvolume filter +- Many improvements to the JPEG 2000 decoder version 2.7: From 5a458420e2fb804c8995db8c2936a9974c46678c Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Mon, 29 Jun 2015 16:23:15 +0200 Subject: [PATCH 3/6] lavf/asfdec: Reduce minimum header size. Fixes GipsyGuitar.wmv mentioned in ticket #1477. --- libavformat/asfdec.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 #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) */ From dee7943819042f310d7995671d3e39f4dd31d770 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Mon, 29 Jun 2015 16:25:11 +0200 Subject: [PATCH 4/6] lavf/img2dec: Improve detection of valid Quickdraw images. Detect Quickdraw images without application header with lower score. --- libavformat/img2dec.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c index 772204cde6..cf848ce05e 100644 --- a/libavformat/img2dec.c +++ b/libavformat/img2dec.c @@ -725,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; } From 77c0b149be120ab6b0a0a536b309aba0d4bc8261 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Mon, 29 Jun 2015 16:27:36 +0200 Subject: [PATCH 5/6] lavf/mpegts: Return 0 if the probe function does not detect mpegts. Reduces console spamming on debug level. --- libavformat/mpegts.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 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 From 4b920d7b4a588f0625ac73649729ba5229e9449f Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Mon, 29 Jun 2015 16:29:07 +0200 Subject: [PATCH 6/6] lavf/msnwc: Return 0 if the probe function does not detect msnwc-tcp. Reduces console spamming on debug level. --- libavformat/msnwc_tcp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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)