RaspberryPi + Openelec + 3D SBS
#1
Hi

I've got a raspbery pi, so I installed openelec on it. The default player in xbmc is omxplayer which support 3D SBS and OU movies.
I've tried run half sbs movie on it but result was very strange. I've added extension 3DSBS on file name and run it. The player displayed only one half sbs picture. I thought that this method should switch tv on hdmi 3D mode, but it didn't.
I've checked the log file, and I did not find any information of 3D movie type:

The source of OMXPlayerVideo.cpp:
Code:
...
  if(m_flags & CONF_FLAGS_FORMAT_SBS)
  {
    if(g_Windowing.Support3D(video_width, video_height, D3DPRESENTFLAG_MODE3DSBS))
    {
      CLog::Log(LOGNOTICE, "3DSBS movie found");
      flags |= CONF_FLAGS_FORMAT_SBS;
    }
  }
  else if(m_flags & CONF_FLAGS_FORMAT_TB)
  {
    if(g_Windowing.Support3D(video_width, video_height, D3DPRESENTFLAG_MODE3DTB))
    {
      CLog::Log(LOGNOTICE, "3DTB movie found");
      flags |= CONF_FLAGS_FORMAT_TB;
    }
  }
...

So it should be "3DSBS movie found" for sbs movie in log file.

My log file:
Code:
16:08:45 T:3042922496  NOTICE: COMXPlayer: Opening: smb://SRACZ/Wideo/3D/mymovie.3DSBS.mkv
16:08:45 T:3042922496 WARNING: CDVDMessageQueue(player)::Put MSGQ_NOT_INITIALIZED
16:08:45 T:3042922496  NOTICE: CXBMCRenderManager::ResetRenderBuffer - using 5 render buffers
16:08:45 T:2908193888  NOTICE: Thread COMXPlayer start, auto delete: false
16:08:45 T:2908193888  NOTICE: Creating InputStream
16:08:45 T:2908193888  NOTICE: Creating Demuxer
16:08:50 T:2815652960  NOTICE: CDVDVideoCodecFFmpeg::Open() Using codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
16:08:58 T:2908193888  NOTICE: Opening video stream: 0 source: 256
16:08:59 T:2908193888  NOTICE: OMXClock using video as reference
16:08:59 T:2908193888  NOTICE: Creating video thread
16:08:59 T:2790401120  NOTICE: Thread COMXPlayerVideo start, auto delete: false
16:08:59 T:2908193888  NOTICE: Opening audio stream: 1 source: 256
16:08:59 T:2908193888  NOTICE: Creating audio thread
16:08:59 T:2925769824  NOTICE: Thread COMXPlayerAudio start, auto delete: false
16:08:59 T:2790401120   ERROR: Output - renderer not started
16:08:59 T:2925769824  NOTICE: OMXClock using audio as reference
16:08:59 T:2790401120   ERROR: Output - renderer not started
16:08:59 T:2790401120   ERROR: Previous line repeats 33 times.
16:08:59 T:2790401120  NOTICE: Display resolution DESKTOP : 1920x1080 @ 50.00 - Full Screen (16)
16:08:59 T:2790401120  NOTICE: CXBMCRenderManager::ResetRenderBuffer - using 5 render buffers
16:09:00 T:2942813280  NOTICE: Thread Jobworker start, auto delete: true
16:09:00 T:3042922496  NOTICE: Using GL_TEXTURE_2D
16:09:00 T:3042922496  NOTICE: GL: Using BYPASS render method
16:09:00 T:3042922496  NOTICE: GL: NPOT texture support detected
16:09:12 T:2908193888  NOTICE: COMXPlayer::OnExit()
16:09:12 T:2908193888  NOTICE: OMXPlayer: closing audio stream
16:09:12 T:2908193888  NOTICE: Closing audio stream
16:09:12 T:2925769824  NOTICE: thread end: OMXPlayerAudio::OnExit()
16:09:12 T:2908193888  NOTICE: OMXClock using video as reference
16:09:12 T:2908193888  NOTICE: OMXPlayer: closing video stream
16:09:12 T:2908193888  NOTICE: Closing video stream
16:09:12 T:2790401120  NOTICE: thread end: video_thread
16:09:12 T:2908193888  NOTICE: OMXClock using video as reference
16:09:12 T:2908193888  NOTICE: COMXPlayer::OnExit() deleting demuxer
16:09:12 T:2908193888  NOTICE: COMXPlayer::OnExit() deleting input stream
16:09:15 T:2908193888  NOTICE: Thread Background Loader start, auto delete: false

