Kodi Community Forum
WIP Stereoscopic 3D support for half/full SBS, over/under, etc - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Development (https://forum.kodi.tv/forumdisplay.php?fid=32)
+--- Forum: Kodi Application (https://forum.kodi.tv/forumdisplay.php?fid=93)
+--- Thread: WIP Stereoscopic 3D support for half/full SBS, over/under, etc (/showthread.php?tid=147285)



RE: Stereoscopic 3D support for half/full SBS, over/under, etc - baijuxavior - 2013-06-08

(2013-06-08, 16:18)da-anda Wrote:
(2013-06-08, 09:57)baijuxavior Wrote: 2. A dedicated dialog window for stereomode selection and playback choice query will be nice. The current dialog window size is too large.
Yes and No. Not a dedicated dialog is needed but rather a way for skins to change the style of a dialog depending on context/the contained content. I'd also like it to show thumbnails of the stereo modes. But that's some future improvement.

Resizing of dialog menu depending on content will be enough.

(2013-06-08, 16:18)da-anda Wrote:
(2013-06-08, 09:57)baijuxavior Wrote: 3. We should be able to toggle the stereomode selection window on pressing the shortcut - on first press the window is displayed and on next press the window should be closed . At present we have to press 'Esc' to close the window.

not sure what you mean. In the GUI, or the keyboard shortcut? If it's not auto closing after selection something's wrong.

I mean shortcut key like <y>stereomode</y>. Pressing y the first time will show the menu, pressing y again (I don't wan't to select anything, so close it using the same button) will reload the menu rather than closing it. A toggle effect is useful for remote control use as I don't have to press 'Esc' to close it. This is again a problem with dialog menu and not with your code.

(2013-06-08, 16:18)da-anda Wrote:
(2013-06-08, 09:57)baijuxavior Wrote: 4. If possible add the 3D OSD menu for Aeon Nox skin.

the Aeon Nox guys have to do this

I figured it out. Only problem is getting a matching 3D icon.

(2013-06-08, 16:18)da-anda Wrote:
(2013-06-08, 09:57)baijuxavior Wrote: 6. You can use the subtitle depth code I used. It functions only for SBS view though. In O/U mode the subtitle depth is not working.
If it's partly broken we shouldn't add it as it will only cause tons of bug reports.

I would like you to have a look into the code to know what causes the problem. It is based on 3d branch by 'andresi'.

(2013-06-08, 15:59)giaur Wrote: What about my screenshot? Movie is displayed incorrectly. Do you have any idea why? Interlaced option has no effect also.
Quote:5) over/under issue should be skin related - try Confluence and report if you experience the same issue - if not, bug skin maintainer. Or, add proper SBS/TAB flags to your movies filename or add the according MKV meta tags.

This happens when you are playing an o/u movie which has no o/u detection tag and the gui is already in o/u mode or switched to o/u mode manually.

The bug is not skin related but has to do with the default switch at line 613 in xbmc\cores\VideoRenderers\BaseRenderer.cpp where SBS is selected as default if autodetection fails.

Code:
default:
      /* assume SBS if nothing reported and we are doing 3d rendering */
      if     (stereo_view == RENDER_STEREO_VIEW_LEFT)
        m_sourceRect.x2 *= 0.5f;
      else if(stereo_view == RENDER_STEREO_VIEW_RIGHT)
        m_sourceRect.x1 += m_sourceRect.x2*0.5f;
      break;

This should be captured depending on the current stereoscopic mode.


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - giaur - 2013-06-08

Quote:This happens when you are playing an o/u movie which has no o/u detection tag and the gui is already in o/u mode or switched to o/u mode manually.
My scenario - there is no 3d tag in mkv, but there is 'htab' in file name. So xbmc switches to over under mode automatically, not maually. Can you confirm this bug?

Also, about live tv:
(2013-06-08, 17:59)opdenkamp Wrote:
(2013-06-08, 15:21)giaur Wrote:
(2013-06-08, 15:07)opdenkamp Wrote: i won't even look at the log with that combination of sources

Do you mean it's unoffcial branch? But 3d support is not anything related to pvr?
yes, but i changed the api, so the two branches that you're pulling are out of sync. which is what the debug log will tell you

If I understand all of this correctly, to make pvr working your changes should be merged again with latest xbmc master. Are you going to do this? Because live tv doesn't work at all when using your code.


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - baijuxavior - 2013-06-08

(2013-06-08, 18:37)giaur Wrote:
Quote:This happens when you are playing an o/u movie which has no o/u detection tag and the gui is already in o/u mode or switched to o/u mode manually.
My scenario - there is no 3d tag in mkv, but there is 'htab' in file name. So xbmc switches to over under mode automatically, not maually. Can you confirm this bug?

I reproduced this problem by playing an o/u movie without any mkv tag or ou strings in file name and switching the gui to o/u. I have seen this problem earlier and fixed it in my old 3d branch. I could not reproduce it if the movie already auto detects the mode.


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - elupus - 2013-06-08

giaur: it's unofficial code. You can't can just pick code from here and there and assume it will work. and especially you can't require us to fix it. if you can't solve issues that pop up don't use it!

Live tv works perfectly fine with this branch as long as you use pvr addons that as compatible with it (ie xbmc master).


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - giaur - 2013-06-08

(2013-06-08, 18:53)elupus Wrote: Live tv works perfectly fine with this branch as long as you use pvr addons that as compatible with it (ie xbmc master).
I believe you, so the only I need to know is: which pvr addons should I use? I'm sure you know I am unable to solve this by myself, so I need to ask... do you know where can I find compatible pvr addons?

I know this repository only: https://github.com/opdenkamp/xbmc-pvr-addons and they don't work.

Quote:it's unofficial code. You can't can just pick code from here and there and assume it will work. and especially you can't require us to fix it.
There are some misunderstangings... I don't require from you to solve issues that I can solve myself, but when I find something not working, I'm just asking why it's not work, nothing more.

(2013-06-08, 18:46)baijuxavior Wrote:
(2013-06-08, 18:37)giaur Wrote:
Quote:This happens when you are playing an o/u movie which has no o/u detection tag and the gui is already in o/u mode or switched to o/u mode manually.
My scenario - there is no 3d tag in mkv, but there is 'htab' in file name. So xbmc switches to over under mode automatically, not maually. Can you confirm this bug?

I reproduced this problem by playing an o/u movie without any mkv tag or ou strings in file name and switching the gui to o/u. I have seen this problem earlier and fixed it in my old 3d branch. I could not reproduce it if the movie already auto detects the mode.

This is probably the same issue, so I'm going to wait until is fixed in elupus or da-anda branch. Because almost for all movies I have 3d mode will not be autodetected. To reproduce this:
- set preffered 3d mode to over under
- use movie without any 3d tag, but with htab keyword in its name
- xbmc will ask how to play the movie - choose preffered 3D mode.

Result: gui switched to 3d over under, but movie is displaying as you can see on my screenshoot. Anyone can confirm/reproduce this using da-anda branch? Or I'm doing something wrong? Also, of course the same when 3d mode is set manually (without autodetection).

I can't test mkv with 3d tag now (I don't have such files) so I don't know how this works in my case.


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - baijuxavior - 2013-06-09

