forked from len0rd/rockbox
MPEGPlayer: reconceal the point puns
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26090 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
53a858b36c
commit
26230ae048
3 changed files with 20 additions and 13 deletions
|
@ -610,7 +610,7 @@ static ssize_t disk_buf_probe(off_t start, size_t length, void **p)
|
||||||
|
|
||||||
/* Attempt to get a pointer to size bytes on the buffer. Returns real amount of
|
/* Attempt to get a pointer to size bytes on the buffer. Returns real amount of
|
||||||
* data available as well as the size of non-wrapped data after *p. */
|
* data available as well as the size of non-wrapped data after *p. */
|
||||||
ssize_t disk_buf_getbuffer(size_t size, void **pp, void **pwrap,
|
ssize_t _disk_buf_getbuffer(size_t size, void **pp, void **pwrap,
|
||||||
size_t *sizewrap)
|
size_t *sizewrap)
|
||||||
{
|
{
|
||||||
disk_buf_lock();
|
disk_buf_lock();
|
||||||
|
@ -640,7 +640,7 @@ ssize_t disk_buf_getbuffer(size_t size, void **pp, void **pwrap,
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t disk_buf_getbuffer_l2(struct dbuf_l2_cache *l2,
|
ssize_t _disk_buf_getbuffer_l2(struct dbuf_l2_cache *l2,
|
||||||
size_t size, void **pp)
|
size_t size, void **pp)
|
||||||
{
|
{
|
||||||
off_t offs;
|
off_t offs;
|
||||||
|
|
|
@ -116,10 +116,17 @@ static inline int disk_buf_status(void)
|
||||||
|
|
||||||
int disk_buf_open(const char *filename);
|
int disk_buf_open(const char *filename);
|
||||||
void disk_buf_close(void);
|
void disk_buf_close(void);
|
||||||
ssize_t disk_buf_getbuffer(size_t size, void **pp, void **pwrap,
|
ssize_t _disk_buf_getbuffer(size_t size, void **pp, void **pwrap,
|
||||||
size_t *sizewrap);
|
size_t *sizewrap);
|
||||||
ssize_t disk_buf_getbuffer_l2(struct dbuf_l2_cache *l2,
|
#define disk_buf_getbuffer(size, pp, pwrap, sizewrap) \
|
||||||
|
_disk_buf_getbuffer((size), PUN_PTR(void **, (pp)), \
|
||||||
|
PUN_PTR(void **, (pwrap)), (sizewrap))
|
||||||
|
|
||||||
|
ssize_t _disk_buf_getbuffer_l2(struct dbuf_l2_cache *l2,
|
||||||
size_t size, void **pp);
|
size_t size, void **pp);
|
||||||
|
#define disk_buf_getbuffer_l2(l2, size, pp) \
|
||||||
|
_disk_buf_getbuffer_l2((l2), (size), PUN_PTR(void **, (pp)))
|
||||||
|
|
||||||
ssize_t disk_buf_read(void *buffer, size_t size);
|
ssize_t disk_buf_read(void *buffer, size_t size);
|
||||||
ssize_t disk_buf_lseek(off_t offset, int whence);
|
ssize_t disk_buf_lseek(off_t offset, int whence);
|
||||||
|
|
||||||
|
|
|
@ -99,7 +99,7 @@ uint8_t * mpeg_parser_scan_start_code(struct stream_scan *sk, uint32_t code)
|
||||||
{
|
{
|
||||||
uint8_t *p;
|
uint8_t *p;
|
||||||
off_t pos = disk_buf_lseek(sk->pos, SEEK_SET);
|
off_t pos = disk_buf_lseek(sk->pos, SEEK_SET);
|
||||||
ssize_t len = disk_buf_getbuffer_l2(&sk->l2, 4, (void **)&p);
|
ssize_t len = disk_buf_getbuffer_l2(&sk->l2, 4, &p);
|
||||||
|
|
||||||
if (pos < 0 || len < 4)
|
if (pos < 0 || len < 4)
|
||||||
break;
|
break;
|
||||||
|
@ -131,7 +131,7 @@ unsigned mpeg_parser_scan_pes(struct stream_scan *sk)
|
||||||
{
|
{
|
||||||
uint8_t *p;
|
uint8_t *p;
|
||||||
off_t pos = disk_buf_lseek(sk->pos, SEEK_SET);
|
off_t pos = disk_buf_lseek(sk->pos, SEEK_SET);
|
||||||
ssize_t len = disk_buf_getbuffer_l2(&sk->l2, 4, (void **)&p);
|
ssize_t len = disk_buf_getbuffer_l2(&sk->l2, 4, &p);
|
||||||
|
|
||||||
if (pos < 0 || len < 4)
|
if (pos < 0 || len < 4)
|
||||||
break;
|
break;
|
||||||
|
@ -192,7 +192,7 @@ uint32_t mpeg_parser_scan_pts(struct stream_scan *sk, unsigned id)
|
||||||
{
|
{
|
||||||
uint8_t *p;
|
uint8_t *p;
|
||||||
off_t pos = disk_buf_lseek(sk->pos, SEEK_SET);
|
off_t pos = disk_buf_lseek(sk->pos, SEEK_SET);
|
||||||
ssize_t len = disk_buf_getbuffer_l2(&sk->l2, 30, (void **)&p);
|
ssize_t len = disk_buf_getbuffer_l2(&sk->l2, 30, &p);
|
||||||
|
|
||||||
if (pos < 0 || len < 4)
|
if (pos < 0 || len < 4)
|
||||||
break;
|
break;
|
||||||
|
@ -742,7 +742,7 @@ static int parse_demux(struct stream *str, enum stream_parse_mode type)
|
||||||
str->hdr.pos = disk_buf_lseek(str->hdr.pos, SEEK_SET);
|
str->hdr.pos = disk_buf_lseek(str->hdr.pos, SEEK_SET);
|
||||||
|
|
||||||
if (str->hdr.pos < 0 || str->hdr.pos >= str->hdr.limit ||
|
if (str->hdr.pos < 0 || str->hdr.pos >= str->hdr.limit ||
|
||||||
disk_buf_getbuffer(MIN_BUFAHEAD, (void **)&p, NULL, NULL) <= 0)
|
disk_buf_getbuffer(MIN_BUFAHEAD, &p, NULL, NULL) <= 0)
|
||||||
{
|
{
|
||||||
str_end_of_stream(str);
|
str_end_of_stream(str);
|
||||||
return STREAM_DATA_END;
|
return STREAM_DATA_END;
|
||||||
|
@ -1017,7 +1017,7 @@ static int parse_elementary(struct stream *str, enum stream_parse_mode type)
|
||||||
|
|
||||||
case STREAM_PM_RANDOM_ACCESS:
|
case STREAM_PM_RANDOM_ACCESS:
|
||||||
str->hdr.pos = disk_buf_lseek(str->hdr.pos, SEEK_SET);
|
str->hdr.pos = disk_buf_lseek(str->hdr.pos, SEEK_SET);
|
||||||
len = disk_buf_getbuffer(DISK_BUF_PAGE_SIZE, (void **)&p, NULL, NULL);
|
len = disk_buf_getbuffer(DISK_BUF_PAGE_SIZE, &p, NULL, NULL);
|
||||||
|
|
||||||
if (len <= 0 || str->hdr.pos < 0 || str->hdr.pos >= str->hdr.limit)
|
if (len <= 0 || str->hdr.pos < 0 || str->hdr.pos >= str->hdr.limit)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue