Opened 19 years ago
Closed 16 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 by , 19 years ago
comment:3 by , 19 years ago
follow-up: 10 comment:4 by , 19 years ago
(In [11497]) Refs #2287. Merges -r11430:11496 in svn head to mythtv-vid.
comment:5 by , 19 years ago
comment:6 by , 19 years ago
comment:7 by , 19 years ago
comment:8 by , 19 years ago
comment:9 by , 19 years ago
(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 by , 19 years ago
(In [11608]) Refs #2287. Merges -r11496:11607 in svn head to mythtv-vid.
comment:11 by , 19 years ago
comment:12 by , 19 years ago
comment:13 by , 19 years ago
(In [11806]) Refs #2287. Merges -r11607:11700 in svn head to mythtv-vid
comment:14 by , 19 years ago
(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 by , 19 years ago
comment:16 by , 19 years ago
(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 by , 19 years ago
(In [12221]) Refs #2287. Merges -r11806:12220 in svn head to mythtv-vid.
comment:18 by , 19 years ago
(In [12257]) Refs #2287. Merges -r12220:12256 from svn head to mythtv-vid.
comment:19 by , 19 years ago
comment:20 by , 19 years ago
(In [12676]) Refs #2287. Merges -r12256:12675 from svn head to mythtv-vid.
comment:21 by , 19 years ago
(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 by , 19 years ago
(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 by , 19 years ago
comment:24 by , 19 years ago
comment:25 by , 19 years ago
comment:26 by , 19 years ago
comment:27 by , 19 years ago
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 by , 19 years ago
Type: | defect → task |
---|
comment:29 by , 19 years ago
comment:30 by , 19 years ago
comment:31 by , 19 years ago
comment:32 by , 19 years ago
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 by , 19 years ago
comment:34 by , 19 years ago
comment:35 by , 19 years ago
(In [12753]) Refs #2287. Fixes opengl->other video renderer swiching in VideoOutputXv::InputChanged().
comment:36 by , 19 years ago
(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 by , 19 years ago
comment:38 by , 19 years ago
comment:39 by , 19 years ago
(In [12949]) Refs #2287. Merges r12675:12948 from svn head to mythtv-vid.
comment:40 by , 19 years ago
(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 by , 18 years ago
(In [13433]) Refs #2287. Merges r12948:13432 from svn head to mythtv-vid.
comment:42 by , 18 years ago
(In [13545]) Refs #2287. Merges r13433:13544 from svn head to mythtv-vid
comment:43 by , 18 years ago
comment:44 by , 18 years ago
(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 by , 18 years ago
comment:46 by , 18 years ago
comment:47 by , 18 years ago
follow-up: 123 comment:48 by , 18 years ago
(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 by , 18 years ago
(In [13770]) Refs #2287. Merges r13544:13769 from svn trunk to mythtv-vid.
comment:50 by , 18 years ago
comment:51 by , 18 years ago
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 by , 18 years ago
(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 by , 18 years ago
comment:54 by , 18 years ago
comment:55 by , 18 years ago
(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.
by , 18 years ago
Attachment: | osx-video-v4.patch.bz2 added |
---|
Patch to add OSX DVDV decoding (not functionning).
comment:56 by , 18 years ago
comment:57 by , 18 years ago
(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 by , 18 years ago
comment:59 by , 18 years ago
comment:60 by , 18 years ago
(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 by , 18 years ago
(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 by , 18 years ago
(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 by , 18 years ago
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 by , 18 years ago
comment:65 by , 18 years ago
comment:66 by , 18 years ago
comment:67 by , 18 years ago
(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 by , 18 years ago
comment:69 by , 18 years ago
comment:70 by , 18 years ago
comment:71 by , 18 years ago
(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 by , 18 years ago
comment:73 by , 18 years ago
comment:74 by , 18 years ago
(In [14286]) Refs #2287. Merges r14097:14285 from svn head to mythtv-vid.
comment:75 by , 18 years ago
comment:76 by , 18 years ago
comment:77 by , 18 years ago
(In [14403]) Refs #2287. Merges r14285:14401 from svn trunk to mythtv-vid.
follow-up: 80 comment:78 by , 18 years ago
(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 by , 18 years ago
(In [14408]) Refs #2287. Merges r14401:14407 from svn trunk to mythtv-vid.
comment:80 by , 18 years ago
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 by , 18 years ago
comment:82 by , 18 years ago
comment:83 by , 18 years ago
comment:84 by , 18 years ago
comment:85 by , 18 years ago
comment:86 by , 18 years ago
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 by , 18 years ago
Milestone: | unknown → 0.21 |
---|---|
Status: | new → assigned |
comment:88 by , 18 years ago
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 by , 18 years ago
comment:90 by , 18 years ago
(In [14451]) Refs #2287. Merges r14407:14450 from svn trunk to mythtv-vid.
comment:91 by , 18 years ago
comment:92 by , 18 years ago
(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 by , 18 years ago
comment:94 by , 18 years ago
comment:95 by , 18 years ago
comment:96 by , 18 years ago
comment:97 by , 18 years ago
comment:98 by , 18 years ago
comment:99 by , 18 years ago
(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 by , 18 years ago
Milestone: | 0.21 → unknown |
---|
comment:101 by , 18 years ago
comment:102 by , 18 years ago
comment:103 by , 18 years ago
comment:104 by , 18 years ago
(In [14568]) Refs #2287. merges r14452:14567 from svn head to mythtv-vid.
comment:105 by , 18 years ago
comment:106 by , 18 years ago
comment:108 by , 18 years ago
comment:109 by , 18 years ago
(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 by , 18 years ago
comment:111 by , 18 years ago
(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:113 by , 18 years ago
comment:114 by , 18 years ago
(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 by , 18 years ago
comment:117 by , 18 years ago
comment:118 by , 18 years ago
comment:119 by , 18 years ago
comment:123 by , 18 years ago
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 by , 18 years ago
comment:126 by , 18 years ago
(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 by , 18 years ago
comment:129 by , 18 years ago
comment:130 by , 18 years ago
comment:131 by , 18 years ago
comment:132 by , 18 years ago
comment:133 by , 18 years ago
comment:135 by , 18 years ago
comment:137 by , 18 years ago
comment:138 by , 18 years ago
comment:139 by , 18 years ago
(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 by , 18 years ago
comment:141 by , 18 years ago
comment:142 by , 18 years ago
comment:143 by , 18 years ago
comment:144 by , 18 years ago
comment:146 by , 18 years ago
comment:149 by , 17 years ago
comment:150 by , 17 years ago
comment:151 by , 17 years ago
comment:152 by , 17 years ago
comment:153 by , 17 years ago
comment:154 by , 17 years ago
comment:155 by , 17 years ago
(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 by , 17 years ago
comment:157 by , 17 years ago
comment:158 by , 17 years ago
comment:159 by , 17 years ago
comment:160 by , 17 years ago
comment:161 by , 17 years ago
comment:164 by , 17 years ago
comment:165 by , 17 years ago
comment:166 by , 17 years ago
comment:167 by , 17 years ago
comment:168 by , 17 years ago
comment:169 by , 17 years ago
comment:170 by , 17 years ago
comment:171 by , 17 years ago
comment:172 by , 17 years ago
comment:175 by , 17 years ago
(In [17895]) svn merge -r17851:17894 blah:.../trunk/mythtv . Have only tested compilation, not other possible breakage. Refs #2287
comment:176 by , 17 years ago
comment:177 by , 17 years ago
comment:178 by , 17 years ago
comment:181 by , 17 years ago
(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 by , 17 years ago
(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 by , 17 years ago
comment:185 by , 17 years ago
(In [18460]) Refs #2287. fix compile issue after last sync with trunk. fix EmbedInWidget failure on opengl renderer due to [18069].
comment:186 by , 17 years ago
(In [18899]) Refs #2287. Merge r18888:18898 from trunk to mythtv-vid, see also [18890].
comment:187 by , 17 years ago
comment:188 by , 17 years ago
comment:189 by , 17 years ago
comment:190 by , 17 years ago
comment:192 by , 17 years ago
(In [18980]) Refs #2287. Refactor of NVP to remove duplication of pointers to things already contained in the PlayerContext. (mythtv-vid branch)
comment:193 by , 17 years ago
(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 by , 17 years ago
comment:196 by , 17 years ago
comment:197 by , 17 years ago
comment:198 by , 17 years ago
(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 by , 17 years ago
comment:200 by , 17 years ago
comment:201 by , 17 years ago
comment:202 by , 17 years ago
comment:203 by , 17 years ago
comment:204 by , 17 years ago
(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 by , 17 years ago
comment:207 by , 17 years ago
comment:208 by , 17 years ago
comment:209 by , 17 years ago
comment:210 by , 17 years ago
comment:211 by , 17 years ago
comment:214 by , 17 years ago
comment:215 by , 17 years ago
comment:216 by , 17 years ago
comment:217 by , 17 years ago
(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:220 by , 17 years ago
(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 by , 17 years ago
(In [19183]) Refs #2287. Cleanup ApproveDeintFilter() & include vdpau in base class version
comment:222 by , 17 years ago
(In [19184]) Refs #2287. Since both VDPAU & OpenGL renderers need the context reinitialized on resolution changes, special cases these in VideoOutputXv::InputChanged()
comment:223 by , 17 years ago
comment:224 by , 17 years ago
(In [19187]) Refs #2287. Merges r19177:19186 from trunk to mythtv-vid.
comment:225 by , 17 years ago
comment:226 by , 17 years ago
(In [19273]) Refs #2287. Merges r19186:19272 from trunk to mythtv-vid.
comment:228 by , 17 years ago
(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 by , 17 years ago
(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 by , 17 years ago
comment:231 by , 17 years ago
comment:232 by , 17 years ago
comment:233 by , 17 years ago
(In [19299]) Refs #2287. Return PlayerReadLock in TV::HandleEndOfPlaybackTimerEvent, broken by [19298].
comment:235 by , 17 years ago
(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 by , 17 years ago
comment:237 by , 17 years ago
comment:238 by , 17 years ago
comment:239 by , 17 years ago
(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 by , 17 years ago
comment:241 by , 17 years ago
comment:242 by , 17 years ago
(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 by , 17 years ago
comment:244 by , 17 years ago
(In [19329]) Refs #2287. Add some useful debugging to GetFramesWritten() and make sure we return -1 if the backend returns and error.
comment:245 by , 17 years ago
(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 by , 17 years ago
comment:248 by , 17 years ago
comment:250 by , 17 years ago
comment:251 by , 17 years ago
(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 by , 17 years ago
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 by , 17 years ago
comment:256 by , 17 years ago
comment:258 by , 17 years ago
by , 17 years ago
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 by , 17 years ago
comment:260 by , 17 years ago
comment:261 by , 17 years ago
(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 by , 17 years ago
comment:263 by , 17 years ago
comment:264 by , 17 years ago
comment:265 by , 17 years ago
comment:267 by , 17 years ago
comment:268 by , 17 years ago
comment:270 by , 17 years ago
(In [19408]) Refs #2287. Cleanup of PlayerContext (with resulting changes in other files from method renaming.)
comment:271 by , 17 years ago
comment:273 by , 17 years ago
(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 by , 17 years ago
comment:277 by , 17 years ago
comment:278 by , 17 years ago
(In [19513]) Refs #2287. Merges r19419:19512 from trunk to mythtv-vid.
comment:279 by , 17 years ago
(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 by , 17 years ago
comment:281 by , 17 years ago
comment:282 by , 17 years ago
(In [19548]) Refs #2287. Merges r19514:19546 from trunk to mythtv-vid.
comment:283 by , 17 years ago
comment:284 by , 17 years ago
(In [19664]) Refs #2287. Merges r19547:19663 from trunk to mythtv-vid.
comment:285 by , 17 years ago
comment:286 by , 17 years ago
comment:288 by , 17 years ago
comment:290 by , 17 years ago
comment:291 by , 17 years ago
comment:293 by , 17 years ago
comment:294 by , 17 years ago
comment:295 by , 17 years ago
(In [20077]) Refs #2287. Merge -r19972:20076 from trunk to mythtv-vid.
comment:297 by , 16 years ago
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.