Skip to content

Commit

Permalink
dvdplayer: factor out render flags from player
Browse files Browse the repository at this point in the history
  • Loading branch information
elupus committed Jun 10, 2013
1 parent 8d2ff54 commit 8b69909
Show file tree
Hide file tree
Showing 5 changed files with 107 additions and 58 deletions.
6 changes: 6 additions & 0 deletions XBMC.xcodeproj/project.pbxproj
Expand Up @@ -247,6 +247,7 @@
5538433115F3678900CE061B /* NptCocoaEnviroment.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5538432D15F3678900CE061B /* NptCocoaEnviroment.mm */; settings = {COMPILER_FLAGS = "-I$SRCROOT/lib/libUPnP/Platinum/Source/Core -I$SRCROOT/lib/libUPnP/Platinum/Source/Platinum -I$SRCROOT/lib/libUPnP/Platinum/Source/Devices/MediaConnect -I$SRCROOT/lib/libUPnP/Platinum/Source/Devices/MediaRenderer -I$SRCROOT/lib/libUPnP/Platinum/Source/Devices/MediaServer -I$SRCROOT/lib/libUPnP/Platinum/Source/Extras -I$SRCROOT/lib/libUPnP/Neptune/Source/System/Posix -I$SRCROOT/lib/libUPnP/Neptune/Source/Core"; }; };
5538433415F3685C00CE061B /* NptAppleAutoreleasePool.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5538433315F3685C00CE061B /* NptAppleAutoreleasePool.mm */; settings = {COMPILER_FLAGS = "-I$SRCROOT/lib/libUPnP/Platinum/Source/Core -I$SRCROOT/lib/libUPnP/Platinum/Source/Platinum -I$SRCROOT/lib/libUPnP/Platinum/Source/Devices/MediaConnect -I$SRCROOT/lib/libUPnP/Platinum/Source/Devices/MediaRenderer -I$SRCROOT/lib/libUPnP/Platinum/Source/Devices/MediaServer -I$SRCROOT/lib/libUPnP/Platinum/Source/Extras -I$SRCROOT/lib/libUPnP/Neptune/Source/System/Posix -I$SRCROOT/lib/libUPnP/Neptune/Source/Core"; }; };
5558ED10176396CD00118C35 /* StereoscopicsManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5558ED0E176396CD00118C35 /* StereoscopicsManager.cpp */; };
55611BA31766672F00754072 /* RenderFlags.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 55611BA21766672F00754072 /* RenderFlags.cpp */; };
7C0B98A4154B79C30065A238 /* AEDeviceInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C0B98A1154B79C30065A238 /* AEDeviceInfo.cpp */; };
7C1A492315A962EE004AF4A4 /* SeekHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C1A492115A962EE004AF4A4 /* SeekHandler.cpp */; };
7C1A85661520522500C63311 /* TextureCacheJob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C1A85631520522500C63311 /* TextureCacheJob.cpp */; };
Expand Down Expand Up @@ -3631,6 +3632,8 @@
5538433315F3685C00CE061B /* NptAppleAutoreleasePool.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = NptAppleAutoreleasePool.mm; path = lib/libUPnP/Neptune/Source/System/Apple/NptAppleAutoreleasePool.mm; sourceTree = SOURCE_ROOT; };
5558ED0E176396CD00118C35 /* StereoscopicsManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StereoscopicsManager.cpp; sourceTree = "<group>"; };
5558ED0F176396CD00118C35 /* StereoscopicsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StereoscopicsManager.h; sourceTree = "<group>"; };
55611BA21766672F00754072 /* RenderFlags.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderFlags.cpp; sourceTree = "<group>"; };
55611BA41766679200754072 /* RenderFlags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderFlags.h; sourceTree = "<group>"; };
6E2FACD20E26E92800DF79EA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6E97BDBF0DA2B620003A2A89 /* EventClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventClient.h; sourceTree = "<group>"; };
6E97BDC00DA2B620003A2A89 /* EventPacket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventPacket.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -7629,6 +7632,8 @@
431AE5D8109C1A63007428C3 /* OverlayRendererUtil.h */,
F56579AD13060D1E0085ED7F /* RenderCapture.cpp */,
F56579AE13060D1E0085ED7F /* RenderCapture.h */,
55611BA21766672F00754072 /* RenderFlags.cpp */,
55611BA41766679200754072 /* RenderFlags.h */,
E38E16650D25F9FA00618676 /* RenderManager.cpp */,
E38E16660D25F9FA00618676 /* RenderManager.h */,
E38E16740D25F9FA00618676 /* WinRenderer.h */,
Expand Down Expand Up @@ -10524,6 +10529,7 @@
0E3036EC1760F68A00D93596 /* FavouritesDirectory.cpp in Sources */,
551C3A45175A12010051AAAD /* VDA.cpp in Sources */,
5558ED10176396CD00118C35 /* StereoscopicsManager.cpp in Sources */,
55611BA31766672F00754072 /* RenderFlags.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
1 change: 1 addition & 0 deletions xbmc/cores/VideoRenderers/Makefile.in
Expand Up @@ -3,6 +3,7 @@ SRCS += OverlayRenderer.cpp
SRCS += OverlayRendererUtil.cpp
SRCS += RenderCapture.cpp
SRCS += RenderManager.cpp
SRCS += RenderFlags.cpp

ifeq ($(findstring arm,@ARCH@),arm)
SRCS += yuv2rgb.neon.S
Expand Down
86 changes: 86 additions & 0 deletions xbmc/cores/VideoRenderers/RenderFlags.cpp
@@ -0,0 +1,86 @@
/*
* Copyright (C) 2005-2013 Team XBMC
* http://www.xbmc.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
*/

