Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#7493 closed defect (wontfix)

VDPAU playback fails 30% of time

Reported by: superm1@… Owned by: markk
Priority: minor Milestone: unknown
Component: MythTV - Video Playback Version: 0.22rc1
Severity: medium Keywords:
Cc: Ticket locked: no

Description

I've been getting failures about 30% of the time. I finally captured one of them with -v playback:

2009-11-02 20:12:02.925 Opening audio device 'default'. ch 6(2) sr 48000 2009-11-02 20:12:02.925 Opening ALSA audio device 'default'. 2009-11-02 20:12:03.037 Opening audio device 'default'. ch 2(2) sr 48000 2009-11-02 20:12:03.037 Opening ALSA audio device 'default'. 2009-11-02 20:12:03.091 Dec: Trying to select track (w/lang) 2009-11-02 20:12:03.091 Dec: Selecting first track 2009-11-02 20:12:03.091 Dec: Selected track #1 in the Unknown language(0) 2009-11-02 20:12:03.091 Dec: Resyncing position map. posmapStarted = 0 livetv(0) watchingRec(0) 2009-11-02 20:12:03.117 Position map filled from DB to: 98391 2009-11-02 20:12:03.118 Dec: SyncPositionMap? prerecorded, from DB: 6755 entries 2009-11-02 20:12:03.118 Dec: SyncPositionMap?, new totframes: 98391, new length: 3282, posMap size: 6755 2009-11-02 20:12:03.118 AFD: Position map found 2009-11-02 20:12:03.118 AFD: Successfully opened decoder for file: "/var/lib/mythtv/recordings/5361_20091102190000.mpg". novideo(0) 2009-11-02 20:12:03.124 VideoOutput?: Allowed renderers: vdpau 2009-11-02 20:12:03.124 VideoOutput?: Allowed renderers (filt: vdpau): vdpau 2009-11-02 20:12:03.126 VDP: Accepting: cmp(>= 0 720) dec(vdpau) cpus(1) rend(vdpau) osd(vdpau) osdfade(enabled) deint(vdpaubasicdoublerate,vdpaubasic) filt(colorspace=0) 2009-11-02 20:12:03.126 VDP: Accepting: cmp(> 0 0) dec(ffmpeg) cpus(1) rend(xv-blit) osd(softblend) osdfade(enabled) deint(bobdeint,kerneldeint) filt(colorspace=0) 2009-11-02 20:12:03.126 VDP: LoadBestPreferences?(2048x2048, 0) 2009-11-02 20:12:03.126 VDP: LoadBestPreferences?(2048x2048, 60) 2009-11-02 20:12:03.126 VDP: LoadBestPreferences?(1920x1080, 60) 2009-11-02 20:12:03.126 VideoOutput?: Preferred renderer: vdpau 2009-11-02 20:12:03.126 VideoOutput?: Trying video renderer: 'vdpau' 2009-11-02 20:12:03.134 VDP: Accepting: cmp(>= 0 720) dec(vdpau) cpus(1) rend(vdpau) osd(vdpau) osdfade(enabled) deint(vdpaubasicdoublerate,vdpaubasic) filt(colorspace=0) 2009-11-02 20:12:03.134 VDP: Accepting: cmp(> 0 0) dec(ffmpeg) cpus(1) rend(xv-blit) osd(softblend) osdfade(enabled) deint(bobdeint,kerneldeint) filt(colorspace=0) 2009-11-02 20:12:03.134 VDP: LoadBestPreferences?(2048x2048, 0) 2009-11-02 20:12:03.134 VDP: LoadBestPreferences?(2048x2048, 60) 2009-11-02 20:12:03.137 VideoOutWindow::SetPIPState. pip_state: 0] 2009-11-02 20:12:03.137 Snapping width to avoid scaling: width: 1920, left: 0 2009-11-02 20:12:03.137 Display Rect left: 0, top: 135, width: 1920, height: 810, aspect: 1.33333 2009-11-02 20:12:03.137 Video Rect left: 0, top: 0, width: 1920, height: 1080, aspect: 1.77778 2009-11-02 20:12:03.137 VDP: LoadBestPreferences?(1920x1088, 60) 2009-11-02 20:12:03.137 Snapping width to avoid scaling: width: 1920, left: 0 2009-11-02 20:12:03.137 Display Rect left: 0, top: 135, width: 1920, height: 810, aspect: 1.33333 2009-11-02 20:12:03.137 Video Rect left: 0, top: 0, width: 1920, height: 1080, aspect: 1.77778 2009-11-02 20:12:03.137 VDP: SetVideoRenderer?(vdpau) 2009-11-02 20:12:03.137 VDP: SetVideoRender?(vdpau) == GetVideoRenderer?() 2009-11-02 20:12:03.138 VidOutVDPAU: VDPAU Colorkey: 0x20202 (depth 24) 2009-11-02 20:12:03.140 VideoOutput?: Pixel dimensions: Screen 1920x1080, window 1920x1080 2009-11-02 20:12:03.140 VideoOutput?: Actual display dimensions: 488x274 mm Aspect: 1.78102 2009-11-02 20:12:03.140 VideoOutput?: Estimated window dimensions: 488x274 mm Aspect: 1.78102 2009-11-02 20:12:03.234 VDPAU Error: Error at util-vdpau.cpp:612 (#23, The system does not have enough resources to complete the requested operation at this time.) 2009-11-02 20:12:03.235 VDPAU Error: Failed to create video surface. 2009-11-02 20:12:03.235 VDPAU: Failed to add buffer 14 of 17 2009-11-02 20:12:03.235 VidOutVDPAU Error: Unable to create VDPAU buffers 2009-11-02 20:12:03.235 VidOutVDPAU: DiscardFrames?(1) 2009-11-02 20:12:03.235 VideoBuffers::DiscardFrames?(1): AAAAAAAAAAAAAAAAA 2009-11-02 20:12:03.235 VideoBuffers::DiscardFrames?(): AAAAAAAAAAAAAAAAA -- done() 2009-11-02 20:12:03.235 VideoBuffers::DiscardFrames?(1): AAAAAAAAAAAAAAAAA -- done 2009-11-02 20:12:03.235 VidOutVDPAU: DiscardFrames?() 3: AAAAAAAAAAAAAAAAA -- done() 2009-11-02 20:12:03.236 VidOutVDPAU: DiscardFrames?(1) 2009-11-02 20:12:03.236 VideoBuffers::DiscardFrames?(1): 2009-11-02 20:12:03.236 VideoBuffers::DiscardFrames?(): ERROR, A not in available, pause, or displayed 2009-11-02 20:12:03.236 VideoBuffers::DiscardFrames?(): ERROR, B not in available, pause, or displayed A 2009-11-02 20:12:03.236 VideoBuffers::DiscardFrames?(): ERROR, C not in available, pause, or displayed AA 2009-11-02 20:12:03.236 VideoBuffers::DiscardFrames?(): ERROR, D not in available, pause, or displayed AAA 2009-11-02 20:12:03.236 VideoBuffers::DiscardFrames?(): ERROR, E not in available, pause, or displayed AAAA 2009-11-02 20:12:03.236 VideoBuffers::DiscardFrames?(): ERROR, F not in available, pause, or displayed AAAAA 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(): ERROR, G not in available, pause, or displayed AAAAAA 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(): ERROR, H not in available, pause, or displayed AAAAAAA 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(): ERROR, a not in available, pause, or displayed AAAAAAAA 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(): ERROR, b not in available, pause, or displayed AAAAAAAAA 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(): ERROR, c not in available, pause, or displayed AAAAAAAAAA 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(): ERROR, d not in available, pause, or displayed AAAAAAAAAAA 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(): ERROR, e not in available, pause, or displayed AAAAAAAAAAAA 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(): ERROR, f not in available, pause, or displayed AAAAAAAAAAAAA 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(): ERROR, g not in available, pause, or displayed AAAAAAAAAAAAAA 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(): ERROR, h not in available, pause, or displayed AAAAAAAAAAAAAAA 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(): ERROR, 0 not in available, pause, or displayed AAAAAAAAAAAAAAAA 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(): AAAAAAAAAAAAAAAAA -- done() 2009-11-02 20:12:03.237 VideoBuffers::DiscardFrames?(1): AAAAAAAAAAAAAAAAA -- done 2009-11-02 20:12:03.237 VidOutVDPAU: DiscardFrames?() 3: AAAAAAAAAAAAAAAAA -- done() 2009-11-02 20:12:03.244 VidOutVDPAU: DiscardFrames?(1) 2009-11-02 20:12:03.244 VideoBuffers::DiscardFrames?(1): 2009-11-02 20:12:03.244 VideoBuffers::DiscardFrames?(): ERROR, A not in available, pause, or displayed 2009-11-02 20:12:03.244 VideoBuffers::DiscardFrames?(): ERROR, B not in available, pause, or displayed A 2009-11-02 20:12:03.244 VideoBuffers::DiscardFrames?(): ERROR, C not in available, pause, or displayed AA 2009-11-02 20:12:03.244 VideoBuffers::DiscardFrames?(): ERROR, D not in available, pause, or displayed AAA 2009-11-02 20:12:03.244 VideoBuffers::DiscardFrames?(): ERROR, E not in available, pause, or displayed AAAA 2009-11-02 20:12:03.244 VideoBuffers::DiscardFrames?(): ERROR, F not in available, pause, or displayed AAAAA 2009-11-02 20:12:03.244 VideoBuffers::DiscardFrames?(): ERROR, G not in available, pause, or displayed AAAAAA 2009-11-02 20:12:03.245 VideoBuffers::DiscardFrames?(): ERROR, H not in available, pause, or displayed AAAAAAA 2009-11-02 20:12:03.245 VideoBuffers::DiscardFrames?(): ERROR, a not in available, pause, or displayed AAAAAAAA 2009-11-02 20:12:03.245 VideoBuffers::DiscardFrames?(): ERROR, b not in available, pause, or displayed AAAAAAAAA 2009-11-02 20:12:03.245 VideoBuffers::DiscardFrames?(): ERROR, c not in available, pause, or displayed AAAAAAAAAA 2009-11-02 20:12:03.245 VideoBuffers::DiscardFrames?(): ERROR, d not in available, pause, or displayed AAAAAAAAAAA 2009-11-02 20:12:03.245 VideoBuffers::DiscardFrames?(): ERROR, e not in available, pause, or displayed AAAAAAAAAAAA 2009-11-02 20:12:03.245 VideoBuffers::DiscardFrames?(): ERROR, f not in available, pause, or displayed AAAAAAAAAAAAA 2009-11-02 20:12:03.245 VideoBuffers::DiscardFrames?(): ERROR, g not in available, pause, or displayed AAAAAAAAAAAAAA 2009-11-02 20:12:03.245 VideoBuffers::DiscardFrames?(): ERROR, h not in available, pause, or displayed AAAAAAAAAAAAAAA 2009-11-02 20:12:03.245 VideoBuffers::DiscardFrames?(): ERROR, 0 not in available, pause, or displayed AAAAAAAAAAAAAAAA 2009-11-02 20:12:03.245 VideoBuffers::DiscardFrames?(): AAAAAAAAAAAAAAAAA -- done() 2009-11-02 20:12:03.245 VideoBuffers::DiscardFrames?(1): AAAAAAAAAAAAAAAAA -- done 2009-11-02 20:12:03.245 VidOutVDPAU: DiscardFrames?() 3: AAAAAAAAAAAAAAAAA -- done() 2009-11-02 20:12:03.256 VideoOutput?, Error: Not compiled with any useable video output method. 2009-11-02 20:12:03.256 NVP(3), Error: Couldn't create VideoOutput? instance. Exiting.. 2009-11-02 20:12:03.256 Unable to initialize video. 2009-11-02 20:12:23.226 playCtx, Error: StartDecoderThread?() Failed to startdecoder 2009-11-02 20:12:23.226 TV: StartPlayer?(0, Watching WatchingPreRecorded?, main) -- end error 2009-11-02 20:12:23.229 TV: HandleStateChange?(0) -- end 2009-11-02 20:12:23.229 TV: StartTV -- process events end 2009-11-02 20:12:23.229 TV: StartTV -- process events 2 begin 2009-11-02 20:12:23.230 ScreenSaverX11Private: DPMS Deactivated 1 2009-11-02 20:12:23.230 ScreenSaverX11Private: ResetTimer? -- begin 2009-11-02 20:12:23.230 ScreenSaverX11Private: StopTimer? 2009-11-02 20:12:23.230 ScreenSaverX11Private: StartTimer? 2009-11-02 20:12:23.230 ScreenSaverX11Private: ResetTimer? -- end 2009-11-02 20:12:23.231 TV: StartTV -- process events 2 end 2009-11-02 20:12:23.231 TV::~TV() -- begin 2009-11-02 20:12:23.284 TV::~TV() -- lock