(2013-06-08, 19:08)giaur Wrote:
(2013-06-08, 18:46)baijuxavior Wrote:
(2013-06-08, 18:37)giaur Wrote: My scenario - there is no 3d tag in mkv, but there is 'htab' in file name. So xbmc switches to over under mode automatically, not maually. Can you confirm this bug?

I reproduced this problem by playing an o/u movie without any mkv tag or ou strings in file name and switching the gui to o/u. I have seen this problem earlier and fixed it in my old 3d branch. I could not reproduce it if the movie already auto detects the mode.

This is probably the same issue, so I'm going to wait until is fixed in elupus or da-anda branch. Because almost for all movies I have 3d mode will not be autodetected. To reproduce this:
- set preffered 3d mode to over under
- use movie without any 3d tag, but with htab keyword in its name
- xbmc will ask how to play the movie - choose preffered 3D mode.

Result: gui switched to 3d over under, but movie is displaying as you can see on my screenshoot. Anyone can confirm/reproduce this using da-anda branch? Or I'm doing something wrong? Also, of course the same when 3d mode is set manually (without autodetection).

I can't test mkv with 3d tag now (I don't have such files) so I don't know how this works in my case.

I renamed an O/U file with htab and the movie is displayed correctly. If your movie has either mkv stereomode tag or filename with tab tags, you won't see this bug. A possible explanation to your problem is that you didn't update the da-anda 3d branch to the latest, because there was an error in AdvancedSettings.cpp file stereoscopicflagstab which he corrected later.

At line number 534 in xbmc/settings/AdvancedSettings.cpp

