diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2007-12-29 19:46:35 +0000 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2007-12-29 19:46:35 +0000 |
| commit | a222f27c4a17ed8f9809cda7861fe5f23d4cc0c1 (patch) | |
| tree | d393a23d83549f99772bb156e59ffb88725148b6 /firmware/export/system.h | |
| parent | 1d0f6b90ff43776e55b4b9f062c9bea3f99aa768 (diff) | |
| download | rockbox-a222f27c4a17ed8f9809cda7861fe5f23d4cc0c1.zip rockbox-a222f27c4a17ed8f9809cda7861fe5f23d4cc0c1.tar.gz rockbox-a222f27c4a17ed8f9809cda7861fe5f23d4cc0c1.tar.bz2 rockbox-a222f27c4a17ed8f9809cda7861fe5f23d4cc0c1.tar.xz | |
mpegplayer: Make playback engine fully seekable and frame-accurate and split into logical parts. Be sure to have all current features work. Actual UI for seeking will be added soon. Recommended GOP size is about 15-30 frames depending on target or seeking can be slow with really long GOPs (nature of MPEG video). More refined encoding recommendations for a particular player should be posted soon.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15977 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/export/system.h')
| -rw-r--r-- | firmware/export/system.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/firmware/export/system.h b/firmware/export/system.h index cba4b81..b973b57 100644 --- a/firmware/export/system.h +++ b/firmware/export/system.h @@ -243,16 +243,18 @@ static inline uint32_t swap_odd_even32(uint32_t value) #define CACHEALIGN_DOWN(x) \ ((typeof (x))ALIGN_DOWN_P2((uintptr_t)(x), CACHEALIGN_BITS)) /* Aligns at least to the greater of size x or CACHEALIGN_SIZE */ -#define CACHEALIGN_AT_LEAST_ATTR(x) __attribute__((aligned(CACHEALIGN_UP(x)))) +#define CACHEALIGN_AT_LEAST_ATTR(x) \ + __attribute__((aligned(CACHEALIGN_UP(x)))) /* Aligns a buffer pointer and size to proper boundaries */ #define CACHEALIGN_BUFFER(start, size) \ - ({ align_buffer((start), (size), CACHEALIGN_SIZE); }) + ({ align_buffer(PUN_PTR(void **, (start)), (size), CACHEALIGN_SIZE); }) #else /* ndef PROC_NEEDS_CACHEALIGN */ /* Cache alignment attributes and sizes are not enabled */ #define CACHEALIGN_ATTR -#define CACHEALIGN_AT_LEAST_ATTR(x) __attribute__((aligned(x))) +#define CACHEALIGN_AT_LEAST_ATTR(x) \ + __attribute__((aligned(x))) #define CACHEALIGN_UP(x) (x) #define CACHEALIGN_DOWN(x) (x) /* Make no adjustments */ @@ -261,4 +263,8 @@ static inline uint32_t swap_odd_even32(uint32_t value) #endif /* PROC_NEEDS_CACHEALIGN */ +/* Double-cast to avoid 'dereferencing type-punned pointer will + * break strict aliasing rules' B.S. */ +#define PUN_PTR(type, p) ((type)(intptr_t)(p)) + #endif /* __SYSTEM_H__ */ |