repositories
/
deb_ffmpeg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Imported Debian version 2.5.0~trusty1.1
[deb_ffmpeg.git]
/
ffmpeg
/
libavformat
/
dtsdec.c
diff --git
a/ffmpeg/libavformat/dtsdec.c
b/ffmpeg/libavformat/dtsdec.c
index f6a939a1d8626b1e7e988ff65e3b31ad7b1ed590..d054f4353770381356c14838bd0218257038920d 100644
(file)
--- a/
ffmpeg/libavformat/dtsdec.c
+++ b/
ffmpeg/libavformat/dtsdec.c
@@
-34,7
+34,7
@@
static int dts_probe(AVProbeData *p)
{
const uint8_t *buf, *bufp;
uint32_t state = -1;
{
const uint8_t *buf, *bufp;
uint32_t state = -1;
- int markers[4] = {0};
+ int markers[4
*16
] = {0};
int sum, max, i;
int64_t diff = 0;
uint8_t hdr[12 + FF_INPUT_BUFFER_PADDING_SIZE] = { 0 };
int sum, max, i;
int64_t diff = 0;
uint8_t hdr[12 + FF_INPUT_BUFFER_PADDING_SIZE] = { 0 };
@@
-43,6
+43,7
@@
static int dts_probe(AVProbeData *p)
for(; buf < (p->buf+p->buf_size)-2; buf+=2) {
int marker, sample_blocks, sample_rate, sr_code, framesize;
for(; buf < (p->buf+p->buf_size)-2; buf+=2) {
int marker, sample_blocks, sample_rate, sr_code, framesize;
+ int lfe;
GetBitContext gb;
bufp = buf;
GetBitContext gb;
bufp = buf;
@@
-89,13
+90,27
@@
static int dts_probe(AVProbeData *p)
if (sample_rate == 0)
continue;
if (sample_rate == 0)
continue;
+ get_bits(&gb, 5);
+ if (get_bits(&gb, 1))
+ continue;
+
+ skip_bits_long(&gb, 9);
+ lfe = get_bits(&gb, 2);
+ if (lfe > 2)
+ continue;
+
+ marker += 4* sr_code;
+
markers[marker] ++;
}
markers[marker] ++;
}
- sum = markers[0] + markers[1] + markers[2] + markers[3];
- max = 0;
- for (i=1; i<4; i++)
+
+ sum = max = 0;
+ for (i=0; i<FF_ARRAY_ELEMS(markers); i++) {
+ sum += markers[i];
if (markers[max] < markers[i])
max = i;
if (markers[max] < markers[i])
max = i;
+ }
+
if (markers[max] > 3 && p->buf_size / markers[max] < 32*1024 &&
markers[max] * 4 > sum * 3 &&
diff / p->buf_size > 200)
if (markers[max] > 3 && p->buf_size / markers[max] < 32*1024 &&
markers[max] * 4 > sum * 3 &&
diff / p->buf_size > 200)