[MPlayer-dev-eng] [PATCH] - fix for audio and video in dvr-ms asf files
John Donaghy
johnfdonaghy at gmail.com
Sun Apr 16 18:37:47 CEST 2006
> This crashes in demux_open for me on my G4:
>
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 805500448 (LWP 9422)]
> 0x0ecc79e4 in memcmp () from /lib/tls/libc.so.6
>
> Let me know if you need more details.
Anything you can provide would be helpful. Did you try it on x86?
Also, sorry to sound like a newbie but did you merge the patch using a
CSV snap from the day it was submitted or on a current snapshot?
Does it work with '-demurer 35'?
Can you get the file you used to me somehow? Was it a dvr-ms file
generated from Windows Media Center 2005 Rollup 2 or something
earlier. I know some things are different in recent versions - such as
the presence of a subtitle stream - which could affect things.
I had a look at the patch and the only memcmp I've added is in this function:
static int find_backwards_asf_guid(char *buf, const char *guid, int cur_pos)
{
int i;
for (i=cur_pos; i>0; i--) {
if (memcmp(&buf[i], guid, 16) == 0)
return i + 16 + 8; // point after guid + length
}
return -1;
}
I cant immediately see anything wrong with it except that maybe it
should start at cur_pos - 16 instead of cur_pos ie:
static int find_backwards_asf_guid(char *buf, const char *guid, int cur_pos)
{
int i;
for (i=cur_pos-16; i>0; i--) {
if (memcmp(&buf[i], guid, 16) == 0)
return i + 16 + 8; // point after guid + length
}
return -1;
}
it's very similar to the existing find_asf_guid...
int find_asf_guid(char *buf, const char *guid, int cur_pos, int buf_len)
{
int i;
for (i = cur_pos; i < buf_len - 19; i++) {
if (memcmp(&buf[i], guid, 16) == 0)
return i + 16 + 8; // point after guid + length
}
return -1;
}
Regards,
John
More information about the MPlayer-dev-eng
mailing list