Changes of Revision 23

avidemux3.changes Changed
x
 
1
@@ -1,4 +1,9 @@
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
@@ -16,7 +16,7 @@
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
@@ -1,6 +1,87 @@
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
@@ -31,7 +112,7 @@
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
@@ -1,1 +1,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
@@ -1,1 +1,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
@@ -5240,7 +5240,7 @@
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
@@ -31,7 +31,7 @@
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
@@ -1205,9 +1205,9 @@
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
@@ -839,6 +839,21 @@
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
@@ -2447,6 +2447,9 @@
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
@@ -2462,6 +2465,7 @@
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
@@ -2889,6 +2889,11 @@
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
@@ -940,7 +940,7 @@
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
@@ -169,6 +169,10 @@
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
@@ -188,6 +192,10 @@
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
@@ -208,7 +216,10 @@
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
@@ -397,7 +408,8 @@
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
@@ -70,6 +70,7 @@
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
@@ -177,6 +178,7 @@
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
@@ -1032,6 +1034,7 @@
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
@@ -1412,7 +1415,7 @@
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
@@ -1449,6 +1452,12 @@
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
@@ -1458,6 +1467,7 @@
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
@@ -113,7 +113,7 @@
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
@@ -51,7 +51,7 @@
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
@@ -64,6 +64,9 @@
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
@@ -56,7 +56,7 @@
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
@@ -74,7 +74,8 @@
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
@@ -190,7 +191,8 @@
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
@@ -141,6 +141,12 @@
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
@@ -642,9 +648,18 @@
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
@@ -666,6 +681,12 @@
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
@@ -123,7 +123,7 @@
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
@@ -348,11 +348,11 @@
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
@@ -346,7 +346,7 @@
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
@@ -65,7 +65,7 @@
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
@@ -108,7 +108,7 @@
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
@@ -381,14 +381,19 @@
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
@@ -413,7 +418,7 @@
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
@@ -442,7 +447,7 @@
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
@@ -675,7 +680,7 @@
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
@@ -189,6 +189,10 @@
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
@@ -66,7 +66,7 @@
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
@@ -80,10 +80,15 @@
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
@@ -408,6 +408,7 @@
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
@@ -568,7 +569,7 @@
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
@@ -939,6 +940,7 @@
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
@@ -413,6 +413,10 @@
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
@@ -440,6 +444,10 @@
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
@@ -2026,6 +2026,7 @@
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
@@ -2042,7 +2043,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
@@ -1097,6 +1097,7 @@
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
@@ -1177,6 +1178,15 @@
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
@@ -2362,9 +2372,11 @@
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
@@ -834,6 +834,10 @@
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
@@ -417,8 +417,8 @@
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
@@ -30,6 +30,7 @@
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
@@ -310,7 +311,7 @@
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
@@ -28,6 +28,7 @@
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
@@ -210,9 +211,17 @@
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
@@ -450,7 +459,7 @@
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
@@ -174,21 +174,21 @@
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
@@ -197,8 +197,8 @@
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
@@ -208,8 +208,8 @@
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
@@ -30,6 +30,7 @@
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
@@ -279,6 +280,10 @@
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
@@ -826,10 +831,10 @@
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
@@ -1809,8 +1814,10 @@
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
@@ -1868,6 +1875,10 @@
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
@@ -534,7 +534,7 @@
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
@@ -623,7 +623,7 @@
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
@@ -662,7 +662,7 @@
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
@@ -708,7 +708,7 @@
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
@@ -42,7 +42,7 @@
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
@@ -57,7 +57,7 @@
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
@@ -164,6 +164,8 @@
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
@@ -82,11 +82,33 @@
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
@@ -94,6 +116,21 @@
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
@@ -319,6 +319,26 @@
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
@@ -335,6 +355,27 @@
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
@@ -4,6 +4,7 @@
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
@@ -25,6 +26,1011 @@
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
@@ -98,6 +98,15 @@
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
@@ -112,9 +121,7 @@
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
@@ -267,7 +274,6 @@
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
@@ -275,6 +281,11 @@
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
@@ -1093,7 +1104,10 @@
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
@@ -1161,7 +1175,10 @@
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
@@ -1953,7 +1953,7 @@
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
@@ -815,6 +815,7 @@
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
@@ -565,8 +565,8 @@
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
@@ -585,7 +585,7 @@
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
@@ -663,7 +663,10 @@
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
@@ -1012,7 +1015,7 @@
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
@@ -1052,6 +1055,8 @@
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
@@ -137,6 +137,7 @@
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
@@ -670,6 +670,10 @@
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
@@ -632,7 +632,7 @@
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
@@ -656,7 +656,7 @@
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
@@ -3490,7 +3490,7 @@
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
@@ -164,7 +164,7 @@
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
@@ -1623,6 +1623,11 @@
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
@@ -194,8 +194,12 @@
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
@@ -251,12 +255,15 @@
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
@@ -205,7 +205,7 @@
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
@@ -314,7 +314,7 @@
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
@@ -73,6 +73,8 @@
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
@@ -110,6 +112,13 @@
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
@@ -135,6 +144,11 @@
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
@@ -205,16 +219,29 @@
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
@@ -352,6 +379,60 @@
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
@@ -525,6 +606,14 @@
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
@@ -534,6 +623,12 @@
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
@@ -557,6 +652,7 @@
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
@@ -642,6 +738,14 @@
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
@@ -720,6 +824,8 @@
179
                     seg->url_offset = 0;
