Contents of /trunk/xine-lib/patches/xine-lib-1.1.1-matroskademux.patch
Parent Directory | Revision Log
Revision 153 -
(show annotations)
(download)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 1977 byte(s)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 1977 byte(s)
-import
1 | Index: xine-lib-1.1.1/src/demuxers/demux_matroska.c |
2 | =================================================================== |
3 | --- xine-lib-1.1.1.orig/src/demuxers/demux_matroska.c |
4 | +++ xine-lib-1.1.1/src/demuxers/demux_matroska.c |
5 | @@ -1750,12 +1750,13 @@ static int parse_block (demux_matroska_t |
6 | /* size of each frame */ |
7 | for (i = 0; i < lace_num; i++) { |
8 | int size = 0; |
9 | - while (*data == 255) { |
10 | - size += *data; |
11 | + int partial_size; |
12 | + do |
13 | + { |
14 | + partial_size = *data; |
15 | + size += partial_size; |
16 | data++; block_size_left--; |
17 | - } |
18 | - size += *data; |
19 | - data++; block_size_left--; |
20 | + } while (partial_size == 255); |
21 | frame[i] = size; |
22 | block_size_left -= size; |
23 | } |
24 | @@ -1765,14 +1766,19 @@ static int parse_block (demux_matroska_t |
25 | } |
26 | break; |
27 | |
28 | - case MATROSKA_FIXED_SIZE_LACING: |
29 | + case MATROSKA_FIXED_SIZE_LACING: { |
30 | + int frame_size; |
31 | + |
32 | lprintf("fixed size lacing\n"); |
33 | + |
34 | + frame_size = block_size_left / (lace_num + 1); |
35 | for (i = 0; i < lace_num; i++) { |
36 | - frame[i] = block_size / (lace_num + 1); |
37 | - block_size_left -= frame[i]; |
38 | + frame[i] = frame_size; |
39 | } |
40 | - frame[lace_num] = block_size_left; |
41 | - break; |
42 | + frame[lace_num] = block_size_left - (lace_num * frame_size); |
43 | + block_size_left = 0; |
44 | + } |
45 | + break; |
46 | |
47 | case MATROSKA_EBML_LACING: { |
48 | int64_t tmp; |
49 | Index: xine-lib-1.1.1/src/xine-engine/demux.c |
50 | =================================================================== |
51 | --- xine-lib-1.1.1.orig/src/xine-engine/demux.c |
52 | +++ xine-lib-1.1.1/src/xine-engine/demux.c |
53 | @@ -525,7 +525,8 @@ void _x_demux_send_data(fifo_buffer_t *f |
54 | |
55 | decoder_flags |= BUF_FLAG_FRAME_START; |
56 | |
57 | - while (fifo && size) { |
58 | + _x_assert(size > 0); |
59 | + while (fifo && size > 0) { |
60 | |
61 | buf = fifo->buffer_pool_alloc (fifo); |
62 |