We truncated the diff of some files because they were too big.
If you want to see the full diff for every file, click here.
Changes of Revision 23
avidemux3.changes
Changed
x
1
2
-------------------------------------------------------------------
3
+Sat Dec 05 12:23:17 UTC 2015 - joerg.lorenzen@ki.tng.de
4
+
5
+- update internal ffmpeg to version 2.8.3
6
+
7
+-------------------------------------------------------------------
8
Fri Nov 20 07:00:02 UTC 2015 - olaf@aepfle.de
9
10
- Set group permissions for included ffmpeg libs
11
avidemux3.spec
Changed
10
1
2
#
3
4
5
-%define ffmpeg_version 2.8.1
6
+%define ffmpeg_version 2.8.3
7
8
Name: avidemux3
9
Summary: Graphical video editing and transcoding tool
10
ffmpeg-2.8.1.tar.bz2/Changelog -> ffmpeg-2.8.3.tar.bz2/Changelog
Changed
98
1
2
Entries are sorted chronologically from oldest to youngest within each release,
3
releases are sorted from youngest to oldest.
4
5
+version 2.8.3
6
+- avcodec/cabac: Check initial cabac decoder state
7
+- avcodec/cabac_functions: Fix "left shift of negative value -31767"
8
+- avcodec/h264_slice: Limit max_contexts when slice_context_count is initialized
9
+- rtmpcrypt: Do the xtea decryption in little endian mode
10
+- avformat/matroskadec: Check subtitle stream before dereferencing
11
+- avcodec/pngdec: Replace assert by request for sample for unsupported TRNS cases
12
+- avformat/utils: Do not init parser if probing is unfinished
13
+- avcodec/jpeg2000dec: Fix potential integer overflow with tile dimensions
14
+- avcodec/jpeg2000: Use av_image_check_size() in ff_jpeg2000_init_component()
15
+- avcodec/wmaprodec: Check for overread in decode_packet()
16
+- avcodec/smacker: Check that the data size is a multiple of a sample vector
17
+- avcodec/takdec: Skip last p2 sample (which is unused)
18
+- avcodec/dxtory: Fix input size check in dxtory_decode_v1_410()
19
+- avcodec/dxtory: Fix input size check in dxtory_decode_v1_420()
20
+- avcodec/error_resilience: avoid accessing previous or next frames tables beyond height
21
+- avcodec/dpx: Move need_align to act per line
22
+- avcodec/flashsv: Check size before updating it
23
+- avcodec/ivi: Check image dimensions
24
+- avcodec/utils: Better check for channels in av_get_audio_frame_duration()
25
+- avcodec/jpeg2000dec: Check for duplicate SIZ marker
26
+- aacsbr: don't call sbr_dequant twice without intermediate read_sbr_data
27
+- hqx: correct type and size check of info_offset
28
+- mxfdec: check edit_rate also for physical_track
29
+- avcodec/jpeg2000: Change coord to 32bit to support larger than 32k width or height
30
+- avcodec/jpeg2000dec: Check SIZ dimensions to be within the supported range
31
+- avcodec/jpeg2000: Check comp coords to be within the supported size
32
+- mpegvideo: clear overread in clear_context
33
+- avcodec/avrndec: Use the AVFrame format instead of the context
34
+- dds: disable palette flag for compressed images
35
+- dds: validate compressed source buffer size
36
+- dds: validate source buffer size before copying
37
+- dvdsubdec: validate offset2 similar to offset1
38
+- brstm: reject negative sample rate
39
+- aacps: avoid division by zero in stereo_processing
40
+- softfloat: assert when the argument of av_sqrt_sf is negative
41
+
42
+version 2.8.2
43
+- various fixes in the aac_fixed decoder
44
+- various fixes in softfloat
45
+- swresample/resample: increase precision for compensation
46
+- lavf/mov: add support for sidx fragment indexes
47
+- avformat/mxfenc: Only store user comment related tags when needed
48
+- tests/fate/avformat: Fix fate-lavf
49
+- doc/ffmpeg: Clarify that the sdp_file option requires an rtp output.
50
+- ffmpeg: Don't try and write sdp info if none of the outputs had an rtp format.
51
+- apng: use correct size for output buffer
52
+- jvdec: avoid unsigned overflow in comparison
53
+- avcodec/jpeg2000dec: Clip all tile coordinates
54
+- avcodec/microdvddec: Check for string end in 'P' case
55
+- avcodec/dirac_parser: Fix undefined memcpy() use
56
+- avformat/xmv: Discard remainder of packet on error
57
+- avformat/xmv: factor return check out of if/else
58
+- avcodec/mpeg12dec: Do not call show_bits() with invalid bits
59
+- avcodec/faxcompr: Add missing runs check in decode_uncompressed()
60
+- libavutil/channel_layout: Check strtol*() for failure
61
+- avformat/mpegts: Only start probing data streams within probe_packets
62
+- avcodec/hevc_ps: Check chroma_format_idc
63
+- avcodec/ffv1dec: Check for 0 quant tables
64
+- avcodec/mjpegdec: Reinitialize IDCT on BPP changes
65
+- avcodec/mjpegdec: Check index in ljpeg_decode_yuv_scan() before using it
66
+- avutil/file_open: avoid file handle inheritance on Windows
67
+- avcodec/h264_slice: Disable slice threads if there are multiple access units in a packet
68
+- avformat/hls: update cookies on setcookie response
69
+- opusdec: Don't run vector_fmul_scalar on zero length arrays
70
+- avcodec/opusdec: Fix extra samples read index
71
+- avcodec/ffv1: Initialize vlc_state on allocation
72
+- avcodec/ffv1dec: update progress in case of broken pointer chains
73
+- avcodec/ffv1dec: Clear slice coordinates if they are invalid or slice header decoding fails for other reasons
74
+- rtsp: Allow $ as interleaved packet indicator before a complete response header
75
+- videodsp: don't overread edges in vfix3 emu_edge.
76
+- avformat/mp3dec: improve junk skipping heuristic
77
+- concatdec: fix file_start_time calculation regression
78
+- avcodec: loongson optimize h264dsp idct and loop filter with mmi
79
+- avcodec/jpeg2000dec: Clear properties in jpeg2000_dec_cleanup() too
80
+- avformat/hls: add support for EXT-X-MAP
81
+- avformat/hls: fix segment selection regression on track changes of live streams
82
+- configure: Require libkvazaar < 0.7.
83
+- avcodec/vp8: Do not use num_coeff_partitions in thread/buffer setup
84
+
85
+
86
version 2.8.1:
87
- swscale: fix ticket #4881
88
- doc: fix spelling errors
89
90
- dnxhddec: decode and use interlace mb flag
91
- swscale: fix ticket #4877
92
- avcodec/rangecoder: Check e
93
-- avcodec/ffv1: seperate slice_count from max_slice_count
94
+- avcodec/ffv1: separate slice_count from max_slice_count
95
- swscale: fix ticket 4850
96
- cmdutils: Filter dst/srcw/h
97
- avutil/log: fix zero length gnu_printf format string warning
98
ffmpeg-2.8.1.tar.bz2/RELEASE -> ffmpeg-2.8.3.tar.bz2/RELEASE
Changed
4
1
2
-2.8.1
3
+2.8.3
4
ffmpeg-2.8.1.tar.bz2/VERSION -> ffmpeg-2.8.3.tar.bz2/VERSION
Changed
4
1
2
-2.8.1
3
+2.8.3
4
ffmpeg-2.8.1.tar.bz2/configure -> ffmpeg-2.8.3.tar.bz2/configure
Changed
10
1
2
check_lib "${gsm_hdr}" gsm_create -lgsm && break;
3
done || die "ERROR: libgsm not found"; }
4
enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
5
-enabled libkvazaar && require_pkg_config kvazaar kvazaar.h kvz_api_get
6
+enabled libkvazaar && require_pkg_config "kvazaar < 0.7.0" kvazaar.h kvz_api_get
7
enabled libmfx && require_pkg_config libmfx "mfx/mfxvideo.h" MFXInit
8
enabled libmodplug && require_pkg_config libmodplug libmodplug/modplug.h ModPlug_Load
9
enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
10
ffmpeg-2.8.1.tar.bz2/doc/Doxyfile -> ffmpeg-2.8.3.tar.bz2/doc/Doxyfile
Changed
10
1
2
# This could be handy for archiving the generated documentation or
3
# if some version control system is used.
4
5
-PROJECT_NUMBER = 2.8.1
6
+PROJECT_NUMBER = 2.8.3
7
8
# With the PROJECT_LOGO tag one can specify a logo or icon that is included
9
# in the documentation. The maximum height of the logo should not exceed 55
10
ffmpeg-2.8.1.tar.bz2/doc/ffmpeg.texi -> ffmpeg-2.8.3.tar.bz2/doc/ffmpeg.texi
Changed
13
1
2
specified to @command{ffserver} but can be to @command{ffmpeg}.
3
4
@item -sdp_file @var{file} (@emph{global})
5
-Print sdp information to @var{file}.
6
+Print sdp information for an output stream to @var{file}.
7
This allows dumping sdp information when at least one output isn't an
8
-rtp stream.
9
+rtp stream. (Requires at least one of the output formats to be rtp).
10
11
@item -discard (@emph{input})
12
Allows discarding specific streams or frames of streams at the demuxer.
13
ffmpeg-2.8.1.tar.bz2/doc/muxers.texi -> ffmpeg-2.8.3.tar.bz2/doc/muxers.texi
Changed
23
1
2
-y out.ts
3
@end example
4
5
+@section mxf, mxf_d10
6
+
7
+MXF muxer.
8
+
9
+@subsection Options
10
+
11
+The muxer options are:
12
+
13
+@table @option
14
+@item store_user_comments @var{bool}
15
+Set if user comments should be stored if available or never.
16
+IRT D-10 does not allow user comments. The default is thus to write them for
17
+mxf but not for mxf_d10
18
+@end table
19
+
20
@section null
21
22
Null muxer.
23
ffmpeg-2.8.1.tar.bz2/ffmpeg.c -> ffmpeg-2.8.3.tar.bz2/ffmpeg.c
Changed
19
1
2
}
3
}
4
5
+ if (!j)
6
+ goto fail;
7
+
8
av_sdp_create(avc, j, sdp, sizeof(sdp));
9
10
if (!sdp_filename) {
11
12
}
13
}
14
15
+fail:
16
av_freep(&avc);
17
}
18
19
ffmpeg-2.8.1.tar.bz2/libavcodec/aacdec_template.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/aacdec_template.c
Changed
13
1
2
3
spectral_to_sample(ac, samples);
4
5
+ if (!ac->frame->data[0] && samples) {
6
+ av_log(avctx, AV_LOG_ERROR, "no frame data found\n");
7
+ return AVERROR_INVALIDDATA;
8
+ }
9
+
10
ac->frame->nb_samples = samples;
11
ac->frame->sample_rate = avctx->sample_rate;
12
*got_frame_ptr = 1;
13
ffmpeg-2.8.1.tar.bz2/libavcodec/aacps.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/aacps.c
Changed
10
1
2
LOCAL_ALIGNED_16(INTFLOAT, h_step, [2], [4]);
3
int start = ps->border_position[e];
4
int stop = ps->border_position[e+1];
5
- INTFLOAT width = Q30(1.f) / (stop - start);
6
+ INTFLOAT width = Q30(1.f) / ((stop - start) ? (stop - start) : 1);
7
#if USE_FIXED
8
width <<= 1;
9
#endif
10
ffmpeg-2.8.1.tar.bz2/libavcodec/aacsbr_fixed.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/aacsbr_fixed.c
Changed
45
1
2
else
3
temp1.mant = 0x20000000;
4
temp1.exp = (temp1.exp >> 1) + 1;
5
+ if (temp1.exp > 66) { // temp1 > 1E20
6
+ av_log(NULL, AV_LOG_ERROR, "envelope scalefactor overflow in dequant\n");
7
+ temp1 = FLOAT_1;
8
+ }
9
10
temp2.exp = (pan_offset - sbr->data[1].env_facs[e][k].mant) * alpha;
11
if (temp2.exp & 1)
12
13
temp1.exp = NOISE_FLOOR_OFFSET - \
14
sbr->data[0].noise_facs[e][k].mant + 2;
15
temp1.mant = 0x20000000;
16
+ if (temp1.exp > 66) { // temp1 > 1E20
17
+ av_log(NULL, AV_LOG_ERROR, "envelope scalefactor overflow in dequant\n");
18
+ temp1 = FLOAT_1;
19
+ }
20
temp2.exp = 12 - sbr->data[1].noise_facs[e][k].mant + 1;
21
temp2.mant = 0x20000000;
22
fac = av_div_sf(temp1, av_add_sf(FLOAT_1, temp2));
23
24
else
25
temp1.mant = 0x20000000;
26
temp1.exp = (temp1.exp >> 1) + 1;
27
-
28
+ if (temp1.exp > 66) { // temp1 > 1E20
29
+ av_log(NULL, AV_LOG_ERROR, "envelope scalefactor overflow in dequant\n");
30
+ temp1 = FLOAT_1;
31
+ }
32
sbr->data[ch].env_facs[e][k] = temp1;
33
}
34
for (e = 1; e <= sbr->data[ch].bs_num_noise; e++)
35
36
int delta = !((e == e_a[1]) || (e == e_a[0]));
37
for (k = 0; k < sbr->n_lim; k++) {
38
SoftFloat gain_boost, gain_max;
39
- SoftFloat sum[2] = { { 0, 0}, { 0, 0 } };
40
+ SoftFloat sum[2];
41
+ sum[0] = sum[1] = FLOAT_0;
42
for (m = sbr->f_tablelim[k] - sbr->kx[1]; m < sbr->f_tablelim[k + 1] - sbr->kx[1]; m++) {
43
const SoftFloat temp = av_div_sf(sbr->e_origmapped[e][m],
44
av_add_sf(FLOAT_1, sbr->q_mapped[e][m]));
45
ffmpeg-2.8.1.tar.bz2/libavcodec/aacsbr_template.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/aacsbr_template.c
Changed
55
1
2
/** Places SBR in pure upsampling mode. */
3
static void sbr_turnoff(SpectralBandReplication *sbr) {
4
sbr->start = 0;
5
+ sbr->ready_for_dequant = 0;
6
// Init defults used in pure upsampling mode
7
sbr->kx[1] = 32; //Typo in spec, kx' inits to 32
8
sbr->m[1] = 0;
9
10
SpectrumParameters old_spectrum_params;
11
12
sbr->start = 1;
13
+ sbr->ready_for_dequant = 0;
14
15
// Save last spectrum parameters variables to compare to new ones
16
memcpy(&old_spectrum_params, &sbr->spectrum_params, sizeof(SpectrumParameters));
17
18
unsigned int cnt = get_bits_count(gb);
19
20
sbr->id_aac = id_aac;
21
+ sbr->ready_for_dequant = 1;
22
23
if (id_aac == TYPE_SCE || id_aac == TYPE_CCE) {
24
if (read_sbr_single_channel_element(ac, sbr, gb)) {
25
26
27
for (p = 0; p < sbr->n[ch_data->bs_freq_res[e + 1]]; p++) {
28
#if USE_FIXED
29
- SoftFloat sum = { 0, 0 };
30
+ SoftFloat sum = FLOAT_0;
31
const SoftFloat den = av_int2sf(0x20000000 / (env_size * (table[p + 1] - table[p])), 29);
32
for (k = table[p]; k < table[p + 1]; k++) {
33
sum = av_add_sf(sum, sbr->dsp.sum_square(X_high[k] + ilb, iub - ilb));
34
35
sbr_turnoff(sbr);
36
}
37
38
+ if (sbr->start && !sbr->ready_for_dequant) {
39
+ av_log(ac->avctx, AV_LOG_ERROR,
40
+ "No quantized data read for sbr_dequant.\n");
41
+ sbr_turnoff(sbr);
42
+ }
43
+
44
if (!sbr->kx_and_m_pushed) {
45
sbr->kx[0] = sbr->kx[1];
46
sbr->m[0] = sbr->m[1];
47
48
49
if (sbr->start) {
50
sbr_dequant(sbr, id_aac);
51
+ sbr->ready_for_dequant = 0;
52
}
53
for (ch = 0; ch < nch; ch++) {
54
/* decode channel */
55
ffmpeg-2.8.1.tar.bz2/libavcodec/avrndec.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/avrndec.c
Changed
10
1
2
int shift = p->height - avctx->height;
3
int subsample_h, subsample_v;
4
5
- av_pix_fmt_get_chroma_sub_sample(avctx->pix_fmt, &subsample_h, &subsample_v);
6
+ av_pix_fmt_get_chroma_sub_sample(p->format, &subsample_h, &subsample_v);
7
8
p->data[0] += p->linesize[0] * shift;
9
if (p->data[2]) {
10
ffmpeg-2.8.1.tar.bz2/libavcodec/cabac.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/cabac.c
Changed
20
1
2
*
3
* @param buf_size size of buf in bits
4
*/
5
-void ff_init_cabac_decoder(CABACContext *c, const uint8_t *buf, int buf_size){
6
+int ff_init_cabac_decoder(CABACContext *c, const uint8_t *buf, int buf_size){
7
c->bytestream_start=
8
c->bytestream= buf;
9
c->bytestream_end= buf + buf_size;
10
11
#endif
12
c->low+= ((*c->bytestream++)<<2) + 2;
13
c->range= 0x1FE;
14
+ if ((c->range<<(CABAC_BITS+1)) < c->low)
15
+ return AVERROR_INVALIDDATA;
16
+ return 0;
17
}
18
19
void ff_init_cabac_states(void)
20
ffmpeg-2.8.1.tar.bz2/libavcodec/cabac.h -> ffmpeg-2.8.3.tar.bz2/libavcodec/cabac.h
Changed
10
1
2
}CABACContext;
3
4
void ff_init_cabac_encoder(CABACContext *c, uint8_t *buf, int buf_size);
5
-void ff_init_cabac_decoder(CABACContext *c, const uint8_t *buf, int buf_size);
6
+int ff_init_cabac_decoder(CABACContext *c, const uint8_t *buf, int buf_size);
7
void ff_init_cabac_states(void);
8
9
#endif /* AVCODEC_CABAC_H */
10
ffmpeg-2.8.1.tar.bz2/libavcodec/cabac_functions.h -> ffmpeg-2.8.3.tar.bz2/libavcodec/cabac_functions.h
Changed
21
1
2
3
#ifndef get_cabac_inline
4
static void refill2(CABACContext *c){
5
- int i, x;
6
+ int i;
7
+ unsigned x;
8
9
x= c->low ^ (c->low-1);
10
i= 7 - ff_h264_norm_shift[x>>(CABAC_BITS-1)];
11
12
#endif
13
if ((int) (c->bytestream_end - ptr) < n)
14
return NULL;
15
- ff_init_cabac_decoder(c, ptr + n, c->bytestream_end - ptr - n);
16
+ if (ff_init_cabac_decoder(c, ptr + n, c->bytestream_end - ptr - n) < 0)
17
+ return NULL;
18
19
return ptr;
20
}
21
ffmpeg-2.8.1.tar.bz2/libavcodec/dds.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/dds.c
Changed
46
1
2
normal_map = flags & DDPF_NORMALMAP;
3
fourcc = bytestream2_get_le32(gbc);
4
5
+ if (ctx->compressed && ctx->paletted) {
6
+ av_log(avctx, AV_LOG_WARNING,
7
+ "Disabling invalid palette flag for compressed dds.\n");
8
+ ctx->paletted = 0;
9
+ }
10
+
11
bpp = bytestream2_get_le32(gbc); // rgbbitcount
12
r = bytestream2_get_le32(gbc); // rbitmask
13
g = bytestream2_get_le32(gbc); // gbitmask
14
15
return ret;
16
17
if (ctx->compressed) {
18
+ int size = (avctx->coded_height / TEXTURE_BLOCK_H) *
19
+ (avctx->coded_width / TEXTURE_BLOCK_W) * ctx->tex_ratio;
20
ctx->slice_count = av_clip(avctx->thread_count, 1,
21
avctx->coded_height / TEXTURE_BLOCK_H);
22
23
+ if (bytestream2_get_bytes_left(gbc) < size) {
24
+ av_log(avctx, AV_LOG_ERROR,
25
+ "Compressed Buffer is too small (%d < %d).\n",
26
+ bytestream2_get_bytes_left(gbc), size);
27
+ return AVERROR_INVALIDDATA;
28
+ }
29
+
30
/* Use the decompress function on the texture, one block per thread. */
31
ctx->tex_data = gbc->buffer;
32
avctx->execute2(avctx, decompress_texture_thread, frame, NULL, ctx->slice_count);
33
34
frame->palette_has_changed = 1;
35
}
36
37
+ if (bytestream2_get_bytes_left(gbc) < frame->height * linesize) {
38
+ av_log(avctx, AV_LOG_ERROR, "Buffer is too small (%d < %d).\n",
39
+ bytestream2_get_bytes_left(gbc), frame->height * linesize);
40
+ return AVERROR_INVALIDDATA;
41
+ }
42
+
43
av_image_copy_plane(frame->data[0], frame->linesize[0],
44
gbc->buffer, linesize,
45
linesize, frame->height);
46
ffmpeg-2.8.1.tar.bz2/libavcodec/dirac_parser.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/dirac_parser.c
Changed
10
1
2
DiracParseContext *pc = s->priv_data;
3
4
if (pc->overread_index) {
5
- memcpy(pc->buffer, pc->buffer + pc->overread_index,
6
+ memmove(pc->buffer, pc->buffer + pc->overread_index,
7
pc->index - pc->overread_index);
8
pc->index -= pc->overread_index;
9
pc->overread_index = 0;
10
ffmpeg-2.8.1.tar.bz2/libavcodec/dpx.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/dpx.c
Changed
15
1
2
// For 12 bit, ignore alpha
3
if (elements == 4)
4
buf += 2;
5
- // Jump to next aligned position
6
- buf += need_align;
7
}
8
for (i = 0; i < 3; i++)
9
ptr[i] += p->linesize[i];
10
+ // Jump to next aligned position
11
+ buf += need_align;
12
}
13
break;
14
case 16:
15
ffmpeg-2.8.1.tar.bz2/libavcodec/dvdsubdec.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/dvdsubdec.c
Changed
10
1
2
}
3
}
4
the_end:
5
- if (offset1 >= 0) {
6
+ if (offset1 >= 0 && offset2 >= 0) {
7
int w, h;
8
uint8_t *bitmap;
9
10
ffmpeg-2.8.1.tar.bz2/libavcodec/dxtory.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/dxtory.c
Changed
19
1
2
uint8_t *Y1, *Y2, *Y3, *Y4, *U, *V;
3
int ret;
4
5
- if (src_size < avctx->width * avctx->height * 9LL / 8) {
6
+ if (src_size < FFALIGN(avctx->width, 4) * FFALIGN(avctx->height, 4) * 9LL / 8) {
7
av_log(avctx, AV_LOG_ERROR, "packet too small\n");
8
return AVERROR_INVALIDDATA;
9
}
10
11
uint8_t *Y1, *Y2, *U, *V;
12
int ret;
13
14
- if (src_size < avctx->width * avctx->height * 3LL / 2) {
15
+ if (src_size < FFALIGN(avctx->width, 2) * FFALIGN(avctx->height, 2) * 3LL / 2) {
16
av_log(avctx, AV_LOG_ERROR, "packet too small\n");
17
return AVERROR_INVALIDDATA;
18
}
19
ffmpeg-2.8.1.tar.bz2/libavcodec/error_resilience.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/error_resilience.c
Changed
50
1
2
#define MV_UNCHANGED 1
3
const int mb_stride = s->mb_stride;
4
const int mb_width = s->mb_width;
5
- const int mb_height = s->mb_height;
6
+ int mb_height = s->mb_height;
7
int i, depth, num_avail;
8
int mb_x, mb_y, mot_step, mot_stride;
9
10
+ if (s->last_pic.f && s->last_pic.f->data[0])
11
+ mb_height = FFMIN(mb_height, (s->last_pic.f->height+15)>>4);
12
+ if (s->next_pic.f && s->next_pic.f->data[0])
13
+ mb_height = FFMIN(mb_height, (s->next_pic.f->height+15)>>4);
14
+
15
set_mv_strides(s, &mot_step, &mot_stride);
16
17
num_avail = 0;
18
- for (i = 0; i < s->mb_num; i++) {
19
+ for (i = 0; i < mb_width * mb_height; i++) {
20
const int mb_xy = s->mb_index2xy[i];
21
int f = 0;
22
int error = s->error_status_table[mb_xy];
23
24
25
if ((!(s->avctx->error_concealment&FF_EC_GUESS_MVS)) ||
26
num_avail <= mb_width / 2) {
27
- for (mb_y = 0; mb_y < s->mb_height; mb_y++) {
28
+ for (mb_y = 0; mb_y < mb_height; mb_y++) {
29
for (mb_x = 0; mb_x < s->mb_width; mb_x++) {
30
const int mb_xy = mb_x + mb_y * s->mb_stride;
31
int mv_dir = (s->last_pic.f && s->last_pic.f->data[0]) ? MV_DIR_FORWARD : MV_DIR_BACKWARD;
32
33
int score_sum = 0;
34
35
changed = 0;
36
- for (mb_y = 0; mb_y < s->mb_height; mb_y++) {
37
+ for (mb_y = 0; mb_y < mb_height; mb_y++) {
38
for (mb_x = 0; mb_x < s->mb_width; mb_x++) {
39
const int mb_xy = mb_x + mb_y * s->mb_stride;
40
int mv_predictor[8][2] = { { 0 } };
41
42
if (none_left)
43
return;
44
45
- for (i = 0; i < s->mb_num; i++) {
46
+ for (i = 0; i < mb_width * mb_height; i++) {
47
int mb_xy = s->mb_index2xy[i];
48
if (fixed[mb_xy])
49
fixed[mb_xy] = MV_FROZEN;
50
ffmpeg-2.8.1.tar.bz2/libavcodec/faxcompr.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/faxcompr.c
Changed
12
1
2
*mode = !*mode;
3
if (newmode != *mode) { //FIXME CHECK
4
*(*runs)++ = 0;
5
+ if (*runs >= runend) {
6
+ av_log(avctx, AV_LOG_ERROR, "uncompressed run overrun\n");
7
+ return AVERROR_INVALIDDATA;
8
+ }
9
*mode = newmode;
10
}
11
return 0;
12
ffmpeg-2.8.1.tar.bz2/libavcodec/ffv1.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/ffv1.c
Changed
30
1
2
3
av_cold int ff_ffv1_init_slice_state(FFV1Context *f, FFV1Context *fs)
4
{
5
- int j;
6
+ int j, i;
7
8
fs->plane_count = f->plane_count;
9
fs->transparency = f->transparency;
10
11
if (!p->state)
12
return AVERROR(ENOMEM);
13
} else {
14
- if (!p->vlc_state)
15
- p->vlc_state = av_malloc_array(p->context_count, sizeof(VlcState));
16
- if (!p->vlc_state)
17
- return AVERROR(ENOMEM);
18
+ if (!p->vlc_state) {
19
+ p->vlc_state = av_mallocz_array(p->context_count, sizeof(VlcState));
20
+ if (!p->vlc_state)
21
+ return AVERROR(ENOMEM);
22
+ for (i = 0; i < p->context_count; i++) {
23
+ p->vlc_state[i].error_sum = 4;
24
+ p->vlc_state[i].count = 1;
25
+ }
26
+ }
27
}
28
}
29
30
ffmpeg-2.8.1.tar.bz2/libavcodec/ffv1dec.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/ffv1dec.c
Changed
26
1
2
if (ff_ffv1_init_slice_state(f, fs) < 0)
3
return AVERROR(ENOMEM);
4
if (decode_slice_header(f, fs) < 0) {
5
+ fs->slice_x = fs->slice_y = fs->slice_height = fs->slice_width = 0;
6
fs->slice_damaged = 1;
7
return AVERROR_INVALIDDATA;
8
}
9
10
}
11
12
f->quant_table_count = get_symbol(c, state, 0);
13
- if (f->quant_table_count > (unsigned)MAX_QUANT_TABLES)
14
+ if (f->quant_table_count > (unsigned)MAX_QUANT_TABLES || !f->quant_table_count)
15
return AVERROR_INVALIDDATA;
16
17
for (i = 0; i < f->quant_table_count; i++) {
18
19
else v = buf_p - c->bytestream_start;
20
if (buf_p - c->bytestream_start < v) {
21
av_log(avctx, AV_LOG_ERROR, "Slice pointer chain broken\n");
22
+ ff_thread_report_progress(&f->picture, INT_MAX, 0);
23
return AVERROR_INVALIDDATA;
24
}
25
buf_p -= v;
26
ffmpeg-2.8.1.tar.bz2/libavcodec/flashsv.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/flashsv.c
Changed
23
1
2
}
3
4
if (has_diff) {
5
+ if (size < 3) {
6
+ av_log(avctx, AV_LOG_ERROR, "size too small for diff\n");
7
+ return AVERROR_INVALIDDATA;
8
+ }
9
if (!s->keyframe) {
10
av_log(avctx, AV_LOG_ERROR,
11
"Inter frame without keyframe\n");
12
13
int row = get_bits(&gb, 8);
14
av_log(avctx, AV_LOG_DEBUG, "%dx%d zlibprime_curr %dx%d\n",
15
i, j, col, row);
16
+ if (size < 3) {
17
+ av_log(avctx, AV_LOG_ERROR, "size too small for zlibprime_curr\n");
18
+ return AVERROR_INVALIDDATA;
19
+ }
20
size -= 2;
21
avpriv_request_sample(avctx, "zlibprime_curr");
22
return AVERROR_PATCHWELCOME;
23
ffmpeg-2.8.1.tar.bz2/libavcodec/h264_cabac.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/h264_cabac.c
Changed
20
1
2
const int mb_size = ff_h264_mb_sizes[h->sps.chroma_format_idc] *
3
h->sps.bit_depth_luma >> 3;
4
const uint8_t *ptr;
5
+ int ret;
6
7
// We assume these blocks are very rare so we do not optimize it.
8
// FIXME The two following lines get the bitstream position in the cabac
9
10
sl->intra_pcm_ptr = ptr;
11
ptr += mb_size;
12
13
- ff_init_cabac_decoder(&sl->cabac, ptr, sl->cabac.bytestream_end - ptr);
14
+ ret = ff_init_cabac_decoder(&sl->cabac, ptr, sl->cabac.bytestream_end - ptr);
15
+ if (ret < 0)
16
+ return ret;
17
18
// All blocks are present
19
h->cbp_table[mb_xy] = 0xf7ef;
20
ffmpeg-2.8.1.tar.bz2/libavcodec/h264_slice.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/h264_slice.c
Changed
38
1
2
nb_slices = max_slices;
3
}
4
h->slice_context_count = nb_slices;
5
+ h->max_contexts = FFMIN(h->max_contexts, nb_slices);
6
7
if (!HAVE_THREADS || !(h->avctx->active_thread_type & FF_THREAD_SLICE)) {
8
ret = ff_h264_slice_context_init(h, &h->slice_ctx[0]);
9
10
av_log(h->avctx, AV_LOG_ERROR, "Too many fields\n");
11
return AVERROR_INVALIDDATA;
12
}
13
+ if (h->max_contexts > 1) {
14
+ if (!h->single_decode_warning) {
15
+ av_log(h->avctx, AV_LOG_WARNING, "Cannot decode multiple access units as slice threads\n");
16
+ h->single_decode_warning = 1;
17
+ }
18
+ h->max_contexts = 1;
19
+ return SLICE_SINGLETHREAD;
20
+ }
21
+
22
if (h->cur_pic_ptr && FIELD_PICTURE(h) && h->first_field) {
23
ret = ff_h264_field_end(h, h->slice_ctx, 1);
24
h->current_slice = 0;
25
26
align_get_bits(&sl->gb);
27
28
/* init cabac */
29
- ff_init_cabac_decoder(&sl->cabac,
30
+ ret = ff_init_cabac_decoder(&sl->cabac,
31
sl->gb.buffer + get_bits_count(&sl->gb) / 8,
32
(get_bits_left(&sl->gb) + 7) / 8);
33
+ if (ret < 0)
34
+ return ret;
35
36
ff_h264_init_cabac_states(h, sl);
37
38
ffmpeg-2.8.1.tar.bz2/libavcodec/hevc_ps.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/hevc_ps.c
Changed
12
1
2
}
3
4
sps->chroma_format_idc = get_ue_golomb_long(gb);
5
+ if (sps->chroma_format_idc > 3U) {
6
+ av_log(avctx, AV_LOG_ERROR, "chroma_format_idc %d is invalid\n", sps->chroma_format_idc);
7
+ return AVERROR_INVALIDDATA;
8
+ }
9
10
if (sps->chroma_format_idc == 3)
11
sps->separate_colour_plane_flag = get_bits1(gb);
12
ffmpeg-2.8.1.tar.bz2/libavcodec/hqx.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/hqx.c
Changed
12
1
2
3
info_tag = AV_RL32(src);
4
if (info_tag == MKTAG('I', 'N', 'F', 'O')) {
5
- int info_offset = AV_RL32(src + 4);
6
- if (info_offset > UINT32_MAX - 8 || info_offset + 8 > avpkt->size) {
7
+ unsigned info_offset = AV_RL32(src + 4);
8
+ if (info_offset > INT_MAX || info_offset + 8 > avpkt->size) {
9
av_log(avctx, AV_LOG_ERROR,
10
"Invalid INFO header offset: 0x%08"PRIX32" is too large.\n",
11
info_offset);
12
ffmpeg-2.8.1.tar.bz2/libavcodec/ivi.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/ivi.c
Changed
18
1
2
3
#define BITSTREAM_READER_LE
4
#include "libavutil/attributes.h"
5
+#include "libavutil/imgutils.h"
6
#include "libavutil/timer.h"
7
#include "avcodec.h"
8
#include "get_bits.h"
9
10
11
ivi_free_buffers(planes);
12
13
- if (cfg->pic_width < 1 || cfg->pic_height < 1 ||
14
+ if (av_image_check_size(cfg->pic_width, cfg->pic_height, 0, NULL) < 0 ||
15
cfg->luma_bands < 1 || cfg->chroma_bands < 1)
16
return AVERROR_INVALIDDATA;
17
18
ffmpeg-2.8.1.tar.bz2/libavcodec/jpeg2000.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/jpeg2000.c
Changed
37
1
2
#include "libavutil/attributes.h"
3
#include "libavutil/avassert.h"
4
#include "libavutil/common.h"
5
+#include "libavutil/imgutils.h"
6
#include "libavutil/mem.h"
7
#include "avcodec.h"
8
#include "jpeg2000.h"
9
10
codsty->nreslevels2decode - 1,
11
codsty->transform))
12
return ret;
13
- // component size comp->coord is uint16_t so ir cannot overflow
14
+
15
+ if (av_image_check_size(comp->coord[0][1] - comp->coord[0][0],
16
+ comp->coord[1][1] - comp->coord[1][0], 0, avctx))
17
+ return AVERROR_INVALIDDATA;
18
csize = (comp->coord[0][1] - comp->coord[0][0]) *
19
(comp->coord[1][1] - comp->coord[1][0]);
20
+ if (comp->coord[0][1] - comp->coord[0][0] > 32768 ||
21
+ comp->coord[1][1] - comp->coord[1][0] > 32768) {
22
+ av_log(avctx, AV_LOG_ERROR, "component size too large\n");
23
+ return AVERROR_PATCHWELCOME;
24
+ }
25
26
if (codsty->transform == FF_DWT97) {
27
csize += AV_INPUT_BUFFER_PADDING_SIZE / sizeof(*comp->f_data);
28
29
return AVERROR(ENOMEM);
30
for (cblkno = 0; cblkno < nb_codeblocks; cblkno++) {
31
Jpeg2000Cblk *cblk = prec->cblk + cblkno;
32
- uint16_t Cx0, Cy0;
33
+ int Cx0, Cy0;
34
35
/* Compute coordinates of codeblocks */
36
/* Compute Cx0*/
37
ffmpeg-2.8.1.tar.bz2/libavcodec/jpeg2000.h -> ffmpeg-2.8.3.tar.bz2/libavcodec/jpeg2000.h
Changed
50
1
2
int nb_terminationsinc;
3
int data_start[JPEG2000_MAX_PASSES];
4
Jpeg2000Pass passes[JPEG2000_MAX_PASSES];
5
- uint16_t coord[2][2]; // border coordinates {{x0, x1}, {y0, y1}}
6
+ int coord[2][2]; // border coordinates {{x0, x1}, {y0, y1}}
7
} Jpeg2000Cblk; // code block
8
9
typedef struct Jpeg2000Prec {
10
- uint16_t nb_codeblocks_width;
11
- uint16_t nb_codeblocks_height;
12
+ int nb_codeblocks_width;
13
+ int nb_codeblocks_height;
14
Jpeg2000TgtNode *zerobits;
15
Jpeg2000TgtNode *cblkincl;
16
Jpeg2000Cblk *cblk;
17
int decoded_layers;
18
- uint16_t coord[2][2]; // border coordinates {{x0, x1}, {y0, y1}}
19
+ int coord[2][2]; // border coordinates {{x0, x1}, {y0, y1}}
20
} Jpeg2000Prec; // precinct
21
22
typedef struct Jpeg2000Band {
23
- uint16_t coord[2][2]; // border coordinates {{x0, x1}, {y0, y1}}
24
+ int coord[2][2]; // border coordinates {{x0, x1}, {y0, y1}}
25
uint16_t log2_cblk_width, log2_cblk_height;
26
int i_stepsize; // quantization stepsize
27
float f_stepsize; // quantization stepsize
28
29
30
typedef struct Jpeg2000ResLevel {
31
uint8_t nbands;
32
- uint16_t coord[2][2]; // border coordinates {{x0, x1}, {y0, y1}}
33
- uint16_t num_precincts_x, num_precincts_y; // number of precincts in x/y direction
34
+ int coord[2][2]; // border coordinates {{x0, x1}, {y0, y1}}
35
+ int num_precincts_x, num_precincts_y; // number of precincts in x/y direction
36
uint8_t log2_prec_width, log2_prec_height; // exponent of precinct size
37
Jpeg2000Band *band;
38
} Jpeg2000ResLevel; // resolution level
39
40
DWTContext dwt;
41
float *f_data;
42
int *i_data;
43
- uint16_t coord[2][2]; // border coordinates {{x0, x1}, {y0, y1}} -- can be reduced with lowres option
44
- uint16_t coord_o[2][2]; // border coordinates {{x0, x1}, {y0, y1}} -- original values from jpeg2000 headers
45
+ int coord[2][2]; // border coordinates {{x0, x1}, {y0, y1}} -- can be reduced with lowres option
46
+ int coord_o[2][2]; // border coordinates {{x0, x1}, {y0, y1}} -- original values from jpeg2000 headers
47
} Jpeg2000Component;
48
49
/* misc tools */
50
ffmpeg-2.8.1.tar.bz2/libavcodec/jpeg2000dec.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/jpeg2000dec.c
Changed
57
1
2
#include "libavutil/attributes.h"
3
#include "libavutil/avassert.h"
4
#include "libavutil/common.h"
5
+#include "libavutil/imgutils.h"
6
#include "libavutil/opt.h"
7
#include "libavutil/pixdesc.h"
8
#include "avcodec.h"
9
10
avpriv_request_sample(s->avctx, "Support for image offsets");
11
return AVERROR_PATCHWELCOME;
12
}
13
+ if (av_image_check_size(s->width, s->height, 0, s->avctx)) {
14
+ avpriv_request_sample(s->avctx, "Large Dimensions");
15
+ return AVERROR_PATCHWELCOME;
16
+ }
17
18
if (ncomponents <= 0) {
19
av_log(s->avctx, AV_LOG_ERROR, "Invalid number of components: %d\n",
20
21
if (!tile->comp)
22
return AVERROR(ENOMEM);
23
24
- tile->coord[0][0] = FFMAX(tilex * s->tile_width + s->tile_offset_x, s->image_offset_x);
25
- tile->coord[0][1] = FFMIN((tilex + 1) * s->tile_width + s->tile_offset_x, s->width);
26
- tile->coord[1][0] = FFMAX(tiley * s->tile_height + s->tile_offset_y, s->image_offset_y);
27
- tile->coord[1][1] = FFMIN((tiley + 1) * s->tile_height + s->tile_offset_y, s->height);
28
+ tile->coord[0][0] = av_clip(tilex * (int64_t)s->tile_width + s->tile_offset_x, s->image_offset_x, s->width);
29
+ tile->coord[0][1] = av_clip((tilex + 1) * (int64_t)s->tile_width + s->tile_offset_x, s->image_offset_x, s->width);
30
+ tile->coord[1][0] = av_clip(tiley * (int64_t)s->tile_height + s->tile_offset_y, s->image_offset_y, s->height);
31
+ tile->coord[1][1] = av_clip((tiley + 1) * (int64_t)s->tile_height + s->tile_offset_y, s->image_offset_y, s->height);
32
33
for (compno = 0; compno < s->ncomponents; compno++) {
34
Jpeg2000Component *comp = tile->comp + compno;
35
36
av_freep(&s->tile);
37
memset(s->codsty, 0, sizeof(s->codsty));
38
memset(s->qntsty, 0, sizeof(s->qntsty));
39
+ memset(s->properties, 0, sizeof(s->properties));
40
memset(&s->poc , 0, sizeof(s->poc));
41
s->numXtiles = s->numYtiles = 0;
42
+ s->ncomponents = 0;
43
}
44
45
static int jpeg2000_read_main_headers(Jpeg2000DecoderContext *s)
46
47
48
switch (marker) {
49
case JPEG2000_SIZ:
50
+ if (s->ncomponents) {
51
+ av_log(s->avctx, AV_LOG_ERROR, "Duplicate SIZ\n");
52
+ return AVERROR_INVALIDDATA;
53
+ }
54
ret = get_siz(s);
55
if (!s->tile)
56
s->numXtiles = s->numYtiles = 0;
57
ffmpeg-2.8.1.tar.bz2/libavcodec/jpeg2000dwt.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/jpeg2000dwt.c
Changed
37
1
2
data[i] = (data[i] + ((1<<I_PRESHIFT)>>1)) >> I_PRESHIFT;
3
}
4
5
-int ff_jpeg2000_dwt_init(DWTContext *s, uint16_t border[2][2],
6
+int ff_jpeg2000_dwt_init(DWTContext *s, int border[2][2],
7
int decomp_levels, int type)
8
{
9
int i, j, lev = decomp_levels, maxlen,
10
11
12
#define MAX_W 256
13
14
-static int test_dwt(int *array, int *ref, uint16_t border[2][2], int decomp_levels, int type, int max_diff) {
15
+static int test_dwt(int *array, int *ref, int border[2][2], int decomp_levels, int type, int max_diff) {
16
int ret, j;
17
DWTContext s1={{{0}}}, *s= &s1;
18
int64_t err2 = 0;
19
20
return 0;
21
}
22
23
-static int test_dwtf(float *array, float *ref, uint16_t border[2][2], int decomp_levels, float max_diff) {
24
+static int test_dwtf(float *array, float *ref, int border[2][2], int decomp_levels, float max_diff) {
25
int ret, j;
26
DWTContext s1={{{0}}}, *s= &s1;
27
double err2 = 0;
28
29
int main(void) {
30
AVLFG prng;
31
int i,j;
32
- uint16_t border[2][2];
33
+ int border[2][2];
34
int ret, decomp_levels;
35
36
av_lfg_init(&prng, 1);
37
ffmpeg-2.8.1.tar.bz2/libavcodec/jpeg2000dwt.h -> ffmpeg-2.8.3.tar.bz2/libavcodec/jpeg2000dwt.h
Changed
19
1
2
3
typedef struct DWTContext {
4
/// line lengths { horizontal, vertical } in consecutive decomposition levels
5
- uint16_t linelen[FF_DWT_MAX_DECLVLS][2];
6
+ int linelen[FF_DWT_MAX_DECLVLS][2];
7
uint8_t mod[FF_DWT_MAX_DECLVLS][2]; ///< coordinates (x0, y0) of decomp. levels mod 2
8
uint8_t ndeclevels; ///< number of decomposition levels
9
uint8_t type; ///< 0 for 9/7; 1 for 5/3
10
11
* @param decomp_levels number of decomposition levels
12
* @param type 0 for DWT 9/7; 1 for DWT 5/3
13
*/
14
-int ff_jpeg2000_dwt_init(DWTContext *s, uint16_t border[2][2],
15
+int ff_jpeg2000_dwt_init(DWTContext *s, int border[2][2],
16
int decomp_levels, int type);
17
18
int ff_dwt_encode(DWTContext *s, void *t);
19
ffmpeg-2.8.1.tar.bz2/libavcodec/microdvddec.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/microdvddec.c
Changed
10
1
2
3
/* Position */
4
case 'P':
5
+ if (!*s)
6
+ break;
7
tag.persistent = MICRODVD_PERSISTENT_ON;
8
tag.data1 = (*s++ == '1');
9
if (*s != '}')
10
ffmpeg-2.8.1.tar.bz2/libavcodec/mips/h264dsp_init_mips.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/mips/h264dsp_init_mips.c
Changed
60
1
2
#endif // #if HAVE_MSA
3
4
#if HAVE_MMI
5
-static av_cold void h264dsp_init_mmi(H264DSPContext * c,
6
- const int bit_depth,
7
- const int chroma_format_idc)
8
+static av_cold void h264dsp_init_mmi(H264DSPContext * c, const int bit_depth,
9
+ const int chroma_format_idc)
10
{
11
if (bit_depth == 8) {
12
+ c->h264_add_pixels4_clear = ff_h264_add_pixels4_8_mmi;
13
+ c->h264_idct_add = ff_h264_idct_add_8_mmi;
14
+ c->h264_idct8_add = ff_h264_idct8_add_8_mmi;
15
+ c->h264_idct_dc_add = ff_h264_idct_dc_add_8_mmi;
16
+ c->h264_idct8_dc_add = ff_h264_idct8_dc_add_8_mmi;
17
+ c->h264_idct_add16 = ff_h264_idct_add16_8_mmi;
18
+ c->h264_idct_add16intra = ff_h264_idct_add16intra_8_mmi;
19
+ c->h264_idct8_add4 = ff_h264_idct8_add4_8_mmi;
20
+
21
+ if (chroma_format_idc <= 1)
22
+ c->h264_idct_add8 = ff_h264_idct_add8_8_mmi;
23
+ else
24
+ c->h264_idct_add8 = ff_h264_idct_add8_422_8_mmi;
25
+
26
+ c->h264_luma_dc_dequant_idct = ff_h264_luma_dc_dequant_idct_8_mmi;
27
+
28
+ if (chroma_format_idc <= 1)
29
+ c->h264_chroma_dc_dequant_idct =
30
+ ff_h264_chroma_dc_dequant_idct_8_mmi;
31
+ else
32
+ c->h264_chroma_dc_dequant_idct =
33
+ ff_h264_chroma422_dc_dequant_idct_8_mmi;
34
+
35
c->weight_h264_pixels_tab[0] = ff_h264_weight_pixels16_8_mmi;
36
c->weight_h264_pixels_tab[1] = ff_h264_weight_pixels8_8_mmi;
37
c->weight_h264_pixels_tab[2] = ff_h264_weight_pixels4_8_mmi;
38
39
c->biweight_h264_pixels_tab[0] = ff_h264_biweight_pixels16_8_mmi;
40
c->biweight_h264_pixels_tab[1] = ff_h264_biweight_pixels8_8_mmi;
41
c->biweight_h264_pixels_tab[2] = ff_h264_biweight_pixels4_8_mmi;
42
+
43
+ c->h264_v_loop_filter_chroma = ff_deblock_v_chroma_8_mmi;
44
+ c->h264_v_loop_filter_chroma_intra = ff_deblock_v_chroma_intra_8_mmi;
45
+
46
+ if (chroma_format_idc <= 1) {
47
+ c->h264_h_loop_filter_chroma =
48
+ ff_deblock_h_chroma_8_mmi;
49
+ c->h264_h_loop_filter_chroma_intra =
50
+ ff_deblock_h_chroma_intra_8_mmi;
51
+ }
52
+
53
+ c->h264_v_loop_filter_luma = ff_deblock_v_luma_8_mmi;
54
+ c->h264_v_loop_filter_luma_intra = ff_deblock_v_luma_intra_8_mmi;
55
+ c->h264_h_loop_filter_luma = ff_deblock_h_luma_8_mmi;
56
+ c->h264_h_loop_filter_luma_intra = ff_deblock_h_luma_intra_8_mmi;
57
}
58
}
59
#endif /* HAVE_MMI */
60
ffmpeg-2.8.1.tar.bz2/libavcodec/mips/h264dsp_mips.h -> ffmpeg-2.8.3.tar.bz2/libavcodec/mips/h264dsp_mips.h
Changed
56
1
2
void ff_vp8_pred16x16_127_dc_8_msa(uint8_t *src, ptrdiff_t stride);
3
void ff_vp8_pred16x16_129_dc_8_msa(uint8_t *src, ptrdiff_t stride);
4
5
+void ff_h264_add_pixels4_8_mmi(uint8_t *_dst, int16_t *_src, int stride);
6
+void ff_h264_idct_add_8_mmi(uint8_t *dst, int16_t *block, int stride);
7
+void ff_h264_idct8_add_8_mmi(uint8_t *dst, int16_t *block, int stride);
8
+void ff_h264_idct_dc_add_8_mmi(uint8_t *dst, int16_t *block, int stride);
9
+void ff_h264_idct8_dc_add_8_mmi(uint8_t *dst, int16_t *block, int stride);
10
+void ff_h264_idct_add16_8_mmi(uint8_t *dst, const int *block_offset,
11
+ int16_t *block, int stride, const uint8_t nnzc[15*8]);
12
+void ff_h264_idct_add16intra_8_mmi(uint8_t *dst, const int *block_offset,
13
+ int16_t *block, int stride, const uint8_t nnzc[15*8]);
14
+void ff_h264_idct8_add4_8_mmi(uint8_t *dst, const int *block_offset,
15
+ int16_t *block, int stride, const uint8_t nnzc[15*8]);
16
+void ff_h264_idct_add8_8_mmi(uint8_t **dest, const int *block_offset,
17
+ int16_t *block, int stride, const uint8_t nnzc[15*8]);
18
+void ff_h264_idct_add8_422_8_mmi(uint8_t **dest, const int *block_offset,
19
+ int16_t *block, int stride, const uint8_t nnzc[15*8]);
20
+void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
21
+ int qmul);
22
+void ff_h264_chroma_dc_dequant_idct_8_mmi(int16_t *block, int qmul);
23
+void ff_h264_chroma422_dc_dequant_idct_8_mmi(int16_t *block, int qmul);
24
+
25
void ff_h264_weight_pixels16_8_mmi(uint8_t *block, int stride, int height,
26
int log2_denom, int weight, int offset);
27
void ff_h264_biweight_pixels16_8_mmi(uint8_t *dst, uint8_t *src,
28
29
int stride, int height, int log2_denom, int weightd, int weights,
30
int offset);
31
32
+void ff_deblock_v_chroma_8_mmi(uint8_t *pix, int stride, int alpha, int beta,
33
+ int8_t *tc0);
34
+void ff_deblock_v_chroma_intra_8_mmi(uint8_t *pix, int stride, int alpha,
35
+ int beta);
36
+void ff_deblock_h_chroma_8_mmi(uint8_t *pix, int stride, int alpha, int beta,
37
+ int8_t *tc0);
38
+void ff_deblock_h_chroma_intra_8_mmi(uint8_t *pix, int stride, int alpha,
39
+ int beta);
40
+void ff_deblock_v_luma_8_mmi(uint8_t *pix, int stride, int alpha, int beta,
41
+ int8_t *tc0);
42
+void ff_deblock_v_luma_intra_8_mmi(uint8_t *pix, int stride, int alpha,
43
+ int beta);
44
+void ff_deblock_h_luma_8_mmi(uint8_t *pix, int stride, int alpha, int beta,
45
+ int8_t *tc0);
46
+void ff_deblock_h_luma_intra_8_mmi(uint8_t *pix, int stride, int alpha,
47
+ int beta);
48
+void ff_deblock_v8_luma_8_mmi(uint8_t *pix, int stride, int alpha, int beta,
49
+ int8_t *tc0);
50
+void ff_deblock_v8_luma_intra_8_mmi(uint8_t *pix, int stride, int alpha,
51
+ int beta);
52
+
53
void ff_put_h264_qpel16_mc00_mmi(uint8_t *dst, const uint8_t *src,
54
ptrdiff_t dst_stride);
55
void ff_put_h264_qpel16_mc10_mmi(uint8_t *dst, const uint8_t *src,
56
ffmpeg-2.8.1.tar.bz2/libavcodec/mips/h264dsp_mmi.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/mips/h264dsp_mmi.c
Changed
201
1
2
* Copyright (c) 2015 Loongson Technology Corporation Limited
3
* Copyright (c) 2015 Zhou Xiaoyong <zhouxiaoyong@loongson.cn>
4
* Zhang Shuangshuang <zhangshuangshuang@ict.ac.cn>
5
+ * Heiher <r@hev.cc>
6
*
7
* This file is part of FFmpeg.
8
*
9
10
#include "libavcodec/bit_depth_template.c"
11
#include "h264dsp_mips.h"
12
13
+void ff_h264_add_pixels4_8_mmi(uint8_t *dst, int16_t *src, int stride)
14
+{
15
+ __asm__ volatile (
16
+ "xor $f0, $f0, $f0 \r\n"
17
+ "ldc1 $f2, 0(%[src]) \r\n"
18
+ "ldc1 $f4, 8(%[src]) \r\n"
19
+ "ldc1 $f6, 16(%[src]) \r\n"
20
+ "ldc1 $f8, 24(%[src]) \r\n"
21
+ "lwc1 $f10, 0(%[dst0]) \r\n"
22
+ "lwc1 $f12, 0(%[dst1]) \r\n"
23
+ "lwc1 $f14, 0(%[dst2]) \r\n"
24
+ "lwc1 $f16, 0(%[dst3]) \r\n"
25
+ "punpcklbh $f10, $f10, $f0 \r\n"
26
+ "punpcklbh $f12, $f12, $f0 \r\n"
27
+ "punpcklbh $f14, $f14, $f0 \r\n"
28
+ "punpcklbh $f16, $f16, $f0 \r\n"
29
+ "paddh $f2, $f2, $f10 \r\n"
30
+ "paddh $f4, $f4, $f12 \r\n"
31
+ "paddh $f6, $f6, $f14 \r\n"
32
+ "paddh $f8, $f8, $f16 \r\n"
33
+ "packushb $f2, $f2, $f0 \r\n"
34
+ "packushb $f4, $f4, $f0 \r\n"
35
+ "packushb $f6, $f6, $f0 \r\n"
36
+ "packushb $f8, $f8, $f0 \r\n"
37
+ "swc1 $f2, 0(%[dst0]) \r\n"
38
+ "swc1 $f4, 0(%[dst1]) \r\n"
39
+ "swc1 $f6, 0(%[dst2]) \r\n"
40
+ "swc1 $f8, 0(%[dst3]) \r\n"
41
+ ::[dst0]"r"(dst),[dst1]"r"(dst+stride),[dst2]"r"(dst+2*stride),
42
+ [dst3]"r"(dst+3*stride),[src]"r"(src)
43
+ : "$f0","$f2","$f4","$f6","$f8","$f10","$f12","$f14","$f16"
44
+ );
45
+
46
+ memset(src, 0, 32);
47
+}
48
+
49
+void ff_h264_idct_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
50
+{
51
+ __asm__ volatile (
52
+ "dli $8, 1 \r\n"
53
+ "ldc1 $f0, 0(%[block]) \r\n"
54
+ "dmtc1 $8, $f16 \r\n"
55
+ "ldc1 $f2, 8(%[block]) \r\n"
56
+ "dli $8, 6 \r\n"
57
+ "ldc1 $f4, 16(%[block]) \r\n"
58
+ "dmtc1 $8, $f18 \r\n"
59
+ "psrah $f8, $f2, $f16 \r\n"
60
+ "ldc1 $f6, 24(%[block]) \r\n"
61
+ "psrah $f10, $f6, $f16 \r\n"
62
+ "psubh $f8, $f8, $f6 \r\n"
63
+ "paddh $f10, $f10, $f2 \r\n"
64
+ "paddh $f20, $f4, $f0 \r\n"
65
+ "psubh $f0, $f0, $f4 \r\n"
66
+ "paddh $f22, $f10, $f20 \r\n"
67
+ "psubh $f4, $f20, $f10 \r\n"
68
+ "paddh $f20, $f8, $f0 \r\n"
69
+ "psubh $f0, $f0, $f8 \r\n"
70
+ "punpckhhw $f2, $f22, $f20 \r\n"
71
+ "punpcklhw $f10, $f22, $f20 \r\n"
72
+ "punpckhhw $f8, $f0, $f4 \r\n"
73
+ "punpcklhw $f0, $f0, $f4 \r\n"
74
+ "punpckhwd $f4, $f10, $f0 \r\n"
75
+ "punpcklwd $f10, $f10, $f0 \r\n"
76
+ "punpcklwd $f20, $f2, $f8 \r\n"
77
+ "punpckhwd $f0, $f2, $f8 \r\n"
78
+ "paddh $f10, $f10, %[ff_pw_32] \r\n"
79
+ "psrah $f8, $f4, $f16 \r\n"
80
+ "psrah $f6, $f0, $f16 \r\n"
81
+ "psubh $f8, $f8, $f0 \r\n"
82
+ "paddh $f6, $f6, $f4 \r\n"
83
+ "paddh $f2, $f20, $f10 \r\n"
84
+ "psubh $f10, $f10, $f20 \r\n"
85
+ "paddh $f20, $f6, $f2 \r\n"
86
+ "psubh $f2, $f2, $f6 \r\n"
87
+ "paddh $f22, $f8, $f10 \r\n"
88
+ "xor $f14, $f14, $f14 \r\n"
89
+ "psubh $f10, $f10, $f8 \r\n"
90
+ "sdc1 $f14, 0(%[block]) \r\n"
91
+ "sdc1 $f14, 8(%[block]) \r\n"
92
+ "sdc1 $f14, 16(%[block]) \r\n"
93
+ "sdc1 $f14, 24(%[block]) \r\n"
94
+ "lwc1 $f4, 0(%[dst]) \r\n"
95
+ "psrah $f6, $f20, $f18 \r\n"
96
+ "gslwxc1 $f0, 0(%[dst], %[stride]) \r\n"
97
+ "psrah $f8, $f22, $f18 \r\n"
98
+ "punpcklbh $f4, $f4, $f14 \r\n"
99
+ "punpcklbh $f0, $f0, $f14 \r\n"
100
+ "paddh $f4, $f4, $f6 \r\n"
101
+ "paddh $f0, $f0, $f8 \r\n"
102
+ "packushb $f4, $f4, $f14 \r\n"
103
+ "packushb $f0, $f0, $f14 \r\n"
104
+ "swc1 $f4, 0(%[dst]) \r\n"
105
+ "gsswxc1 $f0, 0(%[dst], %[stride]) \r\n"
106
+ "daddu %[dst], %[dst], %[stride] \r\n"
107
+ "daddu %[dst], %[dst], %[stride] \r\n"
108
+ "lwc1 $f4, 0(%[dst]) \r\n"
109
+ "psrah $f10, $f10, $f18 \r\n"
110
+ "gslwxc1 $f0, 0(%[dst], %[stride]) \r\n"
111
+ "psrah $f2, $f2, $f18 \r\n"
112
+ "punpcklbh $f4, $f4, $f14 \r\n"
113
+ "punpcklbh $f0, $f0, $f14 \r\n"
114
+ "paddh $f4, $f4, $f10 \r\n"
115
+ "paddh $f0, $f0, $f2 \r\n"
116
+ "packushb $f4, $f4, $f14 \r\n"
117
+ "swc1 $f4, 0(%[dst]) \r\n"
118
+ "packushb $f0, $f0, $f14 \r\n"
119
+ "gsswxc1 $f0, 0(%[dst], %[stride]) \r\n"
120
+ ::[dst]"r"(dst),[block]"r"(block),[stride]"r"((uint64_t)stride),
121
+ [ff_pw_32]"f"(ff_pw_32)
122
+ : "$8","$f0","$f2","$f4","$f6","$f8","$f10","$f12","$f14","$f16",
123
+ "$f18","$f20","$f22"
124
+ );
125
+
126
+ memset(block, 0, 32);
127
+}
128
+
129
+void ff_h264_idct8_add_8_mmi(uint8_t *dst, int16_t *block, int stride)
130
+{
131
+ __asm__ volatile (
132
+ "lhu $10, 0x0(%[block]) \r\n"
133
+ "daddiu $29, $29, -0x20 \r\n"
134
+ "daddiu $10, $10, 0x20 \r\n"
135
+ "ldc1 $f2, 0x10(%[block]) \r\n"
136
+ "sh $10, 0x0(%[block]) \r\n"
137
+ "ldc1 $f4, 0x20(%[block]) \r\n"
138
+ "dli $10, 0x1 \r\n"
139
+ "ldc1 $f6, 0x30(%[block]) \r\n"
140
+ "dmtc1 $10, $f16 \r\n"
141
+ "ldc1 $f10, 0x50(%[block]) \r\n"
142
+ "ldc1 $f12, 0x60(%[block]) \r\n"
143
+ "ldc1 $f14, 0x70(%[block]) \r\n"
144
+ "mov.d $f0, $f2 \r\n"
145
+ "psrah $f2, $f2, $f16 \r\n"
146
+ "psrah $f8, $f10, $f16 \r\n"
147
+ "paddh $f2, $f2, $f0 \r\n"
148
+ "paddh $f8, $f8, $f10 \r\n"
149
+ "paddh $f2, $f2, $f10 \r\n"
150
+ "paddh $f8, $f8, $f14 \r\n"
151
+ "paddh $f2, $f2, $f6 \r\n"
152
+ "psubh $f8, $f8, $f0 \r\n"
153
+ "psubh $f0, $f0, $f6 \r\n"
154
+ "psubh $f10, $f10, $f6 \r\n"
155
+ "psrah $f6, $f6, $f16 \r\n"
156
+ "paddh $f0, $f0, $f14 \r\n"
157
+ "psubh $f10, $f10, $f14 \r\n"
158
+ "psrah $f14, $f14, $f16 \r\n"
159
+ "psubh $f0, $f0, $f6 \r\n"
160
+ "dli $10, 0x2 \r\n"
161
+ "psubh $f10, $f10, $f14 \r\n"
162
+ "dmtc1 $10, $f18 \r\n"
163
+ "mov.d $f14, $f2 \r\n"
164
+ "psrah $f2, $f2, $f18 \r\n"
165
+ "psrah $f6, $f8, $f18 \r\n"
166
+ "paddh $f6, $f6, $f0 \r\n"
167
+ "psrah $f0, $f0, $f18 \r\n"
168
+ "paddh $f2, $f2, $f10 \r\n"
169
+ "psrah $f10, $f10, $f18 \r\n"
170
+ "psubh $f0, $f0, $f8 \r\n"
171
+ "psubh $f14, $f14, $f10 \r\n"
172
+ "mov.d $f10, $f12 \r\n"
173
+ "psrah $f12, $f12, $f16 \r\n"
174
+ "psrah $f8, $f4, $f16 \r\n"
175
+ "paddh $f12, $f12, $f4 \r\n"
176
+ "psubh $f8, $f8, $f10 \r\n"
177
+ "ldc1 $f4, 0x0(%[block]) \r\n"
178
+ "ldc1 $f10, 0x40(%[block]) \r\n"
179
+ "paddh $f10, $f10, $f4 \r\n"
180
+ "paddh $f4, $f4, $f4 \r\n"
181
+ "paddh $f12, $f12, $f10 \r\n"
182
+ "psubh $f4, $f4, $f10 \r\n"
183
+ "paddh $f10, $f10, $f10 \r\n"
184
+ "paddh $f8, $f8, $f4 \r\n"
185
+ "psubh $f10, $f10, $f12 \r\n"
186
+ "paddh $f4, $f4, $f4 \r\n"
187
+ "paddh $f14, $f14, $f12 \r\n"
188
+ "psubh $f4, $f4, $f8 \r\n"
189
+ "paddh $f12, $f12, $f12 \r\n"
190
+ "paddh $f0, $f0, $f8 \r\n"
191
+ "psubh $f12, $f12, $f14 \r\n"
192
+ "paddh $f8, $f8, $f8 \r\n"
193
+ "paddh $f6, $f6, $f4 \r\n"
194
+ "psubh $f8, $f8, $f0 \r\n"
195
+ "paddh $f4, $f4, $f4 \r\n"
196
+ "paddh $f2, $f2, $f10 \r\n"
197
+ "psubh $f4, $f4, $f6 \r\n"
198
+ "paddh $f10, $f10, $f10 \r\n"
199
+ "sdc1 $f12, 0x0(%[block]) \r\n"
200
+ "psubh $f10, $f10, $f2 \r\n"
201
ffmpeg-2.8.1.tar.bz2/libavcodec/mjpegdec.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/mjpegdec.c
Changed
72
1
2
av_log(s->avctx, AV_LOG_INFO, "AVID: len:%d %d\n", len, len > 14 ? buf[12] : -1);
3
}
4
5
+static void init_idct(AVCodecContext *avctx)
6
+{
7
+ MJpegDecodeContext *s = avctx->priv_data;
8
+
9
+ ff_idctdsp_init(&s->idsp, avctx);
10
+ ff_init_scantable(s->idsp.idct_permutation, &s->scantable,
11
+ ff_zigzag_direct);
12
+}
13
+
14
av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx)
15
{
16
MJpegDecodeContext *s = avctx->priv_data;
17
18
s->avctx = avctx;
19
ff_blockdsp_init(&s->bdsp, avctx);
20
ff_hpeldsp_init(&s->hdsp, avctx->flags);
21
- ff_idctdsp_init(&s->idsp, avctx);
22
- ff_init_scantable(s->idsp.idct_permutation, &s->scantable,
23
- ff_zigzag_direct);
24
+ init_idct(avctx);
25
s->buffer_size = 0;
26
s->buffer = NULL;
27
s->start_code = -1;
28
29
30
/* XXX: verify len field validity */
31
len = get_bits(&s->gb, 16);
32
- s->avctx->bits_per_raw_sample =
33
bits = get_bits(&s->gb, 8);
34
35
if (bits > 16 || bits < 1) {
36
37
return AVERROR_INVALIDDATA;
38
}
39
40
+ if (s->avctx->bits_per_raw_sample != bits) {
41
+ av_log(s->avctx, AV_LOG_INFO, "Changeing bps to %d\n", bits);
42
+ s->avctx->bits_per_raw_sample = bits;
43
+ init_idct(s->avctx);
44
+ }
45
if (s->pegasus_rct)
46
bits = 9;
47
if (bits == 9 && !s->pegasus_rct)
48
49
dc = mjpeg_decode_dc(s, s->dc_index[i]);
50
if(dc == 0xFFFFF)
51
return -1;
52
- if(bits<=8){
53
+ if ( h * mb_x + x >= s->width
54
+ || v * mb_y + y >= s->height) {
55
+ // Nothing to do
56
+ } else if (bits<=8) {
57
ptr = s->picture_ptr->data[c] + (linesize * (v * mb_y + y)) + (h * mb_x + x); //FIXME optimize this crap
58
if(y==0 && toprow){
59
if(x==0 && leftcol){
60
61
dc = mjpeg_decode_dc(s, s->dc_index[i]);
62
if(dc == 0xFFFFF)
63
return -1;
64
- if(bits<=8){
65
+ if ( h * mb_x + x >= s->width
66
+ || v * mb_y + y >= s->height) {
67
+ // Nothing to do
68
+ } else if (bits<=8) {
69
ptr = s->picture_ptr->data[c] +
70
(linesize * (v * mb_y + y)) +
71
(h * mb_x + x); //FIXME optimize this crap
72
ffmpeg-2.8.1.tar.bz2/libavcodec/mpeg12dec.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/mpeg12dec.c
Changed
10
1
2
(left && show_bits(&s->gb, FFMIN(left, 23)) && !is_d10) ||
3
((avctx->err_recognition & (AV_EF_BITSTREAM | AV_EF_AGGRESSIVE)) && left > 8)) {
4
av_log(avctx, AV_LOG_ERROR, "end mismatch left=%d %0X\n",
5
- left, show_bits(&s->gb, FFMIN(left, 23)));
6
+ left, left>0 ? show_bits(&s->gb, FFMIN(left, 23)) : 0);
7
return AVERROR_INVALIDDATA;
8
} else
9
goto eos;
10
ffmpeg-2.8.1.tar.bz2/libavcodec/mpegvideo.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/mpegvideo.c
Changed
9
1
2
3
s->parse_context.buffer = NULL;
4
s->parse_context.buffer_size = 0;
5
+ s->parse_context.overread = 0;
6
s->bitstream_buffer = NULL;
7
s->allocated_bitstream_buffer_size = 0;
8
s->picture = NULL;
9
ffmpeg-2.8.1.tar.bz2/libavcodec/opusdec.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/opusdec.c
Changed
21
1
2
if (buffer_samples) {
3
float *buf[2] = { c->out[2 * i + 0] ? c->out[2 * i + 0] : (float*)frame->extended_data[0],
4
c->out[2 * i + 1] ? c->out[2 * i + 1] : (float*)frame->extended_data[0] };
5
- buf[0] += buffer_samples;
6
- buf[1] += buffer_samples;
7
+ buf[0] += decoded_samples;
8
+ buf[1] += decoded_samples;
9
ret = av_audio_fifo_write(c->sync_buffers[i], (void**)buf, buffer_samples);
10
if (ret < 0)
11
return ret;
12
13
memset(frame->extended_data[i], 0, frame->linesize[0]);
14
}
15
16
- if (c->gain_i) {
17
+ if (c->gain_i && decoded_samples > 0) {
18
c->fdsp->vector_fmul_scalar((float*)frame->extended_data[i],
19
(float*)frame->extended_data[i],
20
c->gain, FFALIGN(decoded_samples, 8));
21
ffmpeg-2.8.1.tar.bz2/libavcodec/pngdec.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/pngdec.c
Changed
31
1
2
break;
3
4
default:
5
- av_assert0(0);
6
+ avpriv_request_sample(avctx, "bit depth %d "
7
+ "and color type %d with TRNS",
8
+ s->bit_depth, s->color_type);
9
+ return AVERROR_INVALIDDATA;
10
}
11
12
s->bpp += byte_depth;
13
14
for (x = s->x_offset; x < s->x_offset + s->cur_w; ++x, foreground += s->bpp, background += s->bpp) {
15
size_t b;
16
uint8_t foreground_alpha, background_alpha, output_alpha;
17
- uint8_t output[4];
18
+ uint8_t output[10];
19
20
// Since we might be blending alpha onto alpha, we use the following equations:
21
// output_alpha = foreground_alpha + (1 - foreground_alpha) * background_alpha
22
23
24
output_alpha = foreground_alpha + FAST_DIV255((255 - foreground_alpha) * background_alpha);
25
26
+ av_assert0(s->bpp <= 10);
27
+
28
for (b = 0; b < s->bpp - 1; ++b) {
29
if (output_alpha == 0) {
30
output[b] = 0;
31
ffmpeg-2.8.1.tar.bz2/libavcodec/sbr.h -> ffmpeg-2.8.3.tar.bz2/libavcodec/sbr.h
Changed
9
1
2
struct SpectralBandReplication {
3
int sample_rate;
4
int start;
5
+ int ready_for_dequant;
6
int id_aac;
7
int reset;
8
SpectrumParameters spectrum_params;
9
ffmpeg-2.8.1.tar.bz2/libavcodec/smacker.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/smacker.c
Changed
12
1
2
3
/* get output buffer */
4
frame->nb_samples = unp_size / (avctx->channels * (bits + 1));
5
+ if (unp_size % (avctx->channels * (bits + 1))) {
6
+ av_log(avctx, AV_LOG_ERROR, "unp_size %d is odd\n", unp_size);
7
+ return AVERROR(EINVAL);
8
+ }
9
if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
10
return ret;
11
samples = (int16_t *)frame->data[0];
12
ffmpeg-2.8.1.tar.bz2/libavcodec/takdec.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/takdec.c
Changed
19
1
2
for (; length2 > 0; length2 -= tmp) {
3
tmp = FFMIN(length2, x);
4
5
- for (i = 0; i < tmp; i++)
6
+ for (i = 0; i < tmp - (tmp == length2); i++)
7
s->residues[filter_order + i] = *p2++ >> dshift;
8
9
for (i = 0; i < tmp; i++) {
10
11
*p1++ = v;
12
}
13
14
- memcpy(s->residues, &s->residues[tmp], 2 * filter_order);
15
+ memmove(s->residues, &s->residues[tmp], 2 * filter_order);
16
}
17
18
emms_c();
19
ffmpeg-2.8.1.tar.bz2/libavcodec/utils.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/utils.c
Changed
10
1
2
return frame_bytes * 8 / bps;
3
}
4
5
- if (ch > 0) {
6
+ if (ch > 0 && ch < INT_MAX/16) {
7
/* calc from frame_bytes and channels */
8
switch (id) {
9
case AV_CODEC_ID_ADPCM_AFC:
10
ffmpeg-2.8.1.tar.bz2/libavcodec/vp8.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/vp8.c
Changed
10
1
2
s->mb_height = (s->avctx->coded_height + 15) / 16;
3
4
s->mb_layout = is_vp7 || avctx->active_thread_type == FF_THREAD_SLICE &&
5
- FFMIN(s->num_coeff_partitions, avctx->thread_count) > 1;
6
+ avctx->thread_count > 1;
7
if (!s->mb_layout) { // Frame threading and one thread
8
s->macroblocks_base = av_mallocz((s->mb_width + s->mb_height * 2 + 1) *
9
sizeof(*s->macroblocks));
10
ffmpeg-2.8.1.tar.bz2/libavcodec/wmaprodec.c -> ffmpeg-2.8.3.tar.bz2/libavcodec/wmaprodec.c
Changed
13
1
2
s->packet_done = 1;
3
}
4
5
+ if (remaining_bits(s, gb) < 0) {
6
+ av_log(avctx, AV_LOG_ERROR, "Overread %d\n", -remaining_bits(s, gb));
7
+ s->packet_loss = 1;
8
+ }
9
+
10
if (s->packet_done && !s->packet_loss &&
11
remaining_bits(s, gb) > 0) {
12
/** save the rest of the data so that it can be decoded
13
ffmpeg-2.8.1.tar.bz2/libavcodec/x86/videodsp.asm -> ffmpeg-2.8.3.tar.bz2/libavcodec/x86/videodsp.asm
Changed
34
1
2
%elif (%2-%%off) == 2
3
mov valw, [srcq+%2-2]
4
%elifidn %1, body
5
- mov vald, [srcq+%2-3]
6
-%else
7
+ mov valb, [srcq+%2-1]
8
+ sal vald, 16
9
+ mov valw, [srcq+%2-3]
10
+%elifidn %1, bottom
11
+ movd mm %+ %%mmx_idx, [srcq+%2-4]
12
+%else ; top
13
movd mm %+ %%mmx_idx, [srcq+%2-3]
14
%endif
15
%endif ; (%2-%%off) >= 1
16
17
mov [dstq+%2-2], valw
18
%elifidn %1, body
19
mov [dstq+%2-3], valw
20
- shr vald, 16
21
+ sar vald, 16
22
mov [dstq+%2-1], valb
23
%else
24
movd vald, mm %+ %%mmx_idx
25
+%ifidn %1, bottom
26
+ sar vald, 8
27
+%endif
28
mov [dstq+%2-3], valw
29
- shr vald, 16
30
+ sar vald, 16
31
mov [dstq+%2-1], valb
32
%endif
33
%endif ; (%2-%%off) >= 1
34
ffmpeg-2.8.1.tar.bz2/libavformat/brstm.c -> ffmpeg-2.8.3.tar.bz2/libavformat/brstm.c
Changed
10
1
2
avio_skip(s->pb, 1); // padding
3
4
st->codec->sample_rate = bfstm ? read32(s) : read16(s);
5
- if (!st->codec->sample_rate)
6
+ if (st->codec->sample_rate <= 0)
7
return AVERROR_INVALIDDATA;
8
9
if (!bfstm)
10
ffmpeg-2.8.1.tar.bz2/libavformat/concatdec.c -> ffmpeg-2.8.3.tar.bz2/libavformat/concatdec.c
Changed
10
1
2
file->start_time = !fileno ? 0 :
3
cat->files[fileno - 1].start_time +
4
cat->files[fileno - 1].duration;
5
- file->file_start_time = (avf->start_time == AV_NOPTS_VALUE) ? 0 : avf->start_time;
6
+ file->file_start_time = (cat->avf->start_time == AV_NOPTS_VALUE) ? 0 : cat->avf->start_time;
7
file->file_inpoint = (file->inpoint == AV_NOPTS_VALUE) ? file->file_start_time : file->inpoint;
8
if ((ret = match_streams(avf)) < 0)
9
return ret;
10
ffmpeg-2.8.1.tar.bz2/libavformat/hls.c -> ffmpeg-2.8.3.tar.bz2/libavformat/hls.c
Changed
201
1
2
char *key;
3
enum KeyType key_type;
4
uint8_t iv[16];
5
+ /* associated Media Initialization Section, treated as a segment */
6
+ struct segment *init_section;
7
};
8
9
struct rendition;
10
11
int64_t cur_seg_offset;
12
int64_t last_load_time;
13
14
+ /* Currently active Media Initialization Section */
15
+ struct segment *cur_init_section;
16
+ uint8_t *init_sec_buf;
17
+ unsigned int init_sec_buf_size;
18
+ unsigned int init_sec_data_len;
19
+ unsigned int init_sec_buf_read_offset;
20
+
21
char key_url[MAX_URL_SIZE];
22
uint8_t key[16];
23
24
25
* multiple (playlist-less) renditions associated with them. */
26
int n_renditions;
27
struct rendition **renditions;
28
+
29
+ /* Media Initialization Sections (EXT-X-MAP) associated with this
30
+ * playlist, if any. */
31
+ int n_init_sections;
32
+ struct segment **init_sections;
33
};
34
35
/*
36
37
pls->n_segments = 0;
38
}
39
40
+static void free_init_section_list(struct playlist *pls)
41
+{
42
+ int i;
43
+ for (i = 0; i < pls->n_init_sections; i++) {
44
+ av_freep(&pls->init_sections[i]->url);
45
+ av_freep(&pls->init_sections[i]);
46
+ }
47
+ av_freep(&pls->init_sections);
48
+ pls->n_init_sections = 0;
49
+}
50
+
51
static void free_playlist_list(HLSContext *c)
52
{
53
int i;
54
for (i = 0; i < c->n_playlists; i++) {
55
struct playlist *pls = c->playlists[i];
56
free_segment_list(pls);
57
+ free_init_section_list(pls);
58
av_freep(&pls->renditions);
59
av_freep(&pls->id3_buf);
60
av_dict_free(&pls->id3_initial);
61
ff_id3v2_free_extra_meta(&pls->id3_deferred_extra);
62
+ av_freep(&pls->init_sec_buf);
63
av_free_packet(&pls->pkt);
64
av_freep(&pls->pb.buffer);
65
if (pls->input)
66
67
}
68
}
69
70
+struct init_section_info {
71
+ char uri[MAX_URL_SIZE];
72
+ char byterange[32];
73
+};
74
+
75
+static struct segment *new_init_section(struct playlist *pls,
76
+ struct init_section_info *info,
77
+ const char *url_base)
78
+{
79
+ struct segment *sec;
80
+ char *ptr;
81
+ char tmp_str[MAX_URL_SIZE];
82
+
83
+ if (!info->uri[0])
84
+ return NULL;
85
+
86
+ sec = av_mallocz(sizeof(*sec));
87
+ if (!sec)
88
+ return NULL;
89
+
90
+ ff_make_absolute_url(tmp_str, sizeof(tmp_str), url_base, info->uri);
91
+ sec->url = av_strdup(tmp_str);
92
+ if (!sec->url) {
93
+ av_free(sec);
94
+ return NULL;
95
+ }
96
+
97
+ if (info->byterange[0]) {
98
+ sec->size = atoi(info->byterange);
99
+ ptr = strchr(info->byterange, '@');
100
+ if (ptr)
101
+ sec->url_offset = atoi(ptr+1);
102
+ } else {
103
+ /* the entire file is the init section */
104
+ sec->size = -1;
105
+ }
106
+
107
+ dynarray_add(&pls->init_sections, &pls->n_init_sections, sec);
108
+
109
+ return sec;
110
+}
111
+
112
+static void handle_init_section_args(struct init_section_info *info, const char *key,
113
+ int key_len, char **dest, int *dest_len)
114
+{
115
+ if (!strncmp(key, "URI=", key_len)) {
116
+ *dest = info->uri;
117
+ *dest_len = sizeof(info->uri);
118
+ } else if (!strncmp(key, "BYTERANGE=", key_len)) {
119
+ *dest = info->byterange;
120
+ *dest_len = sizeof(info->byterange);
121
+ }
122
+}
123
+
124
struct rendition_info {
125
char type[16];
126
char uri[MAX_URL_SIZE];
127
128
return ret;
129
}
130
131
+static void update_options(char **dest, const char *name, void *src)
132
+{
133
+ av_freep(dest);
134
+ av_opt_get(src, name, 0, (uint8_t**)dest);
135
+ if (*dest && !strlen(*dest))
136
+ av_freep(dest);
137
+}
138
+
139
static int open_url(HLSContext *c, URLContext **uc, const char *url, AVDictionary *opts)
140
{
141
AVDictionary *tmp = NULL;
142
143
av_dict_copy(&tmp, opts, 0);
144
145
ret = ffurl_open(uc, url, AVIO_FLAG_READ, c->interrupt_callback, &tmp);
146
+ if( ret >= 0) {
147
+ // update cookies on http response with setcookies.
148
+ URLContext *u = *uc;
149
+ update_options(&c->cookies, "cookies", u->priv_data);
150
+ av_dict_set(&opts, "cookies", c->cookies, 0);
151
+ }
152
153
av_dict_free(&tmp);
154
155
156
uint8_t *new_url = NULL;
157
struct variant_info variant_info;
158
char tmp_str[MAX_URL_SIZE];
159
+ struct segment *cur_init_section = NULL;
160
161
if (!in) {
162
#if 1
163
164
pls->type = PLS_TYPE_EVENT;
165
else if (!strcmp(ptr, "VOD"))
166
pls->type = PLS_TYPE_VOD;
167
+ } else if (av_strstart(line, "#EXT-X-MAP:", &ptr)) {
168
+ struct init_section_info info = {{0}};
169
+ ret = ensure_playlist(c, &pls, url);
170
+ if (ret < 0)
171
+ goto fail;
172
+ ff_parse_key_value(ptr, (ff_parse_key_val_cb) handle_init_section_args,
173
+ &info);
174
+ cur_init_section = new_init_section(pls, &info, url);
175
} else if (av_strstart(line, "#EXT-X-ENDLIST", &ptr)) {
176
if (pls)
177
pls->finished = 1;
178
179
seg->url_offset = 0;
180
seg_offset = 0;
181
}
182
+
183
+ seg->init_section = cur_init_section;
184
}
185
}
186
}
187
188
return ret;
189
}
190
191
+static struct segment *current_segment(struct playlist *pls)
192
+{
193
+ return pls->segments[pls->cur_seq_no - pls->start_seq_no];
194
+}
195
+
196
enum ReadFromURLMode {
197
READ_NORMAL,
198
READ_COMPLETE,
199
};
200
201
ffmpeg-2.8.1.tar.bz2/libavformat/isom.h -> ffmpeg-2.8.3.tar.bz2/libavformat/isom.h
Changed
17
1
2
typedef struct MOVFragmentIndexItem {
3
int64_t moof_offset;
4
int64_t time;
5
+ int headers_read;
6
} MOVFragmentIndexItem;
7
8
typedef struct MOVFragmentIndex {
9
10
int has_looked_for_mfra;
11
MOVFragmentIndex** fragment_index_data;
12
unsigned fragment_index_count;
13
+ int fragment_index_complete;
14
int atom_depth;
15
unsigned int aax_mode; ///< 'aax' file has been detected
16
uint8_t file_key[20];
17
ffmpeg-2.8.1.tar.bz2/libavformat/jvdec.c -> ffmpeg-2.8.3.tar.bz2/libavformat/jvdec.c
Changed
10
1
2
3
static int read_probe(AVProbeData *pd)
4
{
5
- if (pd->buf[0] == 'J' && pd->buf[1] == 'V' && strlen(MAGIC) <= pd->buf_size - 4 &&
6
+ if (pd->buf[0] == 'J' && pd->buf[1] == 'V' && strlen(MAGIC) + 4 <= pd->buf_size &&
7
!memcmp(pd->buf + 4, MAGIC, strlen(MAGIC)))
8
return AVPROBE_SCORE_MAX;
9
return 0;
10
ffmpeg-2.8.1.tar.bz2/libavformat/matroskadec.c -> ffmpeg-2.8.3.tar.bz2/libavformat/matroskadec.c
Changed
9
1
2
tracks[i].audio.buf_timecode = AV_NOPTS_VALUE;
3
tracks[i].end_timecode = 0;
4
if (tracks[i].type == MATROSKA_TRACK_TYPE_SUBTITLE &&
5
+ tracks[i].stream &&
6
tracks[i].stream->discard != AVDISCARD_ALL) {
7
index_sub = av_index_search_timestamp(
8
tracks[i].stream, st->index_entries[index].timestamp,
9
ffmpeg-2.8.1.tar.bz2/libavformat/mov.c -> ffmpeg-2.8.3.tar.bz2/libavformat/mov.c
Changed
201
1
2
MOVFragment *frag = &c->fragment;
3
MOVTrackExt *trex = NULL;
4
MOVFragmentIndex* index = NULL;
5
- int flags, track_id, i;
6
+ int flags, track_id, i, found = 0;
7
8
avio_r8(pb); /* version */
9
flags = avio_rb24(pb);
10
11
av_log(c->fc, AV_LOG_ERROR, "could not find corresponding trex\n");
12
return AVERROR_INVALIDDATA;
13
}
14
- for (i = 0; i < c->fragment_index_count; i++) {
15
- MOVFragmentIndex* candidate = c->fragment_index_data[i];
16
- if (candidate->track_id == frag->track_id) {
17
- av_log(c->fc, AV_LOG_DEBUG,
18
- "found fragment index for track %u\n", frag->track_id);
19
- index = candidate;
20
- break;
21
- }
22
- }
23
24
frag->base_data_offset = flags & MOV_TFHD_BASE_DATA_OFFSET ?
25
avio_rb64(pb) : flags & MOV_TFHD_DEFAULT_BASE_IS_MOOF ?
26
27
frag->flags = flags & MOV_TFHD_DEFAULT_FLAGS ?
28
avio_rb32(pb) : trex->flags;
29
frag->time = AV_NOPTS_VALUE;
30
- if (index) {
31
- int i, found = 0;
32
- for (i = index->current_item; i < index->item_count; i++) {
33
- if (frag->implicit_offset == index->items[i].moof_offset) {
34
- av_log(c->fc, AV_LOG_DEBUG, "found fragment index entry "
35
- "for track %u and moof_offset %"PRId64"\n",
36
- frag->track_id, index->items[i].moof_offset);
37
- frag->time = index->items[i].time;
38
- index->current_item = i + 1;
39
- found = 1;
40
+ for (i = 0; i < c->fragment_index_count; i++) {
41
+ int j;
42
+ MOVFragmentIndex* candidate = c->fragment_index_data[i];
43
+ if (candidate->track_id == frag->track_id) {
44
+ av_log(c->fc, AV_LOG_DEBUG,
45
+ "found fragment index for track %u\n", frag->track_id);
46
+ index = candidate;
47
+ for (j = index->current_item; j < index->item_count; j++) {
48
+ if (frag->implicit_offset == index->items[j].moof_offset) {
49
+ av_log(c->fc, AV_LOG_DEBUG, "found fragment index entry "
50
+ "for track %u and moof_offset %"PRId64"\n",
51
+ frag->track_id, index->items[j].moof_offset);
52
+ frag->time = index->items[j].time;
53
+ index->current_item = j + 1;
54
+ found = 1;
55
+ break;
56
+ }
57
}
58
- }
59
- if (!found) {
60
- av_log(c->fc, AV_LOG_WARNING, "track %u has a fragment index "
61
- "but it doesn't have an (in-order) entry for moof_offset "
62
- "%"PRId64"\n", frag->track_id, frag->implicit_offset);
63
+ if (found)
64
+ break;
65
}
66
}
67
+ if (index && !found) {
68
+ av_log(c->fc, AV_LOG_DEBUG, "track %u has a fragment index but "
69
+ "it doesn't have an (in-order) entry for moof_offset "
70
+ "%"PRId64"\n", frag->track_id, frag->implicit_offset);
71
+ }
72
av_log(c->fc, AV_LOG_TRACE, "frag flags 0x%x\n", frag->flags);
73
return 0;
74
}
75
76
return AVERROR_EOF;
77
78
frag->implicit_offset = offset;
79
- st->duration = sc->track_end = dts + sc->time_offset;
80
+
81
+ sc->track_end = dts + sc->time_offset;
82
+ if (st->duration < sc->track_end)
83
+ st->duration = sc->track_end;
84
+
85
+ return 0;
86
+}
87
+
88
+static int mov_read_sidx(MOVContext *c, AVIOContext *pb, MOVAtom atom)
89
+{
90
+ int64_t offset = avio_tell(pb) + atom.size, pts;
91
+ uint8_t version;
92
+ unsigned i, track_id;
93
+ AVStream *st = NULL;
94
+ MOVStreamContext *sc;
95
+ MOVFragmentIndex *index = NULL;
96
+ MOVFragmentIndex **tmp;
97
+ AVRational timescale;
98
+
99
+ version = avio_r8(pb);
100
+ if (version > 1) {
101
+ avpriv_request_sample(c->fc, "sidx version %u", version);
102
+ return AVERROR_PATCHWELCOME;
103
+ }
104
+
105
+ avio_rb24(pb); // flags
106
+
107
+ track_id = avio_rb32(pb); // Reference ID
108
+ for (i = 0; i < c->fc->nb_streams; i++) {
109
+ if (c->fc->streams[i]->id == track_id) {
110
+ st = c->fc->streams[i];
111
+ break;
112
+ }
113
+ }
114
+ if (!st) {
115
+ av_log(c->fc, AV_LOG_ERROR, "could not find corresponding track id %d\n", track_id);
116
+ return AVERROR_INVALIDDATA;
117
+ }
118
+
119
+ sc = st->priv_data;
120
+
121
+ timescale = av_make_q(1, avio_rb32(pb));
122
+
123
+ if (version == 0) {
124
+ pts = avio_rb32(pb);
125
+ offset += avio_rb32(pb);
126
+ } else {
127
+ pts = avio_rb64(pb);
128
+ offset += avio_rb64(pb);
129
+ }
130
+
131
+ avio_rb16(pb); // reserved
132
+
133
+ index = av_mallocz(sizeof(MOVFragmentIndex));
134
+ if (!index)
135
+ return AVERROR(ENOMEM);
136
+
137
+ index->track_id = track_id;
138
+
139
+ index->item_count = avio_rb16(pb);
140
+ index->items = av_mallocz_array(index->item_count, sizeof(MOVFragmentIndexItem));
141
+
142
+ if (!index->items) {
143
+ av_freep(&index);
144
+ return AVERROR(ENOMEM);
145
+ }
146
+
147
+ for (i = 0; i < index->item_count; i++) {
148
+ uint32_t size = avio_rb32(pb);
149
+ uint32_t duration = avio_rb32(pb);
150
+ if (size & 0x80000000) {
151
+ avpriv_request_sample(c->fc, "sidx reference_type 1");
152
+ av_freep(&index->items);
153
+ av_freep(&index);
154
+ return AVERROR_PATCHWELCOME;
155
+ }
156
+ avio_rb32(pb); // sap_flags
157
+ index->items[i].moof_offset = offset;
158
+ index->items[i].time = av_rescale_q(pts, st->time_base, timescale);
159
+ offset += size;
160
+ pts += duration;
161
+ }
162
+
163
+ st->duration = sc->track_end = pts;
164
+
165
+ tmp = av_realloc_array(c->fragment_index_data,
166
+ c->fragment_index_count + 1,
167
+ sizeof(MOVFragmentIndex*));
168
+ if (!tmp) {
169
+ av_freep(&index->items);
170
+ av_freep(&index);
171
+ return AVERROR(ENOMEM);
172
+ }
173
+
174
+ c->fragment_index_data = tmp;
175
+ c->fragment_index_data[c->fragment_index_count++] = index;
176
+
177
+ if (offset == avio_size(pb))
178
+ c->fragment_index_complete = 1;
179
+
180
return 0;
181
}
182
183
184
{ MKTAG('a','l','a','c'), mov_read_alac }, /* alac specific atom */
185
{ MKTAG('a','v','c','C'), mov_read_glbl },
186
{ MKTAG('p','a','s','p'), mov_read_pasp },
187
+{ MKTAG('s','i','d','x'), mov_read_sidx },
188
{ MKTAG('s','t','b','l'), mov_read_default },
189
{ MKTAG('s','t','c','o'), mov_read_stco },
190
{ MKTAG('s','t','p','s'), mov_read_stps },
191
192
return err;
193
}
194
if (c->found_moov && c->found_mdat &&
195
- ((!pb->seekable || c->fc->flags & AVFMT_FLAG_IGNIDX) ||
196
+ ((!pb->seekable || c->fc->flags & AVFMT_FLAG_IGNIDX || c->fragment_index_complete) ||
197
start_pos + a.size == avio_size(pb))) {
198
- if (!pb->seekable || c->fc->flags & AVFMT_FLAG_IGNIDX)
199
+ if (!pb->seekable || c->fc->flags & AVFMT_FLAG_IGNIDX || c->fragment_index_complete)
200
c->next_root_atom = start_pos + a.size;
201
ffmpeg-2.8.1.tar.bz2/libavformat/mp3dec.c -> ffmpeg-2.8.3.tar.bz2/libavformat/mp3dec.c
Changed
73
1
2
3
#define XING_TOC_COUNT 100
4
5
+#define SAME_HEADER_MASK \
6
+ (0xffe00000 | (3 << 17) | (3 << 10) | (3 << 19))
7
+
8
typedef struct {
9
AVClass *class;
10
int64_t filesize;
11
12
int is_cbr;
13
} MP3DecContext;
14
15
-static int check(AVIOContext *pb, int64_t pos);
16
+static int check(AVIOContext *pb, int64_t pos, uint32_t *header);
17
18
/* mp3 read */
19
20
21
22
off = avio_tell(s->pb);
23
for (i = 0; i < 64 * 1024; i++) {
24
+ uint32_t header, header2;
25
+ int frame_size;
26
if (!(i&1023))
27
ffio_ensure_seekback(s->pb, i + 1024 + 4);
28
- if (check(s->pb, off + i) >= 0) {
29
- av_log(s, AV_LOG_INFO, "Skipping %d bytes of junk at %"PRId64".\n", i, off);
30
- avio_seek(s->pb, off + i, SEEK_SET);
31
- break;
32
+ frame_size = check(s->pb, off + i, &header);
33
+ if (frame_size > 0) {
34
+ avio_seek(s->pb, off, SEEK_SET);
35
+ ffio_ensure_seekback(s->pb, i + 1024 + frame_size + 4);
36
+ if (check(s->pb, off + i + frame_size, &header2) >= 0 &&
37
+ (header & SAME_HEADER_MASK) == (header2 & SAME_HEADER_MASK))
38
+ {
39
+ av_log(s, AV_LOG_INFO, "Skipping %d bytes of junk at %"PRId64".\n", i, off);
40
+ avio_seek(s->pb, off + i, SEEK_SET);
41
+ break;
42
+ }
43
}
44
avio_seek(s->pb, off, SEEK_SET);
45
}
46
47
48
#define SEEK_WINDOW 4096
49
50
-static int check(AVIOContext *pb, int64_t pos)
51
+static int check(AVIOContext *pb, int64_t pos, uint32_t *ret_header)
52
{
53
int64_t ret = avio_seek(pb, pos, SEEK_SET);
54
unsigned header;
55
56
if (avpriv_mpegaudio_decode_header(&sd, header) == 1)
57
return -1;
58
59
+ if (ret_header)
60
+ *ret_header = header;
61
return sd.frame_size;
62
}
63
64
65
continue;
66
67
for(j=0; j<MIN_VALID; j++) {
68
- ret = check(s->pb, pos);
69
+ ret = check(s->pb, pos, NULL);
70
if(ret < 0)
71
break;
72
if ((target_pos - pos)*dir <= 0 && abs(MIN_VALID/2-j) < score) {
73
ffmpeg-2.8.1.tar.bz2/libavformat/mpegts.c -> ffmpeg-2.8.3.tar.bz2/libavformat/mpegts.c
Changed
9
1
2
if ((st->codec->codec_id == AV_CODEC_ID_NONE ||
3
(st->request_probe > 0 && st->request_probe < AVPROBE_SCORE_STREAM_RETRY / 5)) &&
4
!avcodec_is_open(st->codec) &&
5
+ st->probe_packets > 0 &&
6
stream_type == STREAM_TYPE_PRIVATE_DATA) {
7
st->codec->codec_type = AVMEDIA_TYPE_DATA;
8
st->codec->codec_id = AV_CODEC_ID_BIN_DATA;
9
ffmpeg-2.8.1.tar.bz2/libavformat/mxfdec.c -> ffmpeg-2.8.3.tar.bz2/libavformat/mxfdec.c
Changed
18
1
2
continue;
3
}
4
5
+ if (physical_track->edit_rate.num <= 0 ||
6
+ physical_track->edit_rate.den <= 0) {
7
+ av_log(mxf->fc, AV_LOG_WARNING,
8
+ "Invalid edit rate (%d/%d) found on structural"
9
+ " component #%d, defaulting to 25/1\n",
10
+ physical_track->edit_rate.num,
11
+ physical_track->edit_rate.den, i);
12
+ physical_track->edit_rate = (AVRational){25, 1};
13
+ }
14
+
15
for (k = 0; k < physical_track->sequence->structural_components_count; k++) {
16
if (!(mxf_tc = mxf_resolve_timecode_component(mxf, &physical_track->sequence->structural_components_refs[k])))
17
continue;
18
ffmpeg-2.8.1.tar.bz2/libavformat/mxfenc.c -> ffmpeg-2.8.3.tar.bz2/libavformat/mxfenc.c
Changed
144
1
2
* License along with FFmpeg; if not, write to the Free Software
3
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
4
*
5
- * signal_standard, color_siting and klv_fill_key version fixes sponsored by NOA GmbH
6
+ * signal_standard, color_siting, store_user_comments and klv_fill_key version
7
+ * fixes sponsored by NOA GmbH
8
*/
9
10
/*
11
12
int signal_standard;
13
uint32_t tagged_value_count;
14
AVRational audio_edit_rate;
15
+ int store_user_comments;
16
} MXFContext;
17
18
static const uint8_t uuid_base[] = { 0xAD,0xAB,0x44,0x24,0x2f,0x25,0x4d,0xc7,0x92,0xff,0x29,0xbd };
19
20
{ 0x4404, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x07,0x02,0x01,0x10,0x02,0x05,0x00,0x00}}, /* Package Modified Date */
21
{ 0x4402, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x01,0x03,0x03,0x02,0x01,0x00,0x00,0x00}}, /* Package Name */
22
{ 0x4403, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x04,0x06,0x05,0x00,0x00}}, /* Tracks Strong reference array */
23
- { 0x4406, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0C,0x00,0x00,0x00}}, /* User Comments */
24
{ 0x4701, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x04,0x02,0x03,0x00,0x00}}, /* Descriptor */
25
// Track
26
{ 0x4801, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x01,0x07,0x01,0x01,0x00,0x00,0x00,0x00}}, /* Track ID */
27
28
{ 0x1501, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x07,0x02,0x01,0x03,0x01,0x05,0x00,0x00}}, /* Start Time Code */
29
{ 0x1502, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x04,0x01,0x01,0x02,0x06,0x00,0x00}}, /* Rounded Time Code Base */
30
{ 0x1503, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x04,0x01,0x01,0x05,0x00,0x00,0x00}}, /* Drop Frame */
31
- // Tagged Value
32
- { 0x5001, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x09,0x01,0x00,0x00}}, /* Name */
33
- { 0x5003, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0A,0x01,0x00,0x00}}, /* Value */
34
// File Descriptor
35
{ 0x3F01, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x04,0x06,0x01,0x01,0x04,0x06,0x0B,0x00,0x00}}, /* Sub Descriptors reference array */
36
{ 0x3006, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x05,0x06,0x01,0x01,0x03,0x05,0x00,0x00,0x00}}, /* Linked Track ID */
37
38
{ 0x3D0A, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x05,0x04,0x02,0x03,0x02,0x01,0x00,0x00,0x00}}, /* Block Align */
39
};
40
41
+static const MXFLocalTagPair mxf_user_comments_local_tag[] = {
42
+ { 0x4406, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0C,0x00,0x00,0x00}}, /* User Comments */
43
+ { 0x5001, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x09,0x01,0x00,0x00}}, /* Name */
44
+ { 0x5003, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0A,0x01,0x00,0x00}}, /* Value */
45
+};
46
+
47
static void mxf_write_uuid(AVIOContext *pb, enum MXFMetadataSetType type, int value)
48
{
49
avio_write(pb, uuid_base, 12);
50
51
52
static void mxf_write_primer_pack(AVFormatContext *s)
53
{
54
+ MXFContext *mxf = s->priv_data;
55
AVIOContext *pb = s->pb;
56
int local_tag_number, i = 0;
57
58
local_tag_number = FF_ARRAY_ELEMS(mxf_local_tag_batch);
59
+ local_tag_number += mxf->store_user_comments * FF_ARRAY_ELEMS(mxf_user_comments_local_tag);
60
61
avio_write(pb, primer_pack_key, 16);
62
klv_encode_ber_length(pb, local_tag_number * 18 + 8);
63
64
avio_wb32(pb, local_tag_number); // local_tag num
65
avio_wb32(pb, 18); // item size, always 18 according to the specs
66
67
- for (i = 0; i < local_tag_number; i++) {
68
+ for (i = 0; i < FF_ARRAY_ELEMS(mxf_local_tag_batch); i++) {
69
avio_wb16(pb, mxf_local_tag_batch[i].local_tag);
70
avio_write(pb, mxf_local_tag_batch[i].uid, 16);
71
}
72
+ if (mxf->store_user_comments)
73
+ for (i = 0; i < FF_ARRAY_ELEMS(mxf_user_comments_local_tag); i++) {
74
+ avio_wb16(pb, mxf_user_comments_local_tag[i].local_tag);
75
+ avio_write(pb, mxf_user_comments_local_tag[i].uid, 16);
76
+ }
77
}
78
79
static void mxf_write_local_tag(AVIOContext *pb, int size, int tag)
80
81
int user_comment_count = 0;
82
83
if (type == MaterialPackage) {
84
- user_comment_count = mxf_write_user_comments(s, s->metadata);
85
+ if (mxf->store_user_comments)
86
+ user_comment_count = mxf_write_user_comments(s, s->metadata);
87
mxf_write_metadata_key(pb, 0x013600);
88
PRINT_KEY(s, "Material Package key", pb->buf_ptr - 16);
89
- klv_encode_ber_length(pb, 104 + name_size + (16*track_count) + (16*user_comment_count));
90
+ klv_encode_ber_length(pb, 92 + name_size + (16*track_count) + (16*user_comment_count) + 12*mxf->store_user_comments);
91
} else {
92
mxf_write_metadata_key(pb, 0x013700);
93
PRINT_KEY(s, "Source Package key", pb->buf_ptr - 16);
94
- klv_encode_ber_length(pb, 124 + name_size + (16*track_count)); // 20 bytes length for descriptor reference
95
+ klv_encode_ber_length(pb, 112 + name_size + (16*track_count) + 12*mxf->store_user_comments); // 20 bytes length for descriptor reference
96
}
97
98
// write uid
99
100
mxf_write_uuid(pb, type == MaterialPackage ? Track : Track + TypeBottom, i);
101
102
// write user comment refs
103
- mxf_write_local_tag(pb, user_comment_count*16 + 8, 0x4406);
104
- mxf_write_refs_count(pb, user_comment_count);
105
- for (i = 0; i < user_comment_count; i++)
106
- mxf_write_uuid(pb, TaggedValue, mxf->tagged_value_count - user_comment_count + i);
107
+ if (mxf->store_user_comments) {
108
+ mxf_write_local_tag(pb, user_comment_count*16 + 8, 0x4406);
109
+ mxf_write_refs_count(pb, user_comment_count);
110
+ for (i = 0; i < user_comment_count; i++)
111
+ mxf_write_uuid(pb, TaggedValue, mxf->tagged_value_count - user_comment_count + i);
112
+ }
113
114
// write multiple descriptor reference
115
if (type == SourcePackage) {
116
117
return -1;
118
}
119
120
+ if (!av_dict_get(s->metadata, "comment_", NULL, AV_DICT_IGNORE_SUFFIX))
121
+ mxf->store_user_comments = 0;
122
+
123
for (i = 0; i < s->nb_streams; i++) {
124
AVStream *st = s->streams[i];
125
MXFStreamContext *sc = av_mallocz(sizeof(*sc));
126
127
128
static const AVOption mxf_options[] = {
129
MXF_COMMON_OPTIONS
130
+ { "store_user_comments", "",
131
+ offsetof(MXFContext, store_user_comments), AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM},
132
{ NULL },
133
};
134
135
136
{ "d10_channelcount", "Force/set channelcount in generic sound essence descriptor",
137
offsetof(MXFContext, channel_count), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 8, AV_OPT_FLAG_ENCODING_PARAM},
138
MXF_COMMON_OPTIONS
139
+ { "store_user_comments", "",
140
+ offsetof(MXFContext, store_user_comments), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM},
141
{ NULL },
142
};
143
144
ffmpeg-2.8.1.tar.bz2/libavformat/rtmpcrypt.c -> ffmpeg-2.8.3.tar.bz2/libavformat/rtmpcrypt.c
Changed
17
1
2
static void rtmpe8_sig(const uint8_t *in, uint8_t *out, int key_id)
3
{
4
struct AVXTEA ctx;
5
+ uint8_t tmpbuf[8];
6
7
av_xtea_init(&ctx, rtmpe8_keys[key_id]);
8
- av_xtea_crypt(&ctx, out, in, 1, NULL, 0);
9
+ AV_WB32(tmpbuf, AV_RL32(in));
10
+ AV_WB32(tmpbuf + 4, AV_RL32(in + 4));
11
+ av_xtea_crypt(&ctx, tmpbuf, tmpbuf, 1, NULL, 0);
12
+ AV_WL32(out, AV_RB32(tmpbuf));
13
+ AV_WL32(out + 4, AV_RB32(tmpbuf + 4));
14
}
15
16
static void rtmpe9_sig(const uint8_t *in, uint8_t *out, int key_id)
17
ffmpeg-2.8.1.tar.bz2/libavformat/rtsp.c -> ffmpeg-2.8.3.tar.bz2/libavformat/rtsp.c
Changed
26
1
2
unsigned char ch;
3
const char *p;
4
int ret, content_length, line_count = 0, request = 0;
5
- int first_line = 1;
6
unsigned char *content = NULL;
7
8
start:
9
10
return AVERROR_EOF;
11
if (ch == '\n')
12
break;
13
- if (ch == '$' && first_line && q == buf) {
14
+ if (ch == '$' && q == buf) {
15
if (return_on_interleaved_data) {
16
return 1;
17
} else
18
19
}
20
}
21
*q = '\0';
22
- first_line = 0;
23
24
av_log(s, AV_LOG_TRACE, "line='%s'\n", buf);
25
26
ffmpeg-2.8.1.tar.bz2/libavformat/utils.c -> ffmpeg-2.8.3.tar.bz2/libavformat/utils.c
Changed
10
1
2
st->codec->time_base = st->time_base;
3
}
4
// only for the split stuff
5
- if (!st->parser && !(ic->flags & AVFMT_FLAG_NOPARSE)) {
6
+ if (!st->parser && !(ic->flags & AVFMT_FLAG_NOPARSE) && st->request_probe <= 0) {
7
st->parser = av_parser_init(st->codec->codec_id);
8
if (st->parser) {
9
if (st->need_parsing == AVSTREAM_PARSE_HEADERS) {
10
ffmpeg-2.8.1.tar.bz2/libavformat/xmv.c -> ffmpeg-2.8.3.tar.bz2/libavformat/xmv.c
Changed
24
1
2
/* Fetch a video frame */
3
4
result = xmv_fetch_video_packet(s, pkt);
5
- if (result)
6
- return result;
7
-
8
} else {
9
/* Fetch an audio frame */
10
11
result = xmv_fetch_audio_packet(s, pkt, xmv->current_stream - 1);
12
- if (result)
13
- return result;
14
}
15
+ if (result) {
16
+ xmv->current_stream = 0;
17
+ xmv->video.current_frame = xmv->video.frame_count;
18
+ return result;
19
+ }
20
+
21
22
/* Increase our counters */
23
if (++xmv->current_stream >= xmv->stream_count) {
24
ffmpeg-2.8.1.tar.bz2/libavutil/channel_layout.c -> ffmpeg-2.8.3.tar.bz2/libavutil/channel_layout.c
Changed
28
1
2
strlen(channel_names[i].name) == name_len &&
3
!memcmp(channel_names[i].name, name, name_len))
4
return (int64_t)1 << i;
5
+
6
+ errno = 0;
7
i = strtol(name, &end, 10);
8
9
#if FF_API_GET_CHANNEL_LAYOUT_COMPAT
10
11
}
12
} else {
13
#endif
14
- if ((end + 1 - name == name_len && *end == 'c'))
15
+ if (!errno && (end + 1 - name == name_len && *end == 'c'))
16
return av_get_default_channel_layout(i);
17
#if FF_API_GET_CHANNEL_LAYOUT_COMPAT
18
}
19
#endif
20
21
+ errno = 0;
22
layout = strtoll(name, &end, 0);
23
- if (end - name == name_len)
24
+ if (!errno && end - name == name_len)
25
return FFMAX(layout, 0);
26
return 0;
27
}
28
ffmpeg-2.8.1.tar.bz2/libavutil/common.h -> ffmpeg-2.8.3.tar.bz2/libavutil/common.h
Changed
19
1
2
*/
3
#define FFNABS(a) ((a) <= 0 ? (a) : (-(a)))
4
5
+/**
6
+ * Comparator.
7
+ * For two numerical expressions x and y, gives 1 if x > y, -1 if x < y, and 0
8
+ * if x == y. This is useful for instance in a qsort comparator callback.
9
+ * Furthermore, compilers are able to optimize this to branchless code, and
10
+ * there is no risk of overflow with signed types.
11
+ * As with many macros, this evaluates its argument multiple times, it thus
12
+ * must not have a side-effect.
13
+ */
14
+#define FFDIFFSIGN(x,y) (((x)>(y)) - ((x)<(y)))
15
+
16
#define FFMAX(a,b) ((a) > (b) ? (a) : (b))
17
#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c)
18
#define FFMIN(a,b) ((a) > (b) ? (b) : (a))
19
ffmpeg-2.8.1.tar.bz2/libavutil/file_open.c -> ffmpeg-2.8.3.tar.bz2/libavutil/file_open.c
Changed
11
1
2
#ifdef O_CLOEXEC
3
flags |= O_CLOEXEC;
4
#endif
5
+#ifdef O_NOINHERIT
6
+ flags |= O_NOINHERIT;
7
+#endif
8
9
fd = open(filename, flags, mode);
10
#if HAVE_FCNTL
11
ffmpeg-2.8.1.tar.bz2/libavutil/softfloat.c -> ffmpeg-2.8.3.tar.bz2/libavutil/softfloat.c
Changed
50
1
2
sf1 = av_int2sf(0xE0000001, 0);
3
printf("test4 softfloat: %.10lf (0x%08x %d)\n", (double)av_sf2double(sf1), sf1.mant, sf1.exp);
4
5
+
6
+ sf1 = (SoftFloat){ 0x20000000, MIN_EXP };
7
+ sf1 = av_mul_sf(sf1, sf1);
8
+ printf("test5 softfloat: %.10lf (0x%08x %d)\n", (double)av_sf2double(sf1), sf1.mant, sf1.exp);
9
+
10
+ sf1 = (SoftFloat){ 0x20000000, MIN_EXP };
11
+ sf2 = (SoftFloat){ 0x20000000, MAX_EXP };
12
+ i = av_cmp_sf(sf1, sf2);
13
+ j = av_cmp_sf(sf2, sf1);
14
+ sf1 = av_div_sf(sf1, sf2);
15
+ printf("test6 softfloat: %.10lf (0x%08x %d) %d %d\n", (double)av_sf2double(sf1), sf1.mant, sf1.exp, i, j);
16
+
17
+ for(i= -50; i<50; i++) {
18
+ sf1= av_int2sf(i, 0);
19
+ for(j= -50; j<50; j++) {
20
+ int c;
21
+ sf2= av_int2sf(j, 0);
22
+ c = av_cmp_sf(sf1, sf2);
23
+ if (FFDIFFSIGN(i,j) != c && (FFDIFFSIGN(i,j)^c)<0) {
24
+ printf("av_cmp_sf failed at %d %d as %X\n", i, j, c);
25
+ }
26
+ c = av_gt_sf(sf1, sf2);
27
+ if ((i>j) != c) {
28
+ printf("av_gt_sf failed at %d %d as %X\n", i, j, c);
29
+ }
30
+ }
31
+ sf1 = av_int2sf(1, i);
32
+ for(j = -50; j < 50; j++) {
33
+ int c;
34
+ sf2 = av_int2sf(1, j);
35
+ c = av_cmp_sf(sf2, sf1);
36
+ if (FFDIFFSIGN(i,j) != c && (FFDIFFSIGN(i,j)^c) < 0) {
37
+ printf("av_cmp_sf failed2 at %d %d as %X\n", i, j, c);
38
+ }
39
+ c = av_gt_sf(sf1, sf2);
40
+ if ((i<j) != c) {
41
+ printf("av_gt_sf failed2 at %d %d as %X\n", i, j, c);
42
+ }
43
+ }
44
+ }
45
+
46
+
47
for(i= 0; i<4*36; i++){
48
int s, c;
49
double errs, errc;
50
ffmpeg-2.8.1.tar.bz2/libavutil/softfloat.h -> ffmpeg-2.8.3.tar.bz2/libavutil/softfloat.h
Changed
89
1
2
int32_t exp;
3
}SoftFloat;
4
5
-static const SoftFloat FLOAT_0 = { 0, 0};
6
+static const SoftFloat FLOAT_0 = { 0, MIN_EXP};
7
static const SoftFloat FLOAT_05 = { 0x20000000, 0};
8
static const SoftFloat FLOAT_1 = { 0x20000000, 1};
9
static const SoftFloat FLOAT_EPSILON = { 0x29F16B12, -16};
10
11
}
12
13
/**
14
- * @return Will not be more denormalized than a+b. So if either input is
15
+ * @return Will not be more denormalized than a*b. So if either input is
16
* normalized, then the output will not be worse then the other input.
17
* If both are normalized, then the output will be normalized.
18
*/
19
20
a.exp += b.exp;
21
av_assert2((int32_t)((a.mant * (int64_t)b.mant) >> ONE_BITS) == (a.mant * (int64_t)b.mant) >> ONE_BITS);
22
a.mant = (a.mant * (int64_t)b.mant) >> ONE_BITS;
23
- return av_normalize1_sf((SoftFloat){a.mant, a.exp - 1});
24
+ a = av_normalize1_sf((SoftFloat){a.mant, a.exp - 1});
25
+ if (!a.mant || a.exp < MIN_EXP)
26
+ return FLOAT_0;
27
+ return a;
28
}
29
30
/**
31
32
static inline av_const SoftFloat av_div_sf(SoftFloat a, SoftFloat b){
33
a.exp -= b.exp;
34
a.mant = ((int64_t)a.mant<<(ONE_BITS+1)) / b.mant;
35
- return av_normalize1_sf(a);
36
+ a = av_normalize1_sf(a);
37
+ if (!a.mant || a.exp < MIN_EXP)
38
+ return FLOAT_0;
39
+ return a;
40
}
41
42
static inline av_const int av_cmp_sf(SoftFloat a, SoftFloat b){
43
int t= a.exp - b.exp;
44
- if(t<0) return (a.mant >> (-t)) - b.mant ;
45
- else return a.mant - (b.mant >> t);
46
+ if (t <-31) return - b.mant ;
47
+ else if (t < 0) return (a.mant >> (-t)) - b.mant ;
48
+ else if (t < 32) return a.mant - (b.mant >> t);
49
+ else return a.mant ;
50
}
51
52
static inline av_const int av_gt_sf(SoftFloat a, SoftFloat b)
53
{
54
int t= a.exp - b.exp;
55
- if(t<0) return (a.mant >> (-t)) > b.mant ;
56
- else return a.mant > (b.mant >> t);
57
+ if (t <-31) return 0 > b.mant ;
58
+ else if (t < 0) return (a.mant >> (-t)) > b.mant ;
59
+ else if (t < 32) return a.mant > (b.mant >> t);
60
+ else return a.mant > 0 ;
61
}
62
63
static inline av_const SoftFloat av_add_sf(SoftFloat a, SoftFloat b){
64
65
* @returns a SoftFloat with value v * 2^frac_bits
66
*/
67
static inline av_const SoftFloat av_int2sf(int v, int frac_bits){
68
- return av_normalize_sf((SoftFloat){v, ONE_BITS + 1 - frac_bits});
69
+ int exp_offset = 0;
70
+ if(v == INT_MIN){
71
+ exp_offset = 1;
72
+ v>>=1;
73
+ }
74
+ return av_normalize_sf(av_normalize1_sf((SoftFloat){v, ONE_BITS + 1 - frac_bits + exp_offset}));
75
}
76
77
/**
78
79
int tabIndex, rem;
80
81
if (val.mant == 0)
82
- val.exp = 0;
83
+ val.exp = MIN_EXP;
84
+ else if (val.mant < 0)
85
+ abort();
86
else
87
{
88
tabIndex = (val.mant - 0x20000000) >> 20;
89
ffmpeg-2.8.1.tar.bz2/libswresample/resample.c -> ffmpeg-2.8.3.tar.bz2/libswresample/resample.c
Changed
12
1
2
c->compensation_distance= 0;
3
if(!av_reduce(&c->src_incr, &c->dst_incr, out_rate, in_rate * (int64_t)phase_count, INT32_MAX/2))
4
goto error;
5
+ while (c->dst_incr < (1<<20) && c->src_incr < (1<<20)) {
6
+ c->dst_incr *= 2;
7
+ c->src_incr *= 2;
8
+ }
9
c->ideal_dst_incr = c->dst_incr;
10
c->dst_incr_div = c->dst_incr / c->src_incr;
11
c->dst_incr_mod = c->dst_incr % c->src_incr;
12
ffmpeg-2.8.1.tar.bz2/tests/fate/avformat.mak -> ffmpeg-2.8.3.tar.bz2/tests/fate/avformat.mak
Changed
9
1
2
3
$(FATE_LAVF): $(AREF) $(VREF)
4
$(FATE_LAVF): CMD = lavftest
5
+$(FATE_LAVF): CMP =
6
7
FATE_AVCONV += $(FATE_LAVF)
8
fate-lavf: $(FATE_LAVF)
9
ffmpeg-2.8.1.tar.bz2/tests/fate/libswresample.mak -> ffmpeg-2.8.3.tar.bz2/tests/fate/libswresample.mak
Changed
22
1
2
fate-swr-resample_async-$(3)-$(1)-$(2): REF = tests/data/asynth-$(1)-1.wav
3
endef
4
5
-fate-swr-resample_async-fltp-44100-8000: CMP_TARGET = 4031.48
6
+fate-swr-resample_async-fltp-44100-8000: CMP_TARGET = 4020.62
7
fate-swr-resample_async-fltp-44100-8000: SIZE_TOLERANCE = 529200 - 20310
8
9
-fate-swr-resample_async-fltp-8000-44100: CMP_TARGET = 11185.34
10
+fate-swr-resample_async-fltp-8000-44100: CMP_TARGET = 11186.69
11
fate-swr-resample_async-fltp-8000-44100: SIZE_TOLERANCE = 96000 - 20344
12
13
-fate-swr-resample_async-s16p-44100-8000: CMP_TARGET = 4031.59
14
+fate-swr-resample_async-s16p-44100-8000: CMP_TARGET = 4020.73
15
fate-swr-resample_async-s16p-44100-8000: SIZE_TOLERANCE = 529200 - 20310
16
17
-fate-swr-resample_async-s16p-8000-44100: CMP_TARGET = 11185.65
18
+fate-swr-resample_async-s16p-8000-44100: CMP_TARGET = 11187.01
19
fate-swr-resample_async-s16p-8000-44100: SIZE_TOLERANCE = 96000 - 20344
20
21
$(call CROSS_TEST,$(SAMPLERATES),ARESAMPLE,s16p,s16le,s16)
22
ffmpeg-2.8.1.tar.bz2/tests/ref/lavf/mxf -> ffmpeg-2.8.3.tar.bz2/tests/ref/lavf/mxf
Changed
17
1
2
-030961ae56ab1c264390fd5ef0a95069 *./tests/data/lavf/lavf.mxf
3
-525881 ./tests/data/lavf/lavf.mxf
4
+6d00bf68ec95d0aac959defccdb0190e *./tests/data/lavf/lavf.mxf
5
+525369 ./tests/data/lavf/lavf.mxf
6
./tests/data/lavf/lavf.mxf CRC=0xdbfff6f1
7
-b90dc91dee50a24c8b20a08a063f501a *./tests/data/lavf/lavf.mxf
8
-561209 ./tests/data/lavf/lavf.mxf
9
+0bbdd13de78db8ab9314f083b7da0f30 *./tests/data/lavf/lavf.mxf
10
+560697 ./tests/data/lavf/lavf.mxf
11
./tests/data/lavf/lavf.mxf CRC=0x11a6178e
12
-a0cfffed795686127061feae8cde07d1 *./tests/data/lavf/lavf.mxf
13
-525881 ./tests/data/lavf/lavf.mxf
14
+462f95f19b3e0fd119a204a96eb6f424 *./tests/data/lavf/lavf.mxf
15
+525369 ./tests/data/lavf/lavf.mxf
16
./tests/data/lavf/lavf.mxf CRC=0xdbfff6f1
17
ffmpeg-2.8.1.tar.bz2/tests/ref/lavf/mxf_d10 -> ffmpeg-2.8.3.tar.bz2/tests/ref/lavf/mxf_d10
Changed
6
1
2
-9b5bad981e08fa3eaeb9de818762218c *./tests/data/lavf/lavf.mxf_d10
3
+73c0cb416548c33d0651c59519a8f7e2 *./tests/data/lavf/lavf.mxf_d10
4
5330989 ./tests/data/lavf/lavf.mxf_d10
5
./tests/data/lavf/lavf.mxf_d10 CRC=0x6c74d488
6
ffmpeg-2.8.1.tar.bz2/tests/ref/lavf/mxf_opatom -> ffmpeg-2.8.3.tar.bz2/tests/ref/lavf/mxf_opatom
Changed
6
1
2
-6cab8f702746ca7184c608b4c06a224b *./tests/data/lavf/lavf.mxf_opatom
3
+2205907020248f73876eaad745d2f5b5 *./tests/data/lavf/lavf.mxf_opatom
4
4717113 ./tests/data/lavf/lavf.mxf_opatom
5
./tests/data/lavf/lavf.mxf_opatom CRC=0xbdd696b9
6
ffmpeg-2.8.1.tar.bz2/tests/ref/lavf/mxf_opatom_audio -> ffmpeg-2.8.3.tar.bz2/tests/ref/lavf/mxf_opatom_audio
Changed
7
1
2
-6c6064f154688e455ec494d425b525f5 *./tests/data/lavf/lavf.mxf_opatom_audio
3
-102457 ./tests/data/lavf/lavf.mxf_opatom_audio
4
+d4ad5a0faf410a9d9e99b3328143e89d *./tests/data/lavf/lavf.mxf_opatom_audio
5
+101945 ./tests/data/lavf/lavf.mxf_opatom_audio
6
./tests/data/lavf/lavf.mxf_opatom_audio CRC=0xd155c6ff
7
ffmpeg-2.8.1.tar.bz2/tests/ref/seek/lavf-mxf -> ffmpeg-2.8.3.tar.bz2/tests/ref/seek/lavf-mxf
Changed
72
1
2
-ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
3
+ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
4
ret: 0 st:-1 flags:0 ts:-1.000000
5
-ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
6
+ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
7
ret: 0 st:-1 flags:1 ts: 1.894167
8
-ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
9
+ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
10
ret: 0 st: 0 flags:0 ts: 0.800000
11
-ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
12
+ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
13
ret: 0 st: 0 flags:1 ts:-0.320000
14
-ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
15
+ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
16
ret:-1 st: 1 flags:0 ts: 2.576667
17
ret: 0 st: 1 flags:1 ts: 1.470833
18
-ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
19
+ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
20
ret: 0 st:-1 flags:0 ts: 0.365002
21
-ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211968 size: 24786
22
+ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211456 size: 24786
23
ret: 0 st:-1 flags:1 ts:-0.740831
24
-ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
25
+ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
26
ret:-1 st: 0 flags:0 ts: 2.160000
27
ret: 0 st: 0 flags:1 ts: 1.040000
28
-ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
29
+ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
30
ret: 0 st: 1 flags:0 ts:-0.058333
31
-ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
32
+ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
33
ret: 0 st: 1 flags:1 ts: 2.835833
34
-ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
35
+ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
36
ret:-1 st:-1 flags:0 ts: 1.730004
37
ret: 0 st:-1 flags:1 ts: 0.624171
38
-ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211968 size: 24786
39
+ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211456 size: 24786
40
ret: 0 st: 0 flags:0 ts:-0.480000
41
-ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
42
+ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
43
ret: 0 st: 0 flags:1 ts: 2.400000
44
-ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
45
+ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
46
ret:-1 st: 1 flags:0 ts: 1.306667
47
ret: 0 st: 1 flags:1 ts: 0.200833
48
-ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
49
+ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
50
ret: 0 st:-1 flags:0 ts:-0.904994
51
-ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
52
+ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
53
ret: 0 st:-1 flags:1 ts: 1.989173
54
-ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
55
+ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
56
ret: 0 st: 0 flags:0 ts: 0.880000
57
-ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
58
+ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
59
ret: 0 st: 0 flags:1 ts:-0.240000
60
-ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
61
+ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
62
ret:-1 st: 1 flags:0 ts: 2.671667
63
ret: 0 st: 1 flags:1 ts: 1.565833
64
-ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
65
+ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
66
ret: 0 st:-1 flags:0 ts: 0.460008
67
-ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211968 size: 24786
68
+ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211456 size: 24786
69
ret: 0 st:-1 flags:1 ts:-0.645825
70
-ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801
71
+ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801
72
ffmpeg-2.8.1.tar.bz2/tests/ref/seek/lavf-mxf_opatom_audio -> ffmpeg-2.8.3.tar.bz2/tests/ref/seek/lavf-mxf_opatom_audio
Changed
82
1
2
-ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840
3
+ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840
4
ret: 0 st:-1 flags:0 ts:-1.000000
5
-ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840
6
+ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840
7
ret: 0 st:-1 flags:1 ts: 1.894167
8
-ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2
9
+ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2
10
ret: 0 st: 0 flags:0 ts: 0.788333
11
-ret: 0 st: 0 flags:1 dts: 0.788333 pts: 0.788333 pos: 80825 size: 3840
12
+ret: 0 st: 0 flags:1 dts: 0.788333 pts: 0.788333 pos: 80313 size: 3840
13
ret: 0 st: 0 flags:1 ts:-0.317500
14
-ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840
15
+ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840
16
ret: 0 st:-1 flags:0 ts: 2.576668
17
-ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2
18
+ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2
19
ret: 0 st:-1 flags:1 ts: 1.470835
20
-ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2
21
+ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2
22
ret: 0 st: 0 flags:0 ts: 0.365000
23
-ret: 0 st: 0 flags:1 dts: 0.365000 pts: 0.365000 pos: 40185 size: 3840
24
+ret: 0 st: 0 flags:1 dts: 0.365000 pts: 0.365000 pos: 39673 size: 3840
25
ret: 0 st: 0 flags:1 ts:-0.740833
26
-ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840
27
+ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840
28
ret: 0 st:-1 flags:0 ts: 2.153336
29
-ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2
30
+ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2
31
ret: 0 st:-1 flags:1 ts: 1.047503
32
-ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2
33
+ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2
34
ret: 0 st: 0 flags:0 ts:-0.058333
35
-ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840
36
+ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840
37
ret: 0 st: 0 flags:1 ts: 2.835833
38
-ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2
39
+ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2
40
ret: 0 st:-1 flags:0 ts: 1.730004
41
-ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2
42
+ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2
43
ret: 0 st:-1 flags:1 ts: 0.624171
44
-ret: 0 st: 0 flags:1 dts: 0.624167 pts: 0.624167 pos: 65065 size: 3840
45
+ret: 0 st: 0 flags:1 dts: 0.624167 pts: 0.624167 pos: 64553 size: 3840
46
ret: 0 st: 0 flags:0 ts:-0.481667
47
-ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840
48
+ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840
49
ret: 0 st: 0 flags:1 ts: 2.412500
50
-ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2
51
+ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2
52
ret: 0 st:-1 flags:0 ts: 1.306672
53
-ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2
54
+ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2
55
ret: 0 st:-1 flags:1 ts: 0.200839
56
-ret: 0 st: 0 flags:1 dts: 0.200833 pts: 0.200833 pos: 24425 size: 3840
57
+ret: 0 st: 0 flags:1 dts: 0.200833 pts: 0.200833 pos: 23913 size: 3840
58
ret: 0 st: 0 flags:0 ts:-0.905000
59
-ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840
60
+ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840
61
ret: 0 st: 0 flags:1 ts: 1.989167
62
-ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2
63
+ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2
64
ret: 0 st:-1 flags:0 ts: 0.883340
65
-ret: 0 st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos: 89945 size: 3840
66
+ret: 0 st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos: 89433 size: 3840
67
ret: 0 st:-1 flags:1 ts:-0.222493
68
-ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840
69
+ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840
70
ret: 0 st: 0 flags:0 ts: 2.671667
71
-ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2
72
+ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2
73
ret: 0 st: 0 flags:1 ts: 1.565833
74
-ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2
75
+ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2
76
ret: 0 st:-1 flags:0 ts: 0.460008
77
-ret: 0 st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos: 49305 size: 3840
78
+ret: 0 st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos: 48793 size: 3840
79
ret: 0 st:-1 flags:1 ts:-0.645825
80
-ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840
81
+ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840
82