180
                     seg_offset = 0;
181
                 }
182
+
183
+                seg->init_section = cur_init_section;
184
             }
185
         }
186
     }
187
@@ -733,17 +839,22 @@
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
@@ -103,6 +103,7 @@
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
@@ -197,6 +198,7 @@
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
@@ -54,7 +54,7 @@
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
@@ -3088,6 +3088,7 @@
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
@@ -3294,7 +3294,7 @@
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
@@ -3312,15 +3312,6 @@
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
@@ -3334,24 +3325,33 @@
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
@@ -3541,7 +3541,106 @@
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
@@ -3799,6 +3898,7 @@
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
@@ -3922,9 +4022,9 @@
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
@@ -42,6 +42,9 @@
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
@@ -54,7 +57,7 @@
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
@@ -374,12 +377,21 @@
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
@@ -420,7 +432,7 @@
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
@@ -434,6 +446,8 @@
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
@@ -461,7 +475,7 @@
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
@@ -841,6 +841,7 @@
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
@@ -1776,6 +1776,16 @@
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
@@ -19,7 +19,8 @@
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
@@ -321,6 +322,7 @@
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
@@ -378,7 +380,6 @@
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
@@ -398,9 +399,6 @@
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
@@ -446,6 +444,12 @@
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
@@ -523,10 +527,12 @@
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
@@ -534,10 +540,15 @@
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
@@ -1251,14 +1262,15 @@
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
@@ -1293,10 +1305,12 @@
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
@@ -2036,6 +2050,9 @@
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
@@ -2654,6 +2671,8 @@
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
@@ -2668,6 +2687,8 @@
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
@@ -184,9 +184,14 @@
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
@@ -1136,7 +1136,6 @@
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
@@ -1156,7 +1155,7 @@
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
@@ -1167,7 +1166,6 @@
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
@@ -3139,7 +3139,7 @@
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
@@ -549,16 +549,17 @@
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
@@ -126,6 +126,8 @@
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
@@ -144,14 +146,15 @@
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
@@ -76,6 +76,17 @@
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
@@ -77,6 +77,9 @@
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
@@ -97,6 +97,48 @@
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
@@ -36,7 +36,7 @@
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
@@ -90,7 +90,7 @@
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
@@ -98,7 +98,10 @@
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
@@ -108,20 +111,27 @@
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
@@ -143,7 +153,12 @@
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
@@ -163,7 +178,9 @@
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
@@ -231,6 +231,10 @@
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
@@ -61,6 +61,7 @@
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
@@ -366,16 +366,16 @@
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
@@ -1,9 +1,9 @@
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
@@ -1,3 +1,3 @@
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
@@ -1,3 +1,3 @@
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
@@ -1,3 +1,3 @@
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
@@ -1,48 +1,48 @@
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
@@ -1,53 +1,53 @@
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