Opened 14 years ago
Closed 11 years ago
#2287 closed task (fixed)
mythtv-vid: X11 Video output fixes branch
Reported by: | danielk | Owned by: | danielk |
---|---|---|---|
Priority: | minor | Milestone: | unknown |
Component: | mythtv | Version: | head |
Severity: | medium | Keywords: | |
Cc: | Ticket locked: | no |
Description (last modified by )
The point of the mythtv-vid branch is to fix some of the long standing deficiencies in the video output classes, for X11 in particular:
Filters
- Add OpenGL Lanczos filter
- Make setting up filters easier with a GUI
- Allow changing the filter set during playback, esp for deinterlacing.
- [DONE] Add support for OpenGL filtering for scaling and YV12->RGB conversion for display
- [DONE] Allow different filter sets for different video and display resolutions.
- [WONTFIX, see #1778] Auto-detect pull-up and apply ivtc filtering
Video output methods
- Implement per-frame video resolution switching
- Support XvMC for MPEG-2 NUV files (and enable transcode to MPEG-2)
- Key xrandr switching to video framerate
- [WONTFIX, VDPAU much more promising] Finish support for XvMC copy to pbuffer + opengl render
OSD rendering
- Fix video frame OSD blending for bob-deint (Filter vert freq in pause + when there is video<->screen framerate mismatch)
- Implement RGB OSD surfaces
- Implement X Composited OSD surfaces
- [DONE] Implement OpenGL OSD surfaces
- [DONE] Key preferred OSD and OSD fade to resolution and video output method.
Attachments (5)
Change History (302)
comment:2 Changed 14 years ago by
comment:3 Changed 14 years ago by
comment:4 follow-up: 10 Changed 14 years ago by
(In [11497]) Refs #2287. Merges -r11430:11496 in svn head to mythtv-vid.
comment:5 Changed 14 years ago by
comment:6 Changed 14 years ago by
comment:7 Changed 14 years ago by
comment:8 Changed 14 years ago by
comment:9 Changed 14 years ago by
(In [11509]) Refs #2123, refs #2287. Allows adding and deleting display profile groups in the Playback Profiles Editor in mythtv-vid.
There are still bugs in this code, please don't open new tickets on them until #2123 is closed; mostly the bugs have to do with screens not repainting appropriately or initial values being screewy, so they can be worked around.
comment:10 Changed 14 years ago by
(In [11608]) Refs #2287. Merges -r11496:11607 in svn head to mythtv-vid.
comment:11 Changed 14 years ago by
comment:12 Changed 14 years ago by
comment:13 Changed 14 years ago by
(In [11806]) Refs #2287. Merges -r11607:11700 in svn head to mythtv-vid
comment:14 Changed 14 years ago by
(In [11807]) Refs #2287. Merges -r11700:11806 in svn head to mythtv-vid.
This breaks some of the UI, this will be addressed in a separate changeset.
comment:15 Changed 14 years ago by
comment:16 Changed 14 years ago by
(In [11811]) Refs #2287. Fixes various problems with the recent merge from head to svn head.
The ConfigurationDialog? needed a Storage implementation, so that it's children could override load() and save(). Also various configuration dialogs were crowded due to the changes in the settings from the last merge. Finally the triggered configuration group had some problems with deleting panes after the merge.
There remain problems with the PlaybackProfileConfig? loading and saving, especially with respect to new configs.
comment:17 Changed 14 years ago by
(In [12221]) Refs #2287. Merges -r11806:12220 in svn head to mythtv-vid.
comment:18 Changed 14 years ago by
(In [12257]) Refs #2287. Merges -r12220:12256 from svn head to mythtv-vid.
comment:19 Changed 14 years ago by
comment:20 Changed 14 years ago by
(In [12676]) Refs #2287. Merges -r12256:12675 from svn head to mythtv-vid.
comment:21 Changed 14 years ago by
(In [12688]) Refs #2287. Adds OSD fade configurable in the video profiles.
Instead of hard coding the disabling of the OSD fade for XvMC and HDTV this changeset makes this a controlable properlty of the video display profile, so you can enable fading when you have a fast GPU or CPU.
If you were already using the mythtv-vid branch, I recommend dropping the displayprofilegroups and displayprofiles tables. Otherwise this property will not be configurable.
comment:22 Changed 14 years ago by
(In [12693]) Refs #2287. Refs #2649. Adds Mark Kendall's OpenGL video rendering to mythtv-vid tree.
I've made this default to being included in ./configure. You just need to select opengl as a video renderer for one of your display profiles to use this. Here it looks pretty rotten with SD material, but looks quite good with HD material.
comment:23 Changed 14 years ago by
comment:24 Changed 14 years ago by
comment:25 Changed 14 years ago by
comment:26 Changed 14 years ago by
comment:27 Changed 14 years ago by
Type: | task → defect |
---|
Changing channels to new tuner ignores channel and defaults to stored cardinput.startchan instead with no indication of selected channel in log nor any lines stating it being bad. Tuning from there to desired channel works. I changed from channel 244 to 122 and mythbackend selected the stored channel 9429:
2007-02-05 18:10:23.615 MainServer::HandleAnnounce? Playback 2007-02-05 18:10:23.617 adding: pc4 as a client (events: 0) 2007-02-05 18:10:23.635 TVRec(5): Changing from None to WatchingLiveTV 2007-02-05 18:10:23.641 TVRec(5): HW Tuner: 5->5 2007-02-05 18:10:23.646 DVBChan(2): Opening DVB channel 2007-02-05 18:10:23.648 DVBChan(2): SetChannelByString?(9429): 2007-02-05 18:10:23.653 ChannelBase?(5): Failed to find channel(9429) on current input (DiSEqC v1.3 Input 11) of card (5). 2007-02-05 18:10:23.657 ChannelBase?(5): Found channel(9429) on another input (DiSEqC v1.3 Input 5) of card (5).
comment:28 Changed 14 years ago by
Type: | defect → task |
---|
comment:29 Changed 14 years ago by
comment:30 Changed 14 years ago by
comment:31 Changed 14 years ago by
comment:32 Changed 14 years ago by
Hi, It looks like 12737 isn't happy when ivtv drivers aren't installed:
NuppelVideoPlayer.cpp: In member function `void NuppelVideoPlayer::SetDecoder(DecoderBase*)': NuppelVideoPlayer.cpp:6538: error: `IvtvDecoder' was not declared in this scope NuppelVideoPlayer.cpp:6538: error: `ivtv' was not declared in this scope NuppelVideoPlayer.cpp:6538: error: `IvtvDecoder' is not a type NuppelVideoPlayer.cpp:6538: error: expected `>' before '*' token NuppelVideoPlayer.cpp:6538: error: expected `(' before '*' token NuppelVideoPlayer.cpp:6538: error: expected primary-expression before '>' token NuppelVideoPlayer.cpp:6538: error: expected `)' before ';' token NuppelVideoPlayer.cpp:6538: warning: unused variable 'IvtvDecoder' make[2]: *** [NuppelVideoPlayer.o] Error 1 make[2]: Leaving directory `/home/mythtv/src/testing-mythvid/mythtv-vid/libs/libmythtv' make[1]: *** [sub-libmythtv] Error 2 make[1]: Leaving directory `/home/mythtv/src/testing-mythvid/mythtv-vid/libs' make: *** [sub-libs] Error 2
I'm using --disable-ivtv. Thanks!
-John
comment:33 Changed 14 years ago by
comment:34 Changed 14 years ago by
comment:35 Changed 14 years ago by
(In [12753]) Refs #2287. Fixes opengl->other video renderer swiching in VideoOutputXv::InputChanged?().
comment:36 Changed 14 years ago by
(In [12758]) Refs #2287. Reworks some ifdef's and silences a couple compile time warnings. This allows all the various video output methods that work on Linux to be enabled/disabled invidually (unless one depends on another, XVideo support is needed for any output method in VideoOutputXv?).
comment:37 Changed 14 years ago by
comment:38 Changed 14 years ago by
comment:39 Changed 14 years ago by
(In [12949]) Refs #2287. Merges r12675:12948 from svn head to mythtv-vid.
comment:40 Changed 14 years ago by
(In [13287]) Refs #2287. Fixes #3044. Fixes #2649. OpenGL video renderer improvements and fixes.
This improves the speed of the YUV->RGB conversion by accessing the texels with greater coherency. This fixes removes a doubled call to the resize filter. This avoids a segfault by leaking some memory (temporary fix).
comment:41 Changed 14 years ago by
(In [13433]) Refs #2287. Merges r12948:13432 from svn head to mythtv-vid.
comment:42 Changed 14 years ago by
(In [13545]) Refs #2287. Merges r13433:13544 from svn head to mythtv-vid
comment:43 Changed 14 years ago by
comment:44 Changed 14 years ago by
(In [13549]) Refs #2287. Fixes bug in XvMC-OpenGL pause handling.
The XvMC-OpenGL video renderer stopped updatating the OSD once the video was paused because PrepareFrame? was doing the compositing step. This changeset moves the compositing step to the Show() method so that the OSD is still updated when the video is paused when using the XvMC-OpenGL video renderer.
comment:45 Changed 14 years ago by
comment:46 Changed 14 years ago by
comment:47 Changed 14 years ago by
comment:48 follow-up: 123 Changed 14 years ago by
(In [13769]) Refs #2287. Workaround for an apparent nvidia bug that caused blank screens after video rendering method changes.
The problem was noticed by Stanley Kamithi and worked around by Mark Kendal. The video playback window would be blank when switching from OpenGL to XvMC rendering with 8776 and crash when using the 9755 drivers, This may have something to do with the change to using the 3D pipeline to emulate XVideo in the newer drivers. The workaround was simply to unmap and map the subwindow with the OpenGL context instead of deleting and recreating it as we switch between rendering methods. The window and context are still properly deleted when we delete VideoOutputXv? at playback shutdown.
comment:49 Changed 14 years ago by
(In [13770]) Refs #2287. Merges r13544:13769 from svn trunk to mythtv-vid.
comment:50 Changed 14 years ago by
comment:51 Changed 14 years ago by
As requested by danielk, when enabling the hardware deinterlacing I see errors in the log like this:
2007-06-28 23:45:15.560 VDP: GetFilteredDeint?() : -> 'opengllinearblend' 2007-06-28 23:45:15.564 FilterManager?: failed to load filter 'opengllinearblend', no such filter exists 2007-06-28 23:45:15.564 Couldn't load deinterlace filter opengllinearblend 2007-06-28 23:45:15.564 Using deinterlace method 2007-06-28 23:45:15.564 SetVideoRenderer?(opengl)
This might be expected, because it's doing the deinterlacing in the hardware rather than the software filter ... but it's a bit misleading and will probably cause some confusion.
comment:52 Changed 14 years ago by
(In [14057]) Refs #2287. Some tweaks to videodisplayprofile. This removes the 'last_video_renderer' check in SetVideoRenderer?(), if LoadBestPreferences?() has been called since SetVideoRenderer?() was last called the preferences for the deinterlacers, osd renderers, etc may no longer be compatable with the video renderer, so we need to recheck this.
This also adds some debugging output and names the quartz-accel OSD renderer.
comment:53 Changed 14 years ago by
comment:54 Changed 14 years ago by
comment:55 Changed 14 years ago by
(In [14060]) Refs #2287. Fixes a regression in the ability to enable deinterlacing.
Basically the SetScanType?() just ignored any attempts to enable deinterlacing because we removed the m_DeintSetting from NuppelVidepPlayer? and didn't replace it with anything now that the video renders track the deinterlacing settings.
Changed 14 years ago by
Attachment: | osx-video-v4.patch.bz2 added |
---|
Patch to add OSX DVDV decoding (not functionning).
comment:56 Changed 14 years ago by
comment:57 Changed 14 years ago by
(In [14063]) Refs #2287. #1279. This applies an updated version of DVDV code to libavcodec.
John Dagliesh wrote the original DVDV code and Nigel did the original merge, see #1279, this just updates the merge to work with the latest changes in how ffmpeg handles codecs and commits the mpeg12.c and dvdv.c portions of the patch.
you need to rerun ./configure before recompiling (to pick up the new codec define.)
comment:58 Changed 14 years ago by
comment:59 Changed 14 years ago by
comment:60 Changed 14 years ago by
(In [14068]) Refs #2287. This makes 3 changes to the VideoOutput::InputChanged?() and a complimentary change to VideoOutput::Create().
The main change is to add a new param "codec_private". The OS X DVDV playback renderer needs access to the DVDV decoder which is created in AvFormatDecoder?. This allows this data to be passed to VideoOutputQuartz? in a generic way which we could reuse in the future without changing the InputChanged?() signature again.
The two smaller changes were things I've wanted in the API for a while, but were too trivial to make the API change for alone. The changes are to: (1) return a ok/failed status from InputChanged?(). Changing the resolution of a video can fail if the resolution exceeds what the hardware is capable of, as in #3680. In [14009], I was able to check the error status after calling InputChanged?() to avoid the segfault. But actually returning this information is much nicer API wise. (2) The other is to use a QSize for the dimensions of the video, this avoids us needing to convert from QSize to ints and back to QSize when calling InputChanged?().
Finally, VideoOutput::Create() just had the "codec_private" paramater added so that we can pass the initial information in when creating a VideoOutput? instance. This wasn't added to VideoOutput::Init() since we can just pass the codec_private into the constructors that need it and keep the changeset much smaller.
comment:61 Changed 14 years ago by
(In [14069]) Refs #2287. Restores ApproveDeintFilter?() check in VideoOutput::SetupDeinterlace?().
ApproveDeintFilter?() got in the way of testing the display profile code, but is still needed when no matching profile is found for a particular video.
comment:62 Changed 14 years ago by
(In [14070]) Refs #2287. Refs #3523. Various minor fixes to VideoOutputQuartz?.
- Changes QuartzData? from a struct to a class, so we can properly initialize all it's variables without an init function.
- Sets data pointer to NULL after deleting the class for easier debugging.
- Calls SetVideoRender?() in the ctor and CreateQuartzBuffers?(), the latter is needed in case there is no quartz video profile, otherwise the VideoOutputBase::Init() call may reset the renderer.
- Sets display_dim and display_aspect properly. This is a prerequisite to addressing #3523,
- Removes incorrect code in VideoOutputQuartz::GetAllowedRenderers?() for enabling DVDV rendering.
- Tidys up some VERBOSE macros.
comment:63 Changed 13 years ago by
I noticed that Vertical Scaling doesn't appear to be honored by the opengl renderer. I haven't had a chance to test the other overscan options to see if they work or not.
comment:64 Changed 13 years ago by
comment:65 Changed 13 years ago by
comment:66 Changed 13 years ago by
comment:67 Changed 13 years ago by
(In [14098]) Refs #2287. Creates and destroyes the memory allocator needed by Cocoa.
The OS X Cocoa libraries assume that you have a garbage collector allocated and will leak memory if you don't. However it needs a specific garbage collector for each thread which creates some complications. This creates and destroyes the garbage collector needed to handle DVDV stuff.
We really should allocate a garbage collector for each thread in MythTV on the OS X platform, but this addresses the only major memory leak this Cocoa requirement appears to cause. And addresses all the additional memory leaks DVDV could have added to the mix.
comment:68 Changed 13 years ago by
comment:69 Changed 13 years ago by
comment:70 Changed 13 years ago by
comment:71 Changed 13 years ago by
(In [14255]) Refs #2287. Sets the myth binary revision and protocol revisions to numbers that don't conflict with trunk.
This requires plugins to be rebuilt. Basically some of the reports in the mythtv-vid testing threads were caused by not recompiling plugins for mythtv-vid or using a mythtv-vid frontend with a non-mythtv-vid backend this should prevent this type of problem for testers.
comment:72 Changed 13 years ago by
comment:73 Changed 13 years ago by
comment:74 Changed 13 years ago by
(In [14286]) Refs #2287. Merges r14097:14285 from svn head to mythtv-vid.
comment:75 Changed 13 years ago by
comment:76 Changed 13 years ago by
comment:77 Changed 13 years ago by
(In [14403]) Refs #2287. Merges r14285:14401 from svn trunk to mythtv-vid.
comment:78 follow-up: 80 Changed 13 years ago by
(In [14405]) Refs #2287. Merges mythtv-vid to head.
You must rerun ./configure before comiling and recompile and install the plugins after installing this.
Unlike the mythtv-vid branch, compiling OpenGL rendering is disabled due to some instability issues.
There are a few video related things in here:
- Adds Video Profiles and a Video Profiles Editor to Playback config. This allows you to use different rendering methods and deinterlacer options for different video resolutions.
- Adds an accelerated playback "DVDV" for OS X
- This enables compiling XvMC chromakey rendering by default
- This enables compiling DirectFB rendering by default, and adds support for the newish DirectFB 1.0
- This enables compiling PVR-350 rendering by default
- This splits OSD configuration out from the general Playback config. (A separate commit will add this to the external themes.)
Please report any problems on the #2287 mythtv-vid ticket.
comment:79 Changed 13 years ago by
(In [14408]) Refs #2287. Merges r14401:14407 from svn trunk to mythtv-vid.
comment:80 Changed 13 years ago by
Replying to danielk:
You must rerun ./configure before comiling and recompile and install the plugins after installing this.
Having problems compiling trunk after merge. Same problem occurs with my two machines (Athlon & PIV Celeron). I have done "make distclean" and re-run configure. Also compiled trunk just minutes before merge and that version compiled fine.
g++ -c -pipe -march=i686 -Wall -W -fomit-frame-pointer -O3 -Wall -Wno-switch -Wpointer-arith -Wredundant-decls -Wno-non-virtual-dtor -D__STDC_CONSTANT_MACROS -fomit-frame-pointer -I/usr/include/freetype2 -D_REENTRANT -DPIC -fPIC -DMMX -Di386 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr/local\" -DLIBDIR=\"/usr/local/lib\" -D_LARGEFILE_SOURCE -DUSING_H264TOOLS -DUSING_X11 -DUSING_XV -DUSING_XVMC -DUSING_XVMCW -DUSING_OPENGL_VSYNC -DUSING_FRONTEND -DUSING_DVB -DUSING_BACKEND -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -I/usr/lib/qt-3.3/mkspecs/default -I. -I/usr/local/include -I/usr/include -I../.. -I.. -I../libmyth -I../libavcodec -I../libavutil -I../libmythmpeg2 -Idvbdev -Impeg -Iiptv -I../libmythlivemedia/BasicUsageEnvironment/include -I../libmythlivemedia/groupsock/include -I../libmythlivemedia/liveMedia/include -I../libmythlivemedia/UsageEnvironment/include -I/usr/lib/qt-3.3/include -o NuppelVideoPlayer.o NuppelVideoPlayer.cpp g++ -c -pipe -march=i686 -Wall -W -fomit-frame-pointer -O3 -Wall -Wno-switch -Wpointer-arith -Wredundant-decls -Wno-non-virtual-dtor -D__STDC_CONSTANT_MACROS -fomit-frame-pointer -I/usr/include/freetype2 -D_REENTRANT -DPIC -fPIC -DMMX -Di386 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr/local\" -DLIBDIR=\"/usr/local/lib\" -D_LARGEFILE_SOURCE -DUSING_H264TOOLS -DUSING_X11 -DUSING_XV -DUSING_XVMC -DUSING_XVMCW -DUSING_OPENGL_VSYNC -DUSING_FRONTEND -DUSING_DVB -DUSING_BACKEND -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -I/usr/lib/qt-3.3/mkspecs/default -I. -I/usr/local/include -I/usr/include -I../.. -I.. -I../libmyth -I../libavcodec -I../libavutil -I../libmythmpeg2 -Idvbdev -Impeg -Iiptv -I../libmythlivemedia/BasicUsageEnvironment/include -I../libmythlivemedia/groupsock/include -I../libmythlivemedia/liveMedia/include -I../libmythlivemedia/UsageEnvironment/include -I/usr/lib/qt-3.3/include -o vsync.o vsync.cpp vsync.cpp: In destructor ‘virtual OpenGLVideoSync::~OpenGLVideoSync()’: vsync.cpp:456: error: ‘glXDestroyContext’ was not declared in this scope vsync.cpp: In member function ‘virtual bool OpenGLVideoSync::TryInit()’: vsync.cpp:489: error: ‘init_opengl’ was not declared in this scope vsync.cpp:489: error: ‘get_glx_version’ was not declared in this scope vsync.cpp:497: error: ‘glXQueryExtensionsString’ was not declared in this scope vsync.cpp:499: error: ‘has_glx_video_sync_support’ was not declared in this scope vsync.cpp:505: error: ‘GLX_RGBA’ was not declared in this scope vsync.cpp:506: error: ‘GLX_RED_SIZE’ was not declared in this scope vsync.cpp:507: error: ‘GLX_GREEN_SIZE’ was not declared in this scope vsync.cpp:508: error: ‘GLX_BLUE_SIZE’ was not declared in this scope vsync.cpp:514: error: ‘glXChooseVisual’ was not declared in this scope vsync.cpp:544: error: ‘GL_TRUE’ was not declared in this scope vsync.cpp:544: error: ‘glXCreateContext’ was not declared in this scope vsync.cpp:552: error: ‘glXMakeCurrent’ was not declared in this scope vsync.cpp:556: error: ‘gMythGLXGetVideoSyncSGI’ was not declared in this scope vsync.cpp:562: error: ‘GLX_BAD_CONTEXT’ was not declared in this scope vsync.cpp: In function ‘bool checkGLSyncError(const QString&, int)’: vsync.cpp:595: error: ‘GLX_BAD_CONTEXT’ was not declared in this scope vsync.cpp:598: error: ‘GLX_BAD_VALUE’ was not declared in this scope vsync.cpp: In member function ‘virtual void OpenGLVideoSync::Start()’: vsync.cpp:627: error: ‘glXMakeCurrent’ was not declared in this scope vsync.cpp:637: error: ‘gMythGLXGetVideoSyncSGI’ was not declared in this scope vsync.cpp:639: error: ‘gMythGLXWaitVideoSyncSGI’ was not declared in this scope vsync.cpp:642: error: ‘glXMakeCurrent’ was not declared in this scope vsync.cpp: In member function ‘virtual void OpenGLVideoSync::WaitForFrame(int)’: vsync.cpp:661: error: ‘glXMakeCurrent’ was not declared in this scope vsync.cpp:664: error: ‘gMythGLXGetVideoSyncSGI’ was not declared in this scope vsync.cpp:670: error: ‘gMythGLXWaitVideoSyncSGI’ was not declared in this scope vsync.cpp:679: error: ‘gMythGLXWaitVideoSyncSGI’ was not declared in this scope vsync.cpp:684: error: ‘glXMakeCurrent’ was not declared in this scope make[2]: *** [vsync.o] Error 1 make[2]: Leaving directory `/mnt/myth/mythtv/mythtv/libs/libmythtv' make[1]: *** [sub-libmythtv] Error 2 make[1]: Leaving directory `/mnt/myth/mythtv/mythtv/libs' make: *** [sub-libs] Error 2
comment:81 Changed 13 years ago by
comment:82 Changed 13 years ago by
comment:83 Changed 13 years ago by
comment:84 Changed 13 years ago by
comment:85 Changed 13 years ago by
comment:86 Changed 13 years ago by
Hi.
- There's a typo in ./configure --help output:
--enable-opengl-video disable opengl based video display
should probably read "enable opengl based video display".
- When editing the video display profile, I can select osd renderers/decoders which were not actually compiled in. Of course, it falls back to sane defaults and lets me watch TV, but it might be better not to display choices which were not compiled in. Just a thought.
Michael
comment:87 Changed 13 years ago by
Milestone: | unknown → 0.21 |
---|---|
Status: | new → assigned |
comment:88 Changed 13 years ago by
Hi,
I'm using an interlaced PAL modeline to drive my TV:
Modeline "720x576pali" 13.88 720 726 794 880 576 580 583 625 -hsync -vsync interlace
My video/osd render method is opengl. When i'm trying to use the normal (software) bodeint, i get the following messages:
2007-09-07 15:44:48.131 VDP: GetFilteredDeint() : opengl -> 'bobdeint' 2007-09-07 15:44:48.132 VDP: GetFilteredDeint() : opengl -> 'bobdeint' 2007-09-07 15:44:48.133 Failed to approve 'bobdeint' deinterlacer 2007-09-07 15:44:48.134 Couldn't load deinterlace filter
However, the hardware bobdeint works:
2007-09-07 15:42:36.081 VDP: GetFilteredDeint() : opengl -> 'openglbobdeint' 2007-09-07 15:42:36.081 GLVid: Creating openglbobdeint filter. 2007-09-07 15:42:36.082 GLVid: Created fragment program openglbobdeint. 2007-09-07 15:42:36.091 GLCtx: Created frame buffer object (720x576). 2007-09-07 15:42:36.092 GLVid: Turning off deinterlacing. 2007-09-07 15:42:36.092 VideoOutputXv: Using deinterlace method openglbobdeint 2007-09-07 15:42:36.092 GLVid: Turning on deinterlacing.
Prior to the mythtv-vid merge, bobdeint would never work for me because my refresh rate was too low. I had to use the patch from #2903 to enable bobdeint (without a deinterlacer, I would get interlace artefacts/stuttering despite my video resolution matching my display resolution - same happens to a lot of other people, too). Now I'm kinda confused by this discrepancy - is it intentional that openglbobdeint works while bobdeint does not?
I should note that I'm using a Twinview setup. CRT-0 is a 19" CRT monitor running at 1280x102, CRT-1 is my TV running said modeline.
comment:89 Changed 13 years ago by
comment:90 Changed 13 years ago by
(In [14451]) Refs #2287. Merges r14407:14450 from svn trunk to mythtv-vid.
comment:91 Changed 13 years ago by
comment:92 Changed 13 years ago by
(In [14453]) Refs #2287. Two bug fixes from Stanley Kamithi for software filtering config.
1st/ we called VideoDisplayProfile::IsFilterAllowed?() with the filter value rather than the correct renderer. 2nd/ The editable ComboBox? is a little buggy so we're returning to a LineEdit? for now.
comment:93 Changed 13 years ago by
comment:94 Changed 13 years ago by
comment:95 Changed 13 years ago by
comment:96 Changed 13 years ago by
comment:97 Changed 13 years ago by
comment:98 Changed 13 years ago by
comment:99 Changed 13 years ago by
(In [14477]) Refs #2287. Fixes #1842. Fixes #3943. Fixes #3479. Merges mythtv-vid to svn trunk.
After the merge last week, I applied some patches that were waiting in the queue for mythtv-vid.
- Fixes some issues with VIA CN400 drivers not displaying 1080i frames.
- Adds a workaround to for crashes due to bugs in the Intel and VIA OpenGL drivers.
- Allows OpenGL rendering to work with GLX 1.2 for ATI and Intel cards.
- Seperates preconfigured zoom and aspect ratio override modes, "W" is still the binding for zoom, and "Ctrl-W" now overrides the aspect ratio specified in a video file.
- Adds a new OpenGL video renderer output filter from Mark Kendall.
- Reworks some of the OpenGL video renderer locking for greater stability.
comment:100 Changed 13 years ago by
Milestone: | 0.21 → unknown |
---|
comment:101 Changed 13 years ago by
comment:102 Changed 13 years ago by
comment:103 Changed 13 years ago by
comment:104 Changed 13 years ago by
(In [14568]) Refs #2287. merges r14452:14567 from svn head to mythtv-vid.
comment:105 Changed 13 years ago by
comment:106 Changed 13 years ago by
comment:107 Changed 13 years ago by
comment:108 Changed 13 years ago by
comment:109 Changed 13 years ago by
(In [14590]) Refs #2287. Fix for OpenGL Renderer picture controls, these weren't working for pre-recorded material because the OpenGL filter relied on use_picture_controls to be set before InitVideoBuffers? is called; but they aren't set until after InitVideoBuffers?(); with this change it is set based on the DB setting alone before InitVideoBuffers?().
comment:110 Changed 13 years ago by
comment:111 Changed 13 years ago by
(In [14599]) Refs #2287. Return a different mpeg version for CODEC_ID_H264 than CODEC_ID_MPEG4.
In ffmpeg, MPEG4 refers to MPEG-4 Part 2 video, while H264 refers to MPEG-4 Part 10 video, and completely different video decoder is used for these two types of MPEG-4 video streams so we need to keep track of this for ffmpeg's sake, using the pseudo MPEG version 5 for MPEG-4 part 10 allows us to do this.
comment:112 Changed 13 years ago by
(In [14618]) Refs #2287. merge r14574:14612 from trunk to mythtv-vid
comment:113 Changed 13 years ago by
comment:114 Changed 13 years ago by
(In [14678]) Refs #843. Refs #2287. change method for embedding TV video in guidegrid and playbackbox. Allows opengl/xv/xvmc-blit rendered TV windows to be embedded. xvmc-opengl doesn't work yet cause xvmc-opengl playback is broken. talking to danielk, there are some thread safety issues with embedded video playback to deal with.
comment:115 Changed 13 years ago by
comment:116 Changed 13 years ago by
(In [14709]) Refs #2287. merge r14613:14707 from trunk to mythtv-vid
comment:117 Changed 13 years ago by
comment:118 Changed 13 years ago by
comment:119 Changed 13 years ago by
comment:120 Changed 13 years ago by
(In [14778]) Refs #2287. Merges r14707:14777 from trunk to mythtv-vid
comment:121 Changed 13 years ago by
comment:123 Changed 13 years ago by
Replying to danielk:
(In [13769]) Refs #2287. Workaround for an apparent nvidia bug that caused blank screens after video rendering method changes.
The problem was noticed by Stanley Kamithi and worked around by Mark Kendal. The video playback window would be blank when switching from OpenGL to XvMC rendering with 8776 and crash when using the 9755 drivers, This may have something to do with the change to using the 3D pipeline to emulate XVideo in the newer drivers. The workaround was simply to unmap and map the subwindow with the OpenGL context instead of deleting and recreating it as we switch between rendering methods. The window and context are still properly deleted when we delete VideoOutputXv? at playback shutdown.
This Bug, or something similar, seems to be appearing with the latest (beta) Drivers from Nvidia. Closing and reopening the Internal Videoplayer causes an blank Screen.
comment:125 Changed 13 years ago by
comment:126 Changed 13 years ago by
(In [15453]) Refs #2287. prevent a crash that occurs when you run opengl renderer with more then 2 openglvideo instances and then you start and stop the tv player several times. e.g opengl with opengl osd or opengl with pip. it crashed with a double link list or Xorg crashes. patch makes openglvideo::initopengl execute one the initial openglvideo instance instead of once per openglvideo instance.
comment:127 Changed 13 years ago by
comment:129 Changed 13 years ago by
comment:130 Changed 13 years ago by
comment:131 Changed 13 years ago by
comment:132 Changed 13 years ago by
comment:133 Changed 13 years ago by
comment:134 Changed 13 years ago by
comment:135 Changed 13 years ago by
comment:136 Changed 13 years ago by
comment:137 Changed 13 years ago by
comment:138 Changed 13 years ago by
comment:139 Changed 13 years ago by
(In [16466]) Refs #2287. mythtv-vid: prevent a MythPopupBox? from displaying a mythbackend connection failure while activating the osd menu. it causes a hang.
comment:140 Changed 13 years ago by
comment:141 Changed 13 years ago by
comment:142 Changed 13 years ago by
comment:143 Changed 13 years ago by
comment:144 Changed 13 years ago by
comment:145 Changed 13 years ago by
comment:146 Changed 13 years ago by
comment:147 Changed 13 years ago by
comment:148 Changed 13 years ago by
comment:149 Changed 13 years ago by
comment:150 Changed 13 years ago by
comment:151 Changed 13 years ago by
comment:152 Changed 13 years ago by
comment:153 Changed 13 years ago by
comment:154 Changed 13 years ago by
comment:155 Changed 13 years ago by
(In [17396]) Refs #5324, Refs #2287. mythtv-vid: commit patch (3) of #5324. Rename key variables in line with VideoOutput?? to make opengl code easier to follow.
comment:156 Changed 13 years ago by
comment:157 Changed 13 years ago by
comment:158 Changed 13 years ago by
comment:159 Changed 13 years ago by
comment:160 Changed 13 years ago by
comment:161 Changed 13 years ago by
comment:162 Changed 13 years ago by
comment:163 Changed 13 years ago by
comment:164 Changed 13 years ago by
comment:165 Changed 13 years ago by
comment:166 Changed 13 years ago by
comment:167 Changed 13 years ago by
comment:168 Changed 13 years ago by
comment:169 Changed 13 years ago by
comment:170 Changed 13 years ago by
comment:171 Changed 13 years ago by
comment:172 Changed 13 years ago by
comment:174 Changed 13 years ago by
comment:175 Changed 13 years ago by
(In [17895]) svn merge -r17851:17894 blah:.../trunk/mythtv . Have only tested compilation, not other possible breakage. Refs #2287
comment:176 Changed 13 years ago by
comment:177 Changed 13 years ago by
comment:178 Changed 13 years ago by
comment:179 Changed 12 years ago by
comment:180 Changed 12 years ago by
comment:181 Changed 12 years ago by
(In [17994]) Refs #843, Refs #2287. mythtv-vid: remove code I put in that was supposed to prevent resizing of opengl rendered picture during tv playback startup. It doesn't work. currently if you start EPG at tv playback you'll see nothing in the resized tv window and when you exit the EPG the picture is not resized again properly. Looking for a different solution that will work.
comment:182 Changed 12 years ago by
(In [18013]) Refs #5324, Refs #2287. apply patch 19. Rewrite of deinterlacing code. Combine YUV2RGB and deinterlacing. Use 3 different fragment programs for progressive, top field and bottom field. Now properly deinterlaces luma and chroma channels and much faster. FrameBufferObjects?? no longer a requirement. patch 18 and 18a, are already applied. this was done through [17954].
comment:183 Changed 12 years ago by
comment:184 Changed 12 years ago by
comment:185 Changed 12 years ago by
(In [18460]) Refs #2287. fix compile issue after last sync with trunk. fix EmbedInWidget? failure on opengl renderer due to [18069].
comment:186 Changed 12 years ago by
(In [18899]) Refs #2287. Merge r18888:18898 from trunk to mythtv-vid, see also [18890].
comment:187 Changed 12 years ago by
comment:188 Changed 12 years ago by
comment:189 Changed 12 years ago by
comment:190 Changed 12 years ago by
comment:191 Changed 12 years ago by
(In [18958]) Refs #2287. Merges r18898:18957 from trunk to mythtv-vid
comment:192 Changed 12 years ago by
(In [18980]) Refs #2287. Refactor of NVP to remove duplication of pointers to things already contained in the PlayerContext?. (mythtv-vid branch)
comment:193 Changed 12 years ago by
(In [18987]) Refs #2287. Begins cleaning up PlayerContext? locking. There are still over a hundred unlocked uses, but the most common uses are now covered.
If your running with this branch right now, please run the frontend with '-v playback', this will print potentially useful lock debugging info in case you manage to trigger a deadlock.
comment:194 Changed 12 years ago by
comment:195 Changed 12 years ago by
(In [19030]) Refs #2287 Merges r18957:19029 from trunk to mythtv-vid
comment:196 Changed 12 years ago by
comment:197 Changed 12 years ago by
comment:198 Changed 12 years ago by
(In [19033]) Refs #2287. Refs #5324. Applies Mark Kendal's disable textures patch #24 to mythtv-vid; this adds a DisableTextures? method to OpenGLContext to match the EnableTextures? method and uses it in openglvideo instead of raw OpenGL.
comment:199 Changed 12 years ago by
comment:200 Changed 12 years ago by
comment:201 Changed 12 years ago by
comment:202 Changed 12 years ago by
comment:203 Changed 12 years ago by
comment:204 Changed 12 years ago by
(In [19045]) Refs #2287. Fix a locking problem introduced by [19042], basically the commBreakMapLock is non-recursive so it was being locked twice by NVP::AutoCommercialSkip?() after I added a missing locking in NVP::ClearAfterSeek?() which was being called with and without a lock being held but calls SetCommBreakIter?() which requires the lock to be held. Now ClearAfterSeek? is only called when the lock isn't being held.
comment:205 Changed 12 years ago by
comment:206 Changed 12 years ago by
(In [19086]) Refs #2287. Merges r19029:19085 from trunk to mythtv-vid
comment:207 Changed 12 years ago by
comment:208 Changed 12 years ago by
comment:209 Changed 12 years ago by
comment:210 Changed 12 years ago by
comment:211 Changed 12 years ago by
comment:214 Changed 12 years ago by
comment:215 Changed 12 years ago by
comment:216 Changed 12 years ago by
comment:217 Changed 12 years ago by
(In [19129]) Refs #2287. Converts most of the event loop in the TV class to Qt timer events.
Five untriggered events remain, two need to be initiated by nvp actions, two I don't understand the code well enough, and one I just haven't looked at yet. I'm only checking these remaining untriggered events every 250 ms rather than every 50 ms; since all the stuff that needs to be snappy is now triggered immediately.
The code in tv_play.cpp still needs to be made pretty, more refactoring into PlayerContext? is required, and this is probably buggier than yesterday's code, but it's on it's way to being better. The UI feels significantly snappier than it did a week ago.
comment:218 Changed 12 years ago by
(In [19172]) Refs #2287. Merges r19085:19164 from trunk to mythtv-vid
comment:219 Changed 12 years ago by
(In [19178]) Refs #2287. Merges r19164:19177 from trunk to mythtv-vid
comment:220 Changed 12 years ago by
(In [19182]) Refs #2287. Some VDPAU tweaks for the mythtv-vid branch.
Note there are still some problems
- Resolution changes are not handled by the VDPAU code
- VDPAU is treated as a subset of XVideo, videout_xv.cpp may be simpler if it is treated as a subtype outside of the XVideo range.
- All the other known problems, color in OSD, quality of MPEG-2 decoding, etc.
comment:221 Changed 12 years ago by
(In [19183]) Refs #2287. Cleanup ApproveDeintFilter?() & include vdpau in base class version
comment:222 Changed 12 years ago by
(In [19184]) Refs #2287. Since both VDPAU & OpenGL renderers need the context reinitialized on resolution changes, special cases these in VideoOutputXv::InputChanged?()
comment:223 Changed 12 years ago by
comment:224 Changed 12 years ago by
(In [19187]) Refs #2287. Merges r19177:19186 from trunk to mythtv-vid.
comment:225 Changed 12 years ago by
comment:226 Changed 12 years ago by
(In [19273]) Refs #2287. Merges r19186:19272 from trunk to mythtv-vid.
comment:228 Changed 12 years ago by
(In [19277]) Refs #2287. Don't try to restart LiveTV if we have hit an irrecoverable error in starting LiveTV.
Basically the reasoning is that if we hit an irrecoverable error once, we will likely hit it again and again on each retry.
This could easilly be extended to retry a few times before giving up, but I've only seen this occur with truly irrecoverable errors, such as the recording directory not being mounted. In trunk we set wantsToQuit to true for these irrecoverable errors, but that is not correct, since wantsToQuit indicates that the user wants to quit the app, and when there is an irrecoverable error we really want to show an error dialog then quit..
AFAIK: This problem really only occurs in practice because we haven't ported the error dialogs in the NVP and TV classes to Qt4 yet, but even once we do -- this change will prevent infinite loops if we forget to implement an error exit dialog for some irrecoverable eror.
comment:229 Changed 12 years ago by
(In [19288]) Refs #2287. Make the position map transfer code for in progress recordings a bit more efficient with a GetKeyframePositions?() call in the recorder, and make GetKeyframePosition?() work as documented (returning closest prior position if the frame is not found in the map) instead of returning -1 for non-keyframes.
comment:230 Changed 12 years ago by
comment:231 Changed 12 years ago by
comment:232 Changed 12 years ago by
comment:233 Changed 12 years ago by
(In [19299]) Refs #2287. Return PlayerReadLock? in TV::HandleEndOfPlaybackTimerEvent?, broken by [19298].
comment:235 Changed 12 years ago by
(In [19311]) Refs #2287. Partially revert [19301], we still need to run processEvents() regularly in TV::StartTV() even if there are no state changes. This is needed for keyboard and other event processing on at least some Qt 4.x releases. Possibly a better solution is to enter the event loop for the thread running StartTV(), but that requires a bit more refactoring...
comment:236 Changed 12 years ago by
comment:237 Changed 12 years ago by
comment:238 Changed 12 years ago by
comment:239 Changed 12 years ago by
(In [19316]) Refs #2287. Initial cross-platform OpenGL support in util-opengl (mythtv-vid).
Primarily adding entry points and defines for any functionality newer than OpenGL 1.1 (unavailable on windows). Also add hooks for required windows and Mac OS X extensions and swap_control on Linux and windows (available by default on OS X).
comment:240 Changed 12 years ago by
comment:241 Changed 12 years ago by
comment:242 Changed 12 years ago by
(In [19327]) Refs #2287. Use our X11 lock when processing Qt's X11 calls.
This is theoretically a problem in trunk too, Qt can make an X11 call at the same time as VideoOutputXv?. But it becomes a real segfault producer in mythtv-vid because we have much fewer usleep() calls scattered throughout the code.
comment:243 Changed 12 years ago by
comment:244 Changed 12 years ago by
(In [19329]) Refs #2287. Add some useful debugging to GetFramesWritten?() and make sure we return -1 if the backend returns and error.
comment:245 Changed 12 years ago by
(In [19330]) Refs #2287. Make keyframe map syncing a bit more efficient. First we allow the NVP to pass -1 as the end keyframe to request, which means we want all keyframes greater than the start keyframe this avoids 1 of the two network roundtrips. Second, we use QMap::lowerBound() to find the first keyframe greater than or equal to the start keyframe, and then iterate until we reach the end of the map, this doesn't change the big O performance but makes the code about a 15 times faster in practice.
comment:246 Changed 12 years ago by
comment:247 Changed 12 years ago by
comment:248 Changed 12 years ago by
comment:249 Changed 12 years ago by
(In [19335]) Refs #2287. Merges r19273:19334 from trunk to mythtv-vid
comment:250 Changed 12 years ago by
comment:251 Changed 12 years ago by
(In [19345]) Refs #2287. Cleans up PBP startup.
Use JumpToFrame?() to restart NVPs in the same place in the file, as we do for PIP. Use the currently active NVP's OSD in PBP mode, unless the OSD for the main buffer is a full screen OSD (None are at the moment, so that part is just a stub in playercontext.cpp).
comment:252 Changed 12 years ago by
The multi-pip-v1.patch has a lot of extraneous changes including debugging that needs to be ripped out, NVP/TV error handling is broken, player teardown is not done correctly for PIP's, and this likely won't compile with video output classes other than XVideo. But, it does finally allow for multiple Picture-in-Picture windows...
Note: After I clean this up I plan to extend PBP as well, so that you can do things like look at all the channels on the current multiplex at once. After that I plan to allow audio output follow you to the currently active player...
comment:253 Changed 12 years ago by
comment:254 Changed 12 years ago by
(In [19373]) Refs #2287. Merges r19334:19372 from trunk to mythtv-vid
comment:255 Changed 12 years ago by
(In [19375]) Refs #2287. VideoOutput? portion of multi PIP patch.
comment:256 Changed 12 years ago by
comment:258 Changed 12 years ago by
Changed 12 years ago by
Attachment: | multi-pip-dbg-only-v9.patch added |
---|
Debugging portion of multi-pip patch.. if you want to fix any of the problems, this is a good thing to apply first..
comment:259 Changed 12 years ago by
comment:260 Changed 12 years ago by
comment:261 Changed 12 years ago by
(In [19391]) Refs #2287. When we enter TV::DoEditSchedule?() with a PIP or second PBP window as the active window, use that window for any playback in grid functionality. Also if the main window is the active window, pause any PIP/PBP windows and don't render them until we return to normal playback.
comment:262 Changed 12 years ago by
comment:263 Changed 12 years ago by
(In [19394]) Refs #2287. Improves debugging output for TV::SetActive?()
comment:264 Changed 12 years ago by
comment:265 Changed 12 years ago by
comment:266 Changed 12 years ago by
comment:267 Changed 12 years ago by
comment:268 Changed 12 years ago by
comment:270 Changed 12 years ago by
(In [19408]) Refs #2287. Cleanup of PlayerContext? (with resulting changes in other files from method renaming.)
comment:271 Changed 12 years ago by
comment:272 Changed 12 years ago by
(In [19414]) Refs #2287. Merges r19372:19413 from trunk to mythtv-vid
comment:273 Changed 12 years ago by
(In [19417]) Refs #2287. Merges mythtv-vid to trunk.
There are a number of changes, probably the most user visible ones are PiP related, but there is also groundwork laid for OpenGL video rendering on OSX and MS Windows, for aspect ratio & zoom on OSX, and a number of operations are more responsive.
Note: Even though this changeset has received a fair bit of testing, it is a 1.1MB patch and there are bound to be things we overlooked. Please report any compilation problems to the mythtv-dev mailing list and open tickets with a repro description, theme used and backtrace for any segfaults or deadlocks.
comment:276 Changed 12 years ago by
comment:277 Changed 12 years ago by
comment:278 Changed 12 years ago by
(In [19513]) Refs #2287. Merges r19419:19512 from trunk to mythtv-vid.
comment:279 Changed 12 years ago by
(In [19535]) Refs #2287. Add a new cross-platform OpenGL video renderer that provides consistent playback across Linux, Windows XP, Vista and Mac OS X.
There are some small remaining issues with xrandr on Linux and PBP sizing across the board.
N.B. Due to a lack of altivec YV12 packing code, performance may be poor on non-intel Macs. N.B. I've been unable to test a windows build for the last few weeks.
comment:280 Changed 12 years ago by
comment:281 Changed 12 years ago by
comment:282 Changed 12 years ago by
(In [19548]) Refs #2287. Merges r19514:19546 from trunk to mythtv-vid.
comment:283 Changed 12 years ago by
comment:284 Changed 12 years ago by
(In [19664]) Refs #2287. Merges r19547:19663 from trunk to mythtv-vid.
comment:285 Changed 12 years ago by
comment:286 Changed 12 years ago by
comment:287 Changed 12 years ago by
(In [19847]) Refs #2287. Merge r19664:19846 from trunk to mythtv-vid.
comment:288 Changed 12 years ago by
comment:290 Changed 12 years ago by
comment:291 Changed 12 years ago by
comment:292 Changed 12 years ago by
(In [19972]) Refs #2287. Merge r19847:19971 from trunk to mythtv-vid.
comment:293 Changed 12 years ago by
comment:294 Changed 12 years ago by
comment:295 Changed 12 years ago by
(In [20077]) Refs #2287. Merge -r19972:20076 from trunk to mythtv-vid.
comment:297 Changed 11 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Any remaining issues should get their own tickets.
(In [11431]) Refs #2287. Merges r10784:11430 from svn head to mythtv-vid.