Opened 15 years ago

Closed 13 years ago

Last modified 13 years ago

#195 closed defect (wontfix)

nvidia_vid vidix driver won't scale down to fit in fullscreen

Reported by: lt@… Owned by: saschasommer@…
Priority: normal Component: vo
Version: HEAD Severity: normal
Keywords: Cc:
Blocked By: Blocking:
Reproduced by developer: Analyzed by developer:

Description

When I watch a video fullscreened with a resolution higher than the screen
resolution using -vo xvidix it is not scaled down to fit the screen. It gets
cropped, and you don't see all of the image. I would really like to see all of
the image.
I originally noticed this problem when I was trying to watch DVD resolution
videos at 640x480, and it was cropping off the subtitles. NO FUN.

I'm running Slackware 8.1, with kernel 2.6.8.1. I have a Nvidia Riva
TNT2/Vanta, and am using Xfree86 4.3.0

According to the users guide for the video card, the overlay "features smooth up
and down scaling with multitap X and Y sub-pixel interpolation", which I think
means it should be able to do this properly.

It does seem to work properly on other video cards, with different drivers (I
tried with a Radeon 7000), so I think it's something wrong with the nvidia_vid
vidix driver.

output of mplayer -v:

MPlayer dev-CVS-041231-18:33-3.4.2 (C) 2000-2004 MPlayer Team
CPU: Advanced Micro Devices Athlon 4 /Athlon MP/XP Palomino (Family: 6, Stepping: 2)
Detected cache-line size is 64 bytes
CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 0
Compiled for x86 CPU with extensions: MMX MMX2 3DNow 3DNowEx SSE

CommandLine:init_freetype
get_path('font/font.desc') -> '/root/.mplayer/font/font.desc'
font: can't open file: /root/.mplayer/font/font.desc
Font /usr/local/share/mplayer/font/font.desc loaded successfully! (206 chars)
Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay?
Using nanosleep() timing
get_path('input.conf') -> '/root/.mplayer/input.conf'
Can't open input config file /root/.mplayer/input.conf: No such file or directory
Can't open input config file /usr/local/etc/mplayer/input.conf: No such file or
directory
Falling back on default (hardcoded) input config
get_path('highrestest.avi.conf') -> '/root/.mplayer/highrestest.avi.conf'
Playing highrestest.avi.
[file] File size is 247240 bytes
STREAM: [file] highrestest.avi
STREAM: Description: File
STREAM: Author: Albeu
STREAM: Comment: based on the code from ??? (probably Arpi)
CACHE_PRE_INIT: 0 [0] 0 pre:0 eof:247240
AVI file format detected.
list_end=0x146
======= AVI Header =======
us/frame: 1000000 (fps=1.000)
max bytes/sec: 0
padding: 0
MainAVIHeader.dwFlags: (2320) HAS_INDEX IS_INTERLEAVED TRUST_CKTYPE
frames total: 16 initial: 0
streams: 2
Suggested BufferSize?: 0
Size: 2000 x 1000
==========================
list_end=0xD4
==> Found video stream: 0

STREAM Header =====

Type: vids FCC: DIVX (58564944)
Flags: 0
Priority: 0 Language: 0
InitialFrames?: 0
Rate: 1/1 = 1.000
Start: 0 Len: 16
Suggested BufferSize?: 57306
Quality 0
Sample size: 0
==========================
found 'bih', 40 bytes of 40
======= VIDEO Format ======

biSize 40
biWidth 2000
biHeight 1000
biPlanes 1
biBitCount 24
biCompression 1482049860='DIVX'
biSizeImage 6000000

===========================
Regenerating keyframe table for MPEG4 video
list_end=0x146
==> Found audio stream: 1

STREAM Header =====

