mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-30 12:27:29 +09:00
ffvpx: update ffmpeg to 3.4.13 ( c721020755 )
This commit is contained in:
parent
f1d0742012
commit
6f9d5a9385
9 changed files with 31 additions and 8 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
This directory contains files used in goanna builds from FFmpeg
|
This directory contains files used in goanna builds from FFmpeg
|
||||||
(http://ffmpeg.org). The current files are from FFmpeg as of
|
(http://ffmpeg.org). The current files are from FFmpeg as of
|
||||||
Release 3.4.9
|
Release 3.4.13
|
||||||
All source files match their path from the library's source archive.
|
All source files match their path from the library's source archive.
|
||||||
|
|
||||||
Currently, we only use the vp8 and vp9 portion of the library, and only on x86
|
Currently, we only use the vp8 and vp9 portion of the library, and only on x86
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@
|
||||||
|
|
||||||
/** largest possible size of flac header */
|
/** largest possible size of flac header */
|
||||||
#define MAX_FRAME_HEADER_SIZE 16
|
#define MAX_FRAME_HEADER_SIZE 16
|
||||||
|
#define MAX_FRAME_VERIFY_SIZE (MAX_FRAME_HEADER_SIZE)
|
||||||
|
|
||||||
typedef struct FLACHeaderMarker {
|
typedef struct FLACHeaderMarker {
|
||||||
int offset; /**< byte offset from start of FLACParseContext->buffer */
|
int offset; /**< byte offset from start of FLACParseContext->buffer */
|
||||||
|
|
@ -169,7 +170,7 @@ static int find_headers_search_validate(FLACParseContext *fpc, int offset)
|
||||||
uint8_t *header_buf;
|
uint8_t *header_buf;
|
||||||
int size = 0;
|
int size = 0;
|
||||||
header_buf = flac_fifo_read_wrap(fpc, offset,
|
header_buf = flac_fifo_read_wrap(fpc, offset,
|
||||||
MAX_FRAME_HEADER_SIZE,
|
MAX_FRAME_VERIFY_SIZE + AV_INPUT_BUFFER_PADDING_SIZE,
|
||||||
&fpc->wrap_buf,
|
&fpc->wrap_buf,
|
||||||
&fpc->wrap_buf_allocated_size);
|
&fpc->wrap_buf_allocated_size);
|
||||||
if (frame_header_is_valid(fpc->avctx, header_buf, &fi)) {
|
if (frame_header_is_valid(fpc->avctx, header_buf, &fi)) {
|
||||||
|
|
|
||||||
|
|
@ -724,6 +724,10 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size)
|
||||||
avpriv_request_sample(avctx, "data partitioning");
|
avpriv_request_sample(avctx, "data partitioning");
|
||||||
break;
|
break;
|
||||||
case H264_NAL_SEI:
|
case H264_NAL_SEI:
|
||||||
|
if (h->setup_finished) {
|
||||||
|
avpriv_request_sample(avctx, "Late SEI");
|
||||||
|
break;
|
||||||
|
}
|
||||||
ret = ff_h264_sei_decode(&h->sei, &nal->gb, &h->ps, avctx);
|
ret = ff_h264_sei_decode(&h->sei, &nal->gb, &h->ps, avctx);
|
||||||
h->has_recovery_point = h->has_recovery_point || h->sei.recovery_point.recovery_frame_cnt != -1;
|
h->has_recovery_point = h->has_recovery_point || h->sei.recovery_point.recovery_frame_cnt != -1;
|
||||||
if (avctx->debug & FF_DEBUG_GREEN_MD)
|
if (avctx->debug & FF_DEBUG_GREEN_MD)
|
||||||
|
|
|
||||||
|
|
@ -145,11 +145,22 @@ int i, j;
|
||||||
|
|
||||||
if (((intptr_t)dst | (intptr_t)src | stride_dst | stride_src) & 15) {
|
if (((intptr_t)dst | (intptr_t)src | stride_dst | stride_src) & 15) {
|
||||||
for (i = 0; i < height; i++) {
|
for (i = 0; i < height; i++) {
|
||||||
for (j = 0; j < width; j+=8)
|
for (j = 0; j < width - 7; j+=8)
|
||||||
AV_COPY64U(dst+j, src+j);
|
AV_COPY64U(dst+j, src+j);
|
||||||
dst += stride_dst;
|
dst += stride_dst;
|
||||||
src += stride_src;
|
src += stride_src;
|
||||||
}
|
}
|
||||||
|
if (width&7) {
|
||||||
|
dst += ((width>>3)<<3) - stride_dst * height;
|
||||||
|
src += ((width>>3)<<3) - stride_src * height;
|
||||||
|
width &= 7;
|
||||||
|
for (i = 0; i < height; i++) {
|
||||||
|
for (j = 0; j < width; j++)
|
||||||
|
dst[j] = src[j];
|
||||||
|
dst += stride_dst;
|
||||||
|
src += stride_src;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
for (i = 0; i < height; i++) {
|
for (i = 0; i < height; i++) {
|
||||||
for (j = 0; j < width; j+=16)
|
for (j = 0; j < width; j+=16)
|
||||||
|
|
|
||||||
|
|
@ -3154,7 +3154,7 @@ static int hevc_decode_frame(AVCodecContext *avctx, void *data, int *got_output,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* verify the SEI checksum */
|
/* verify the SEI checksum */
|
||||||
if (avctx->err_recognition & AV_EF_CRCCHECK && s->is_decoded &&
|
if (avctx->err_recognition & AV_EF_CRCCHECK && s->ref && s->is_decoded &&
|
||||||
s->sei.picture_hash.is_md5) {
|
s->sei.picture_hash.is_md5) {
|
||||||
ret = verify_md5(s, s->ref->frame);
|
ret = verify_md5(s, s->ref->frame);
|
||||||
if (ret < 0 && avctx->err_recognition & AV_EF_EXPLODE) {
|
if (ret < 0 && avctx->err_recognition & AV_EF_EXPLODE) {
|
||||||
|
|
|
||||||
|
|
@ -313,7 +313,7 @@ static void FUNC(sao_band_filter)(uint8_t *_dst, uint8_t *_src,
|
||||||
offset_table[(k + sao_left_class) & 31] = sao_offset_val[k + 1];
|
offset_table[(k + sao_left_class) & 31] = sao_offset_val[k + 1];
|
||||||
for (y = 0; y < height; y++) {
|
for (y = 0; y < height; y++) {
|
||||||
for (x = 0; x < width; x++)
|
for (x = 0; x < width; x++)
|
||||||
dst[x] = av_clip_pixel(src[x] + offset_table[src[x] >> shift]);
|
dst[x] = av_clip_pixel(src[x] + offset_table[(src[x] >> shift) & 31]);
|
||||||
dst += stride_dst;
|
dst += stride_dst;
|
||||||
src += stride_src;
|
src += stride_src;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -359,6 +359,8 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
|
||||||
case AV_PIX_FMT_GBRAP16BE:
|
case AV_PIX_FMT_GBRAP16BE:
|
||||||
w_align = 16; //FIXME assume 16 pixel per macroblock
|
w_align = 16; //FIXME assume 16 pixel per macroblock
|
||||||
h_align = 16 * 2; // interlaced needs 2 macroblocks height
|
h_align = 16 * 2; // interlaced needs 2 macroblocks height
|
||||||
|
if (s->codec_id == AV_CODEC_ID_BINKVIDEO)
|
||||||
|
w_align = 16*2;
|
||||||
break;
|
break;
|
||||||
case AV_PIX_FMT_YUV411P:
|
case AV_PIX_FMT_YUV411P:
|
||||||
case AV_PIX_FMT_YUVJ411P:
|
case AV_PIX_FMT_YUVJ411P:
|
||||||
|
|
@ -424,12 +426,13 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->codec_id == AV_CODEC_ID_IFF_ILBM) {
|
if (s->codec_id == AV_CODEC_ID_IFF_ILBM) {
|
||||||
w_align = FFMAX(w_align, 8);
|
w_align = FFMAX(w_align, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
*width = FFALIGN(*width, w_align);
|
*width = FFALIGN(*width, w_align);
|
||||||
*height = FFALIGN(*height, h_align);
|
*height = FFALIGN(*height, h_align);
|
||||||
if (s->codec_id == AV_CODEC_ID_H264 || s->lowres ||
|
if (s->codec_id == AV_CODEC_ID_H264 || s->lowres ||
|
||||||
|
s->codec_id == AV_CODEC_ID_VC1 || s->codec_id == AV_CODEC_ID_WMV3 ||
|
||||||
s->codec_id == AV_CODEC_ID_VP5 || s->codec_id == AV_CODEC_ID_VP6 ||
|
s->codec_id == AV_CODEC_ID_VP5 || s->codec_id == AV_CODEC_ID_VP6 ||
|
||||||
s->codec_id == AV_CODEC_ID_VP6F || s->codec_id == AV_CODEC_ID_VP6A
|
s->codec_id == AV_CODEC_ID_VP6F || s->codec_id == AV_CODEC_ID_VP6A
|
||||||
) {
|
) {
|
||||||
|
|
@ -443,6 +446,9 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
|
||||||
// the next rounded up width is 32
|
// the next rounded up width is 32
|
||||||
*width = FFMAX(*width, 32);
|
*width = FFMAX(*width, 32);
|
||||||
}
|
}
|
||||||
|
if (s->codec_id == AV_CODEC_ID_SVQ3) {
|
||||||
|
*width = FFMAX(*width, 32);
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
linesize_align[i] = STRIDE_ALIGN;
|
linesize_align[i] = STRIDE_ALIGN;
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ void FUNC(ff_emulated_edge_mc)(uint8_t *buf, const uint8_t *src,
|
||||||
av_assert2(start_x < end_x && block_w);
|
av_assert2(start_x < end_x && block_w);
|
||||||
|
|
||||||
w = end_x - start_x;
|
w = end_x - start_x;
|
||||||
src += start_y * src_linesize + start_x * sizeof(pixel);
|
src += start_y * src_linesize + start_x * (ptrdiff_t)sizeof(pixel);
|
||||||
buf += start_x * sizeof(pixel);
|
buf += start_x * sizeof(pixel);
|
||||||
|
|
||||||
// top
|
// top
|
||||||
|
|
@ -83,7 +83,7 @@ void FUNC(ff_emulated_edge_mc)(uint8_t *buf, const uint8_t *src,
|
||||||
buf += buf_linesize;
|
buf += buf_linesize;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf -= block_h * buf_linesize + start_x * sizeof(pixel);
|
buf -= block_h * buf_linesize + start_x * (ptrdiff_t)sizeof(pixel);
|
||||||
while (block_h--) {
|
while (block_h--) {
|
||||||
pixel *bufp = (pixel *) buf;
|
pixel *bufp = (pixel *) buf;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -134,6 +134,7 @@ int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const;
|
||||||
*
|
*
|
||||||
* The operation is mathematically equivalent to `a * b / c`, but writing that
|
* The operation is mathematically equivalent to `a * b / c`, but writing that
|
||||||
* directly can overflow, and does not support different rounding methods.
|
* directly can overflow, and does not support different rounding methods.
|
||||||
|
* If the result is not representable then INT64_MIN is returned.
|
||||||
*
|
*
|
||||||
* @see av_rescale(), av_rescale_q(), av_rescale_q_rnd()
|
* @see av_rescale(), av_rescale_q(), av_rescale_q_rnd()
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue