summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mkv.c
diff options
context:
space:
mode:
authormosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-03-22 18:58:03 +0000
committermosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-03-22 18:58:03 +0000
commitdf0b2d8206ca35f85ce2f13518ab5e3407cb6dfa (patch)
treeb97043eac969192a7a2e7a16b2346db8ac5ea98d /libmpdemux/demux_mkv.c
parentf0daa05353c6c105db1dcbbc96e9ce907d4d012f (diff)
downloadmpv-df0b2d8206ca35f85ce2f13518ab5e3407cb6dfa.tar.bz2
mpv-df0b2d8206ca35f85ce2f13518ab5e3407cb6dfa.tar.xz
Fix for playing RealVideo on PPC/big endian processors. Patch by Emanuele Giaquinta (emanuele ! giaquinta () gmail ! com).
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17924 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_mkv.c')
-rw-r--r--libmpdemux/demux_mkv.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c
index e70cc7971d..2bc39fd847 100644
--- a/libmpdemux/demux_mkv.c
+++ b/libmpdemux/demux_mkv.c
@@ -2724,12 +2724,26 @@ handle_realvideo (demuxer_t *demuxer, mkv_track_t *track, uint8_t *buffer,
dp_hdr_t *hdr;
uint8_t chunks;
int isize;
+#ifdef WORDS_BIGENDIAN
+ uint8_t *p;
+ int i;
+#endif
chunks = *buffer++;
isize = --size - (chunks+1)*8;
dp = new_demux_packet (sizeof (*hdr) + size);
memcpy (dp->buffer + sizeof(*hdr), buffer + (chunks+1)*8, isize);
+#ifdef WORDS_BIGENDIAN
+ p = (uint8_t *)(dp->buffer + sizeof(*hdr) + isize);
+ for (i = 0; i<(chunks+1)*8; i+=4) {
+ p[i] = *((uint8_t *)buffer+i+3);
+ p[i+1] = *((uint8_t *)buffer+i+2);
+ p[i+2] = *((uint8_t *)buffer+i+1);
+ p[i+3] = *((uint8_t *)buffer+i);
+ }
+#else
memcpy (dp->buffer + sizeof(*hdr) + isize, buffer, (chunks+1)*8);
+#endif
hdr = (dp_hdr_t *) dp->buffer;
hdr->len = isize;