Skip to content

Commit

Permalink
VideoPlayerVideo: Invert stereo flags from codec when option is enabled
Browse files Browse the repository at this point in the history
  • Loading branch information
popcornmix committed Apr 3, 2020
1 parent 04f976f commit 285529e
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 0 deletions.
3 changes: 3 additions & 0 deletions xbmc/cores/VideoPlayer/VideoPlayerVideo.cpp
Expand Up @@ -14,6 +14,7 @@
#include "ServiceBroker.h"
#include "cores/VideoPlayer/Interface/Addon/DemuxPacket.h"
#include "cores/VideoPlayer/Interface/Addon/TimingConstants.h"
#include "cores/VideoPlayer/VideoRenderers/RenderFlags.h"
#include "settings/AdvancedSettings.h"
#include "settings/SettingsComponent.h"
#include "utils/MathUtils.h"
Expand Down Expand Up @@ -700,6 +701,8 @@ bool CVideoPlayerVideo::ProcessDecoderOutput(double &frametime, double &pts)
break;
default:
stereoMode = m_hints.stereo_mode;
if (m_processInfo.GetVideoSettings().m_StereoInvert)
stereoMode = InvertStereoMode(stereoMode);
break;
}
if (!stereoMode.empty())
Expand Down
25 changes: 25 additions & 0 deletions xbmc/cores/VideoPlayer/VideoRenderers/RenderFlags.cpp
Expand Up @@ -87,3 +87,28 @@ unsigned int GetFlagsStereoMode(const std::string& mode)
return convert[mode];
}

std::string InvertStereoMode(const std::string& mode)
{
static std::map<std::string, std::string> convert;
if(convert.empty())
{
convert[""] = "";
convert["left_right"] = "right_left";
convert["bottom_top"] = "top_bottom";
convert["top_bottom"] = "bottom_top";
convert["checkerboard_rl"] = "checkerboard_lr";
convert["checkerboard_lr"] = "checkerboard_rl";
convert["row_interleaved_rl"] = "row_interleaved_lr";
convert["row_interleaved_lr"] = "row_interleaved_rl";
convert["col_interleaved_rl"] = "col_interleaved_lr";
convert["col_interleaved_lr"] = "col_interleaved_rl";
convert["right_left"] = "left_right";
convert["block_lr"] = "block_rl";
convert["block_rl"] = "block_lr";
}
// if the format is not known then leave it as it is
if (convert.count(mode) == 0)
return mode;
return convert[mode];
}

1 change: 1 addition & 0 deletions xbmc/cores/VideoPlayer/VideoRenderers/RenderFlags.h
Expand Up @@ -66,3 +66,4 @@ unsigned int GetFlagsColorMatrix(unsigned int color_matrix, unsigned width, unsi
unsigned int GetFlagsChromaPosition(unsigned int chroma_position);
unsigned int GetFlagsColorPrimaries(unsigned int color_primaries);
unsigned int GetFlagsStereoMode(const std::string& mode);
std::string InvertStereoMode(const std::string& mode);

0 comments on commit 285529e

Please sign in to comment.