[MPlayer-dev-eng] nvidia_vid YV12 - some progress

Joachim Breuer jmbreuer at gmx.net
Sun Jan 4 20:25:40 CET 2004


Hello!

"Sascha Sommer" <saschasommer at freenet.de> writes:

>> Allright, I poked around a bit using mplayer -vo directx under '98 and
>> a modified version of Sascha's test to read out the card registers
>> while mplayer was running. Specific values in the following refer to
>> the playback of an 320x240 MPEG1 test stream.
>
> I think you won't need mplayer. The test programm calls the directx
> functions themselves. It doesn't create a window, though.

I used mplayer mainly to be able to display exactly the same stream
under linux - and especially easily play around with different image
sizes and see what happens. (-vf extend / -vf crop do wonders here ;-)

Apropos see what happens: I complained about the geometry problem
earlier when playing UYVY not 320 but 316 pixels wide (line size
mismatch - diagonal striping). Guess what: Using mplayer to display
that 316 wide stream using UYVY under windows shows exactly the same
distortion, with YV12 it shows up correctly. Duh.

> Btw. what about the  NV_PVIDEO_LUMINANCE and NV_PVIDEO_CHROMINANCE
> registers? Do they change?

Ahyup, you're right there. I forgot to comment on that in the last
post and ignored them for the most part - mainly because they don't
change between YUY2 and YV12 playback, and under Windows the picture
is "wrong" anyway - too dark by at least 1/2 f stop. Checking... they
don't *ever* change under windows, no matter what overlay format or
size I request (and get).

But... here goes:

NV_LUMINANCE (0x910):
  YUY2: 0x03ed0e60
  YV12: 0x03ed0e60

For reference, that's in between OFFSET (0x03f06400) and OFFSET1
(0x03eac400), but at first glance I can't see an easy relation to the
picture parameters.

NV_CHROMINANCE (0x918):
  YUY2: 0x0000123c
  YV12: 0x0000123c

I'll give that a shot just now - nope, those two alone wasn't it
either. Except that UYVY mode under linux is too dark now, as
well. Replying to myself: Of course that bit of Y plane playback I got
to work does not survive 'power off', i.e. there is some
initialization done by the '98 driver that we're still missing. From
what I have tried the missing setting does not appear to be in the
0x700-0x9ff register range (as an experiment I'm simply trying to
write the windows values into there before the nvidia_vid register
setup).

If someone else wants a headache I'll be happy to send them the
register dumps; posting it on the list doesn't make much sense
methinks.

>> Does anybody happen to know of a tool to dump the GeForces complete
>> memory? Then I could hunt around for where and how the color planes
>> are stored.
>>
>
> you can do this with
> fwrite(info->video_base,info->chip.fbsize,1,fp);

Ah great, I'll dig in then.

> Btw. you can find nv10 registers in
> http://rivatv.sourceforge.net/stuff/rules.tar.gz

Allright, great! If nothing else that should give me an idea what reg
changes I can safely ignore... might just write a stylesheet transform
that gives me all reg bits not covered in there ;-)


Thanks a lot!


So long,
   Joe

-- 
"I use emacs, which might be thought of as a thermonuclear
 word processor."
-- Neal Stephenson, "In the beginning... was the command line"




More information about the MPlayer-dev-eng mailing list