Merge remote-tracking branch 'qatar/master'

* qatar/master:
  asf: only set index_read if the index contained entries.
  cabac: add overread protection to BRANCHLESS_GET_CABAC().
  cabac: increment jump locations by one in callers of BRANCHLESS_GET_CABAC().
  cabac: remove unused argument from BRANCHLESS_GET_CABAC_UPDATE().
  cabac: use struct+offset instead of memory operand in BRANCHLESS_GET_CABAC().
  h264: add overread protection to get_cabac_bypass_sign_x86().
  h264: reindent get_cabac_bypass_sign_x86().
  h264: use struct offsets in get_cabac_bypass_sign_x86().
  h264: fix overreads in cabac reader.
  wmall: fix seeking.
  lagarith: fix buffer overreads.
  dvdec: drop unnecessary dv_tablegen.h #include
  build: fix doc generation errors in parallel builds
  Replace memset(0) by zero initializations.
  faandct: Remove FAAN_POSTSCALE define and related code.
  dvenc: print allowed profiles if the video doesn't conform to any of them.
  avcodec_encode_{audio,video}: only reallocate output packet when it has non-zero size.
  FATE: add a test for vp8 with changing frame size.
  fate: add kgv1 fate test.
  oggdec: calculate correct timestamps in Ogg/FLAC

Conflicts:
	libavcodec/4xm.c
	libavcodec/cook.c
	libavcodec/dvdata.c
	libavcodec/dvdsubdec.c
	libavcodec/lagarith.c
	libavcodec/lagarithrac.c
	libavcodec/utils.c
	tests/fate/video.mak

Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2012-03-29 01:41:04 +02:00
commit d40ff29cac
60 changed files with 604 additions and 293 deletions

View File

@ -51,7 +51,7 @@ doc/%.1: TAG = MAN
doc/%.1: doc/%.pod $(GENTEXI) doc/%.1: doc/%.pod $(GENTEXI)
$(M)pod2man --section=1 --center=" " --release=" " $< > $@ $(M)pod2man --section=1 --center=" " --release=" " $< > $@
$(DOCS): | doc $(DOCS): | doc/
install-progs-$(CONFIG_DOC): install-man install-progs-$(CONFIG_DOC): install-man

View File

