ffmpeg: Bump to release/3.1-xbmc (67171c3)

This commit is contained in:
MilhouseVH 2016-07-01 07:27:39 +01:00
parent 7fe5c2962e
commit d11b730050
6 changed files with 615 additions and 623 deletions

View File

@ -17,8 +17,8 @@
################################################################################ ################################################################################
PKG_NAME="ffmpeg" PKG_NAME="ffmpeg"
# Current branch is: release/3.0-xbmc # Current branch is: release/3.1-xbmc
PKG_VERSION="c44bf39" PKG_VERSION="67171c3"
PKG_REV="1" PKG_REV="1"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="LGPLv2.1+" PKG_LICENSE="LGPLv2.1+"

View File

@ -1,4 +1,4 @@
From ccb1eff2e6dd1259c6a8ca262076553875c5abe2 Mon Sep 17 00:00:00 2001 From d08594462136274636c1f2f476a6410ff92a9e16 Mon Sep 17 00:00:00 2001
From: John Cox <jc@kynesim.co.uk> From: John Cox <jc@kynesim.co.uk>
Date: Wed, 13 Jan 2016 16:13:33 +0000 Date: Wed, 13 Jan 2016 16:13:33 +0000
Subject: [PATCH] H.265 residual decode rework (v2) Subject: [PATCH] H.265 residual decode rework (v2)
@ -13,8 +13,8 @@ Simplify the code flow and variable usage where possible
libavcodec/arm/hevcdsp_deblock_neon.S | 13 +- libavcodec/arm/hevcdsp_deblock_neon.S | 13 +-
libavcodec/arm/hevcdsp_epel_neon.S | 9 +- libavcodec/arm/hevcdsp_epel_neon.S | 9 +-
libavcodec/cabac.h | 9 +- libavcodec/cabac.h | 9 +-
libavcodec/hevc_cabac.c | 1098 +++++++++++++++++++++++++-------- libavcodec/hevc_cabac.c | 1096 +++++++++++++++++++++++++--------
6 files changed, 1510 insertions(+), 265 deletions(-) 6 files changed, 1509 insertions(+), 264 deletions(-)
create mode 100644 libavcodec/arm/hevc_cabac.h create mode 100644 libavcodec/arm/hevc_cabac.h
diff --git a/libavcodec/arm/cabac.h b/libavcodec/arm/cabac.h diff --git a/libavcodec/arm/cabac.h b/libavcodec/arm/cabac.h
@ -801,7 +801,7 @@ index 1bf1c62..ccfa991 100644
const uint8_t *bytestream; const uint8_t *bytestream;
const uint8_t *bytestream_end; const uint8_t *bytestream_end;
diff --git a/libavcodec/hevc_cabac.c b/libavcodec/hevc_cabac.c diff --git a/libavcodec/hevc_cabac.c b/libavcodec/hevc_cabac.c
index 271e17a..4caf720 100644 index 8656917..4caf720 100644
--- a/libavcodec/hevc_cabac.c --- a/libavcodec/hevc_cabac.c
+++ b/libavcodec/hevc_cabac.c +++ b/libavcodec/hevc_cabac.c
@@ -21,14 +21,72 @@ @@ -21,14 +21,72 @@
@ -1502,9 +1502,8 @@ index 271e17a..4caf720 100644
int trafo_size = 1 << log2_trafo_size; int trafo_size = 1 << log2_trafo_size;
int i; int i;
- int qp,shift,add,scale,scale_m; - int qp,shift,add,scale,scale_m;
- const uint8_t level_scale[] = { 40, 45, 51, 57, 64, 72 };
+ int qp,shift,scale; + int qp,shift,scale;
+ static const uint8_t level_scale[] = { 40, 45, 51, 57, 64, 72 }; static const uint8_t level_scale[] = { 40, 45, 51, 57, 64, 72 };
const uint8_t *scale_matrix = NULL; const uint8_t *scale_matrix = NULL;
uint8_t dc_scale; uint8_t dc_scale;
int pred_mode_intra = (c_idx == 0) ? lc->tu.intra_pred_mode : int pred_mode_intra = (c_idx == 0) ? lc->tu.intra_pred_mode :
@ -2176,6 +2175,6 @@ index 271e17a..4caf720 100644
log2_trafo_size == 2 && log2_trafo_size == 2 &&
lc->cu.pred_mode == MODE_INTRA; lc->cu.pred_mode == MODE_INTRA;
-- --
2.5.0 2.7.4

View File

