Magellan Linux

Contents of /trunk/xine-lib/patches/xine-lib-1.1.1-matroskademux.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 153 - (show annotations) (download)
Tue May 8 20:52:56 2007 UTC (17 years 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