What is wrong?
Reply
#2
You don't need to do anything special with SBS files, naming or whatever. Yhey should just play and then you switch your TV to 3D/SBS mode.
If I have helped you or increased your knowledge, click the 'thumbs up' button to give thanks :) (People with less than 20 posts won't see the "thumbs up" button.)
Reply
#3
If EDID and CEC works properly the switch should be automatic.
Tags that work are 3DSBS, 3DTB and HSBS.
So the first thing I would test is to rename the file to HSBS, but I believe that the function is the same.

Run "tvservice -m CEA" to see what modes that your TV supports.
Then run "tvservice -s" when playing a 3D movie.

If everything looks correct there are ome things you can test;
check HDMI cable and perhaps try another one
Connect HDMI directly to the TV
Disconnect anything else connected to yor TV
Disconnect anything else connected to your Pi
Test power supply or maybe test another
Reply
#4
I've checked it on THOMSON TV, and HMZ-T1 helmset. I've made a test and manually changed resolution to 960/1080, and it started work.
I have no idea why it doesn't work automatically.

@miappa - I've changed SBS movie to 3DSBS. As I have written above it works when I change resolution manually.

Any suggestion to start work automatically?
Reply
#5
Yep. Read my post again and start testing. Wink

To explain more, you need to figure out why it doesn´t work as it should.

First step is to see what states your TV support, then to check what info is sent and what state it chooses when you play a 3D movie.
SSH in and run the commands I stated above (-s when you play a 3D movie).

If everything seems correct then you should check stuff such as voltage drop and cables etc. since poor cable or poor power can scramble the info sent and received.
The best way to test this is to see if it works when you have nothing else connected to the TV and/or Pi and of course test different cable and power supply.
Reply
#6
(2013-04-20, 10:36)plesken Wrote: Any suggestion to start work automatically?

You need to enable "Adjust display refresh rate to match video"
http://wiki.xbmc.org/index.php?title=Settings/Videos
Reply
#7
(2013-04-20, 12:37)popcornmix Wrote: You need to enable "Adjust display refresh rate to match video"
http://wiki.xbmc.org/index.php?title=Settings/Videos

Ah... of course :S
Reply
#8
(2013-04-20, 12:37)popcornmix Wrote:
(2013-04-20, 10:36)plesken Wrote: Any suggestion to start work automatically?

You need to enable "Adjust display refresh rate to match video"
http://wiki.xbmc.org/index.php?title=Settings/Videos

You were right Smile. It's working now! Thanks Smile
Is the possible to switch full sbs on hdmi 3d frame pack mode?
Reply
#9
(2013-04-20, 14:20)plesken Wrote: You were right Smile. It's working now! Thanks Smile
Is the possible to switch full sbs on hdmi 3d frame pack mode?

No, only half-sbs or half-tab supported.
Reply
#10
@popcornmix - I've written a long ago patch which recognized half/full sbs and half/full top bottom.
The part of patch:

Code:
...
+  else if (setting.id == VIDEO_SETTINGS_3D_MODE)
+  {
+    g_guiSettings.SetInt("videoscreen.mode3d", (RENDER_STEREO_MODE)m_Video3DMode);
+    g_graphicsContext.SetStereoMode((RENDER_STEREO_MODE)m_Video3DMode);
+    
+    if (g_graphicsContext.GetStereoMode() == RENDER_STEREO_MODE_SPLIT_VERTICAL)
+    {  
+      if (g_renderManager.GetAspectRatio() >= 3)
+      {
+    g_settings.m_currentVideoSettings.m_CustomPixelRatio = (float)((g_renderManager.GetAspectRatio() / 1.7778) * (float)pow((1.7778 / g_renderManager.GetAspectRatio()), 2));
+    g_settings.m_currentVideoSettings.m_ViewMode = VIEW_MODE_CUSTOM;
+    g_renderManager.SetViewMode(VIEW_MODE_CUSTOM);
+    UpdateSetting(VIDEO_SETTINGS_PIXEL_RATIO);
+      }
+      else if (g_renderManager.GetAspectRatio() < 1) {
+    g_renderManager.SetViewMode(VIEW_MODE_STRETCH_16x9);
+      }
+      else
+      {
+    g_renderManager.SetViewMode(VIEW_MODE_NORMAL);
+      }
+    }
+    else if (g_graphicsContext.GetStereoMode() == RENDER_STEREO_MODE_SPLIT_HORIZONTAL)
+    {
+      if (g_renderManager.GetAspectRatio() >= 3)
+      {
+    g_settings.m_currentVideoSettings.m_CustomPixelRatio = (float)((1.7778 / g_renderManager.GetAspectRatio()) * (float)pow((g_renderManager.GetAspectRatio() / 1.7778), 2));
+    g_settings.m_currentVideoSettings.m_ViewMode = VIEW_MODE_CUSTOM;
+    g_renderManager.SetViewMode(VIEW_MODE_CUSTOM);
+    UpdateSetting(VIDEO_SETTINGS_PIXEL_RATIO);
+      }
+      else if (g_renderManager.GetAspectRatio() < 1) {
+    g_renderManager.SetViewMode(VIEW_MODE_STRETCH_16x9);
+      }
+      else
+      {
+    g_renderManager.SetViewMode(VIEW_MODE_NORMAL);
+      }
+    }
...

This code resize full sbs to half sbs. I think the better way is separate half picture 1920x1080 (left and right) from 3840x1080 and switch to hdmi frame pack 1920x2205.
Maybe you think it over and add this functionality to omxplayer.
Reply

Logout Mark Read Team Forum Stats Members Help
RaspberryPi + Openelec + 3D SBS0