mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-27 05:00:37 +00:00
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:
commit
d40ff29cac
@ -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
|
||||||
|
|
||||||
|
3
ffplay.c
3
ffplay.c
@ -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];
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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++) {
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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){
|
||||||
|
@ -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. */
|
||||||
|
@ -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 },
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -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 */
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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++)
|
||||||
|
@ -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,
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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++) {
|
||||||
|
@ -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);
|
||||||
|
@ -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];
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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];
|
||||||
|
|
||||||
|
@ -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"),
|
||||||
};
|
};
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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))
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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",
|
||||||
|
@ -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);
|
||||||
|
@ -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";
|
||||||
|
@ -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){
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
314
tests/ref/fate/kgv1
Normal 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
|
31
tests/ref/fate/vp8-size-change
Normal file
31
tests/ref/fate/vp8-size-change
Normal 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
|
Loading…
Reference in New Issue
Block a user