Type: auds FCC: U (55)
Flags: 0
Priority: 0 Language: 0
InitialFrames?: 0
Rate: 44100/1152 = 38.281
Start: 0 Len: 594
Suggested BufferSize?: 208
Quality 0
Sample size: 0
==========================
found 'wf', 30 bytes of 18
======= WAVE Format =======
Format Tag: 85 (0x55)
Channels: 1
Samplerate: 44100
avg byte/sec: 4013
Block align: 1152
bits/sample: 0
cbSize: 12
mp3.wID=1
mp3.fdwFlags=0x2
mp3.nBlockSize=1152
mp3.nFramesPerBlock=1
mp3.nCodecDelay=0
===========================
list_end=0x17E
hdr=Software size=36
Software : MEncoder dev-CVS-041231-18:33-3.4.2
list_end=0x39FA0
Found movie at 0x100C - 0x39FA0
Reading INDEX block, 610 chunks for 16 frames (fpos=0x39fa8)
AVI index offset: 0x1008 (movi=0x100C idx0=0x4 idx1=0xC2)
Auto-selected AVI audio ID = 1
Auto-selected AVI video ID = 0
AVI: Searching for audio stream (id:1)
AVI video size=166210 (16) audio size=62270 (594)
VIDEO: [DIVX] 2000x1000 24bpp 1.000 fps 83.1 kbps (10.1 kbyte/s)
[V] filefmt:3 fourcc:0x58564944 size:2000x1000 fps: 1.00 ftime:=1.0000
Clip info:
Software: MEncoder dev-CVS-041231-18:33-3.4.2
get_path('sub/') -> '/root/.mplayer/sub/'
get_path('default.sub') -> '/root/.mplayer/default.sub'
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
dec_audio: Allocating 4608 + 65536 = 70144 bytes for output buffer.
mp3lib: made decode tables with MMX optimization
mp3lib: using 3DNow!Ex optimized decore!
MP3lib: init layer2&3 finished, tables done
MPEG 1.0, Layer III, 44100 Hz 56 kbit Single-Channel, BPF: 182
Channels: 1, copyright: No, original: Yes, CRC: No, emphasis: 0
AUDIO: 44100 Hz, 2 ch, 16 bit (0x9), ratio: 7000->176400 (56.0 kbit)
Selected audio codec: [mp3] afm:mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
No vidix driver name provided, probing available ones (-v option for details)!
X11 opening display: :0.0
vo: X11 color mask: FFFFFF (R:FF0000 G:FF00 B:FF)
vo: X11 running at 1152x864 with depth 24 and 32 bpp (":0.0" => local display)
[x11] Detected wm supports layers.
[x11] Using workaround for Metacity bugs.
[x11] Detected wm supports NetWM.
[x11] Detected wm supports ABOVE state.
[x11] Detected wm supports BELOW state.
[x11] Detected wm supports FULLSCREEN state.
[x11] Current fstype setting honours FULLSCREEN ABOVE BELOW X atoms
vidixlib: PROBING: /usr/local/lib/mplayer/vidix/cyberblade_vid.so
[cyberblade] Can't find chip
vidixlib: PROBING: /usr/local/lib/mplayer/vidix/mach64_vid.so
[mach64] Can't find chip
vidixlib: PROBING: /usr/local/lib/mplayer/vidix/mga_crtc2_vid.so
[mga] probe
[mga] found 12 pci devices
[mga] Can't find chip
vidixlib: PROBING: /usr/local/lib/mplayer/vidix/mga_vid.so
[mga] probe
[mga] found 12 pci devices
[mga] Can't find chip
vidixlib: PROBING: /usr/local/lib/mplayer/vidix/pm3_vid.so
[pm3] Can't find chip
vidixlib: PROBING: /usr/local/lib/mplayer/vidix/radeon_vid.so
[radeon] Can't find chip
vidixlib: PROBING: /usr/local/lib/mplayer/vidix/rage128_vid.so
[rage128] Can't find chip
vidixlib: PROBING: /usr/local/lib/mplayer/vidix/nvidia_vid.so
[nvidia_vid] Found chip: NV6 [Vanta]
vidixlib: /usr/local/lib/mplayer/vidix/nvidia_vid.so probed o'k
vidixlib: will use /usr/local/lib/mplayer/vidix/nvidia_vid.so driver
vidixlib: Attempt to initialize driver at: 0x44ad3690
[nvidia_vid] arch 4 register base 44b1e000
[nvidia_vid] detected memory size 16 MB
[nvidia_vid] MTRR set up
[nvidia_vid] video mode: 1152x864@32
vidixlib: '/usr/local/lib/mplayer/vidix/nvidia_vid.so'successfully loaded
VIDIX: Description: NVIDIA RIVA OVERLAY DRIVER
VIDIX: Author: Sascha Sommer <saschasommer@…>
Opening video filter: [pp=hb:a:c/vb:a:c/dr:a:c]
[vo] query(Planar YV12) -> 0
[vo] query(Planar I420) -> 0
[vo] query(Planar IYUV) -> 0
[vo] query(Planar 444P) -> 0
[vo] query(Planar 422P) -> 0
[vo] query(Planar 411P) -> 0
Opening video filter: [scale]
SwScale? params: -1 x -1 (-1=no scaling)
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
INFO: libavcodec init OK!
Selected video codec: [ffodivx] vfm:ffmpeg (FFmpeg MPEG-4)
==========================================================================
[PP] Using external postprocessing filter, max q = 6.
AutoQ: setting quality to 6.
Checking audio filter chain for 44100Hz/2ch/16bit -> 44100Hz/2ch/16bit...
[libaf] Adding filter dummy
[dummy] Was reinitialized, rate=44100Hz, nch = 2, format = 0x00000009 and bps = 2
AF_pre: af format: 2 bps, 2 ch, 44100 hz, little-endian 16-bit signed int
AF_pre: 44100Hz 2ch little-endian 16-bit signed int
alsa-init: requested format: 44100 Hz, 2 channels, 9
alsa-init: compiled for ALSA-0.9.6
alsa-init: setup for 1/2 channel(s)
alsa-init: got device=0, subdevice=0
alsa-init: 1 soundcard found, using: default
alsa-init: pcm opend in block-mode
alsa-init: chunksize set to 1024
alsa-init: fragcount=16
alsa-init: got buffersize=65536
alsa: 44100 Hz/2 channels/4 bpf/65536 bytes buffer/Signed 16 bit Little Endian
AO: [alsa] 44100Hz 2ch little-endian 16-bit signed int (2 bps)
AO: Description: ALSA-0.9.x-1.x audio output
AO: Author: Alex Beregszaszi, Zsolt Barat <joy@…>
AO: Comment: under developement
Building audio filter chain for 44100Hz/2ch/16bit -> 44100Hz/2ch/16bit...
[dummy] Was reinitialized, rate=44100Hz, nch = 2, format = 0x00000009 and bps = 2
[dummy] Was reinitialized, rate=44100Hz, nch = 2, format = 0x00000009 and bps = 2
Starting playback...
alsa-space: free space = 65536, prepared --
[ffmpeg] aspect_ratio: 2.000000
VDec: vo config request - 2000 x 1000 (preferred csp: Planar YV12)
[PP] Using external postprocessing filter, max q = 6.
Trying filter chain: pp scale vo
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 2.00:1 - prescaling to correct movie aspect.
VO Config (2000x1000->2000x1000,flags=5,'MPlayer',0x32315659)
REQ: flags=0x475 req=0x0
SwScaler?: reducing / aligning filtersize 1 -> 4
SwScaler?: reducing / aligning filtersize 1 -> 4
SwScaler?: reducing / aligning filtersize 1 -> 1
SwScaler?: reducing / aligning filtersize 5 -> 4