@ -1,30 +1,28 @@
From f2e011c656b3579b6ede184bb5c56a7b97fad0f3 Mon Sep 17 00:00:00 2001 From 4060f15e2d29e268110032d4366382e370e088d0 Mon Sep 17 00:00:00 2001
From: Hendrik Leppkes <h.leppkes@gmail.com> From: popcornmix <popcornmix@gmail.com>
Date: Sat, 9 Jan 2016 15:34:09 +0100 Date: Sun, 26 Jun 2016 20:09:18 +0100
Subject: [PATCH] avcodec: add h264_mvc codec id and profiles Subject: [PATCH] avcodec: add h264_mvc codec id and profiles
avcodec: add h264_mvc codec id and profiles
--- ---
libavcodec/avcodec.h | 5 +++++ libavcodec/avcodec.h | 5 +++++
libavcodec/codec_desc.c | 7 +++++++ libavcodec/codec_desc.c | 7 +++++++
libavcodec/profiles.c | 3 +++
libavformat/mpegts.c | 2 +- libavformat/mpegts.c | 2 +-
4 files changed, 16 insertions(+), 1 deletion(-) 3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index f365775..8498921 100644 index a1ba217..abd2e91 100644
--- a/libavcodec/avcodec.h --- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h
@@ -316,6 +316,8 @@ enum AVCodecID { @@ -410,6 +410,8 @@ enum AVCodecID {
AV_CODEC_ID_APNG, AV_CODEC_ID_SHEERVIDEO,
AV_CODEC_ID_DAALA, AV_CODEC_ID_YLC,
+ AV_CODEC_ID_H264_MVC, + AV_CODEC_ID_H264_MVC,
+ +
/* various PCM "codecs" */ /* various PCM "codecs" */
AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs
AV_CODEC_ID_PCM_S16LE = 0x10000, AV_CODEC_ID_PCM_S16LE = 0x10000,
@@ -3086,6 +3088,9 @@ typedef struct AVCodecContext { @@ -3195,6 +3197,9 @@ typedef struct AVCodecContext {
#define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244 #define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244
#define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA) #define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA)
#define FF_PROFILE_H264_CAVLC_444 44 #define FF_PROFILE_H264_CAVLC_444 44
@ -35,12 +33,12 @@ index f365775..8498921 100644
#define FF_PROFILE_VC1_SIMPLE 0 #define FF_PROFILE_VC1_SIMPLE 0
#define FF_PROFILE_VC1_MAIN 1 #define FF_PROFILE_VC1_MAIN 1
diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c
index 5fbe624..9431bd8 100644 index 9d94b72..535ebf0 100644
--- a/libavcodec/codec_desc.c --- a/libavcodec/codec_desc.c
+++ b/libavcodec/codec_desc.c +++ b/libavcodec/codec_desc.c
@@ -1521,6 +1521,13 @@ static const AVCodecDescriptor codec_descriptors[] = { @@ -1563,6 +1563,13 @@ static const AVCodecDescriptor codec_descriptors[] = {
.props = AV_CODEC_PROP_LOSSLESS, .long_name = NULL_IF_CONFIG_SMALL("YUY2 Lossless Codec"),
.mime_types= MT("image/png"), .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
}, },
+ { + {
+ .id = AV_CODEC_ID_H264_MVC, + .id = AV_CODEC_ID_H264_MVC,
@ -53,16 +51,19 @@ index 5fbe624..9431bd8 100644
/* various PCM "codecs" */ /* various PCM "codecs" */
{ {
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 22874e6..34b6987 100644 index b31d233..2767306 100644
--- a/libavformat/mpegts.c --- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c +++ b/libavformat/mpegts.c
@@ -698,7 +698,7 @@ static const StreamType ISO_types[] = { @@ -701,7 +701,7 @@ static const StreamType ISO_types[] = {
{ 0x11, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_AAC_LATM }, /* LATM syntax */
#endif #endif
{ 0x1b, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_H264 }, { 0x1b, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_H264 },
{ 0x1c, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_AAC },
- { 0x20, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_H264 }, - { 0x20, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_H264 },
+ { 0x20, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_H264_MVC }, + { 0x20, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_H264_MVC },
{ 0x21, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_JPEG2000 }, { 0x21, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_JPEG2000 },
{ 0x24, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_HEVC }, { 0x24, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_HEVC },
{ 0x42, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_CAVS }, { 0x42, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_CAVS },
--
2.7.4

View File

@ -1,6 +1,6 @@
From 0b857974bc3f2f48800526efbe02b9e72fdeb266 Mon Sep 17 00:00:00 2001 From 23dd20678a05e1764e5d8d30481cb354a51b6c8b Mon Sep 17 00:00:00 2001
From: Hendrik Leppkes <h.leppkes@gmail.com> From: popcornmix <popcornmix@gmail.com>
Date: Sat, 9 Jan 2016 16:34:40 +0100 Date: Sun, 26 Jun 2016 20:16:03 +0100
Subject: [PATCH] h264_parser: add support for parsing h264 mvc NALUs Subject: [PATCH] h264_parser: add support for parsing h264 mvc NALUs
--- ---
@ -10,10 +10,10 @@ Subject: [PATCH] h264_parser: add support for parsing h264 mvc NALUs
3 files changed, 33 insertions(+), 4 deletions(-) 3 files changed, 33 insertions(+), 4 deletions(-)
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index 2097db0..66eb571 100644 index 54efaad..02a89c3 100644
--- a/libavcodec/allcodecs.c --- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c
@@ -633,6 +633,7 @@ void avcodec_register_all(void) @@ -667,6 +667,7 @@ void avcodec_register_all(void)
REGISTER_PARSER(H261, h261); REGISTER_PARSER(H261, h261);
REGISTER_PARSER(H263, h263); REGISTER_PARSER(H263, h263);
REGISTER_PARSER(H264, h264); REGISTER_PARSER(H264, h264);
@ -22,10 +22,10 @@ index 2097db0..66eb571 100644
REGISTER_PARSER(MJPEG, mjpeg); REGISTER_PARSER(MJPEG, mjpeg);
REGISTER_PARSER(MLP, mlp); REGISTER_PARSER(MLP, mlp);
diff --git a/libavcodec/h264.h b/libavcodec/h264.h diff --git a/libavcodec/h264.h b/libavcodec/h264.h
index 78f4eed..9e1d377 100644 index efe3555..16358aa 100644
--- a/libavcodec/h264.h --- a/libavcodec/h264.h
+++ b/libavcodec/h264.h +++ b/libavcodec/h264.h
@@ -123,7 +123,9 @@ enum { @@ -126,7 +126,9 @@ enum {
NAL_END_STREAM = 11, NAL_END_STREAM = 11,
NAL_FILLER_DATA = 12, NAL_FILLER_DATA = 12,
NAL_SPS_EXT = 13, NAL_SPS_EXT = 13,
@ -36,18 +36,18 @@ index 78f4eed..9e1d377 100644
}; };
diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c
index 12d6397..4337c8c 100644 index ce4bab2..082ac17 100644
--- a/libavcodec/h264_parser.c --- a/libavcodec/h264_parser.c
+++ b/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c
@@ -38,6 +38,7 @@ typedef struct H264ParseContext { @@ -58,6 +58,7 @@ typedef struct H264ParseContext {
H264Context h; uint8_t parse_history[6];
ParseContext pc; int parse_history_count;
int got_first; int parse_last_mb;
+ int is_mvc; + int is_mvc;
} H264ParseContext; } H264ParseContext;
@@ -86,14 +87,18 @@ static int h264_find_frame_end(H264ParseContext *p, const uint8_t *buf, @@ -105,14 +106,18 @@ static int h264_find_frame_end(H264ParseContext *p, const uint8_t *buf,
} else if (state <= 5) { } else if (state <= 5) {
int nalu_type = buf[i] & 0x1F; int nalu_type = buf[i] & 0x1F;
if (nalu_type == NAL_SEI || nalu_type == NAL_SPS || if (nalu_type == NAL_SEI || nalu_type == NAL_SPS ||
@ -68,7 +68,7 @@ index 12d6397..4337c8c 100644
continue; continue;
} }
state = 7; state = 7;
@@ -532,7 +537,8 @@ static int h264_parse(AVCodecParserContext *s, @@ -585,7 +590,8 @@ static int h264_parse(AVCodecParserContext *s,
} }
} }
@ -78,7 +78,7 @@ index 12d6397..4337c8c 100644
if (avctx->framerate.num) if (avctx->framerate.num)
avctx->time_base = av_inv_q(av_mul_q(avctx->framerate, (AVRational){avctx->ticks_per_frame, 1})); avctx->time_base = av_inv_q(av_mul_q(avctx->framerate, (AVRational){avctx->ticks_per_frame, 1}));
@@ -569,7 +575,7 @@ static int h264_split(AVCodecContext *avctx, @@ -622,7 +628,7 @@ static int h264_split(AVCodecContext *avctx,
if ((state & 0xFFFFFF00) != 0x100) if ((state & 0xFFFFFF00) != 0x100)
break; break;
nalu_type = state & 0x1F; nalu_type = state & 0x1F;
@ -87,7 +87,7 @@ index 12d6397..4337c8c 100644
has_sps = 1; has_sps = 1;
} else if (nalu_type == NAL_PPS) } else if (nalu_type == NAL_PPS)
has_pps = 1; has_pps = 1;
@@ -625,3 +631,23 @@ AVCodecParser ff_h264_parser = { @@ -672,3 +678,23 @@ AVCodecParser ff_h264_parser = {
.parser_close = h264_close, .parser_close = h264_close,
.split = h264_split, .split = h264_split,
}; };
@ -111,4 +111,7 @@ index 12d6397..4337c8c 100644
+ .parser_close = h264_close, + .parser_close = h264_close,
+ .split = h264_split, + .split = h264_split,
+}; +};
--
2.7.4

View File

@ -1,39 +1,25 @@
From fd627f6435db524f3e1fd8df6f64a17dcda5c8b9 Mon Sep 17 00:00:00 2001 From 12d99a92469e5916de3bc787dce4c13abfdd5e09 Mon Sep 17 00:00:00 2001
From: Hendrik Leppkes <h.leppkes@gmail.com> From: popcornmix <popcornmix@gmail.com>
Date: Fri, 26 Feb 2016 00:23:53 +0100 Date: Sun, 26 Jun 2016 20:20:04 +0100
Subject: [PATCH] h264_parser: fix parsing of mvc slices in some corner cases Subject: [PATCH] h264_parser: fix parsing of mvc slices in some corner cases
--- ---
libavcodec/h264.h | 2 +-
libavcodec/h264_parser.c | 10 +++++----- libavcodec/h264_parser.c | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-) 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/libavcodec/h264.h b/libavcodec/h264.h
index 9e1d377..846e4dc 100644
--- a/libavcodec/h264.h
+++ b/libavcodec/h264.h
@@ -828,7 +828,7 @@ typedef struct H264Context {
int cur_bit_depth_luma;
int16_t slice_row[MAX_SLICES]; ///< to detect when MAX_SLICES is too low
- uint8_t parse_history[6];
+ uint8_t parse_history[9];
int parse_history_count;
int parse_last_mb;
diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c
index 4337c8c..2fd3f2b 100644 index 082ac17..b9b0c78 100644
--- a/libavcodec/h264_parser.c --- a/libavcodec/h264_parser.c
+++ b/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c
@@ -39,6 +39,7 @@ typedef struct H264ParseContext { @@ -59,6 +59,7 @@ typedef struct H264ParseContext {
ParseContext pc; int parse_history_count;
int got_first; int parse_last_mb;
int is_mvc; int is_mvc;
+ int slice_ext; + int slice_ext;
} H264ParseContext; } H264ParseContext;
@@ -97,18 +98,17 @@ static int h264_find_frame_end(H264ParseContext *p, const uint8_t *buf, @@ -116,18 +117,17 @@ static int h264_find_frame_end(H264ParseContext *p, const uint8_t *buf,
nalu_type == NAL_IDR_SLICE || (p->is_mvc && nalu_type == NAL_SLICE_EXT)) { nalu_type == NAL_IDR_SLICE || (p->is_mvc && nalu_type == NAL_SLICE_EXT)) {
state += 8; state += 8;
@ -44,24 +30,27 @@ index 4337c8c..2fd3f2b 100644
} }
state = 7; state = 7;
} else { } else {
h->parse_history[h->parse_history_count++]= buf[i]; p->parse_history[p->parse_history_count++] = buf[i];
- if (h->parse_history_count>5) { - if (p->parse_history_count > 5) {
+ if (h->parse_history_count>8) { + if (p->parse_history_count > 8) {
unsigned int mb, last_mb= h->parse_last_mb; unsigned int mb, last_mb = p->parse_last_mb;
GetBitContext gb; GetBitContext gb;
- init_get_bits(&gb, h->parse_history, 8*h->parse_history_count); - init_get_bits(&gb, p->parse_history, 8*p->parse_history_count);
+ init_get_bits8(&gb, h->parse_history + 3*p->slice_ext, h->parse_history_count - 3*p->slice_ext); + init_get_bits8(&gb, p->parse_history + 3*p->slice_ext, p->parse_history_count - 3*p->slice_ext);
h->parse_history_count=0; p->parse_history_count = 0;
mb= get_ue_golomb_long(&gb); mb= get_ue_golomb_long(&gb);
h->parse_last_mb= mb; p->parse_last_mb = mb;
@@ -131,7 +131,7 @@ static int h264_find_frame_end(H264ParseContext *p, const uint8_t *buf, @@ -150,7 +150,7 @@ found:
pc->frame_start_found = 0; pc->frame_start_found = 0;
if (h->is_avc) if (p->is_avc)
return next_avc; return next_avc;
- return i - (state & 5) - 5 * (state > 7); - return i - (state & 5) - 5 * (state > 7);
+ return i - (state & 5) - 8 * (state > 7); + return i - (state & 5) - 8 * (state > 7);
} }
static int scan_mmco_reset(AVCodecParserContext *s) static int scan_mmco_reset(AVCodecParserContext *s, GetBitContext *gb,
--
2.7.4