[MPlayer-dev-eng] [PATCH] Realplayer codec support

Arpi arpi at thot.banki.hu
Thu Jun 6 05:17:31 CEST 2002


Hi,

> > I have put the codecs and an example real medai file into

> but, are you sure your demuxer extensions are working and complete?
> the sample file you uploaded plays buggy, but i don't think it's a

and yes, i was wrong...

now, after several hours of debugging, i have some news.

custommessage calls can be skipped, except the 0x24 (set width/height) one!
i've patched drv3.c wrapper to ignore all except 0x24 (return 0) and the
realplayer8 still worked. that 0x24 call require only 2 longs (anyway the
player sends 4 longs: w,h,w,h)

that hivemessage is not so useless as you wrote.
it has a single input parameter (0) and fills the array (p1 points to)
by 0,0x20000000. the player aborts if it is ignored.
even, if i don't call the hive function of the real code, just emulate it
(full teh array with 0,0x2000000). so it must do something...

the init function uses exactly 24 bytes. no more, not less.
(yes your struct is 24 bytes long - so it's ok :))

i've played with temp arrays, copy data to temp, call real codec function
and if needed, copy result back. i've filled temp with 0x77 before.

finally, i'm pretty sure that the decoding problems are related to the
transin1 structure. my first thought was it's an array of pointers to
sub-blocks. i can see some relations between the value of
num_sub_packets_in_block_minus_one and the numbers in transin1.

transin1[0x845d490]: {0} 0x1 (nil) 0xf90efd85 0x11 (nil) (nil) 0x845d468
transin1[0x845d4e8]: {2} 0x1 (nil) 0x1 0x256 0x1 0x496 0xfec00967
transin1[0x84310b8]: {0} 0x1 (nil) 0x28 0x61 0xb0 0x90 (nil)
transin1[0x81e5ea8]: {0} 0x1 (nil) 0x28 0x19 0x40861700 0x8431ad0 0x5ba
transin1[0x81e6188]: {0} 0x1 (nil) 0xa030001 0x20200001 0x30 0x11 0x81e6150
transin1[0x81e5ef8]: {0} 0x1 (nil) 0x28 0x19 0x81e61c8 (nil) 0x81e5ee0
transin1[0x81e6218]: {0} 0x1 (nil) 0x28 0x19 0x40861700 0x8432c10 0x5ba
transin1[0x81e6278]: {0} 0x1 (nil) 0x77020001 0xa200001 0x30 0x11 0x81e6240
transin1[0x81e5f48]: {0} 0x1 (nil) 0x28 0x19 0x81e5f98 (nil) 0x81e5f30
transin1[0x842fe78]: {1} 0x1 (nil) 0x1 0x258 0x1 0x496 0x38
transin1[0x81e5fe8]: {0} 0x1 (nil) 0x28 0x19 0x40861700 0x8433d50 0x5ba
transin1[0x81e6358]: {0} 0x1 (nil) 0x28 0x19 0x40861700 0x84380d8 0x5ba
transin1[0x84300d0]: {0} 0x1 (nil) 0x28 0x19 0x40861700 0x8438698 0x5ba
transin1[0x81e6448]: {0} 0x1 (nil) 0x28 0x19 0x84300f8 (nil) 0x81e6430
transin1[0x81e6b48]: {0} 0x1 (nil) 0x28 0x19 0x40861700 0x84fc348 0x9480
transin1[0x81e6c38]: {0} 0x1 (nil) 0x28 0x19 0x81e6b80 (nil) 0x81e6c20
transin1[0x81e62c8]: {1} 0x1 (nil) 0x1 0x256 0x30 0x11 0x81e6290
transin1[0x81e6538]: {0} 0x1 (nil) 0x28 0x19 0x40861700 0x850ec58 0x9480
           ptr     spib-1 transin [0..6]

but those values don't seem to be pointers, but may be actual compressed
image data. most codecs produce compressed frames with very similar start
bytes (micro headers). and, the number of sub-packets may affect this.

anyway, as you said, even if i modify the 6th dword of transin1 to NULL, it
randomly crashes.


A'rpi / Astral & ESP-team

--
Developer of MPlayer, the Movie Player for Linux - http://www.MPlayerHQ.hu



More information about the MPlayer-dev-eng mailing list