@ -1416,7 +1416,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts1, int64_
/* if the frame is not skipped, then display it */ /* if the frame is not skipped, then display it */
if (vp->bmp) { if (vp->bmp) {
AVPicture pict; AVPicture pict = { { 0 } };
#if CONFIG_AVFILTER #if CONFIG_AVFILTER
if (vp->picref) if (vp->picref)
avfilter_unref_buffer(vp->picref); avfilter_unref_buffer(vp->picref);
@ -1426,7 +1426,6 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts1, int64_
/* get a pointer on the bitmap */ /* get a pointer on the bitmap */
SDL_LockYUVOverlay (vp->bmp); SDL_LockYUVOverlay (vp->bmp);
memset(&pict, 0, sizeof(AVPicture));
pict.data[0] = vp->bmp->pixels[0]; pict.data[0] = vp->bmp->pixels[0];
pict.data[1] = vp->bmp->pixels[2]; pict.data[1] = vp->bmp->pixels[2];
pict.data[2] = vp->bmp->pixels[1]; pict.data[2] = vp->bmp->pixels[1];

View File

@ -339,8 +339,7 @@ static int resolve_host(struct in_addr *sin_addr, const char *hostname)
if (!ff_inet_aton(hostname, sin_addr)) { if (!ff_inet_aton(hostname, sin_addr)) {
#if HAVE_GETADDRINFO #if HAVE_GETADDRINFO
struct addrinfo *ai, *cur; struct addrinfo *ai, *cur;
struct addrinfo hints; struct addrinfo hints = { 0 };
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET; hints.ai_family = AF_INET;
if (getaddrinfo(hostname, NULL, &hints, &ai)) if (getaddrinfo(hostname, NULL, &hints, &ai))
return -1; return -1;
@ -2835,7 +2834,7 @@ static int rtsp_parse_request(HTTPContext *c)
char protocol[32]; char protocol[32];
char line[1024]; char line[1024];
int len; int len;
RTSPMessageHeader header1, *header = &header1; RTSPMessageHeader header1 = { 0 }, *header = &header1;
c->buffer_ptr[0] = '\0'; c->buffer_ptr[0] = '\0';
p = c->buffer; p = c->buffer;
@ -2861,7 +2860,6 @@ static int rtsp_parse_request(HTTPContext *c)
} }
/* parse each header line */ /* parse each header line */
memset(header, 0, sizeof(*header));
/* skip to next line */ /* skip to next line */
while (*p != '\n' && *p != '\0') while (*p != '\n' && *p != '\0')
p++; p++;
@ -4664,7 +4662,7 @@ static const OptionDef options[] = {
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
struct sigaction sigact; struct sigaction sigact = { { 0 } };
parse_loglevel(argc, argv, options); parse_loglevel(argc, argv, options);
av_register_all(); av_register_all();
@ -4682,7 +4680,6 @@ int main(int argc, char **argv)
av_lfg_init(&random_state, av_get_random_seed()); av_lfg_init(&random_state, av_get_random_seed());
memset(&sigact, 0, sizeof(sigact));
sigact.sa_handler = handle_child_exit; sigact.sa_handler = handle_child_exit;
sigact.sa_flags = SA_NOCLDSTOP | SA_RESTART; sigact.sa_flags = SA_NOCLDSTOP | SA_RESTART;
sigaction(SIGCHLD, &sigact, 0); sigaction(SIGCHLD, &sigact, 0);

View File

@ -578,7 +578,7 @@ static int decode_i_mb(FourXContext *f)
static const uint8_t *read_huffman_tables(FourXContext *f, static const uint8_t *read_huffman_tables(FourXContext *f,
const uint8_t * const buf, int buf_size) const uint8_t * const buf, int buf_size)
{ {
int frequency[512]; int frequency[512] = { 0 };
uint8_t flag[512]; uint8_t flag[512];
int up[512]; int up[512];
uint8_t len_tab[257]; uint8_t len_tab[257];
@ -588,7 +588,6 @@ static const uint8_t *read_huffman_tables(FourXContext *f,
const uint8_t *ptr_end = buf + buf_size; const uint8_t *ptr_end = buf + buf_size;
int j; int j;
memset(frequency, 0, sizeof(frequency));
memset(up, -1, sizeof(up)); memset(up, -1, sizeof(up));
start = *ptr++; start = *ptr++;
@ -691,10 +690,9 @@ static int decode_i2_frame(FourXContext *f, const uint8_t *buf, int length)
for (y = 0; y < height; y += 16) { for (y = 0; y < height; y += 16) {
for (x = 0; x < width; x += 16) { for (x = 0; x < width; x += 16) {
unsigned int color[4], bits; unsigned int color[4] = { 0 }, bits;
if (buf_end - buf < 8) if (buf_end - buf < 8)
return -1; return -1;
memset(color, 0, sizeof(color));
// warning following is purely guessed ... // warning following is purely guessed ...
color[0] = bytestream2_get_le16u(&g3); color[0] = bytestream2_get_le16u(&g3);
color[1] = bytestream2_get_le16u(&g3); color[1] = bytestream2_get_le16u(&g3);

View File

@ -714,7 +714,7 @@ static void search_for_quantizers_twoloop(AVCodecContext *avctx,
{ {
int start = 0, i, w, w2, g; int start = 0, i, w, w2, g;
int destbits = avctx->bit_rate * 1024.0 / avctx->sample_rate / avctx->channels; int destbits = avctx->bit_rate * 1024.0 / avctx->sample_rate / avctx->channels;
float dists[128], uplims[128]; float dists[128] = { 0 }, uplims[128];
float maxvals[128]; float maxvals[128];
int fflag, minscaler; int fflag, minscaler;
int its = 0; int its = 0;
@ -722,7 +722,6 @@ static void search_for_quantizers_twoloop(AVCodecContext *avctx,
float minthr = INFINITY; float minthr = INFINITY;
//XXX: some heuristic to determine initial quantizers will reduce search time //XXX: some heuristic to determine initial quantizers will reduce search time
memset(dists, 0, sizeof(dists));
//determine zero bands and upper limits //determine zero bands and upper limits
for (w = 0; w < sce->ics.num_windows; w += sce->ics.group_len[w]) { for (w = 0; w < sce->ics.num_windows; w += sce->ics.group_len[w]) {
for (g = 0; g < sce->ics.num_swb; g++) { for (g = 0; g < sce->ics.num_swb; g++) {

View File

@ -389,9 +389,8 @@ static av_unused FFPsyWindowInfo psy_3gpp_window(FFPsyContext *ctx,
AacPsyChannel *pch = &pctx->ch[channel]; AacPsyChannel *pch = &pctx->ch[channel];
uint8_t grouping = 0; uint8_t grouping = 0;
int next_type = pch->next_window_seq; int next_type = pch->next_window_seq;
FFPsyWindowInfo wi; FFPsyWindowInfo wi = { { 0 } };
memset(&wi, 0, sizeof(wi));
if (la) { if (la) {
float s[8], v; float s[8], v;
int switch_to_eight = 0; int switch_to_eight = 0;
@ -785,9 +784,8 @@ static FFPsyWindowInfo psy_lame_window(FFPsyContext *ctx, const float *audio,
int uselongblock = 1; int uselongblock = 1;
int attacks[AAC_NUM_BLOCKS_SHORT + 1] = { 0 }; int attacks[AAC_NUM_BLOCKS_SHORT + 1] = { 0 };
int i; int i;
FFPsyWindowInfo wi; FFPsyWindowInfo wi = { { 0 } };
memset(&wi, 0, sizeof(wi));
if (la) { if (la) {
float hpfsmpl[AAC_BLOCK_SIZE_LONG]; float hpfsmpl[AAC_BLOCK_SIZE_LONG];
float const *pf = hpfsmpl; float const *pf = hpfsmpl;

View File

@ -753,9 +753,7 @@ static int decode_audio_block(AC3DecodeContext *s, int blk)
int downmix_output; int downmix_output;
int cpl_in_use; int cpl_in_use;
GetBitContext *gbc = &s->gbc; GetBitContext *gbc = &s->gbc;
uint8_t bit_alloc_stages[AC3_MAX_CHANNELS]; uint8_t bit_alloc_stages[AC3_MAX_CHANNELS] = { 0 };
memset(bit_alloc_stages, 0, AC3_MAX_CHANNELS);
/* block switch flags */ /* block switch flags */
different_transforms = 0; different_transforms = 0;

View File

@ -1035,9 +1035,7 @@ static int decode_blocks_ind(ALSDecContext *ctx, unsigned int ra_frame,
unsigned int *js_blocks) unsigned int *js_blocks)
{ {
unsigned int b; unsigned int b;
ALSBlockData bd; ALSBlockData bd = { 0 };
memset(&bd, 0, sizeof(ALSBlockData));
bd.ra_block = ra_frame; bd.ra_block = ra_frame;
bd.const_block = ctx->const_block; bd.const_block = ctx->const_block;
@ -1078,9 +1076,7 @@ static int decode_blocks(ALSDecContext *ctx, unsigned int ra_frame,
ALSSpecificConfig *sconf = &ctx->sconf; ALSSpecificConfig *sconf = &ctx->sconf;
unsigned int offset = 0; unsigned int offset = 0;
unsigned int b; unsigned int b;
ALSBlockData bd[2]; ALSBlockData bd[2] = { { 0 } };
memset(bd, 0, 2 * sizeof(ALSBlockData));
bd[0].ra_block = ra_frame; bd[0].ra_block = ra_frame;
bd[0].const_block = ctx->const_block; bd[0].const_block = ctx->const_block;
@ -1346,7 +1342,7 @@ static int read_frame_data(ALSDecContext *ctx, unsigned int ra_frame)
sizeof(*ctx->raw_samples[c]) * sconf->max_order); sizeof(*ctx->raw_samples[c]) * sconf->max_order);
} }
} else { // multi-channel coding } else { // multi-channel coding
ALSBlockData bd; ALSBlockData bd = { 0 };
int b; int b;
int *reverted_channels = ctx->reverted_channels; int *reverted_channels = ctx->reverted_channels;
unsigned int offset = 0; unsigned int offset = 0;
@ -1357,7 +1353,6 @@ static int read_frame_data(ALSDecContext *ctx, unsigned int ra_frame)
return -1; return -1;
} }
memset(&bd, 0, sizeof(ALSBlockData));
memset(reverted_channels, 0, sizeof(*reverted_channels) * avctx->channels); memset(reverted_channels, 0, sizeof(*reverted_channels) * avctx->channels);
bd.ra_block = ra_frame; bd.ra_block = ra_frame;

View File

@ -233,7 +233,7 @@ static void merge(GetBitContext *gb, uint8_t *dst, uint8_t *src, int size)
*/ */
static void read_tree(GetBitContext *gb, Tree *tree) static void read_tree(GetBitContext *gb, Tree *tree)
{ {
uint8_t tmp1[16], tmp2[16], *in = tmp1, *out = tmp2; uint8_t tmp1[16] = { 0 }, tmp2[16], *in = tmp1, *out = tmp2;
int i, t, len; int i, t, len;
tree->vlc_num = get_bits(gb, 4); tree->vlc_num = get_bits(gb, 4);
@ -244,7 +244,6 @@ static void read_tree(GetBitContext *gb, Tree *tree)
} }
if (get_bits1(gb)) { if (get_bits1(gb)) {
len = get_bits(gb, 3); len = get_bits(gb, 3);
memset(tmp1, 0, sizeof(tmp1));
for (i = 0; i <= len; i++) { for (i = 0; i <= len; i++) {
tree->syms[i] = get_bits(gb, 4); tree->syms[i] = get_bits(gb, 4);
tmp1[tree->syms[i]] = 1; tmp1[tree->syms[i]] = 1;

View File

@ -47,7 +47,7 @@ static void refill(CABACContext *c){
c->low+= c->bytestream[0]<<1; c->low+= c->bytestream[0]<<1;
#endif #endif
c->low -= CABAC_MASK; c->low -= CABAC_MASK;
c->bytestream+= CABAC_BITS/8; c->bytestream += CABAC_BITS / 8;
} }
static inline void renorm_cabac_decoder_once(CABACContext *c){ static inline void renorm_cabac_decoder_once(CABACContext *c){
@ -74,7 +74,7 @@ static void refill2(CABACContext *c){
#endif #endif
c->low += x<<i; c->low += x<<i;
c->bytestream+= CABAC_BITS/8; c->bytestream += CABAC_BITS/8;
} }
static av_always_inline int get_cabac_inline(CABACContext *c, uint8_t * const state){ static av_always_inline int get_cabac_inline(CABACContext *c, uint8_t * const state){

View File

@ -411,10 +411,10 @@ static void categorize(COOKContext *q, COOKSubpacket *p, const int *quant_index_
int *category, int *category_index) int *category, int *category_index)
{ {
int exp_idx, bias, tmpbias1, tmpbias2, bits_left, num_bits, index, v, i, j; int exp_idx, bias, tmpbias1, tmpbias2, bits_left, num_bits, index, v, i, j;
int exp_index2[102]; int exp_index2[102] = { 0 };
int exp_index1[102]; int exp_index1[102] = { 0 };
int tmp_categorize_array[128 * 2]; int tmp_categorize_array[128 * 2] = { 0 };
int tmp_categorize_array1_idx = p->numvector_size; int tmp_categorize_array1_idx = p->numvector_size;
int tmp_categorize_array2_idx = p->numvector_size; int tmp_categorize_array2_idx = p->numvector_size;
@ -426,10 +426,6 @@ static void categorize(COOKContext *q, COOKSubpacket *p, const int *quant_index_
//av_log(q->avctx, AV_LOG_ERROR, "bits_left = %d\n",bits_left); //av_log(q->avctx, AV_LOG_ERROR, "bits_left = %d\n",bits_left);
} }
memset(&exp_index1, 0, sizeof(exp_index1));
memset(&exp_index2, 0, sizeof(exp_index2));
memset(&tmp_categorize_array, 0, sizeof(tmp_categorize_array));
bias = -32; bias = -32;
/* Estimate bias. */ /* Estimate bias. */
@ -649,14 +645,11 @@ static void decode_vectors(COOKContext *q, COOKSubpacket *p, int *category,
*/ */
static int mono_decode(COOKContext *q, COOKSubpacket *p, float *mlt_buffer) static int mono_decode(COOKContext *q, COOKSubpacket *p, float *mlt_buffer)
{ {
int category_index[128]; int category_index[128] = { 0 };
int category[128] = { 0 };
int quant_index_table[102]; int quant_index_table[102];
int category[128];
int res, i; int res, i;
memset(&category, 0, sizeof(category));
memset(&category_index, 0, sizeof(category_index));
if ((res = decode_envelope(q, p, quant_index_table)) < 0) if ((res = decode_envelope(q, p, quant_index_table)) < 0)
return res; return res;
q->num_vectors = get_bits(&q->gb, p->log2_numvector_size); q->num_vectors = get_bits(&q->gb, p->log2_numvector_size);
@ -829,13 +822,12 @@ static int joint_decode(COOKContext *q, COOKSubpacket *p, float *mlt_buffer1,
float *mlt_buffer2) float *mlt_buffer2)
{ {
int i, j, res; int i, j, res;
int decouple_tab[SUBBAND_SIZE]; int decouple_tab[SUBBAND_SIZE] = { 0 };
float *decode_buffer = q->decode_buffer_0; float *decode_buffer = q->decode_buffer_0;
int idx, cpl_tmp; int idx, cpl_tmp;
float f1, f2; float f1, f2;
const float *cplscale; const float *cplscale;
memset(decouple_tab, 0, sizeof(decouple_tab));
memset(decode_buffer, 0, sizeof(q->decode_buffer_0)); memset(decode_buffer, 0, sizeof(q->decode_buffer_0));
/* Make sure the buffers are zeroed out. */ /* Make sure the buffers are zeroed out. */

View File

@ -74,17 +74,11 @@ struct algo {
int nonspec; int nonspec;
}; };
#ifndef FAAN_POSTSCALE
#define FAAN_SCALE SCALE_PERM
#else
#define FAAN_SCALE NO_PERM
#endif
static int cpu_flags; static int cpu_flags;
static const struct algo fdct_tab[] = { static const struct algo fdct_tab[] = {
{ "REF-DBL", ff_ref_fdct, NO_PERM }, { "REF-DBL", ff_ref_fdct, NO_PERM },
{ "FAAN", ff_faandct, FAAN_SCALE }, { "FAAN", ff_faandct, NO_PERM },
{ "IJG-AAN-INT", ff_fdct_ifast, SCALE_PERM }, { "IJG-AAN-INT", ff_fdct_ifast, SCALE_PERM },
{ "IJG-LLM-INT", ff_jpeg_fdct_islow_8, NO_PERM }, { "IJG-LLM-INT", ff_jpeg_fdct_islow_8, NO_PERM },

View File

@ -323,9 +323,11 @@ av_cold int ff_dvvideo_init(AVCodecContext *avctx)
static av_cold int dvvideo_init_encoder(AVCodecContext *avctx) static av_cold int dvvideo_init_encoder(AVCodecContext *avctx)
{ {
if (!avpriv_dv_codec_profile(avctx)) { if (!avpriv_dv_codec_profile(avctx)) {
av_log(avctx, AV_LOG_ERROR, "Found no DV profile for %ix%i %s video\n", av_log(avctx, AV_LOG_ERROR, "Found no DV profile for %ix%i %s video. "
"Valid DV profiles are:\n",
avctx->width, avctx->height, av_get_pix_fmt_name(avctx->pix_fmt)); avctx->width, avctx->height, av_get_pix_fmt_name(avctx->pix_fmt));
return -1; ff_dv_print_profiles(avctx, AV_LOG_ERROR);
return AVERROR(EINVAL);
} }
return ff_dvvideo_init(avctx); return ff_dvvideo_init(avctx);

View File

@ -26,6 +26,7 @@
#include "libavutil/rational.h" #include "libavutil/rational.h"
#include "libavutil/intreadwrite.h" #include "libavutil/intreadwrite.h"
#include "libavutil/pixdesc.h"
#include "avcodec.h" #include "avcodec.h"
#include "dvdata.h" #include "dvdata.h"
@ -345,3 +346,14 @@ const DVprofile* avpriv_dv_codec_profile(AVCodecContext* codec)
return NULL; return NULL;
} }
void ff_dv_print_profiles(void *logctx, int loglevel)
{
int i;
for (i = 0; i < FF_ARRAY_ELEMS(dv_profiles); i++) {
const DVprofile *p = &dv_profiles[i];
av_log(logctx, loglevel, "Frame size: %dx%d; pixel format: %s, "
"framerate: %d/%d\n", p->width, p->height, av_get_pix_fmt_name(p->pix_fmt),
p->time_base.den, p->time_base.num);
}
}

View File

@ -156,4 +156,9 @@ static inline void dv_calculate_mb_xy(DVVideoContext *s, DVwork_chunk *work_chun
} }
} }
/**
* Print all allowed DV profiles into logctx at specified logging level.
*/
void ff_dv_print_profiles(void *logctx, int loglevel);
#endif /* AVCODEC_DVDATA_H */ #endif /* AVCODEC_DVDATA_H */

View File

@ -43,7 +43,6 @@
#include "simple_idct.h" #include "simple_idct.h"
#include "dvdata.h" #include "dvdata.h"
#include "dvquant.h" #include "dvquant.h"
#include "dv_tablegen.h"
typedef struct BlockInfo { typedef struct BlockInfo {
const uint32_t *factor_table; const uint32_t *factor_table;

View File

@ -135,7 +135,7 @@ static void guess_palette(uint32_t *rgba_palette,
{0x00, 0x80, 0xff}, {0x00, 0x80, 0xff},
{0x00, 0x55, 0xaa, 0xff}, {0x00, 0x55, 0xaa, 0xff},
}; };
uint8_t color_used[16]; uint8_t color_used[16] = { 0 };
int nb_opaque_colors, i, level, j, r, g, b; int nb_opaque_colors, i, level, j, r, g, b;
uint8_t *colormap = ctx->colormap, *alpha = ctx->alpha; uint8_t *colormap = ctx->colormap, *alpha = ctx->alpha;
@ -149,7 +149,6 @@ static void guess_palette(uint32_t *rgba_palette,
for(i = 0; i < 4; i++) for(i = 0; i < 4; i++)
rgba_palette[i] = 0; rgba_palette[i] = 0;
memset(color_used, 0, 16);
nb_opaque_colors = 0; nb_opaque_colors = 0;
for(i = 0; i < 4; i++) { for(i = 0; i < 4; i++) {
if (alpha[i] != 0 && !color_used[colormap[i]]) { if (alpha[i] != 0 && !color_used[colormap[i]]) {
@ -397,14 +396,13 @@ static int is_transp(const uint8_t *buf, int pitch, int n,
/* return 0 if empty rectangle, 1 if non empty */ /* return 0 if empty rectangle, 1 if non empty */
static int find_smallest_bounding_rectangle(AVSubtitle *s) static int find_smallest_bounding_rectangle(AVSubtitle *s)
{ {
uint8_t transp_color[256]; uint8_t transp_color[256] = { 0 };
int y1, y2, x1, x2, y, w, h, i; int y1, y2, x1, x2, y, w, h, i;
uint8_t *bitmap; uint8_t *bitmap;
if (s->num_rects == 0 || s->rects == NULL || s->rects[0]->w <= 0 || s->rects[0]->h <= 0) if (s->num_rects == 0 || s->rects == NULL || s->rects[0]->w <= 0 || s->rects[0]->h <= 0)
return 0; return 0;
memset(transp_color, 0, 256);
for(i = 0; i < s->rects[0]->nb_colors; i++) { for(i = 0; i < s->rects[0]->nb_colors; i++) {
if ((((uint32_t*)s->rects[0]->pict.data[1])[i] >> 24) == 0) if ((((uint32_t*)s->rects[0]->pict.data[1])[i] >> 24) == 0)
transp_color[i] = 1; transp_color[i] = 1;

View File

@ -86,7 +86,7 @@ int ff_dxva2_common_end_frame(AVCodecContext *avctx, MpegEncContext *s,
struct dxva_context *ctx = avctx->hwaccel_context; struct dxva_context *ctx = avctx->hwaccel_context;
unsigned buffer_count = 0; unsigned buffer_count = 0;
DXVA2_DecodeBufferDesc buffer[4]; DXVA2_DecodeBufferDesc buffer[4];
DXVA2_DecodeExecuteParams exec; DXVA2_DecodeExecuteParams exec = { 0 };
int result; int result;
if (FAILED(IDirectXVideoDecoder_BeginFrame(ctx->decoder, if (FAILED(IDirectXVideoDecoder_BeginFrame(ctx->decoder,
@ -132,7 +132,6 @@ int ff_dxva2_common_end_frame(AVCodecContext *avctx, MpegEncContext *s,
assert(buffer_count == 1 + (qm_size > 0) + 2); assert(buffer_count == 1 + (qm_size > 0) + 2);
memset(&exec, 0, sizeof(exec));
exec.NumCompBuffers = buffer_count; exec.NumCompBuffers = buffer_count;
exec.pCompressedBuffers = buffer; exec.pCompressedBuffers = buffer;
exec.pExtensionData = NULL; exec.pExtensionData = NULL;

View File

@ -29,11 +29,6 @@
#include "faandct.h" #include "faandct.h"
#define FLOAT float #define FLOAT float
#ifdef FAAN_POSTSCALE
# define SCALE(x) postscale[x]
#else
# define SCALE(x) 1
#endif
//numbers generated by simple c code (not as accurate as they could be) //numbers generated by simple c code (not as accurate as they could be)
/* /*
@ -150,13 +145,13 @@ void ff_faandct(DCTELEM * data)
tmp11= tmp1 + tmp2; tmp11= tmp1 + tmp2;
tmp12= tmp1 - tmp2; tmp12= tmp1 - tmp2;
data[8*0 + i]= lrintf(SCALE(8*0 + i) * (tmp10 + tmp11)); data[8*0 + i]= lrintf(postscale[8*0 + i] * (tmp10 + tmp11));
data[8*4 + i]= lrintf(SCALE(8*4 + i) * (tmp10 - tmp11)); data[8*4 + i]= lrintf(postscale[8*4 + i] * (tmp10 - tmp11));
tmp12 += tmp13; tmp12 += tmp13;
tmp12 *= A1; tmp12 *= A1;
data[8*2 + i]= lrintf(SCALE(8*2 + i) * (tmp13 + tmp12)); data[8*2 + i]= lrintf(postscale[8*2 + i] * (tmp13 + tmp12));
data[8*6 + i]= lrintf(SCALE(8*6 + i) * (tmp13 - tmp12)); data[8*6 + i]= lrintf(postscale[8*6 + i] * (tmp13 - tmp12));
tmp4 += tmp5; tmp4 += tmp5;
tmp5 += tmp6; tmp5 += tmp6;
@ -175,10 +170,10 @@ void ff_faandct(DCTELEM * data)
z11= tmp7 + tmp5; z11= tmp7 + tmp5;
z13= tmp7 - tmp5; z13= tmp7 - tmp5;
data[8*5 + i]= lrintf(SCALE(8*5 + i) * (z13 + z2)); data[8*5 + i]= lrintf(postscale[8*5 + i] * (z13 + z2));
data[8*3 + i]= lrintf(SCALE(8*3 + i) * (z13 - z2)); data[8*3 + i]= lrintf(postscale[8*3 + i] * (z13 - z2));
data[8*1 + i]= lrintf(SCALE(8*1 + i) * (z11 + z4)); data[8*1 + i]= lrintf(postscale[8*1 + i] * (z11 + z4));
data[8*7 + i]= lrintf(SCALE(8*7 + i) * (z11 - z4)); data[8*7 + i]= lrintf(postscale[8*7 + i] * (z11 - z4));
} }
} }
@ -208,25 +203,25 @@ void ff_faandct248(DCTELEM * data)
tmp12 = tmp1 - tmp2; tmp12 = tmp1 - tmp2;
tmp13 = tmp0 - tmp3; tmp13 = tmp0 - tmp3;
data[8*0 + i] = lrintf(SCALE(8*0 + i) * (tmp10 + tmp11)); data[8*0 + i] = lrintf(postscale[8*0 + i] * (tmp10 + tmp11));
data[8*4 + i] = lrintf(SCALE(8*4 + i) * (tmp10 - tmp11)); data[8*4 + i] = lrintf(postscale[8*4 + i] * (tmp10 - tmp11));
tmp12 += tmp13; tmp12 += tmp13;
tmp12 *= A1; tmp12 *= A1;
data[8*2 + i] = lrintf(SCALE(8*2 + i) * (tmp13 + tmp12)); data[8*2 + i] = lrintf(postscale[8*2 + i] * (tmp13 + tmp12));
data[8*6 + i] = lrintf(SCALE(8*6 + i) * (tmp13 - tmp12)); data[8*6 + i] = lrintf(postscale[8*6 + i] * (tmp13 - tmp12));
tmp10 = tmp4 + tmp7; tmp10 = tmp4 + tmp7;
tmp11 = tmp5 + tmp6; tmp11 = tmp5 + tmp6;
tmp12 = tmp5 - tmp6; tmp12 = tmp5 - tmp6;
tmp13 = tmp4 - tmp7; tmp13 = tmp4 - tmp7;
data[8*1 + i] = lrintf(SCALE(8*0 + i) * (tmp10 + tmp11)); data[8*1 + i] = lrintf(postscale[8*0 + i] * (tmp10 + tmp11));
data[8*5 + i] = lrintf(SCALE(8*4 + i) * (tmp10 - tmp11)); data[8*5 + i] = lrintf(postscale[8*4 + i] * (tmp10 - tmp11));
tmp12 += tmp13; tmp12 += tmp13;
tmp12 *= A1; tmp12 *= A1;
data[8*3 + i] = lrintf(SCALE(8*2 + i) * (tmp13 + tmp12)); data[8*3 + i] = lrintf(postscale[8*2 + i] * (tmp13 + tmp12));
data[8*7 + i] = lrintf(SCALE(8*6 + i) * (tmp13 - tmp12)); data[8*7 + i] = lrintf(postscale[8*6 + i] * (tmp13 - tmp12));
} }
} }

View File

@ -31,8 +31,6 @@
#include "dsputil.h" #include "dsputil.h"
#define FAAN_POSTSCALE
void ff_faandct(DCTELEM * data); void ff_faandct(DCTELEM * data);
void ff_faandct248(DCTELEM * data); void ff_faandct248(DCTELEM * data);

View File

@ -573,8 +573,7 @@ static int flac_parse(AVCodecParserContext *s, AVCodecContext *avctx,
av_fifo_generic_write(fpc->fifo_buf, (void*) read_start, av_fifo_generic_write(fpc->fifo_buf, (void*) read_start,
read_end - read_start, NULL); read_end - read_start, NULL);
} else { } else {
int8_t pad[MAX_FRAME_HEADER_SIZE]; int8_t pad[MAX_FRAME_HEADER_SIZE] = { 0 };
memset(pad, 0, sizeof(pad));
av_fifo_generic_write(fpc->fifo_buf, (void*) pad, sizeof(pad), NULL); av_fifo_generic_write(fpc->fifo_buf, (void*) pad, sizeof(pad), NULL);
} }

View File

@ -152,10 +152,8 @@ static void spatial_compensation_0(uint8_t *src , uint8_t *dst, int linesize){
int x,y; int x,y;
unsigned int p;//power divided by 2 unsigned int p;//power divided by 2
int a; int a;
uint16_t left_sum[2][8]; uint16_t left_sum[2][8] = { { 0 } };
uint16_t top_sum[2][8]; uint16_t top_sum[2][8] = { { 0 } };
memset(left_sum,0,2*8*sizeof(uint16_t));
memset( top_sum,0,2*8*sizeof(uint16_t));
for(i=0;i<8;i++){ for(i=0;i<8;i++){
a=src[area2+7-i]<<4; a=src[area2+7-i]<<4;

View File

@ -210,8 +210,7 @@ static inline void ls_encode_line(JLSState *state, PutBitContext *pb, void *last
static void ls_store_lse(JLSState *state, PutBitContext *pb){ static void ls_store_lse(JLSState *state, PutBitContext *pb){
/* Test if we have default params and don't need to store LSE */ /* Test if we have default params and don't need to store LSE */
JLSState state2; JLSState state2 = { 0 };
memset(&state2, 0, sizeof(JLSState));
state2.bpp = state->bpp; state2.bpp = state->bpp;
state2.near = state->near; state2.near = state->near;
ff_jpegls_reset_coding_parameters(&state2, 1); ff_jpegls_reset_coding_parameters(&state2, 1);

View File

@ -251,21 +251,22 @@ static void lag_pred_line(LagarithContext *l, uint8_t *buf,
/* Left prediction only for first line */ /* Left prediction only for first line */
L = l->dsp.add_hfyu_left_prediction(buf + 1, buf + 1, L = l->dsp.add_hfyu_left_prediction(buf + 1, buf + 1,
width - 1, buf[0]); width - 1, buf[0]);
return;
}
/* Left pixel is actually prev_row[width] */
L = buf[width - stride - 1];
if (line == 1) {
/* Second line, left predict first pixel, the rest of the line is median predicted
* NOTE: In the case of RGB this pixel is top predicted */
TL = l->avctx->pix_fmt == PIX_FMT_YUV420P ? buf[-stride] : L;
} else { } else {
/* Top left is 2 rows back, last pixel */ /* Left pixel is actually prev_row[width] */
TL = buf[width - (2 * stride) - 1]; L = buf[width - stride - 1];
}
add_lag_median_prediction(buf, buf - stride, buf, if (line == 1) {
width, &L, &TL); /* Second line, left predict first pixel, the rest of the line is median predicted
* NOTE: In the case of RGB this pixel is top predicted */
TL = l->avctx->pix_fmt == PIX_FMT_YUV420P ? buf[-stride] : L;
} else {
/* Top left is 2 rows back, last pixel */
TL = buf[width - (2 * stride) - 1];
}
add_lag_median_prediction(buf, buf - stride, buf,
width, &L, &TL);
}
} }
static int lag_decode_line(LagarithContext *l, lag_rac *rac, static int lag_decode_line(LagarithContext *l, lag_rac *rac,
@ -311,13 +312,13 @@ handle_zeros:
} }
static int lag_decode_zero_run_line(LagarithContext *l, uint8_t *dst, static int lag_decode_zero_run_line(LagarithContext *l, uint8_t *dst,
const uint8_t *src, const uint8_t *srcend, int width, const uint8_t *src, const uint8_t *src_end,
int esc_count) int width, int esc_count)
{ {
int i = 0; int i = 0;
int count; int count;
uint8_t zero_run = 0; uint8_t zero_run = 0;
const uint8_t *start = src; const uint8_t *src_start = src;
uint8_t mask1 = -(esc_count < 2); uint8_t mask1 = -(esc_count < 2);
uint8_t mask2 = -(esc_count < 3); uint8_t mask2 = -(esc_count < 3);
uint8_t *end = dst + (width - 2); uint8_t *end = dst + (width - 2);
@ -334,8 +335,8 @@ output_zeros:
i = 0; i = 0;
while (!zero_run && dst + i < end) { while (!zero_run && dst + i < end) {
i++; i++;
if (i+2 >= srcend - src) if (i+2 >= src_end - src)
return src - start; return AVERROR_INVALIDDATA;
zero_run = zero_run =
!(src[i] | (src[i + 1] & mask1) | (src[i + 2] & mask2)); !(src[i] | (src[i + 1] & mask1) | (src[i + 2] & mask2));
} }
@ -351,9 +352,10 @@ output_zeros:
} else { } else {
memcpy(dst, src, i); memcpy(dst, src, i);
src += i; src += i;
dst += i;
} }
} }
return src - start; return src - src_start;
} }
@ -369,7 +371,7 @@ static int lag_decode_arith_plane(LagarithContext *l, uint8_t *dst,
int esc_count; int esc_count;
GetBitContext gb; GetBitContext gb;
lag_rac rac; lag_rac rac;
const uint8_t *srcend = src + src_size; const uint8_t *src_end = src + src_size;
rac.avctx = l->avctx; rac.avctx = l->avctx;
l->zeros = 0; l->zeros = 0;
@ -406,12 +408,16 @@ static int lag_decode_arith_plane(LagarithContext *l, uint8_t *dst,
esc_count -= 4; esc_count -= 4;
if (esc_count > 0) { if (esc_count > 0) {
/* Zero run coding only, no range coding. */ /* Zero run coding only, no range coding. */
for (i = 0; i < height; i++) for (i = 0; i < height; i++) {
src += lag_decode_zero_run_line(l, dst + (i * stride), src, srcend, int res = lag_decode_zero_run_line(l, dst + (i * stride), src,
width, esc_count); src_end, width, esc_count);
if (res < 0)
return res;
src += res;
}
} else { } else {
if (src_size < height * width) if (src_size < width * height)
return -1; return AVERROR_INVALIDDATA; // buffer not big enough
/* Plane is stored uncompressed */ /* Plane is stored uncompressed */
for (i = 0; i < height; i++) { for (i = 0; i < height; i++) {
memcpy(dst + (i * stride), src, width); memcpy(dst + (i * stride), src, width);
@ -518,15 +524,18 @@ static int lag_decode_frame(AVCodecContext *avctx,
} }
for (i = 0; i < planes; i++) for (i = 0; i < planes; i++)
srcs[i] = l->rgb_planes + (i + 1) * l->rgb_stride * avctx->height - l->rgb_stride; srcs[i] = l->rgb_planes + (i + 1) * l->rgb_stride * avctx->height - l->rgb_stride;
for (i = 0; i < planes; i++) { for (i = 0; i < planes; i++)
if (buf_size <= offs[i]) { if (buf_size <= offs[i]) {
av_log(avctx, AV_LOG_ERROR,
"Invalid frame offsets\n");
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
for (i = 0; i < planes; i++)
lag_decode_arith_plane(l, srcs[i], lag_decode_arith_plane(l, srcs[i],
avctx->width, avctx->height, avctx->width, avctx->height,
-l->rgb_stride, buf + offs[i], -l->rgb_stride, buf + offs[i],
buf_size - offs[i]); buf_size - offs[i]);
}
dst = p->data[0]; dst = p->data[0];
for (i = 0; i < planes; i++) for (i = 0; i < planes; i++)
srcs[i] = l->rgb_planes + i * l->rgb_stride * avctx->height; srcs[i] = l->rgb_planes + i * l->rgb_stride * avctx->height;
@ -563,6 +572,14 @@ static int lag_decode_frame(AVCodecContext *avctx,
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
if (offset_ry >= buf_size ||
offset_gu >= buf_size ||
offset_bv >= buf_size) {
av_log(avctx, AV_LOG_ERROR,
"Invalid frame offsets\n");
return AVERROR_INVALIDDATA;
}
lag_decode_arith_plane(l, p->data[0], avctx->width, avctx->height, lag_decode_arith_plane(l, p->data[0], avctx->width, avctx->height,
p->linesize[0], buf + offset_ry, p->linesize[0], buf + offset_ry,
buf_size - offset_ry); buf_size - offset_ry);

View File

@ -32,15 +32,17 @@
void ff_lag_rac_init(lag_rac *l, GetBitContext *gb, int length) void ff_lag_rac_init(lag_rac *l, GetBitContext *gb, int length)
{ {
int i, j; int i, j, left;
/* According to reference decoder "1st byte is garbage", /* According to reference decoder "1st byte is garbage",
* however, it gets skipped by the call to align_get_bits() * however, it gets skipped by the call to align_get_bits()
*/ */
align_get_bits(gb); align_get_bits(gb);
left = get_bits_left(gb) >> 3;
l->bytestream_start = l->bytestream_start =
l->bytestream = gb->buffer + get_bits_count(gb) / 8; l->bytestream = gb->buffer + get_bits_count(gb) / 8;
l->bytestream_end = l->bytestream_start + get_bits_left(gb) / 8; l->bytestream_end = l->bytestream_start + left;
l->range = 0x80; l->range = 0x80;
l->low = *l->bytestream >> 1; l->low = *l->bytestream >> 1;
l->hash_shift = FFMAX(l->scale - 8, 0); l->hash_shift = FFMAX(l->scale - 8, 0);

View File

@ -36,8 +36,8 @@ extern unsigned int xvid_debug;
int ff_xvid_rate_control_init(MpegEncContext *s){ int ff_xvid_rate_control_init(MpegEncContext *s){
char *tmp_name; char *tmp_name;
int fd, i; int fd, i;
xvid_plg_create_t xvid_plg_create; xvid_plg_create_t xvid_plg_create = { 0 };
xvid_plugin_2pass2_t xvid_2pass2; xvid_plugin_2pass2_t xvid_2pass2 = { 0 };
//xvid_debug=-1; //xvid_debug=-1;
@ -67,7 +67,6 @@ int ff_xvid_rate_control_init(MpegEncContext *s){
close(fd); close(fd);
memset(&xvid_2pass2, 0, sizeof(xvid_2pass2));
xvid_2pass2.version= XVID_MAKE_VERSION(1,1,0); xvid_2pass2.version= XVID_MAKE_VERSION(1,1,0);
xvid_2pass2.filename= tmp_name; xvid_2pass2.filename= tmp_name;
xvid_2pass2.bitrate= s->avctx->bit_rate; xvid_2pass2.bitrate= s->avctx->bit_rate;
@ -75,7 +74,6 @@ int ff_xvid_rate_control_init(MpegEncContext *s){
xvid_2pass2.vbv_maxrate= s->avctx->rc_max_rate; xvid_2pass2.vbv_maxrate= s->avctx->rc_max_rate;
xvid_2pass2.vbv_initial= s->avctx->rc_initial_buffer_occupancy; xvid_2pass2.vbv_initial= s->avctx->rc_initial_buffer_occupancy;
memset(&xvid_plg_create, 0, sizeof(xvid_plg_create));
xvid_plg_create.version= XVID_MAKE_VERSION(1,1,0); xvid_plg_create.version= XVID_MAKE_VERSION(1,1,0);
xvid_plg_create.fbase= s->avctx->time_base.den; xvid_plg_create.fbase= s->avctx->time_base.den;
xvid_plg_create.fincr= s->avctx->time_base.num; xvid_plg_create.fincr= s->avctx->time_base.num;
@ -89,9 +87,8 @@ int ff_xvid_rate_control_init(MpegEncContext *s){
} }
float ff_xvid_rate_estimate_qscale(MpegEncContext *s, int dry_run){ float ff_xvid_rate_estimate_qscale(MpegEncContext *s, int dry_run){
xvid_plg_data_t xvid_plg_data; xvid_plg_data_t xvid_plg_data = { 0 };
memset(&xvid_plg_data, 0, sizeof(xvid_plg_data));
xvid_plg_data.version= XVID_MAKE_VERSION(1,1,0); xvid_plg_data.version= XVID_MAKE_VERSION(1,1,0);
xvid_plg_data.width = s->width; xvid_plg_data.width = s->width;
xvid_plg_data.height= s->height; xvid_plg_data.height= s->height;

View File

@ -94,11 +94,11 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) {
uint16_t *intra, *inter; uint16_t *intra, *inter;
int fd; int fd;
xvid_plugin_single_t single; xvid_plugin_single_t single = { 0 };
struct xvid_ff_pass1 rc2pass1; struct xvid_ff_pass1 rc2pass1 = { 0 };
xvid_plugin_2pass2_t rc2pass2; xvid_plugin_2pass2_t rc2pass2 = { 0 };
xvid_gbl_init_t xvid_gbl_init; xvid_gbl_init_t xvid_gbl_init = { 0 };
xvid_enc_create_t xvid_enc_create; xvid_enc_create_t xvid_enc_create = { 0 };
xvid_enc_plugin_t plugins[7]; xvid_enc_plugin_t plugins[7];
/* Bring in VOP flags from ffmpeg command-line */ /* Bring in VOP flags from ffmpeg command-line */
@ -168,7 +168,6 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) {
x->me_flags |= XVID_ME_QUARTERPELREFINE8; x->me_flags |= XVID_ME_QUARTERPELREFINE8;
} }
memset(&xvid_gbl_init, 0, sizeof(xvid_gbl_init));
xvid_gbl_init.version = XVID_VERSION; xvid_gbl_init.version = XVID_VERSION;
xvid_gbl_init.debug = 0; xvid_gbl_init.debug = 0;
@ -189,7 +188,6 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) {
xvid_global(NULL, XVID_GBL_INIT, &xvid_gbl_init, NULL); xvid_global(NULL, XVID_GBL_INIT, &xvid_gbl_init, NULL);
/* Create the encoder reference */ /* Create the encoder reference */
memset(&xvid_enc_create, 0, sizeof(xvid_enc_create));
xvid_enc_create.version = XVID_VERSION; xvid_enc_create.version = XVID_VERSION;
/* Store the desired frame size */ /* Store the desired frame size */
@ -214,7 +212,6 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) {
x->twopassfile = NULL; x->twopassfile = NULL;
if( xvid_flags & CODEC_FLAG_PASS1 ) { if( xvid_flags & CODEC_FLAG_PASS1 ) {
memset(&rc2pass1, 0, sizeof(struct xvid_ff_pass1));
rc2pass1.version = XVID_VERSION; rc2pass1.version = XVID_VERSION;
rc2pass1.context = x; rc2pass1.context = x;
x->twopassbuffer = av_malloc(BUFFER_SIZE); x->twopassbuffer = av_malloc(BUFFER_SIZE);
@ -230,7 +227,6 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) {
plugins[xvid_enc_create.num_plugins].param = &rc2pass1; plugins[xvid_enc_create.num_plugins].param = &rc2pass1;
xvid_enc_create.num_plugins++; xvid_enc_create.num_plugins++;
} else if( xvid_flags & CODEC_FLAG_PASS2 ) { } else if( xvid_flags & CODEC_FLAG_PASS2 ) {
memset(&rc2pass2, 0, sizeof(xvid_plugin_2pass2_t));
rc2pass2.version = XVID_VERSION; rc2pass2.version = XVID_VERSION;
rc2pass2.bitrate = avctx->bit_rate; rc2pass2.bitrate = avctx->bit_rate;
@ -262,7 +258,6 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) {
xvid_enc_create.num_plugins++; xvid_enc_create.num_plugins++;
} else if( !(xvid_flags & CODEC_FLAG_QSCALE) ) { } else if( !(xvid_flags & CODEC_FLAG_QSCALE) ) {
/* Single Pass Bitrate Control! */ /* Single Pass Bitrate Control! */
memset(&single, 0, sizeof(xvid_plugin_single_t));
single.version = XVID_VERSION; single.version = XVID_VERSION;
single.bitrate = avctx->bit_rate; single.bitrate = avctx->bit_rate;
@ -382,16 +377,14 @@ static int xvid_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
int mb_width = (avctx->width + 15) / 16; int mb_width = (avctx->width + 15) / 16;
int mb_height = (avctx->height + 15) / 16; int mb_height = (avctx->height + 15) / 16;
xvid_enc_frame_t xvid_enc_frame; xvid_enc_frame_t xvid_enc_frame = { 0 };
xvid_enc_stats_t xvid_enc_stats; xvid_enc_stats_t xvid_enc_stats = { 0 };
if ((ret = ff_alloc_packet2(avctx, pkt, mb_width*mb_height*MAX_MB_BYTES + FF_MIN_BUFFER_SIZE)) < 0) if ((ret = ff_alloc_packet2(avctx, pkt, mb_width*mb_height*MAX_MB_BYTES + FF_MIN_BUFFER_SIZE)) < 0)
return ret; return ret;
/* Start setting up the frame */ /* Start setting up the frame */
memset(&xvid_enc_frame, 0, sizeof(xvid_enc_frame));
xvid_enc_frame.version = XVID_VERSION; xvid_enc_frame.version = XVID_VERSION;
memset(&xvid_enc_stats, 0, sizeof(xvid_enc_stats));
xvid_enc_stats.version = XVID_VERSION; xvid_enc_stats.version = XVID_VERSION;
*p = *picture; *p = *picture;

View File

@ -47,14 +47,13 @@ static int build_vlc(VLC *vlc, const uint8_t *bits_table,
const uint8_t *val_table, int nb_codes, const uint8_t *val_table, int nb_codes,
int use_static, int is_ac) int use_static, int is_ac)
{ {
uint8_t huff_size[256]; uint8_t huff_size[256] = { 0 };
uint16_t huff_code[256]; uint16_t huff_code[256];
uint16_t huff_sym[256]; uint16_t huff_sym[256];
int i; int i;
assert(nb_codes <= 256); assert(nb_codes <= 256);
memset(huff_size, 0, sizeof(huff_size));
ff_mjpeg_build_huffman_codes(huff_size, huff_code, bits_table, val_table); ff_mjpeg_build_huffman_codes(huff_size, huff_code, bits_table, val_table);
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)

View File

@ -1435,9 +1435,8 @@ static inline int bidir_refine(MpegEncContext * s, int mb_x, int mb_y)
#define HASH(fx,fy,bx,by) ((fx)+17*(fy)+63*(bx)+117*(by)) #define HASH(fx,fy,bx,by) ((fx)+17*(fy)+63*(bx)+117*(by))
#define HASH8(fx,fy,bx,by) ((uint8_t)HASH(fx,fy,bx,by)) #define HASH8(fx,fy,bx,by) ((uint8_t)HASH(fx,fy,bx,by))
int hashidx= HASH(motion_fx,motion_fy, motion_bx, motion_by); int hashidx= HASH(motion_fx,motion_fy, motion_bx, motion_by);
uint8_t map[256]; uint8_t map[256] = { 0 };
memset(map,0,sizeof(map));
map[hashidx&255] = 1; map[hashidx&255] = 1;
fbmin= check_bidir_mv(s, motion_fx, motion_fy, fbmin= check_bidir_mv(s, motion_fx, motion_fy,

View File

@ -304,11 +304,8 @@ static av_cold void decode_init_static(void)
for (i = 1; i < 16; i++) { for (i = 1; i < 16; i++) {
const HuffTable *h = &mpa_huff_tables[i]; const HuffTable *h = &mpa_huff_tables[i];
int xsize, x, y; int xsize, x, y;
uint8_t tmp_bits [512]; uint8_t tmp_bits [512] = { 0 };
uint16_t tmp_codes[512]; uint16_t tmp_codes[512] = { 0 };
memset(tmp_bits , 0, sizeof(tmp_bits ));
memset(tmp_codes, 0, sizeof(tmp_codes));
xsize = h->xsize; xsize = h->xsize;

View File

@ -80,11 +80,8 @@ void ff_convert_matrix(DSPContext *dsp, int (*qmat)[64],
for (qscale = qmin; qscale <= qmax; qscale++) { for (qscale = qmin; qscale <= qmax; qscale++) {
int i; int i;
if (dsp->fdct == ff_jpeg_fdct_islow_8 || if (dsp->fdct == ff_jpeg_fdct_islow_8 ||
dsp->fdct == ff_jpeg_fdct_islow_10 dsp->fdct == ff_jpeg_fdct_islow_10 ||
#ifdef FAAN_POSTSCALE dsp->fdct == ff_faandct) {
|| dsp->fdct == ff_faandct
#endif
) {
for (i = 0; i < 64; i++) { for (i = 0; i < 64; i++) {
const int j = dsp->idct_permutation[i]; const int j = dsp->idct_permutation[i];
/* 16 <= qscale * quant_matrix[i] <= 7905 /* 16 <= qscale * quant_matrix[i] <= 7905
@ -96,11 +93,7 @@ void ff_convert_matrix(DSPContext *dsp, int (*qmat)[64],
qmat[qscale][i] = (int)((UINT64_C(1) << QMAT_SHIFT) / qmat[qscale][i] = (int)((UINT64_C(1) << QMAT_SHIFT) /
(qscale * quant_matrix[j])); (qscale * quant_matrix[j]));
} }
} else if (dsp->fdct == ff_fdct_ifast } else if (dsp->fdct == ff_fdct_ifast) {
#ifndef FAAN_POSTSCALE
|| dsp->fdct == ff_faandct
#endif
) {
for (i = 0; i < 64; i++) { for (i = 0; i < 64; i++) {
const int j = dsp->idct_permutation[i]; const int j = dsp->idct_permutation[i];
/* 16 <= qscale * quant_matrix[i] <= 7905 /* 16 <= qscale * quant_matrix[i] <= 7905
@ -138,11 +131,7 @@ void ff_convert_matrix(DSPContext *dsp, int (*qmat)[64],
for (i = intra; i < 64; i++) { for (i = intra; i < 64; i++) {
int64_t max = 8191; int64_t max = 8191;
if (dsp->fdct == ff_fdct_ifast if (dsp->fdct == ff_fdct_ifast) {
#ifndef FAAN_POSTSCALE
|| dsp->fdct == ff_faandct
#endif
) {
max = (8191LL * ff_aanscales[i]) >> 14; max = (8191LL * ff_aanscales[i]) >> 14;
} }
while (((max * qmat[qscale][i]) >> shift) > INT_MAX) { while (((max * qmat[qscale][i]) >> shift) > INT_MAX) {
@ -3516,11 +3505,7 @@ static int dct_quantize_trellis_c(MpegEncContext *s,
int dct_coeff= FFABS(block[ scantable[i] ]); int dct_coeff= FFABS(block[ scantable[i] ]);
int best_score=256*256*256*120; int best_score=256*256*256*120;
if ( s->dsp.fdct == ff_fdct_ifast if (s->dsp.fdct == ff_fdct_ifast)
#ifndef FAAN_POSTSCALE
|| s->dsp.fdct == ff_faandct
#endif
)
dct_coeff= (dct_coeff*ff_inv_aanscales[ scantable[i] ]) >> 12; dct_coeff= (dct_coeff*ff_inv_aanscales[ scantable[i] ]) >> 12;
zero_distortion= dct_coeff*dct_coeff; zero_distortion= dct_coeff*dct_coeff;

View File

@ -342,7 +342,7 @@ static void ra144_encode_subblock(RA144Context *ractx,
const int16_t *lpc_coefs, unsigned int rms, const int16_t *lpc_coefs, unsigned int rms,
PutBitContext *pb) PutBitContext *pb)
{ {
float data[BLOCKSIZE], work[LPC_ORDER + BLOCKSIZE]; float data[BLOCKSIZE] = { 0 }, work[LPC_ORDER + BLOCKSIZE];
float coefs[LPC_ORDER]; float coefs[LPC_ORDER];
float zero[BLOCKSIZE], cba[BLOCKSIZE], cb1[BLOCKSIZE], cb2[BLOCKSIZE]; float zero[BLOCKSIZE], cba[BLOCKSIZE], cb1[BLOCKSIZE], cb2[BLOCKSIZE];
int16_t cba_vect[BLOCKSIZE]; int16_t cba_vect[BLOCKSIZE];
@ -360,7 +360,6 @@ static void ra144_encode_subblock(RA144Context *ractx,
* Calculate the zero-input response of the LPC filter and subtract it from * Calculate the zero-input response of the LPC filter and subtract it from
* input data. * input data.
*/ */
memset(data, 0, sizeof(data));
ff_celp_lp_synthesis_filterf(work + LPC_ORDER, coefs, data, BLOCKSIZE, ff_celp_lp_synthesis_filterf(work + LPC_ORDER, coefs, data, BLOCKSIZE,
LPC_ORDER); LPC_ORDER);
for (i = 0; i < BLOCKSIZE; i++) { for (i = 0; i < BLOCKSIZE; i++) {

View File

@ -119,7 +119,7 @@ int main(void){
uint8_t b[9*SIZE]; uint8_t b[9*SIZE];
uint8_t r[9*SIZE]; uint8_t r[9*SIZE];
int i; int i;
uint8_t state[10]= {0}; uint8_t state[10];
AVLFG prng; AVLFG prng;
av_lfg_init(&prng, 1); av_lfg_init(&prng, 1);

View File

@ -554,7 +554,7 @@ static void rv34_pred_mv_b(RV34DecContext *r, int block_type, int dir)
MpegEncContext *s = &r->s; MpegEncContext *s = &r->s;
int mb_pos = s->mb_x + s->mb_y * s->mb_stride; int mb_pos = s->mb_x + s->mb_y * s->mb_stride;
int mv_pos = s->mb_x * 2 + s->mb_y * 2 * s->b8_stride; int mv_pos = s->mb_x * 2 + s->mb_y * 2 * s->b8_stride;
int A[2], B[2], C[2]; int A[2] = { 0 }, B[2] = { 0 }, C[2] = { 0 };
int has_A = 0, has_B = 0, has_C = 0; int has_A = 0, has_B = 0, has_C = 0;
int mx, my; int mx, my;
int i, j; int i, j;
@ -562,9 +562,6 @@ static void rv34_pred_mv_b(RV34DecContext *r, int block_type, int dir)
const int mask = dir ? MB_TYPE_L1 : MB_TYPE_L0; const int mask = dir ? MB_TYPE_L1 : MB_TYPE_L0;
int type = cur_pic->f.mb_type[mb_pos]; int type = cur_pic->f.mb_type[mb_pos];
memset(A, 0, sizeof(A));
memset(B, 0, sizeof(B));
memset(C, 0, sizeof(C));
if((r->avail_cache[6-1] & type) & mask){ if((r->avail_cache[6-1] & type) & mask){
A[0] = cur_pic->f.motion_val[dir][mv_pos - 1][0]; A[0] = cur_pic->f.motion_val[dir][mv_pos - 1][0];
A[1] = cur_pic->f.motion_val[dir][mv_pos - 1][1]; A[1] = cur_pic->f.motion_val[dir][mv_pos - 1][1];

View File

@ -180,7 +180,7 @@ static int smacker_decode_header_tree(SmackVContext *smk, GetBitContext *gb, int
int res; int res;
HuffContext huff; HuffContext huff;
HuffContext tmp1, tmp2; HuffContext tmp1, tmp2;
VLC vlc[2]; VLC vlc[2] = { { 0 } };
int escapes[3]; int escapes[3];
DBCtx ctx; DBCtx ctx;
int err = 0; int err = 0;
@ -204,9 +204,6 @@ static int smacker_decode_header_tree(SmackVContext *smk, GetBitContext *gb, int
tmp2.lengths = av_mallocz(256 * sizeof(int)); tmp2.lengths = av_mallocz(256 * sizeof(int));
tmp2.values = av_mallocz(256 * sizeof(int)); tmp2.values = av_mallocz(256 * sizeof(int));
memset(&vlc[0], 0, sizeof(VLC));
memset(&vlc[1], 0, sizeof(VLC));
if(get_bits1(gb)) { if(get_bits1(gb)) {
smacker_decode_tree(gb, &tmp1, 0, 0); smacker_decode_tree(gb, &tmp1, 0, 0);
skip_bits1(gb); skip_bits1(gb);
@ -597,8 +594,8 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data,
const uint8_t *buf = avpkt->data; const uint8_t *buf = avpkt->data;
int buf_size = avpkt->size; int buf_size = avpkt->size;
GetBitContext gb; GetBitContext gb;
HuffContext h[4]; HuffContext h[4] = { { 0 } };
VLC vlc[4]; VLC vlc[4] = { { 0 } };
int16_t *samples; int16_t *samples;
uint8_t *samples8; uint8_t *samples8;
int val; int val;
@ -641,8 +638,6 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data,
samples = (int16_t *)s->frame.data[0]; samples = (int16_t *)s->frame.data[0];
samples8 = s->frame.data[0]; samples8 = s->frame.data[0];
memset(vlc, 0, sizeof(VLC) * 4);
memset(h, 0, sizeof(HuffContext) * 4);
// Initialize // Initialize
for(i = 0; i < (1 << (bits + stereo)); i++) { for(i = 0; i < (1 << (bits + stereo)); i++) {
h[i].length = 256; h[i].length = 256;

View File

@ -82,10 +82,9 @@ static unsigned tget(const uint8_t **p, int type, int le) {
#if CONFIG_ZLIB #if CONFIG_ZLIB
static int tiff_uncompress(uint8_t *dst, unsigned long *len, const uint8_t *src, int size) static int tiff_uncompress(uint8_t *dst, unsigned long *len, const uint8_t *src, int size)
{ {
z_stream zstream; z_stream zstream = { 0 };
int zret; int zret;
memset(&zstream, 0, sizeof(zstream));
zstream.next_in = src; zstream.next_in = src;
zstream.avail_in = size; zstream.avail_in = size;
zstream.next_out = dst; zstream.next_out = dst;

View File

@ -310,7 +310,7 @@ static int truemotion1_decode_header(TrueMotion1Context *s)
int width_shift = 0; int width_shift = 0;
int new_pix_fmt; int new_pix_fmt;
struct frame_header header; struct frame_header header;
uint8_t header_buffer[128]; /* logical maximum size of the header */ uint8_t header_buffer[128] = { 0 }; /* logical maximum size of the header */
const uint8_t *sel_vector_table; const uint8_t *sel_vector_table;
header.header_size = ((s->buf[0] >> 5) | (s->buf[0] << 3)) & 0x7f; header.header_size = ((s->buf[0] >> 5) | (s->buf[0] << 3)) & 0x7f;
@ -321,7 +321,6 @@ static int truemotion1_decode_header(TrueMotion1Context *s)
} }
/* unscramble the header bytes with a XOR operation */ /* unscramble the header bytes with a XOR operation */
memset(header_buffer, 0, 128);
for (i = 1; i < header.header_size; i++) for (i = 1; i < header.header_size; i++)
header_buffer[i - 1] = s->buf[i] ^ s->buf[i + 1]; header_buffer[i - 1] = s->buf[i] ^ s->buf[i + 1];

View File

@ -903,6 +903,7 @@ static int decode_subframe(WmallDecodeCtx *s)
} else if (!s->cdlms[0][0].order) { } else if (!s->cdlms[0][0].order) {
av_log(s->avctx, AV_LOG_DEBUG, av_log(s->avctx, AV_LOG_DEBUG,
"Waiting for seekable tile\n"); "Waiting for seekable tile\n");
s->frame.nb_samples = 0;
return -1; return -1;
} }
@ -1265,6 +1266,17 @@ static int decode_packet(AVCodecContext *avctx, void *data, int *got_frame_ptr,
return (s->packet_loss) ? AVERROR_INVALIDDATA : get_bits_count(gb) >> 3; return (s->packet_loss) ? AVERROR_INVALIDDATA : get_bits_count(gb) >> 3;
} }
static void flush(AVCodecContext *avctx)
{
WmallDecodeCtx *s = avctx->priv_data;
s->packet_loss = 1;
s->packet_done = 0;
s->num_saved_bits = 0;
s->frame_offset = 0;
s->next_packet_start = 0;
s->cdlms[0][0].order = 0;
s->frame.nb_samples = 0;
}
AVCodec ff_wmalossless_decoder = { AVCodec ff_wmalossless_decoder = {
.name = "wmalossless", .name = "wmalossless",
@ -1273,6 +1285,7 @@ AVCodec ff_wmalossless_decoder = {
.priv_data_size = sizeof(WmallDecodeCtx), .priv_data_size = sizeof(WmallDecodeCtx),
.init = decode_init, .init = decode_init,
.decode = decode_packet, .decode = decode_packet,
.flush = flush,
.capabilities = CODEC_CAP_SUBFRAMES | CODEC_CAP_DR1 | CODEC_CAP_DELAY, .capabilities = CODEC_CAP_SUBFRAMES | CODEC_CAP_DR1 | CODEC_CAP_DELAY,
.long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio Lossless"), .long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio Lossless"),
}; };

View File

@ -521,7 +521,7 @@ static int decode_subframe_length(WMAProDecodeCtx *s, int offset)
*/ */
static int decode_tilehdr(WMAProDecodeCtx *s) static int decode_tilehdr(WMAProDecodeCtx *s)
{ {
uint16_t num_samples[WMAPRO_MAX_CHANNELS]; /**< sum of samples for all currently known subframes of a channel */ uint16_t num_samples[WMAPRO_MAX_CHANNELS] = { 0 };/**< sum of samples for all currently known subframes of a channel */
uint8_t contains_subframe[WMAPRO_MAX_CHANNELS]; /**< flag indicating if a channel contains the current subframe */ uint8_t contains_subframe[WMAPRO_MAX_CHANNELS]; /**< flag indicating if a channel contains the current subframe */
int channels_for_cur_subframe = s->num_channels; /**< number of channels that contain the current subframe */ int channels_for_cur_subframe = s->num_channels; /**< number of channels that contain the current subframe */
int fixed_channel_layout = 0; /**< flag indicating that all channels use the same subframe offsets and sizes */ int fixed_channel_layout = 0; /**< flag indicating that all channels use the same subframe offsets and sizes */
@ -538,8 +538,6 @@ static int decode_tilehdr(WMAProDecodeCtx *s)
for (c = 0; c < s->num_channels; c++) for (c = 0; c < s->num_channels; c++)
s->channel[c].num_subframes = 0; s->channel[c].num_subframes = 0;
memset(num_samples, 0, sizeof(num_samples));
if (s->max_num_subframes == 1 || get_bits1(&s->gb)) if (s->max_num_subframes == 1 || get_bits1(&s->gb))
fixed_channel_layout = 1; fixed_channel_layout = 1;

View File

@ -318,10 +318,9 @@ static av_cold int decode_vbmtree(GetBitContext *gb, int8_t vbm_tree[25])
0x0ffc, 0x0ffd, 0x0ffe, // 1111111111+00/01/10 0x0ffc, 0x0ffd, 0x0ffe, // 1111111111+00/01/10
0x3ffc, 0x3ffd, 0x3ffe, 0x3fff // 111111111111+xx 0x3ffc, 0x3ffd, 0x3ffe, 0x3fff // 111111111111+xx
}; };
int cntr[8], n, res; int cntr[8] = { 0 }, n, res;
memset(vbm_tree, 0xff, sizeof(vbm_tree[0]) * 25); memset(vbm_tree, 0xff, sizeof(vbm_tree[0]) * 25);
memset(cntr, 0, sizeof(cntr));
for (n = 0; n < 17; n++) { for (n = 0; n < 17; n++) {
res = get_bits(gb, 3); res = get_bits(gb, 3);
if (cntr[res] > 3) // should be >= 3 + (res == 7)) if (cntr[res] > 3) // should be >= 3 + (res == 7))

View File

@ -27,7 +27,7 @@
#include "config.h" #include "config.h"
#if HAVE_FAST_CMOV #if HAVE_FAST_CMOV
#define BRANCHLESS_GET_CABAC_UPDATE(ret, statep, low, lowword, range, tmp)\ #define BRANCHLESS_GET_CABAC_UPDATE(ret, statep, low, range, tmp)\
"mov "tmp" , %%ecx \n\t"\ "mov "tmp" , %%ecx \n\t"\
"shl $17 , "tmp" \n\t"\ "shl $17 , "tmp" \n\t"\
"cmp "low" , "tmp" \n\t"\ "cmp "low" , "tmp" \n\t"\
@ -37,7 +37,7 @@
"xor %%ecx , "ret" \n\t"\ "xor %%ecx , "ret" \n\t"\
"sub "tmp" , "low" \n\t" "sub "tmp" , "low" \n\t"
#else /* HAVE_FAST_CMOV */ #else /* HAVE_FAST_CMOV */
#define BRANCHLESS_GET_CABAC_UPDATE(ret, statep, low, lowword, range, tmp)\ #define BRANCHLESS_GET_CABAC_UPDATE(ret, statep, low, range, tmp)\
"mov "tmp" , %%ecx \n\t"\ "mov "tmp" , %%ecx \n\t"\
"shl $17 , "tmp" \n\t"\ "shl $17 , "tmp" \n\t"\
"sub "low" , "tmp" \n\t"\ "sub "low" , "tmp" \n\t"\
@ -51,20 +51,20 @@
"xor "tmp" , "ret" \n\t" "xor "tmp" , "ret" \n\t"
#endif /* HAVE_FAST_CMOV */ #endif /* HAVE_FAST_CMOV */
#define BRANCHLESS_GET_CABAC(ret, statep, low, lowword, range, tmp, tmpbyte, byte) \ #define BRANCHLESS_GET_CABAC(ret, statep, low, lowword, range, tmp, tmpbyte, byte, end) \
"movzbl "statep" , "ret" \n\t"\ "movzbl "statep" , "ret" \n\t"\
"mov "range" , "tmp" \n\t"\ "mov "range" , "tmp" \n\t"\
"and $0xC0 , "range" \n\t"\ "and $0xC0 , "range" \n\t"\
"movzbl "MANGLE(ff_h264_lps_range)"("ret", "range", 2), "range" \n\t"\ "movzbl "MANGLE(ff_h264_lps_range)"("ret", "range", 2), "range" \n\t"\
"sub "range" , "tmp" \n\t"\ "sub "range" , "tmp" \n\t"\
BRANCHLESS_GET_CABAC_UPDATE(ret, statep, low, lowword, range, tmp) \ BRANCHLESS_GET_CABAC_UPDATE(ret, statep, low, range, tmp) \
"movzbl " MANGLE(ff_h264_norm_shift) "("range"), %%ecx \n\t"\ "movzbl " MANGLE(ff_h264_norm_shift) "("range"), %%ecx \n\t"\
"shl %%cl , "range" \n\t"\ "shl %%cl , "range" \n\t"\
"movzbl "MANGLE(ff_h264_mlps_state)"+128("ret"), "tmp" \n\t"\ "movzbl "MANGLE(ff_h264_mlps_state)"+128("ret"), "tmp" \n\t"\
"shl %%cl , "low" \n\t"\ "shl %%cl , "low" \n\t"\
"mov "tmpbyte" , "statep" \n\t"\ "mov "tmpbyte" , "statep" \n\t"\
"test "lowword" , "lowword" \n\t"\ "test "lowword" , "lowword" \n\t"\
" jnz 1f \n\t"\ " jnz 2f \n\t"\
"mov "byte" , %%"REG_c" \n\t"\ "mov "byte" , %%"REG_c" \n\t"\
"add"OPSIZE" $2 , "byte" \n\t"\ "add"OPSIZE" $2 , "byte" \n\t"\
"movzwl (%%"REG_c") , "tmp" \n\t"\ "movzwl (%%"REG_c") , "tmp" \n\t"\
@ -79,7 +79,7 @@
"add $7 , %%ecx \n\t"\ "add $7 , %%ecx \n\t"\
"shl %%cl , "tmp" \n\t"\ "shl %%cl , "tmp" \n\t"\
"add "tmp" , "low" \n\t"\ "add "tmp" , "low" \n\t"\
"1: \n\t" "2: \n\t"
#if HAVE_7REGS && !defined(BROKEN_RELOCATIONS) && !(defined(__i386) && defined(__clang__) && (__clang_major__<2 || (__clang_major__==2 && __clang_minor__<10)))\ #if HAVE_7REGS && !defined(BROKEN_RELOCATIONS) && !(defined(__i386) && defined(__clang__) && (__clang_major__<2 || (__clang_major__==2 && __clang_minor__<10)))\
@ -91,11 +91,13 @@ static av_always_inline int get_cabac_inline_x86(CABACContext *c,
int bit, tmp; int bit, tmp;
__asm__ volatile( __asm__ volatile(
BRANCHLESS_GET_CABAC("%0", "(%5)", "%1", "%w1", "%2", BRANCHLESS_GET_CABAC("%0", "(%4)", "%1", "%w1",
"%3", "%b3", "%4") "%2", "%3", "%b3",
:"=&r"(bit), "+&r"(c->low), "+&r"(c->range), "=&q"(tmp), "%a6(%5)", "%a7(%5)")
"+m"(c->bytestream) : "=&r"(bit), "+&r"(c->low), "+&r"(c->range), "=&q"(tmp)
:"r"(state) : "r"(state), "r"(c),
"i"(offsetof(CABACContext, bytestream)),
"i"(offsetof(CABACContext, bytestream_end))
: "%"REG_c, "memory" : "%"REG_c, "memory"
); );
return bit & 1; return bit & 1;
@ -107,32 +109,36 @@ static av_always_inline int get_cabac_bypass_sign_x86(CABACContext *c, int val)
{ {
x86_reg tmp; x86_reg tmp;
__asm__ volatile( __asm__ volatile(
"movl %4, %k1 \n\t" "movl %a6(%2), %k1 \n\t"
"movl %2, %%eax \n\t" "movl %a3(%2), %%eax \n\t"
"shl $17, %k1 \n\t" "shl $17, %k1 \n\t"
"add %%eax, %%eax \n\t" "add %%eax, %%eax \n\t"
"sub %k1, %%eax \n\t" "sub %k1, %%eax \n\t"
"cltd \n\t" "cltd \n\t"
"and %%edx, %k1 \n\t" "and %%edx, %k1 \n\t"
"add %k1, %%eax \n\t" "add %k1, %%eax \n\t"
"xor %%edx, %%ecx \n\t" "xor %%edx, %%ecx \n\t"
"sub %%edx, %%ecx \n\t" "sub %%edx, %%ecx \n\t"
"test %%ax, %%ax \n\t" "test %%ax, %%ax \n\t"
" jnz 1f \n\t" "jnz 1f \n\t"
"mov %3, %1 \n\t" "mov %a4(%2), %1 \n\t"
"subl $0xFFFF, %%eax \n\t" "subl $0xFFFF, %%eax \n\t"
"movzwl (%1), %%edx \n\t" "movzwl (%1), %%edx \n\t"
"bswap %%edx \n\t" "bswap %%edx \n\t"
"shrl $15, %%edx \n\t" "shrl $15, %%edx \n\t"
"add $2, %1 \n\t" "add $2, %1 \n\t"
"addl %%edx, %%eax \n\t" "addl %%edx, %%eax \n\t"
"mov %1, %3 \n\t" "mov %1, %a4(%2) \n\t"
"1: \n\t" "1: \n\t"
"movl %%eax, %2 \n\t" "movl %%eax, %a3(%2) \n\t"
:"+c"(val), "=&r"(tmp), "+m"(c->low), "+m"(c->bytestream) : "+c"(val), "=&r"(tmp)
:"m"(c->range) : "r"(c),
: "%eax", "%edx" "i"(offsetof(CABACContext, low)),
"i"(offsetof(CABACContext, bytestream)),
"i"(offsetof(CABACContext, bytestream_end)),
"i"(offsetof(CABACContext, range))
: "%eax", "%edx", "memory"
); );
return val; return val;
} }

View File

@ -46,17 +46,19 @@ static int decode_significance_x86(CABACContext *c, int max_coeff,
int bit; int bit;
x86_reg coeff_count; x86_reg coeff_count;
__asm__ volatile( __asm__ volatile(
"2: \n\t" "3: \n\t"
BRANCHLESS_GET_CABAC("%4", "(%1)", "%3", BRANCHLESS_GET_CABAC("%4", "(%1)", "%3", "%w3",
"%w3", "%5", "%k0", "%b0", "%6") "%5", "%k0", "%b0",
"%a11(%6)", "%a12(%6)")
"test $1, %4 \n\t" "test $1, %4 \n\t"
" jz 3f \n\t" " jz 4f \n\t"
"add %10, %1 \n\t" "add %10, %1 \n\t"
BRANCHLESS_GET_CABAC("%4", "(%1)", "%3", BRANCHLESS_GET_CABAC("%4", "(%1)", "%3", "%w3",
"%w3", "%5", "%k0", "%b0", "%6") "%5", "%k0", "%b0",
"%a11(%6)", "%a12(%6)")
"sub %10, %1 \n\t" "sub %10, %1 \n\t"
"mov %2, %0 \n\t" "mov %2, %0 \n\t"
@ -65,25 +67,26 @@ static int decode_significance_x86(CABACContext *c, int max_coeff,
"movl %%ecx, (%0) \n\t" "movl %%ecx, (%0) \n\t"
"test $1, %4 \n\t" "test $1, %4 \n\t"
" jnz 4f \n\t" " jnz 5f \n\t"
"add"OPSIZE" $4, %2 \n\t" "add"OPSIZE" $4, %2 \n\t"
"3: \n\t" "4: \n\t"
"add $1, %1 \n\t" "add $1, %1 \n\t"
"cmp %8, %1 \n\t" "cmp %8, %1 \n\t"
" jb 2b \n\t" " jb 3b \n\t"
"mov %2, %0 \n\t" "mov %2, %0 \n\t"
"movl %7, %%ecx \n\t" "movl %7, %%ecx \n\t"
"add %1, %%"REG_c" \n\t" "add %1, %%"REG_c" \n\t"
"movl %%ecx, (%0) \n\t" "movl %%ecx, (%0) \n\t"
"4: \n\t" "5: \n\t"
"add %9, %k0 \n\t" "add %9, %k0 \n\t"
"shr $2, %k0 \n\t" "shr $2, %k0 \n\t"
:"=&q"(coeff_count), "+r"(significant_coeff_ctx_base), "+m"(index), : "=&q"(coeff_count), "+r"(significant_coeff_ctx_base), "+m"(index),
"+&r"(c->low), "=&r"(bit), "+&r"(c->range), "+&r"(c->low), "=&r"(bit), "+&r"(c->range)
"+m"(c->bytestream) : "r"(c), "m"(minusstart), "m"(end), "m"(minusindex), "m"(last_off),
:"m"(minusstart), "m"(end), "m"(minusindex), "m"(last_off) "i"(offsetof(CABACContext, bytestream)),
"i"(offsetof(CABACContext, bytestream_end))
: "%"REG_c, "memory" : "%"REG_c, "memory"
); );
return coeff_count; return coeff_count;
@ -99,47 +102,52 @@ static int decode_significance_8x8_x86(CABACContext *c,
x86_reg state; x86_reg state;
__asm__ volatile( __asm__ volatile(
"mov %1, %6 \n\t" "mov %1, %6 \n\t"
"2: \n\t" "3: \n\t"
"mov %10, %0 \n\t" "mov %10, %0 \n\t"
"movzbl (%0, %6), %k6 \n\t" "movzbl (%0, %6), %k6 \n\t"
"add %9, %6 \n\t" "add %9, %6 \n\t"
BRANCHLESS_GET_CABAC("%4", "(%6)", "%3", BRANCHLESS_GET_CABAC("%4", "(%6)", "%3", "%w3",
"%w3", "%5", "%k0", "%b0", "%7") "%5", "%k0", "%b0",
"%a12(%7)", "%a13(%7)")
"mov %1, %k6 \n\t" "mov %1, %k6 \n\t"
"test $1, %4 \n\t" "test $1, %4 \n\t"
" jz 3f \n\t" " jz 4f \n\t"
"movzbl "MANGLE(last_coeff_flag_offset_8x8)"(%k6), %k6\n\t" "movzbl "MANGLE(last_coeff_flag_offset_8x8)"(%k6), %k6\n\t"
"add %11, %6 \n\t" "add %11, %6 \n\t"
BRANCHLESS_GET_CABAC("%4", "(%6)", "%3", BRANCHLESS_GET_CABAC("%4", "(%6)", "%3", "%w3",
"%w3", "%5", "%k0", "%b0", "%7") "%5", "%k0", "%b0",
"%a12(%7)", "%a13(%7)")
"mov %2, %0 \n\t" "mov %2, %0 \n\t"
"mov %1, %k6 \n\t" "mov %1, %k6 \n\t"
"movl %k6, (%0) \n\t" "movl %k6, (%0) \n\t"
"test $1, %4 \n\t" "test $1, %4 \n\t"
" jnz 4f \n\t" " jnz 5f \n\t"
"add"OPSIZE" $4, %2 \n\t" "add"OPSIZE" $4, %2 \n\t"
"3: \n\t" "4: \n\t"
"addl $1, %k6 \n\t" "addl $1, %k6 \n\t"
"mov %k6, %1 \n\t" "mov %k6, %1 \n\t"
"cmpl $63, %k6 \n\t" "cmpl $63, %k6 \n\t"
" jb 2b \n\t" " jb 3b \n\t"
"mov %2, %0 \n\t" "mov %2, %0 \n\t"
"movl %k6, (%0) \n\t" "movl %k6, (%0) \n\t"
"4: \n\t" "5: \n\t"
"addl %8, %k0 \n\t" "addl %8, %k0 \n\t"
"shr $2, %k0 \n\t" "shr $2, %k0 \n\t"
:"=&q"(coeff_count),"+m"(last), "+m"(index), "+&r"(c->low), "=&r"(bit), : "=&q"(coeff_count), "+m"(last), "+m"(index), "+&r"(c->low),
"+&r"(c->range), "=&r"(state), "+m"(c->bytestream) "=&r"(bit), "+&r"(c->range), "=&r"(state)
:"m"(minusindex), "m"(significant_coeff_ctx_base), "m"(sig_off), "m"(last_coeff_ctx_base) : "r"(c), "m"(minusindex), "m"(significant_coeff_ctx_base),
"m"(sig_off), "m"(last_coeff_ctx_base),
"i"(offsetof(CABACContext, bytestream)),
"i"(offsetof(CABACContext, bytestream_end))
: "%"REG_c, "memory" : "%"REG_c, "memory"
); );
return coeff_count; return coeff_count;

View File

@ -102,7 +102,7 @@ static av_cold int bktr_init(const char *video_device, int width, int height,
long ioctl_frequency; long ioctl_frequency;
char *arg; char *arg;
int c; int c;
struct sigaction act, old; struct sigaction act = { 0 }, old;
if (idev < 0 || idev > 4) if (idev < 0 || idev > 4)
{ {
@ -131,7 +131,6 @@ static av_cold int bktr_init(const char *video_device, int width, int height,
frequency = 0.0; frequency = 0.0;
} }
memset(&act, 0, sizeof(act));
sigemptyset(&act.sa_mask); sigemptyset(&act.sa_mask);
act.sa_handler = catchsignal; act.sa_handler = catchsignal;
sigaction(SIGUSR1, &act, &old); sigaction(SIGUSR1, &act, &old);

View File

@ -140,7 +140,7 @@ void ff_asfcrypt_dec(const uint8_t key[20], uint8_t *data, int len) {
struct AVRC4 rc4; struct AVRC4 rc4;
int num_qwords = len >> 3; int num_qwords = len >> 3;
uint8_t *qwords = data; uint8_t *qwords = data;
uint64_t rc4buff[8]; uint64_t rc4buff[8] = { 0 };
uint64_t packetkey; uint64_t packetkey;
uint32_t ms_keys[12]; uint32_t ms_keys[12];
uint64_t ms_state; uint64_t ms_state;
@ -151,7 +151,6 @@ void ff_asfcrypt_dec(const uint8_t key[20], uint8_t *data, int len) {
return; return;
} }
memset(rc4buff, 0, sizeof(rc4buff));
av_rc4_init(&rc4, key, 12 * 8, 1); av_rc4_init(&rc4, key, 12 * 8, 1);
av_rc4_crypt(&rc4, (uint8_t *)rc4buff, NULL, sizeof(rc4buff), NULL, 1); av_rc4_crypt(&rc4, (uint8_t *)rc4buff, NULL, sizeof(rc4buff), NULL, 1);
multiswap_init((uint8_t *)rc4buff, ms_keys); multiswap_init((uint8_t *)rc4buff, ms_keys);

View File

@ -1249,7 +1249,7 @@ static void asf_build_simple_index(AVFormatContext *s, int stream_index)
last_pos=pos; last_pos=pos;
} }
} }
asf->index_read= 1; asf->index_read= ict > 0;
} }
avio_seek(s->pb, current_pos, SEEK_SET); avio_seek(s->pb, current_pos, SEEK_SET);
} }

View File

@ -1021,7 +1021,7 @@ static int mov_write_pasp_tag(AVIOContext *pb, MOVTrack *track)
static int mov_write_video_tag(AVIOContext *pb, MOVTrack *track) static int mov_write_video_tag(AVIOContext *pb, MOVTrack *track)
{ {
int64_t pos = avio_tell(pb); int64_t pos = avio_tell(pb);
char compressor_name[32]; char compressor_name[32] = { 0 };
avio_wb32(pb, 0); /* size */ avio_wb32(pb, 0); /* size */
avio_wl32(pb, track->tag); // store it byteswapped avio_wl32(pb, track->tag); // store it byteswapped
@ -1052,7 +1052,6 @@ static int mov_write_video_tag(AVIOContext *pb, MOVTrack *track)
avio_wb32(pb, 0); /* Data size (= 0) */ avio_wb32(pb, 0); /* Data size (= 0) */
avio_wb16(pb, 1); /* Frame count (= 1) */ avio_wb16(pb, 1); /* Frame count (= 1) */
memset(compressor_name,0,32);
/* FIXME not sure, ISO 14496-1 draft where it shall be set to 0 */ /* FIXME not sure, ISO 14496-1 draft where it shall be set to 0 */
if (track->mode == MODE_MOV && track->enc->codec && track->enc->codec->name) if (track->mode == MODE_MOV && track->enc->codec && track->enc->codec->name)
av_strlcpy(compressor_name,track->enc->codec->name,32); av_strlcpy(compressor_name,track->enc->codec->name,32);

View File

@ -60,6 +60,7 @@ flac_header (AVFormatContext * s, int idx)
st->codec->codec_type = AVMEDIA_TYPE_AUDIO; st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
st->codec->codec_id = CODEC_ID_FLAC; st->codec->codec_id = CODEC_ID_FLAC;
st->need_parsing = AVSTREAM_PARSE_HEADERS;
st->codec->extradata = st->codec->extradata =
av_malloc(FLAC_STREAMINFO_SIZE + FF_INPUT_BUFFER_PADDING_SIZE); av_malloc(FLAC_STREAMINFO_SIZE + FF_INPUT_BUFFER_PADDING_SIZE);

View File

@ -157,8 +157,7 @@ static void rtsp_parse_range_npt(const char *p, int64_t *start, int64_t *end)
static int get_sockaddr(const char *buf, struct sockaddr_storage *sock) static int get_sockaddr(const char *buf, struct sockaddr_storage *sock)
{ {
struct addrinfo hints, *ai = NULL; struct addrinfo hints = { 0 }, *ai = NULL;
memset(&hints, 0, sizeof(hints));
hints.ai_flags = AI_NUMERICHOST; hints.ai_flags = AI_NUMERICHOST;
if (getaddrinfo(buf, NULL, &hints, &ai)) if (getaddrinfo(buf, NULL, &hints, &ai))
return -1; return -1;
@ -497,9 +496,8 @@ int ff_sdp_parse(AVFormatContext *s, const char *content)
* The Vorbis FMTP line can be up to 16KB - see xiph_parse_sdp_line * The Vorbis FMTP line can be up to 16KB - see xiph_parse_sdp_line
* in rtpdec_xiph.c. */ * in rtpdec_xiph.c. */
char buf[16384], *q; char buf[16384], *q;
SDPParseState sdp_parse_state, *s1 = &sdp_parse_state; SDPParseState sdp_parse_state = { { 0 } }, *s1 = &sdp_parse_state;
memset(s1, 0, sizeof(SDPParseState));
p = content; p = content;
for (;;) { for (;;) {
p += strspn(p, SPACE_CHARS); p += strspn(p, SPACE_CHARS);
@ -1950,7 +1948,7 @@ static int rtp_read_header(AVFormatContext *s)
int ret, port; int ret, port;
URLContext* in = NULL; URLContext* in = NULL;
int payload_type; int payload_type;
AVCodecContext codec; AVCodecContext codec = { 0 };
struct sockaddr_storage addr; struct sockaddr_storage addr;
AVIOContext pb; AVIOContext pb;
socklen_t addrlen = sizeof(addr); socklen_t addrlen = sizeof(addr);
@ -1991,7 +1989,6 @@ static int rtp_read_header(AVFormatContext *s)
ffurl_close(in); ffurl_close(in);
in = NULL; in = NULL;
memset(&codec, 0, sizeof(codec));
if (ff_rtp_get_codec_info(&codec, payload_type)) { if (ff_rtp_get_codec_info(&codec, payload_type)) {
av_log(s, AV_LOG_ERROR, "Unable to receive RTP payload type %d " av_log(s, AV_LOG_ERROR, "Unable to receive RTP payload type %d "
"without an SDP file describing it\n", "without an SDP file describing it\n",

View File

@ -104,8 +104,7 @@ static int sap_write_header(AVFormatContext *s)
} }
if (!announce_addr[0]) { if (!announce_addr[0]) {
struct addrinfo hints, *ai = NULL; struct addrinfo hints = { 0 }, *ai = NULL;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC; hints.ai_family = AF_UNSPEC;
if (getaddrinfo(host, NULL, &hints, &ai)) { if (getaddrinfo(host, NULL, &hints, &ai)) {
av_log(s, AV_LOG_ERROR, "Unable to resolve %s\n", host); av_log(s, AV_LOG_ERROR, "Unable to resolve %s\n", host);

View File

@ -88,7 +88,7 @@ static void sdp_write_header(char *buff, int size, struct sdp_session_level *s)
static int resolve_destination(char *dest_addr, int size, char *type, static int resolve_destination(char *dest_addr, int size, char *type,
int type_size) int type_size)
{ {
struct addrinfo hints, *ai; struct addrinfo hints = { 0 }, *ai;
int is_multicast; int is_multicast;
av_strlcpy(type, "IP4", type_size); av_strlcpy(type, "IP4", type_size);
@ -98,7 +98,6 @@ static int resolve_destination(char *dest_addr, int size, char *type,
/* Resolve the destination, since it must be written /* Resolve the destination, since it must be written
* as a numeric IP address in the SDP. */ * as a numeric IP address in the SDP. */
memset(&hints, 0, sizeof(hints));
if (getaddrinfo(dest_addr, NULL, &hints, &ai)) if (getaddrinfo(dest_addr, NULL, &hints, &ai))
return 0; return 0;
getnameinfo(ai->ai_addr, ai->ai_addrlen, dest_addr, size, getnameinfo(ai->ai_addr, ai->ai_addrlen, dest_addr, size,
@ -581,12 +580,11 @@ void ff_sdp_write_media(char *buff, int size, AVCodecContext *c, const char *des
int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size) int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size)
{ {
AVDictionaryEntry *title = av_dict_get(ac[0]->metadata, "title", NULL, 0); AVDictionaryEntry *title = av_dict_get(ac[0]->metadata, "title", NULL, 0);
struct sdp_session_level s; struct sdp_session_level s = { 0 };
int i, j, port, ttl, is_multicast; int i, j, port, ttl, is_multicast;
char dst[32], dst_type[5]; char dst[32], dst_type[5];
memset(buf, 0, size); memset(buf, 0, size);
memset(&s, 0, sizeof(struct sdp_session_level));
s.user = "-"; s.user = "-";
s.src_addr = "127.0.0.1"; /* FIXME: Properly set this */ s.src_addr = "127.0.0.1"; /* FIXME: Properly set this */
s.src_type = "IP4"; s.src_type = "IP4";

View File

@ -92,11 +92,10 @@ int main(int argc, char **argv)
} }
for(i=0; ; i++){ for(i=0; ; i++){
AVPacket pkt; AVPacket pkt = { 0 };
AVStream *av_uninit(st); AVStream *av_uninit(st);
char ts_buf[60]; char ts_buf[60];
memset(&pkt, 0, sizeof(pkt));
if(ret>=0){ if(ret>=0){
ret= av_read_frame(ic, &pkt); ret= av_read_frame(ic, &pkt);
if(ret>=0){ if(ret>=0){

View File

@ -37,7 +37,7 @@ typedef struct TCPContext {
/* return non zero if error */ /* return non zero if error */
static int tcp_open(URLContext *h, const char *uri, int flags) static int tcp_open(URLContext *h, const char *uri, int flags)
{ {
struct addrinfo hints, *ai, *cur_ai; struct addrinfo hints = { 0 }, *ai, *cur_ai;
int port, fd = -1; int port, fd = -1;
TCPContext *s = h->priv_data; TCPContext *s = h->priv_data;
int listen_socket = 0; int listen_socket = 0;
@ -62,7 +62,6 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
timeout = strtol(buf, NULL, 10); timeout = strtol(buf, NULL, 10);
} }
} }
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC; hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM; hints.ai_socktype = SOCK_STREAM;
snprintf(portstr, sizeof(portstr), "%d", port); snprintf(portstr, sizeof(portstr), "%d", port);

View File

@ -161,7 +161,7 @@ static int udp_leave_multicast_group(int sockfd, struct sockaddr *addr)
static struct addrinfo* udp_resolve_host(const char *hostname, int port, static struct addrinfo* udp_resolve_host(const char *hostname, int port,
int type, int family, int flags) int type, int family, int flags)
{ {
struct addrinfo hints, *res = 0; struct addrinfo hints = { 0 }, *res = 0;
int error; int error;
char sport[16]; char sport[16];
const char *node = 0, *service = "0"; const char *node = 0, *service = "0";
@ -173,7 +173,6 @@ static struct addrinfo* udp_resolve_host(const char *hostname, int port,
if ((hostname) && (hostname[0] != '\0') && (hostname[0] != '?')) { if ((hostname) && (hostname[0] != '\0') && (hostname[0] != '?')) {
node = hostname; node = hostname;
} }
memset(&hints, 0, sizeof(hints));
hints.ai_socktype = type; hints.ai_socktype = type;
hints.ai_family = family; hints.ai_family = family;
hints.ai_flags = flags; hints.ai_flags = flags;

View File

@ -4073,7 +4073,7 @@ int ff_url_join(char *str, int size, const char *proto,
int port, const char *fmt, ...) int port, const char *fmt, ...)
{ {
#if CONFIG_NETWORK #if CONFIG_NETWORK
struct addrinfo hints, *ai; struct addrinfo hints = { 0 }, *ai;
#endif #endif
str[0] = '\0'; str[0] = '\0';
@ -4084,7 +4084,6 @@ int ff_url_join(char *str, int size, const char *proto,
#if CONFIG_NETWORK && defined(AF_INET6) #if CONFIG_NETWORK && defined(AF_INET6)
/* Determine if hostname is a numerical IPv6 address, /* Determine if hostname is a numerical IPv6 address,
* properly escape it within [] in that case. */ * properly escape it within [] in that case. */
memset(&hints, 0, sizeof(hints));
hints.ai_flags = AI_NUMERICHOST; hints.ai_flags = AI_NUMERICHOST;
if (!getaddrinfo(hostname, NULL, &hints, &ai)) { if (!getaddrinfo(hostname, NULL, &hints, &ai)) {
if (ai->ai_family == AF_INET6) { if (ai->ai_family == AF_INET6) {

View File

@ -101,12 +101,10 @@ int av_image_fill_linesizes(int linesizes[4], enum PixelFormat pix_fmt, int widt
int av_image_fill_pointers(uint8_t *data[4], enum PixelFormat pix_fmt, int height, int av_image_fill_pointers(uint8_t *data[4], enum PixelFormat pix_fmt, int height,
uint8_t *ptr, const int linesizes[4]) uint8_t *ptr, const int linesizes[4])
{ {
int i, total_size, size[4], has_plane[4]; int i, total_size, size[4] = { 0 }, has_plane[4] = { 0 };
const AVPixFmtDescriptor *desc = &av_pix_fmt_descriptors[pix_fmt]; const AVPixFmtDescriptor *desc = &av_pix_fmt_descriptors[pix_fmt];
memset(data , 0, sizeof(data[0])*4); memset(data , 0, sizeof(data[0])*4);
memset(size , 0, sizeof(size));
memset(has_plane, 0, sizeof(has_plane));
if ((unsigned)pix_fmt >= PIX_FMT_NB || desc->flags & PIX_FMT_HWACCEL) if ((unsigned)pix_fmt >= PIX_FMT_NB || desc->flags & PIX_FMT_HWACCEL)
return AVERROR(EINVAL); return AVERROR(EINVAL);

View File

@ -517,7 +517,7 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration)
{ {
const char *p; const char *p;
int64_t t; int64_t t;
struct tm dt; struct tm dt = { 0 };
int i; int i;
static const char * const date_fmt[] = { static const char * const date_fmt[] = {
"%Y-%m-%d", "%Y-%m-%d",
@ -542,8 +542,6 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration)
lastch = '\0'; lastch = '\0';
is_utc = (lastch == 'z' || lastch == 'Z'); is_utc = (lastch == 'z' || lastch == 'Z');
memset(&dt, 0, sizeof(dt));
p = timestr; p = timestr;
q = NULL; q = NULL;
if (!duration) { if (!duration) {

View File

@ -127,6 +127,9 @@ fate-iff-ilbm: CMD = framecrc -i $(SAMPLES)/iff/lms-matriks.ilbm -pix_fmt rgb24
FATE_VIDEO += $(FATE_IFF) FATE_VIDEO += $(FATE_IFF)
fate-iff: $(FATE_IFF) fate-iff: $(FATE_IFF)
FATE_VIDEO += fate-kgv1
fate-kgv1: CMD = framecrc -i $(SAMPLES)/kega/kgv1.avi -pix_fmt rgb555le -an
FATE_VIDEO += fate-kmvc FATE_VIDEO += fate-kmvc
fate-kmvc: CMD = framecrc -i $(SAMPLES)/KMVC/LOGO1.AVI -an -t 3 -pix_fmt rgb24 fate-kmvc: CMD = framecrc -i $(SAMPLES)/KMVC/LOGO1.AVI -an -t 3 -pix_fmt rgb24

View File

@ -38,6 +38,10 @@ $(foreach N,$(VP8_SUITE),$(eval $(call FATE_VP8_SUITE,$(N),$(1),$(2))))
FATE_VP8 += fate-vp8-sign-bias$(1) FATE_VP8 += fate-vp8-sign-bias$(1)
fate-vp8-sign-bias$(1): CMD = framemd5 $(2) -i $(SAMPLES)/vp8/sintel-signbias.ivf fate-vp8-sign-bias$(1): CMD = framemd5 $(2) -i $(SAMPLES)/vp8/sintel-signbias.ivf
fate-vp8-sign-bias$(1): REF = $(SRC_PATH)/tests/ref/fate/vp8-sign-bias fate-vp8-sign-bias$(1): REF = $(SRC_PATH)/tests/ref/fate/vp8-sign-bias
FATE_VP8 += fate-vp8-size-change$(1)
fate-vp8-size-change$(1): CMD = framemd5 $(2) -i $(SAMPLES)/vp8/frame_size_change.webm -frames:v 30
fate-vp8-size-change$(1): REF = $(SRC_PATH)/tests/ref/fate/vp8-size-change
endef endef
$(eval $(call FATE_VP8_FULL)) $(eval $(call FATE_VP8_FULL))

314
tests/ref/fate/kgv1 Normal file
View File

@ -0,0 +1,314 @@
#tb 0: 1/60
0, 0, 0, 1, 153600, 0x00000000
0, 1, 1, 1, 153600, 0x00000000
0, 2, 2, 1, 153600, 0x00000000
0, 3, 3, 1, 153600, 0x00000000
0, 4, 4, 1, 153600, 0x00000000
0, 5, 5, 1, 153600, 0x00000000
0, 6, 6, 1, 153600, 0x00000000
0, 7, 7, 1, 153600, 0x00000000
0, 8, 8, 1, 153600, 0x00000000
0, 9, 9, 1, 153600, 0x00000000
0, 10, 10, 1, 153600, 0x00000000
0, 11, 11, 1, 153600, 0x00000000
0, 12, 12, 1, 153600, 0x00000000
0, 13, 13, 1, 153600, 0x00000000
0, 14, 14, 1, 153600, 0x00000000
0, 15, 15, 1, 153600, 0x00000000
0, 16, 16, 1, 153600, 0x00000000
0, 17, 17, 1, 153600, 0x00000000
0, 18, 18, 1, 153600, 0x00000000
0, 19, 19, 1, 153600, 0x00000000
0, 20, 20, 1, 153600, 0x00000000
0, 21, 21, 1, 153600, 0x00000000
0, 22, 22, 1, 153600, 0x00000000
0, 23, 23, 1, 153600, 0x00000000
0, 24, 24, 1, 153600, 0x00000000
0, 25, 25, 1, 153600, 0x00000000
0, 26, 26, 1, 153600, 0x00000000
0, 27, 27, 1, 153600, 0x00000000
0, 28, 28, 1, 153600, 0x00000000
0, 29, 29, 1, 153600, 0x00000000
0, 30, 30, 1, 153600, 0x00000000
0, 31, 31, 1, 153600, 0x00000000
0, 32, 32, 1, 153600, 0x00000000
0, 33, 33, 1, 153600, 0x00000000
0, 34, 34, 1, 153600, 0x00000000
0, 35, 35, 1, 153600, 0x00000000
0, 36, 36, 1, 153600, 0x00000000
0, 37, 37, 1, 153600, 0x00000000
0, 38, 38, 1, 153600, 0x00000000
0, 39, 39, 1, 153600, 0x00000000
0, 40, 40, 1, 153600, 0x00000000
0, 41, 41, 1, 153600, 0x00000000
0, 42, 42, 1, 153600, 0x00000000
0, 43, 43, 1, 153600, 0x00000000
0, 44, 44, 1, 153600, 0x00000000
0, 45, 45, 1, 153600, 0x00000000
0, 46, 46, 1, 153600, 0x00000000
0, 47, 47, 1, 153600, 0xab738fc1
0, 48, 48, 1, 153600, 0x520c9bd3
0, 49, 49, 1, 153600, 0x19347233
0, 50, 50, 1, 153600, 0x9e81fe64
0, 51, 51, 1, 153600, 0x75be7504
0, 52, 52, 1, 153600, 0x29374d04
0, 53, 53, 1, 153600, 0xc6b92fd4
0, 54, 54, 1, 153600, 0xeeec5124
0, 55, 55, 1, 153600, 0x2fc36324
0, 56, 56, 1, 153600, 0x112580f4
0, 57, 57, 1, 153600, 0x177b9a84
0, 58, 58, 1, 153600, 0x214abb44
0, 59, 59, 1, 153600, 0x83580173
0, 60, 60, 1, 153600, 0x95f49284
0, 61, 61, 1, 153600, 0xe31c5984
0, 62, 62, 1, 153600, 0xf1756984
0, 63, 63, 1, 153600, 0x6c004804
0, 64, 64, 1, 153600, 0xbe6631b4
0, 65, 65, 1, 153600, 0x1d910494
0, 66, 66, 1, 153600, 0xd8ecfc25
0, 67, 67, 1, 153600, 0xdd281364
0, 68, 68, 1, 153600, 0x52545084
0, 69, 69, 1, 153600, 0xfed6b944
0, 70, 70, 1, 153600, 0x6e0b7ee4
0, 71, 71, 1, 153600, 0x516a5724
0, 72, 72, 1, 153600, 0xaffd7844
0, 73, 73, 1, 153600, 0x5a304ba4
0, 74, 74, 1, 153600, 0xea365ce4
0, 75, 75, 1, 153600, 0xef654a84
0, 76, 76, 1, 153600, 0x32d14584
0, 77, 77, 1, 153600, 0x6bf843e4
0, 78, 78, 1, 153600, 0x023d5b94
0, 79, 79, 1, 153600, 0xd4506154
0, 80, 80, 1, 153600, 0xeaf0bd24
0, 81, 81, 1, 153600, 0x426efb94
0, 82, 82, 1, 153600, 0x98bcde64
0, 83, 83, 1, 153600, 0xa1bbb4a4
0, 84, 84, 1, 153600, 0x36688414
0, 85, 85, 1, 153600, 0x2e4b75d4
0, 86, 86, 1, 153600, 0x33885884
0, 87, 87, 1, 153600, 0x6c065224
0, 88, 88, 1, 153600, 0x1a0252b4
0, 89, 89, 1, 153600, 0x55896084
0, 90, 90, 1, 153600, 0xb9df7a04
0, 91, 91, 1, 153600, 0x6f8a9734
0, 92, 92, 1, 153600, 0xa3d3dbb4
0, 93, 93, 1, 153600, 0x907a2483
0, 94, 94, 1, 153600, 0xf4816ad3
0, 95, 95, 1, 153600, 0x4e9195e3
0, 96, 96, 1, 153600, 0xf486a373
0, 97, 97, 1, 153600, 0x8f6aa693
0, 98, 98, 1, 153600, 0x8f6aa693
0, 99, 99, 1, 153600, 0x8f6aa693
0, 100, 100, 1, 153600, 0x8f6aa693
0, 101, 101, 1, 153600, 0x8f6aa693
0, 102, 102, 1, 153600, 0x8f6aa693
0, 103, 103, 1, 153600, 0x17d9c117
0, 104, 104, 1, 153600, 0x17d9c117
0, 105, 105, 1, 153600, 0x17d9c117
0, 106, 106, 1, 153600, 0x17d9c117
0, 107, 107, 1, 153600, 0x17d9c117
0, 108, 108, 1, 153600, 0x7a47386f
0, 109, 109, 1, 153600, 0x7a47386f
0, 110, 110, 1, 153600, 0x7a47386f
0, 111, 111, 1, 153600, 0x7a47386f
0, 112, 112, 1, 153600, 0x7a47386f
0, 113, 113, 1, 153600, 0x829dccaa
0, 114, 114, 1, 153600, 0x829dccaa
0, 115, 115, 1, 153600, 0x829dccaa
0, 116, 116, 1, 153600, 0x829dccaa
0, 117, 117, 1, 153600, 0x829dccaa
0, 118, 118, 1, 153600, 0x2d58ab4a
0, 119, 119, 1, 153600, 0x2d58ab4a
0, 120, 120, 1, 153600, 0x2d58ab4a
0, 121, 121, 1, 153600, 0x2d58ab4a
0, 122, 122, 1, 153600, 0x2d58ab4a
0, 123, 123, 1, 153600, 0x2d58ab4a
0, 124, 124, 1, 153600, 0x2d58ab4a
0, 125, 125, 1, 153600, 0x2d58ab4a
0, 126, 126, 1, 153600, 0x2d58ab4a
0, 127, 127, 1, 153600, 0x2d58ab4a
0, 128, 128, 1, 153600, 0x2d58ab4a
0, 129, 129, 1, 153600, 0x2d58ab4a
0, 130, 130, 1, 153600, 0x2d58ab4a
0, 131, 131, 1, 153600, 0x2d58ab4a
0, 132, 132, 1, 153600, 0x2d58ab4a
0, 133, 133, 1, 153600, 0x2d58ab4a
0, 134, 134, 1, 153600, 0x2d58ab4a
0, 135, 135, 1, 153600, 0x2d58ab4a
0, 136, 136, 1, 153600, 0x2d58ab4a
0, 137, 137, 1, 153600, 0x2d58ab4a
0, 138, 138, 1, 153600, 0x2d58ab4a
0, 139, 139, 1, 153600, 0x2d58ab4a
0, 140, 140, 1, 153600, 0x2d58ab4a
0, 141, 141, 1, 153600, 0x2d58ab4a
0, 142, 142, 1, 153600, 0x2d58ab4a
0, 143, 143, 1, 153600, 0x2d58ab4a
0, 144, 144, 1, 153600, 0x2d58ab4a
0, 145, 145, 1, 153600, 0x2d58ab4a
0, 146, 146, 1, 153600, 0x2d58ab4a
0, 147, 147, 1, 153600, 0x2d58ab4a
0, 148, 148, 1, 153600, 0x2d58ab4a
0, 149, 149, 1, 153600, 0x2d58ab4a
0, 150, 150, 1, 153600, 0x2d58ab4a
0, 151, 151, 1, 153600, 0x2d58ab4a
0, 152, 152, 1, 153600, 0x2d58ab4a
0, 153, 153, 1, 153600, 0x2d58ab4a
0, 154, 154, 1, 153600, 0x2d58ab4a
0, 155, 155, 1, 153600, 0x2d58ab4a
0, 156, 156, 1, 153600, 0x2d58ab4a
0, 157, 157, 1, 153600, 0x2d58ab4a
0, 158, 158, 1, 153600, 0x2d58ab4a
0, 159, 159, 1, 153600, 0x2d58ab4a
0, 160, 160, 1, 153600, 0x2d58ab4a
0, 161, 161, 1, 153600, 0x2d58ab4a
0, 162, 162, 1, 153600, 0x2d58ab4a
0, 163, 163, 1, 153600, 0x2d58ab4a
0, 164, 164, 1, 153600, 0x2d58ab4a
0, 165, 165, 1, 153600, 0x2d58ab4a
0, 166, 166, 1, 153600, 0x2d58ab4a
0, 167, 167, 1, 153600, 0x2d58ab4a
0, 168, 168, 1, 153600, 0x2d58ab4a
0, 169, 169, 1, 153600, 0x2d58ab4a
0, 170, 170, 1, 153600, 0x2d58ab4a
0, 171, 171, 1, 153600, 0x2d58ab4a
0, 172, 172, 1, 153600, 0x2d58ab4a
0, 173, 173, 1, 153600, 0x2d58ab4a
0, 174, 174, 1, 153600, 0x2d58ab4a
0, 175, 175, 1, 153600, 0x2d58ab4a
0, 176, 176, 1, 153600, 0x2d58ab4a
0, 177, 177, 1, 153600, 0x2d58ab4a
0, 178, 178, 1, 153600, 0x2d58ab4a
0, 179, 179, 1, 153600, 0x2d58ab4a
0, 180, 180, 1, 153600, 0x2d58ab4a
0, 181, 181, 1, 153600, 0x2d58ab4a
0, 182, 182, 1, 153600, 0x2d58ab4a
0, 183, 183, 1, 153600, 0x2d58ab4a
0, 184, 184, 1, 153600, 0x2d58ab4a
0, 185, 185, 1, 153600, 0x2d58ab4a
0, 186, 186, 1, 153600, 0x2d58ab4a
0, 187, 187, 1, 153600, 0x2d58ab4a
0, 188, 188, 1, 153600, 0x2d58ab4a
0, 189, 189, 1, 153600, 0x2d58ab4a
0, 190, 190, 1, 153600, 0x2d58ab4a
0, 191, 191, 1, 153600, 0x2d58ab4a
0, 192, 192, 1, 153600, 0x2d58ab4a
0, 193, 193, 1, 153600, 0x2d58ab4a
0, 194, 194, 1, 153600, 0x2d58ab4a
0, 195, 195, 1, 153600, 0x2d58ab4a
0, 196, 196, 1, 153600, 0x2d58ab4a
0, 197, 197, 1, 153600, 0x2d58ab4a
0, 198, 198, 1, 153600, 0x2d58ab4a
0, 199, 199, 1, 153600, 0x2d58ab4a
0, 200, 200, 1, 153600, 0x2d58ab4a
0, 201, 201, 1, 153600, 0x2d58ab4a
0, 202, 202, 1, 153600, 0x2d58ab4a
0, 203, 203, 1, 153600, 0x2d58ab4a
0, 204, 204, 1, 153600, 0x2d58ab4a
0, 205, 205, 1, 153600, 0x2d58ab4a
0, 206, 206, 1, 153600, 0x2d58ab4a
0, 207, 207, 1, 153600, 0x2d58ab4a
0, 208, 208, 1, 153600, 0x2d58ab4a
0, 209, 209, 1, 153600, 0x2d58ab4a
0, 210, 210, 1, 153600, 0x2d58ab4a
0, 211, 211, 1, 153600, 0x2d58ab4a
0, 212, 212, 1, 153600, 0x2d58ab4a
0, 213, 213, 1, 153600, 0x2d58ab4a
0, 214, 214, 1, 153600, 0x2d58ab4a
0, 215, 215, 1, 153600, 0x2d58ab4a
0, 216, 216, 1, 153600, 0x2d58ab4a
0, 217, 217, 1, 153600, 0x2d58ab4a
0, 218, 218, 1, 153600, 0x2d58ab4a
0, 219, 219, 1, 153600, 0x2d58ab4a
0, 220, 220, 1, 153600, 0x2d58ab4a
0, 221, 221, 1, 153600, 0x2d58ab4a
0, 222, 222, 1, 153600, 0x2d58ab4a
0, 223, 223, 1, 153600, 0x2d58ab4a
0, 224, 224, 1, 153600, 0x2d58ab4a
0, 225, 225, 1, 153600, 0x2d58ab4a
0, 226, 226, 1, 153600, 0x2d58ab4a
0, 227, 227, 1, 153600, 0x2d58ab4a
0, 228, 228, 1, 153600, 0x2d58ab4a
0, 229, 229, 1, 153600, 0x2d58ab4a
0, 230, 230, 1, 153600, 0x2d58ab4a
0, 231, 231, 1, 153600, 0x2d58ab4a
0, 232, 232, 1, 153600, 0x2d58ab4a
0, 233, 233, 1, 153600, 0x2d58ab4a
0, 234, 234, 1, 153600, 0x2d58ab4a
0, 235, 235, 1, 153600, 0x2d58ab4a
0, 236, 236, 1, 153600, 0x2d58ab4a
0, 237, 237, 1, 153600, 0x2d58ab4a
0, 238, 238, 1, 153600, 0x2d58ab4a
0, 239, 239, 1, 153600, 0x2d58ab4a
0, 240, 240, 1, 153600, 0x2d58ab4a
0, 241, 241, 1, 153600, 0x2d58ab4a
0, 242, 242, 1, 153600, 0x2d58ab4a
0, 243, 243, 1, 153600, 0x2d58ab4a
0, 244, 244, 1, 153600, 0x2d58ab4a
0, 245, 245, 1, 153600, 0x2d58ab4a
0, 246, 246, 1, 153600, 0x2d58ab4a
0, 247, 247, 1, 153600, 0x2d58ab4a
0, 248, 248, 1, 153600, 0x2d58ab4a
0, 249, 249, 1, 153600, 0x2d58ab4a
0, 250, 250, 1, 153600, 0x2d58ab4a
0, 251, 251, 1, 153600, 0x2d58ab4a
0, 252, 252, 1, 153600, 0x2d58ab4a
0, 253, 253, 1, 153600, 0x2d58ab4a
0, 254, 254, 1, 153600, 0x2d58ab4a
0, 255, 255, 1, 153600, 0x2d58ab4a
0, 256, 256, 1, 153600, 0x2d58ab4a
0, 257, 257, 1, 153600, 0x2d58ab4a
0, 258, 258, 1, 153600, 0x2d58ab4a
0, 259, 259, 1, 153600, 0x2d58ab4a
0, 260, 260, 1, 153600, 0x2d58ab4a
0, 261, 261, 1, 153600, 0x2d58ab4a
0, 262, 262, 1, 153600, 0x2d58ab4a
0, 263, 263, 1, 153600, 0x2d58ab4a
0, 264, 264, 1, 153600, 0x2d58ab4a
0, 265, 265, 1, 153600, 0x2d58ab4a
0, 266, 266, 1, 153600, 0x2d58ab4a
0, 267, 267, 1, 153600, 0x2d58ab4a
0, 268, 268, 1, 153600, 0x2d58ab4a
0, 269, 269, 1, 153600, 0x2d58ab4a
0, 270, 270, 1, 153600, 0x2d58ab4a
0, 271, 271, 1, 153600, 0x2d58ab4a
0, 272, 272, 1, 153600, 0x2d58ab4a
0, 273, 273, 1, 153600, 0x2d58ab4a
0, 274, 274, 1, 153600, 0x2d58ab4a
0, 275, 275, 1, 153600, 0x2d58ab4a
0, 276, 276, 1, 153600, 0x2d58ab4a
0, 277, 277, 1, 153600, 0x2d58ab4a
0, 278, 278, 1, 153600, 0x2d58ab4a
0, 279, 279, 1, 153600, 0x2d58ab4a
0, 280, 280, 1, 153600, 0x2d58ab4a
0, 281, 281, 1, 153600, 0x2d58ab4a
0, 282, 282, 1, 153600, 0x2d58ab4a
0, 283, 283, 1, 153600, 0x2d58ab4a
0, 284, 284, 1, 153600, 0x7815bb72
0, 285, 285, 1, 153600, 0x47ec1353
0, 286, 286, 1, 153600, 0x6599fabc
0, 287, 287, 1, 153600, 0x3d8a8690
0, 288, 288, 1, 153600, 0xc0bc1ba5
0, 289, 289, 1, 153600, 0x07368f2a
0, 290, 290, 1, 153600, 0x81c54b89
0, 291, 291, 1, 153600, 0xbfcae7bf
0, 292, 292, 1, 153600, 0x1348310e
0, 293, 293, 1, 153600, 0xb5489dad
0, 294, 294, 1, 153600, 0xa1eb1408
0, 295, 295, 1, 153600, 0x15e1832c
0, 296, 296, 1, 153600, 0xb789cba5
0, 297, 297, 1, 153600, 0x3ee86e4f
0, 298, 298, 1, 153600, 0x06ea3883
0, 299, 299, 1, 153600, 0xcedd02b7
0, 300, 300, 1, 153600, 0xbce6ce58
0, 301, 301, 1, 153600, 0xaadf9a00
0, 302, 302, 1, 153600, 0x98c865a0
0, 303, 303, 1, 153600, 0x4c8432e0
0, 304, 304, 1, 153600, 0x00000000
0, 305, 305, 1, 153600, 0x00000000
0, 306, 306, 1, 153600, 0x00000000
0, 307, 307, 1, 153600, 0x00000000
0, 308, 308, 1, 153600, 0x00000000
0, 309, 309, 1, 153600, 0x00000000
0, 310, 310, 1, 153600, 0x00000000
0, 311, 311, 1, 153600, 0x00000000
0, 312, 312, 1, 153600, 0x00000000

View File

@ -0,0 +1,31 @@
#tb 0: 1/30
0, 0, 0, 1, 3110400, f9b685c9aaa7652faeded50ed1005414
0, 1, 1, 1, 3110400, d22c3d6a1e57ba4af2bd19e09ad7bdb1
0, 2, 2, 1, 3110400, 0d516dc90992321576a1f090b382beab
0, 3, 3, 1, 3110400, a306b1c732dbaea18ad1efd9d3820094
0, 4, 4, 1, 3110400, faddd965d3e70e62cad07dc72225e8c2
0, 5, 5, 1, 3110400, 375795188ae0ce026179aea29cb8a1b4
0, 6, 6, 1, 3110400, aa372227e1630513116ff6678a2c4fcf
0, 7, 7, 1, 3110400, e4937f5756a3bbbe2660c0874514479b
0, 8, 8, 1, 3110400, ad7d1f6a28ac9f6490f1ee7595ef6b94
0, 9, 9, 1, 3110400, 305414d3ca8aca36242e08041b92ad69
0, 10, 10, 1, 3110400, b719401bd210e4fc02be258ca866e50e
0, 11, 11, 1, 3110400, a25f312e44492715f334ab97f50e73ad
0, 12, 12, 1, 3110400, 1da8d6815b3ce412690e86f18444c621
0, 13, 13, 1, 3110400, 0522ee62ed61c900b71f3fff2030026b
0, 14, 14, 1, 3110400, 523d2a4f5571a952f68d5768eb3336dc
0, 15, 15, 1, 3110400, 03a9b1f05d48c25d689f74db4d2cdbe1
0, 16, 16, 1, 3110400, 6ae91271da4f5c6e604df8e04a40ea45
0, 17, 17, 1, 3110400, 5b3e7bac9f61c4248999a2587a630d28
0, 18, 18, 1, 3110400, 60069876ccffeee06a535e471b8916e8
0, 19, 19, 1, 3110400, 9f5101c81bc7702d98baee78c4ffe65d
0, 20, 20, 1, 3110400, c02641360b4d8af4640aa330d9eb8bb0
0, 21, 21, 1, 3110400, 63274292e7d3f2482c3c282722ae3f02
0, 22, 22, 1, 3110400, ae39b5a18260046e96b4b44520ef0f7d
0, 23, 23, 1, 3110400, bb89af6f8f2b13d0cd668d445669f655
0, 24, 24, 1, 3110400, 0ac58c28575b804d9e63395653c3aef2
0, 25, 25, 1, 3110400, 641f2a78e338c733ef159bd36ec7966f
0, 26, 26, 1, 3110400, 9402d455fa5bd556b85f479c42c3a4d2
0, 27, 27, 1, 3110400, fa2407483a8e169a161e45ac6cfa7831
0, 28, 28, 1, 3110400, 087744a0ac52ef96803fc9c4fb17635b
0, 29, 29, 1, 3110400, b62328f2bd00b269cd3a359360b613b7