SwScaler?: BICUBIC scaler, from Planar YV12 to Packed YUY2 using MMX2
SwScaler?: using 4-tap MMX scaler for horizontal luminance scaling
SwScaler?: using 4-tap MMX scaler for horizontal chrominance scaling
SwScaler?: using n-tap MMX scaler for vertical scaling (BGR)
SwScaler?: 2000x1000 -> 2000x1000
REQ: flags=0x437 req=0x0
VO: [xvidix] 2000x1000 => 2000x1000 Packed YUY2 [fs] [zoom]
VO: Description: X11 (VIDIX)
VO: Author: Alex Beregszaszi
Using colorkey: ff00
[nvidia_vid] set colorkey 0xff00
[xvidix-fs] dcx: 0 dcy: 144 dx: 0 dy: 144 dw: 1152 dh: 576
called vixConfigPlayback
[nvidia_vid] setting up a 1152x576-0x144 video window (src 2000x1000), format
0x32595559
vosub_vidix: using 2 buffer(s)
[xvidix] window properties: pos: 0x144, size: 1152x576
* [pp] Allocating mp_image_t, 2000x1008x12bpp YUV planar, 3024000 bytes
* [scale] Allocating mp_image_t, 2000x1000x12bpp YUV planar, 3000000 bytes
* [vo] Allocating mp_image_t, 2000x1000x16bpp YUV packed, 4000000 bytes
[xvidix-fs] dcx: 0 dcy: 144 dx: 0 dy: 144 dw: 1152 dh: 576
[xvidix] window properties: pos: 0x0, size: 1152x576
XXX initial v_pts=0.000 a_pos=2574 (0.641) 1 ??% ??% ??,?% 0 6 0%
* [pp] Allocating mp_image_t, 2000x1008x12bpp YUV planar, 3024000 bytes
ds_fill_buffer: EOF reached (stream: video) 16 2% 7% 0.3% 0 6 0%
EOF code: 1 15.0 A-V: 0.008 ct: -0.012 16/ 16 2% 7% 0.3% 0 6 0%

Uninit audio filters...
[libaf] Removing filter dummy
uninit audio: mp3lib
uninit video: ffmpeg
alsa-uninit: pcm closed
vo: uninit ...

Exiting... (End of file)

Change History (3)

comment:1 Changed 14 years ago by saschasommer@…

  • Owner changed from alex@… to saschasommer@…

I just compared a few registers when downscaling with -vo directx on windows and
it seems like the overlay engine in the riva128 (should be the same as TNT/TNT2)
can't downscale. When the src image is bigger than the destination a smaller
image gets passed to the overlay engine. This image then gets scalled up.
Interesting enough shrinking the image in the X direction is not possible at
all. Maybe the driver simply does not copy a few lines when doing the
downscaling. It is also possible that the card can do downscaling the same way
as it does the yv12 to yuy2 conversion, but I have really no idea how this
works. The best is probably to shrink the image with -vf scale to be smaller
than the screen resolution. There is currently no way for MPlayer to do this
automatically.

comment:2 Changed 14 years ago by saschasommer@…

  • Status changed from new to assigned

comment:3 Changed 13 years ago by reimar

  • Resolution set to wontfix
  • Status changed from assigned to closed

Last comments sounds like this is a wontfix, thus closing. If you have any
information on the hardware how to do downscaling please reopen.

Note: See TracTickets for help on using tickets.