XMLUtils::GetString(pElement, "stereoscopicflagstab", m_stereoscopicflags_sbs);

Replace with:

XMLUtils::GetString(pElement, "stereoscopicflagstab", m_stereoscopicflags_tab);

This problem can also arise if the movie has no 3d tags either in file name or mkv tags and the gui is o/u mode. To correct this, replace the default: at line number 613 in xbmc/cores/VideoRenderers/BaseRenderer.cpp with

Code:
default:
if (g_graphicsContext.GetStereoMode() == RENDER_STEREO_MODE_SPLIT_HORIZONTAL)
{
if (stereo_view == RENDER_STEREO_VIEW_LEFT)
    m_sourceRect.y2 *= 0.5f;
else if(stereo_view == RENDER_STEREO_VIEW_RIGHT)
    m_sourceRect.y1 += m_sourceRect.y2*0.5f;
}

if (g_graphicsContext.GetStereoMode() == RENDER_STEREO_MODE_SPLIT_VERTICAL)
{
if (stereo_view == RENDER_STEREO_VIEW_LEFT)
   m_sourceRect.x2 *= 0.5f;
else if(stereo_view == RENDER_STEREO_VIEW_RIGHT)
   m_sourceRect.x1 += m_sourceRect.x2*0.5f;
}



RE: Stereoscopic 3D support for half/full SBS, over/under, etc - giaur - 2013-06-09

Hmm...