#include "RenderFlags.h"
#include <string>
#include <map>


namespace RenderManager {

unsigned int GetFlagsColorMatrix(unsigned int color_matrix, unsigned width, unsigned height)
{
switch(color_matrix)
{
case 7: // SMPTE 240M (1987)
return CONF_FLAGS_YUVCOEF_240M;
case 6: // SMPTE 170M
case 5: // ITU-R BT.470-2
case 4: // FCC
return CONF_FLAGS_YUVCOEF_BT601;
case 1: // ITU-R Rec.709 (1990) -- BT.709
return CONF_FLAGS_YUVCOEF_BT709;
case 3: // RESERVED
case 2: // UNSPECIFIED
default:
if(width > 1024 || height >= 600)
return CONF_FLAGS_YUVCOEF_BT709;
else
return CONF_FLAGS_YUVCOEF_BT601;
break;
}
}

unsigned int GetFlagsChromaPosition(unsigned int chroma_position)
{
switch(chroma_position)
{
case 1: return CONF_FLAGS_CHROMA_LEFT;
case 2: return CONF_FLAGS_CHROMA_CENTER;
case 3: return CONF_FLAGS_CHROMA_TOPLEFT;
}
return 0;
}

unsigned int GetFlagsColorPrimaries(unsigned int color_primaries)
{
switch(color_primaries)
{
case 1: return CONF_FLAGS_COLPRI_BT709;
case 4: return CONF_FLAGS_COLPRI_BT470M;
case 5: return CONF_FLAGS_COLPRI_BT470BG;
case 6: return CONF_FLAGS_COLPRI_170M;
case 7: return CONF_FLAGS_COLPRI_240M;
}
return 0;
}

unsigned int GetFlagsColorTransfer(unsigned int color_transfer)
{
switch(color_transfer)
{
case 1: return CONF_FLAGS_TRC_BT709;
case 4: return CONF_FLAGS_TRC_GAMMA22;
case 5: return CONF_FLAGS_TRC_GAMMA28;
}
return 0;
}

}
13 changes: 13 additions & 0 deletions xbmc/cores/VideoRenderers/RenderFlags.h
Expand Up @@ -21,6 +21,8 @@
*
*/

#include <string>

#define RENDER_FLAG_BOT 0x01
#define RENDER_FLAG_TOP 0x02
#define RENDER_FLAG_BOTH (RENDER_FLAG_BOT | RENDER_FLAG_TOP)
Expand Down Expand Up @@ -78,4 +80,15 @@
#define CONF_FLAGS_STEREO_CADANCE_LEFT_RIGHT 0x000000
#define CONF_FLAGS_STEREO_CADANCE_RIGHT_LEFT 0x008000



namespace RenderManager {

unsigned int GetFlagsColorMatrix(unsigned int color_matrix, unsigned width, unsigned height);
unsigned int GetFlagsChromaPosition(unsigned int chroma_position);
unsigned int GetFlagsColorPrimaries(unsigned int color_primaries);
unsigned int GetFlagsColorTransfer(unsigned int color_transfer);

}

#endif
59 changes: 1 addition & 58 deletions xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
Expand Up @@ -47,6 +47,7 @@
#include "utils/log.h"

using namespace std;
using namespace RenderManager;

class CPulldownCorrection
{
Expand Down Expand Up @@ -998,64 +999,6 @@ static std::string GetRenderFormatName(ERenderFormat format)
return "UNKNOWN";
}

static unsigned int GetFlagsColorMatrix(unsigned int color_matrix, unsigned width, unsigned height)
{
switch(color_matrix)
{
case 7: // SMPTE 240M (1987)
return CONF_FLAGS_YUVCOEF_240M;
case 6: // SMPTE 170M
case 5: // ITU-R BT.470-2
case 4: // FCC
return CONF_FLAGS_YUVCOEF_BT601;
case 1: // ITU-R Rec.709 (1990) -- BT.709
return CONF_FLAGS_YUVCOEF_BT709;
case 3: // RESERVED
case 2: // UNSPECIFIED
default:
if(width > 1024 || height >= 600)
return CONF_FLAGS_YUVCOEF_BT709;
else
return CONF_FLAGS_YUVCOEF_BT601;
break;
}
}

static unsigned int GetFlagsChromaPosition(unsigned int chroma_position)
{
switch(chroma_position)
{
case 1: return CONF_FLAGS_CHROMA_LEFT;
case 2: return CONF_FLAGS_CHROMA_CENTER;
case 3: return CONF_FLAGS_CHROMA_TOPLEFT;
}
return 0;
}

static unsigned int GetFlagsColorPrimaries(unsigned int color_primaries)
{
switch(color_primaries)
{
case 1: return CONF_FLAGS_COLPRI_BT709;
case 4: return CONF_FLAGS_COLPRI_BT470M;
case 5: return CONF_FLAGS_COLPRI_BT470BG;
case 6: return CONF_FLAGS_COLPRI_170M;
case 7: return CONF_FLAGS_COLPRI_240M;
}
return 0;
}

static unsigned int GetFlagsColorTransfer(unsigned int color_transfer)
{
switch(color_transfer)
{
case 1: return CONF_FLAGS_TRC_BT709;
case 4: return CONF_FLAGS_TRC_GAMMA22;
case 5: return CONF_FLAGS_TRC_GAMMA28;
}
return 0;
}

static unsigned int GetStereoModeFlags(const std::string mode)
{
static std::map<std::string, unsigned int> convert;
Expand Down

0 comments on commit 8b69909

Please sign in to comment.