Mercurial > libdvdnav.hg
comparison read_cache.c @ 242:f794e1c17947 src
porting AMD64 patches from xine (provided by Goetz Waschk and Gwenole Beauchesne
from Mandrake)
author | mroi |
---|---|
date | Wed, 03 Mar 2004 16:48:36 +0000 |
parents | 065a2835ba90 |
children | ef3b33441db5 |
comparison
equal
deleted
inserted
replaced
241:12cff2e56f55 | 242:f794e1c17947 |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2000 Rich Wareham <richwareham@users.sourceforge.net> | 2 * Copyright (C) 2000 Rich Wareham <richwareham@users.sourceforge.net> |
3 * 2001-2004 the dvdnav project | |
3 * | 4 * |
4 * This file is part of libdvdnav, a DVD navigation library. | 5 * This file is part of libdvdnav, a DVD navigation library. |
5 * | 6 * |
6 * libdvdnav is free software; you can redistribute it and/or modify | 7 * libdvdnav is free software; you can redistribute it and/or modify |
7 * it under the terms of the GNU General Public License as published by | 8 * it under the terms of the GNU General Public License as published by |
179 use = i; | 180 use = i; |
180 if (use >= 0) { | 181 if (use >= 0) { |
181 self->chunk[use].cache_buffer_base = realloc(self->chunk[use].cache_buffer_base, | 182 self->chunk[use].cache_buffer_base = realloc(self->chunk[use].cache_buffer_base, |
182 block_count * DVD_VIDEO_LB_LEN + ALIGNMENT); | 183 block_count * DVD_VIDEO_LB_LEN + ALIGNMENT); |
183 self->chunk[use].cache_buffer = | 184 self->chunk[use].cache_buffer = |
184 (uint8_t *)(((uintptr_t)self->chunk[use].cache_buffer_base & ~(ALIGNMENT - 1)) + ALIGNMENT); | 185 (uint8_t *)(((uintptr_t)self->chunk[use].cache_buffer_base & ~((uintptr_t)(ALIGNMENT - 1))) + ALIGNMENT); |
185 dprintf("pre_cache DVD read realloc happened\n"); | 186 dprintf("pre_cache DVD read realloc happened\n"); |
186 self->chunk[use].cache_malloc_size = block_count; | 187 self->chunk[use].cache_malloc_size = block_count; |
187 } else { | 188 } else { |
188 /* we still haven't found a cache chunk, let's allocate a new one */ | 189 /* we still haven't found a cache chunk, let's allocate a new one */ |
189 for (i = 0; i < READ_CACHE_CHUNKS; i++) | 190 for (i = 0; i < READ_CACHE_CHUNKS; i++) |
197 * This is so that fewer realloc's happen if at all. | 198 * This is so that fewer realloc's happen if at all. |
198 */ | 199 */ |
199 self->chunk[i].cache_buffer_base = | 200 self->chunk[i].cache_buffer_base = |
200 malloc((block_count > 500 ? block_count : 500) * DVD_VIDEO_LB_LEN + ALIGNMENT); | 201 malloc((block_count > 500 ? block_count : 500) * DVD_VIDEO_LB_LEN + ALIGNMENT); |
201 self->chunk[i].cache_buffer = | 202 self->chunk[i].cache_buffer = |
202 (uint8_t *)(((uintptr_t)self->chunk[i].cache_buffer_base & ~(ALIGNMENT - 1)) + ALIGNMENT); | 203 (uint8_t *)(((uintptr_t)self->chunk[i].cache_buffer_base & ~((uintptr_t)(ALIGNMENT - 1))) + ALIGNMENT); |
203 self->chunk[i].cache_malloc_size = block_count > 500 ? block_count : 500; | 204 self->chunk[i].cache_malloc_size = block_count > 500 ? block_count : 500; |
204 dprintf("pre_cache DVD read malloc %d blocks\n", | 205 dprintf("pre_cache DVD read malloc %d blocks\n", |
205 (block_count > 500 ? block_count : 500 )); | 206 (block_count > 500 ? block_count : 500 )); |
206 } | 207 } |
207 } | 208 } |