Still the same in my case - I have no idea why? File AdvancedSettings.cpp is already fixed (but line 526, not 534):
Code:
pElement = pRootElement->FirstChildElement("video");
  if (pElement)
  {
    XMLUtils::GetString(pElement, "stereoscopicflagssbs", m_stereoscopicflags_sbs);
    XMLUtils::GetString(pElement, "stereoscopicflagstab", m_stereoscopicflags_tab);      //Line 526
    XMLUtils::GetFloat(pElement, "subsdelayrange", m_videoSubsDelayRange, 10, 600);
    XMLUtils::GetFloat(pElement, "audiodelayrange", m_videoAudioDelayRange, 10, 600);
    XMLUtils::GetInt(pElement, "blackbarcolour", m_videoBlackBarColour, 0, 255);
    XMLUtils::GetString(pElement, "defaultplayer", m_videoDefaultPlayer);
    XMLUtils::GetString(pElement, "defaultdvdplayer", m_videoDefaultDVDPlayer);
    XMLUtils::GetBoolean(pElement, "fullscreenonmoviestart", m_fullScreenOnMovieStart);
    // 101 on purpose - can be used to never automark as watched
    XMLUtils::GetFloat(pElement, "playcountminimumpercent", m_videoPlayCountMinimumPercent, 0.0f, 101.0f); //Line 534

So I didn't changed anything. Also, I replaced code in BaseRenderer.cpp as you suggested, but it doesn't make any difference. I did some screenshots:
[Image: kMtgQak.png]

[Image: uI7dWj6.jpg]
As you can see, still movie is displayed incorrectly. I've also tried sbs movies and situation is analogical.

Maybe I should have something changed in preferences? Or I have some wrong sources?

All settings are defaults - I only switched on stereoscopic support. Can you reproduce this issue?


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - baijuxavior - 2013-06-09

Anyone noticed the huge gap (black bar) between top and bottom frames in o/u mode or is it just in my build only?

Image

I doubt this is one reason why 3d subtitle depth is not working for o/u mode.


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - baijuxavior - 2013-06-09

(2013-06-09, 15:22)giaur Wrote: Hmm...

Still the same in my case - I have no idea why? File AdvancedSettings.cpp is already fixed (but line 526, not 534):
Code:
pElement = pRootElement->FirstChildElement("video");
  if (pElement)
  {
    XMLUtils::GetString(pElement, "stereoscopicflagssbs", m_stereoscopicflags_sbs);
    XMLUtils::GetString(pElement, "stereoscopicflagstab", m_stereoscopicflags_tab);      //Line 526
    XMLUtils::GetFloat(pElement, "subsdelayrange", m_videoSubsDelayRange, 10, 600);
    XMLUtils::GetFloat(pElement, "audiodelayrange", m_videoAudioDelayRange, 10, 600);
    XMLUtils::GetInt(pElement, "blackbarcolour", m_videoBlackBarColour, 0, 255);
    XMLUtils::GetString(pElement, "defaultplayer", m_videoDefaultPlayer);
    XMLUtils::GetString(pElement, "defaultdvdplayer", m_videoDefaultDVDPlayer);
    XMLUtils::GetBoolean(pElement, "fullscreenonmoviestart", m_fullScreenOnMovieStart);
    // 101 on purpose - can be used to never automark as watched
    XMLUtils::GetFloat(pElement, "playcountminimumpercent", m_videoPlayCountMinimumPercent, 0.0f, 101.0f); //Line 534

So I didn't changed anything. Also, I replaced code in BaseRenderer.cpp as you suggested, but it doesn't make any difference. I did some screenshots:
[Image: kMtgQak.png]

[Image: uI7dWj6.jpg]
As you can see, still movie is displayed incorrectly. I've also tried sbs movies and situation is analogical.

Maybe I should have something changed in preferences? Or I have some wrong sources?

All settings are defaults - I only switched on stereoscopic support. Can you reproduce this issue?


I don't have this problem if the movie is named correctly. This problem was there if 3d tag detection fails which I fixed as posted in the code.

Why there is a difference of 8 lines in your advancedsettings code? see if the following lines are present:

392 - m_stereoscopicflags_sbs = "3DSBS|3D.SBS|HSBS|H.SBS|H-SBS| SBS |FULL-SBS|FULL.SBS|FULLSBS|FSBS";
393 - m_stereoscopicflags_tab = "3DTAB|3D.TAB|HTAB|H.TAB|3DOU|3D.OU|3D.HOU| HOU | OU ";


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - giaur - 2013-06-09

Do you have some other sources? Look at this: https://github.com/da-anda/xbmc/blob/3d/xbmc/settings/AdvancedSettings.cpp - line 526, not 534. This is file I have. 392/393 lines are different too.

You can see on screenshot that file is correctly named, also - I fixed BaseRenderer.cpp (in this case, line numbers match). Maybe you are testing not latest or different source? I'm sure I have all latest commits (AdvancedSettings.cpp was changed 2 days ago).

I have no more ideas, for me nothing works - always it looks like on my screenshot. Of course, this makes all things useless Sad

As I can see, your sources are different than mine - can you post where did you downloaded them from exactly?


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - baijuxavior - 2013-06-09

Use the elupus branch which contains additional changes - https://github.com/elupus/xbmc

https://github.com/xbmc/xbmc/pull/2848#preview_bucket_289


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - da-anda - 2013-06-09

yes, elupus is the most recent now. My changes got merged into his branch (which was the plan). Will delete my branch to avoid confusion.

@giaur - as long as your file has any flag like htab or hsbs and XBMC switches GUI into 3D mode, the movie should be displayed correctly. I tried to reproduce your issue, but without any luck - always worked fine (tab movie, no mkv meta tag, preferred stereo mode tab, filename contains "htab")


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - giaur - 2013-06-09

It works, thanks for help! Sources from elupus repository + fixes baijuxavior

I have small suggestion about interlaced output. It works very well, good job! But... for all my movies eyes are swapped. Is there any option to swap eyes?

I didn't test movies with 3d mkv tag but for all movies with htab keyword in name, eyes are swapped. Since output is generated by xbmc (not by my screen), I can't do anything to swap eyes.

So can you add option (and probably keymapping as well) to swap eyes in this case? If such option not exist already of course. Interlaced is most great idea for me, because I have 3D monitor connected to my PC, without any remote control. For over under/side by side modes I need to stand up and switch my monitor to 3d mode. If ouptut is interlaced, I don't have to do anything.


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - baijuxavior - 2013-06-09

In my build (windows) Interlaced option is not showing up in the supported stereoscopic modes. What could be the reason? Does it work only in linux?

(2013-06-09, 16:58)da-anda Wrote: @giaur - as long as your file has any flag like htab or hsbs and XBMC switches GUI into 3D mode, the movie should be displayed correctly. I tried to reproduce your issue, but without any luck - always worked fine (tab movie, no mkv meta tag, preferred stereo mode tab, filename contains "htab")

Did you try with a tab movie having no 3d tags in mkv and filename?


RE: Stereoscopic 3D support for half/full SBS, over/under, etc - giaur - 2013-06-09

It seems interlaced is available for linux only. I've performed some more tests. For movies with 'htab' in file name - interlaced output is eye swapped incorrectly. For movies with 3d mkv tag "over under, left first" - the same.

I think there should be option to swap eyes for interlaced or anaglyph outputs. Because, in any case - wrong movie with already swapped eyes will make interlaced mode useless. What do you think?