This is with a 9500GT and NVIDIA 185.18.36, release-022-fixes 22594 on Ubuntu 9.10.

Attachments (2)

log (9.0 KB) - added by superm1@… 14 years ago.
mythfrontend -v playback output
frontend.out.gz (1.9 KB) - added by Deyan 14 years ago.
mythfrontend -v playback,important,general output

Download all attachments as: .zip

Change History (16)

Changed 14 years ago by superm1@…

Attachment: log added

mythfrontend -v playback output

comment:1 Changed 14 years ago by Deyan <mythtv@…>

I also get this on a T61 Laptop with Fedora 11 and a Quadro NVS 140M card (512 MB shared RAM allocated to the graphics card - the machine itself has 4GB and at least half of it is always free or used by the disk cache).

With the VDPAU backport of 0.21 playback was excellent but with .22 RC1 it fails with similar errors (I'll get a verbose log and attach it to the ticket as well).

comment:2 Changed 14 years ago by superm1@…

I should probably mention that my graphics card has 512 MB as well (http://www.newegg.com/Product/Product.aspx?Item=N82E16814127386R)

comment:3 Changed 14 years ago by jphelps@…

Same thing for me. It never happens the first time I playback after I have freshly opened the frontend. But on subsequent playbacks, it's hit or miss.

Changed 14 years ago by Deyan

Attachment: frontend.out.gz added

mythfrontend -v playback,important,general output

comment:4 Changed 14 years ago by markk

Owner: changed from Janne Grunau to markk
Status: newassigned

The logs show quite clearly that the driver believes it has insufficient video memory for all of the video buffers. I'm surprised, however, given these are 512Mb cards.

So:-

  • please try with the latest stable driver (190.42). There have been improvements in memory management, though I don't think they will help here.
  • can you confirm that this is still happening with 0.22/0.22-fixes. There was a fix for a sizeable video memory leak in the OpenGL painter but I can't honestly remember whether that went into the RC1.
  • check there are no other programs running that might be using video memory and hence competing with MythTV for those resources.
  • confirm which theme and UI painter you are using.
  • confirm whether the composite extension is enabled and in use (i.e. compiz etc)

To help alleviate the problem, try:-

  • reducing the video buffer size in the playback profile by adding vdpaubuffersize=XX to the filters entry. I don't expect this to help much however, given how early the failure is happening. Likewise ensure you disable all other vdpau options (deinterlacing, noise reduction etc) - for testing purposes at least.
  • change to a lightweight theme and use the qt painter (and disable composite if it is enabled).
  • close any/all other programs that may be using large amounts of video memory.
  • disable OpenGL vsync if you are using it.

thanks

Mark

comment:5 Changed 14 years ago by Deyan

I upgraded to the final 0.22 release and using vdpaubuffersize=6 everything plays fine although on 1080i programs I sometimes lose the OSD (this also used to happen with the 0.21 VDPAU backport and I don't think it's a big issue for my laptop FE). With 0.21 I could use the Advanced x1 deinterlacer even for HD programs and now I could only use Bob x2 but again for such a small screen and casual viewing it's perfectly OK.

comment:6 Changed 14 years ago by leemind

I suffered from this problem as well. First time it would play, but then subsequent attempts was very hit-or-miss. I'd loose the OSD 90% of the time. This is on an Acer Revo 3600 with the ION chipset.

However, seeing this thread and another on the net I managed to dig around in the BIOS and changed the allocated video memory from 128Mb (default) to 256Mb (Max allowed by the BIOS) and the difference has been huge. I only did this last night, but it didn't fail on me once, so an immediate improvement.

[PS. Great work guys.]

comment:7 Changed 14 years ago by superm1@…

Mark:

I'm iteratively trying each of the bullet points you recommended, so a final response will take a bit of time. Here's where i'm at so far:

  • I am using OpenGL painter with the Mythbuntu theme
  • I don't have compiz in use, but the composite extension is enabled
  • I've got 2 gigs of ram, and the only other large thing that should be competing for the ram is apache for mythweb.
  • I have updated to the latest -fixes, 22783 at this time. Still occurs.
  • I have updated to the 190.42 driver and I'll keep testing with it.

If the 190.42 driver doesn't help things, i'll try to continue your other suggestions. My understanding is that the Mythbuntu theme is considered pretty lightweight, so not sure I can do much better there.

comment:8 Changed 14 years ago by superm1@…

Okay looks like I was able to reproduce again on 190.42.

I also checked and OpenGL Vsync was already disabled. Carrying on through the bucket list.

comment:9 Changed 14 years ago by markk

Status: assignedaccepted

comment:10 Changed 14 years ago by Doug Goldstein <cardoe@…>

#7611 is probably a dup of this issue. I've got an ASRock ION 330 that experiences this exact same issue that is running Mythbuntu 9.10 with auto-builds of 0.22 fixes. I'm using the VDPAU Normal playback profile. Odd thing is my friend has the exact same machine with the exact same software, the only difference is that he's changed his playback profile to a custom one and it works every time for him.

I'll work through the list of items to try myself.

  • I'm using 185.18.36.
  • Using 0.22 fixes. I know it happened with the mythbuntu 0.22 deb based off of r22840.
  • Just using plain Mythbuntu that starts right into Mythfrontend and that's it.
  • Using Mythbuntu (widescreen) theme, using OpenGL painter.
  • Composite extension is explicitly disabled in xorg.conf
  • I've tried with and without OpenGL Vsync.
  • I've got 2GB of RAM with 256mb allocated to the video chipset.
  • I never leave Myth at the Watch Recordings screen, I always exit out to the main menu.

The problem only occurs when the frontend is left idle or running for a while. For example, I use it at night after work and everything I try to playback works just fine. It won't be used during dinner and then after dinner it still works. But then the next day if I come home during lunch and try it, it doesn't work. That's roughly 12 hours after I stopped watching TV the night before.

I would suspect its a memory leak overtime or the CPU stepping down its clock and then not able to provide data fast enough.

comment:11 Changed 14 years ago by Doug Goldstein <cardoe@…>

Well the issue happened again this morning after being idle all night. I reset it this morning and I've just come back to the machine and it happened again.

2009-11-21 12:05:52.853 TV: Attempting to change from Watching WatchingPreRecorded to None
2009-11-21 12:05:52.893 TV: Changing from Watching WatchingPreRecorded to None
2009-11-21 12:05:52.902 ScreenSaverX11Private: DPMS Reactivated 1
2009-11-21 12:05:53.330 MythContext: Connecting to backend server: 192.168.2.46:6543 (try 1 of 1)
2009-11-21 12:05:53.332 Using protocol version 50
2009-11-21 12:05:59.082 Loading menu theme from /usr/share/mythtv/themes/defaultmenu//library.xml
2009-11-21 16:30:29.495 Loading menu theme from /usr/share/mythtv/themes/defaultmenu//library.xml
2009-11-21 16:30:30.835 New DB connection, total: 1
2009-11-21 16:30:30.837 Connected to database 'mythconverg' at host: meyer
2009-11-21 16:30:30.855 New DB connection, total: 2
2009-11-21 16:30:30.857 Connected to database 'mythconverg' at host: meyer
2009-11-21 16:30:30.860 Loading window theme from /usr/share/mythtv/themes/Mythbuntu/recordings-ui.xml
2009-11-21 16:30:31.769 MythContext: Connecting to backend server: 192.168.2.46:6543 (try 1 of 1)
2009-11-21 16:30:31.782 Using protocol version 50
2009-11-21 16:30:32.211 MythContext: Connecting to backend server: 192.168.2.46:6543 (try 1 of 1)
2009-11-21 16:30:32.220 Using protocol version 50
2009-11-21 16:30:43.064 TV: Attempting to change from None to Watching WatchingPreRecorded
2009-11-21 16:30:43.190 TV: StartPlayer(0, Watching WatchingPreRecorded, main) -- begin
2009-11-21 16:30:45.999 AFD: Opened codec 0x9da85170, id(MPEG2VIDEO) type(Video)
2009-11-21 16:30:46.000 AFD: codec MP2 has 2 channels
2009-11-21 16:30:46.000 AFD: Opened codec 0xa36e37b0, id(MP2) type(Audio)
2009-11-21 16:30:46.005 Opening audio device 'hdmi'. ch 2(2) sr 48000
2009-11-21 16:30:46.005 Opening ALSA audio device 'hdmi'.
2009-11-21 16:30:46.063 Mixer unable to find control Master
2009-11-21 16:30:46.063 Mixer unable to find control Master
2009-11-21 16:30:46.065 Mixer unable to find control PCM
2009-11-21 16:30:46.065 Mixer unable to find control PCM
2009-11-21 16:30:46.065 Mixer unable to find control Master
2009-11-21 16:30:46.065 Mixer unable to find control Master
2009-11-21 16:30:46.065 Mixer unable to find control Master
2009-11-21 16:30:46.467 VidOutVDPAU Error: Failed to initialise VDPAU

As you can see from that log snippet, 4 hours and 25 minutes of being idle is long enough to cause the issue to happen.

comment:12 Changed 14 years ago by markk

(In [22890]) Add an explicit warning around video memory shortages when using VDPAU in release-0-22-fixes as well as advice on how to rectify the problem. Refs #7493 and #7570.

I'm not applying to trunk as this whole section of code will change for 0.23.

comment:13 Changed 14 years ago by markk

Resolution: wontfix
Status: acceptedclosed

I'm closing this as I can't see what else can be done for the 0-22-fixes branch. Going forward there may be an opportunity to flush the OpenGL painter cache, and hence free up some video memory prior to displaying video, but that is an invasive option that will not be backported.

comment:14 Changed 14 years ago by Doug Goldstein <cardoe@…>

markk,

What can be done would be to detect the error and exit back to the Watch Recording screen with an "out of memory" message on the screen instead of the current behavior which is to completely deadlock the frontend requiring a kill from a terminal window.

Note: See TracTickets for help on using tickets.