mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Merge remote-tracking branch 'qatar/master'
* qatar/master: yuv4mpeg: reject unsupported codecs nutenc: K&R formatting cosmetics assdec: fix qsort() callback signature configure: detect sparc64 automatically vp8: fix memset() crossing array boundary h264: fix invalid pointer arithmetic amrwbdec: fix invalid pointer arithmetic Conflicts: libavformat/nutenc.c libavformat/yuv4mpeg.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
c73fcc8de3
9
configure
vendored
9
configure
vendored
@ -2745,9 +2745,8 @@ case "$arch" in
|
|||||||
sh4|sh)
|
sh4|sh)
|
||||||
arch="sh4"
|
arch="sh4"
|
||||||
;;
|
;;
|
||||||
sun4u|sparc64)
|
sun4u|sparc*)
|
||||||
arch="sparc"
|
arch="sparc"
|
||||||
subarch="sparc64"
|
|
||||||
;;
|
;;
|
||||||
tilegx|tile-gx)
|
tilegx|tile-gx)
|
||||||
arch="tilegx"
|
arch="tilegx"
|
||||||
@ -2965,7 +2964,7 @@ check_64bit(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
case "$arch" in
|
case "$arch" in
|
||||||
alpha|ia64|sparc)
|
alpha|ia64)
|
||||||
spic=$shared
|
spic=$shared
|
||||||
;;
|
;;
|
||||||
mips)
|
mips)
|
||||||
@ -2979,6 +2978,10 @@ case "$arch" in
|
|||||||
ppc)
|
ppc)
|
||||||
check_64bit ppc ppc64 'sizeof(void *) > 4'
|
check_64bit ppc ppc64 'sizeof(void *) > 4'
|
||||||
;;
|
;;
|
||||||
|
sparc)
|
||||||
|
check_64bit sparc sparc64 'sizeof(void *) > 4'
|
||||||
|
spic=$shared
|
||||||
|
;;
|
||||||
x86)
|
x86)
|
||||||
check_64bit x86_32 x86_64 'sizeof(void *) > 4'
|
check_64bit x86_32 x86_64 'sizeof(void *) > 4'
|
||||||
if test "$subarch" = "x86_64"; then
|
if test "$subarch" = "x86_64"; then
|
||||||
|
@ -918,10 +918,9 @@ static float auto_correlation(float *diff_isf, float mean, int lag)
|
|||||||
static void extrapolate_isf(float isf[LP_ORDER_16k])
|
static void extrapolate_isf(float isf[LP_ORDER_16k])
|
||||||
{
|
{
|
||||||
float diff_isf[LP_ORDER - 2], diff_mean;
|
float diff_isf[LP_ORDER - 2], diff_mean;
|
||||||
float *diff_hi = diff_isf - LP_ORDER + 1; // diff array for extrapolated indexes
|
|
||||||
float corr_lag[3];
|
float corr_lag[3];
|
||||||
float est, scale;
|
float est, scale;
|
||||||
int i, i_max_corr;
|
int i, j, i_max_corr;
|
||||||
|
|
||||||
isf[LP_ORDER_16k - 1] = isf[LP_ORDER - 1];
|
isf[LP_ORDER_16k - 1] = isf[LP_ORDER - 1];
|
||||||
|
|
||||||
@ -952,20 +951,20 @@ static void extrapolate_isf(float isf[LP_ORDER_16k])
|
|||||||
scale = 0.5 * (FFMIN(est, 7600) - isf[LP_ORDER - 2]) /
|
scale = 0.5 * (FFMIN(est, 7600) - isf[LP_ORDER - 2]) /
|
||||||
(isf[LP_ORDER_16k - 2] - isf[LP_ORDER - 2]);
|
(isf[LP_ORDER_16k - 2] - isf[LP_ORDER - 2]);
|
||||||
|
|
||||||
for (i = LP_ORDER - 1; i < LP_ORDER_16k - 1; i++)
|
for (i = LP_ORDER - 1, j = 0; i < LP_ORDER_16k - 1; i++, j++)
|
||||||
diff_hi[i] = scale * (isf[i] - isf[i - 1]);
|
diff_isf[j] = scale * (isf[i] - isf[i - 1]);
|
||||||
|
|
||||||
/* Stability insurance */
|
/* Stability insurance */
|
||||||
for (i = LP_ORDER; i < LP_ORDER_16k - 1; i++)
|
for (i = 1; i < LP_ORDER_16k - LP_ORDER; i++)
|
||||||
if (diff_hi[i] + diff_hi[i - 1] < 5.0) {
|
if (diff_isf[i] + diff_isf[i - 1] < 5.0) {
|
||||||
if (diff_hi[i] > diff_hi[i - 1]) {
|
if (diff_isf[i] > diff_isf[i - 1]) {
|
||||||
diff_hi[i - 1] = 5.0 - diff_hi[i];
|
diff_isf[i - 1] = 5.0 - diff_isf[i];
|
||||||
} else
|
} else
|
||||||
diff_hi[i] = 5.0 - diff_hi[i - 1];
|
diff_isf[i] = 5.0 - diff_isf[i - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = LP_ORDER - 1; i < LP_ORDER_16k - 1; i++)
|
for (i = LP_ORDER - 1, j = 0; i < LP_ORDER_16k - 1; i++, j++)
|
||||||
isf[i] = isf[i - 1] + diff_hi[i] * (1.0f / (1 << 15));
|
isf[i] = isf[i - 1] + diff_isf[j] * (1.0f / (1 << 15));
|
||||||
|
|
||||||
/* Scale the ISF vector for 16000 Hz */
|
/* Scale the ISF vector for 16000 Hz */
|
||||||
for (i = 0; i < LP_ORDER_16k - 1; i++)
|
for (i = 0; i < LP_ORDER_16k - 1; i++)
|
||||||
|
@ -1965,7 +1965,8 @@ static int vp8_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
|
|||||||
// top edge of 127 for intra prediction
|
// top edge of 127 for intra prediction
|
||||||
if (!(avctx->flags & CODEC_FLAG_EMU_EDGE)) {
|
if (!(avctx->flags & CODEC_FLAG_EMU_EDGE)) {
|
||||||
s->top_border[0][15] = s->top_border[0][23] = 127;
|
s->top_border[0][15] = s->top_border[0][23] = 127;
|
||||||
memset(s->top_border[1]-1, 127, s->mb_width*sizeof(*s->top_border)+1);
|
s->top_border[0][31] = 127;
|
||||||
|
memset(s->top_border[1], 127, s->mb_width*sizeof(*s->top_border));
|
||||||
}
|
}
|
||||||
memset(s->ref_count, 0, sizeof(s->ref_count));
|
memset(s->ref_count, 0, sizeof(s->ref_count));
|
||||||
|
|
||||||
|
@ -68,8 +68,9 @@ static int64_t get_pts(const uint8_t *p)
|
|||||||
return sec*100+hsec;
|
return sec*100+hsec;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int event_cmp(uint8_t **a, uint8_t **b)
|
static int event_cmp(const void *_a, const void *_b)
|
||||||
{
|
{
|
||||||
|
const uint8_t *const *a = _a, *const *b = _b;
|
||||||
return get_pts(*a) - get_pts(*b);
|
return get_pts(*a) - get_pts(*b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,7 +132,7 @@ static int read_header(AVFormatContext *s)
|
|||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
|
|
||||||
qsort(ass->event, ass->event_count, sizeof(*ass->event), (void*)event_cmp);
|
qsort(ass->event, ass->event_count, sizeof(*ass->event), event_cmp);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -216,9 +216,8 @@ static int yuv4_write_header(AVFormatContext *s)
|
|||||||
return AVERROR(EIO);
|
return AVERROR(EIO);
|
||||||
|
|
||||||
if (s->streams[0]->codec->codec_id != AV_CODEC_ID_RAWVIDEO) {
|
if (s->streams[0]->codec->codec_id != AV_CODEC_ID_RAWVIDEO) {
|
||||||
av_log(s, AV_LOG_ERROR,
|
av_log(s, AV_LOG_ERROR, "ERROR: Only rawvideo supported.\n");
|
||||||
"A non-rawvideo stream was selected, but yuv4mpeg only handles rawvideo streams\n");
|
return AVERROR_INVALIDDATA;
|
||||||
return AVERROR(EINVAL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (s->streams[0]->codec->pix_fmt) {
|
switch (s->streams[0]->codec->pix_fmt) {
|
||||||
|
Loading…
Reference in New Issue
Block a user