diff --git a/reactos/include/dxsdk/dxsdk.rbuild b/reactos/include/dxsdk/dxsdk.rbuild
index 641b40c97e5..9e1ef0382ab 100644
--- a/reactos/include/dxsdk/dxsdk.rbuild
+++ b/reactos/include/dxsdk/dxsdk.rbuild
@@ -9,4 +9,6 @@
regbag.idl
vidcap.idl
Videoacc.idl
+ tvratings.idl
+
\ No newline at end of file
diff --git a/reactos/include/dxsdk/tvratings.idl b/reactos/include/dxsdk/tvratings.idl
new file mode 100644
index 00000000000..d62e95caa95
--- /dev/null
+++ b/reactos/include/dxsdk/tvratings.idl
@@ -0,0 +1,181 @@
+
+import "oaidl.idl";
+import "ocidl.idl";
+
+typedef enum
+{
+ MPAA = 0,
+ US_TV = 1,
+ Canadian_English = 2,
+ Canadian_French = 3,
+ Reserved4 = 4,
+ System5 = 5,
+ System6 = 6,
+ Reserved7 = 7,
+ TvRat_kSystems = 8,
+ TvRat_SystemDontKnow = 255
+} EnTvRat_System;
+
+
+typedef enum
+{
+ TvRat_0 = 0,
+ TvRat_1 = 1,
+ TvRat_2 = 2,
+ TvRat_3 = 3,
+ TvRat_4 = 4,
+ TvRat_5 = 5,
+ TvRat_6 = 6,
+ TvRat_7 = 7,
+ TvRat_kLevels = 8,
+ TvRat_LevelDontKnow = 255
+} EnTvRat_GenericLevel;
+
+
+typedef enum
+{
+ MPAA_NotApplicable = TvRat_0,
+ MPAA_G = TvRat_1,
+ MPAA_PG = TvRat_2,
+ MPAA_PG13 = TvRat_3,
+ MPAA_R = TvRat_4,
+ MPAA_NC17 = TvRat_5,
+ MPAA_X = TvRat_6,
+ MPAA_NotRated = TvRat_7
+} EnTvRat_MPAA;
+
+typedef enum
+{
+ US_TV_None = TvRat_0,
+ US_TV_Y = TvRat_1,
+ US_TV_Y7 = TvRat_2,
+ US_TV_G = TvRat_3,
+ US_TV_PG = TvRat_4,
+ US_TV_14 = TvRat_5,
+ US_TV_MA = TvRat_6,
+ US_TV_None7 = TvRat_7
+} EnTvRat_US_TV;
+
+typedef enum
+{
+ CAE_TV_Exempt = TvRat_0,
+ CAE_TV_C = TvRat_1,
+ CAE_TV_C8 = TvRat_2,
+ CAE_TV_G = TvRat_3,
+ CAE_TV_PG = TvRat_4,
+ CAE_TV_14 = TvRat_5,
+ CAE_TV_18 = TvRat_6,
+ CAE_TV_Reserved = TvRat_7
+} EnTvRat_CAE_TV;
+
+typedef enum
+{
+ CAF_TV_Exempt = TvRat_0,
+ CAF_TV_G = TvRat_1,
+ CAF_TV_8 = TvRat_2,
+ CAF_TV_13 = TvRat_3,
+ CAF_TV_16 = TvRat_4,
+ CAF_TV_18 = TvRat_5,
+ CAF_TV_Reserved6 = TvRat_6,
+ CAF_TV_Reserved = TvRat_7
+} EnTvRat_CAF_TV;
+
+typedef enum
+{
+ BfAttrNone = 0,
+ BfIsBlocked = 1,
+ BfIsAttr_1 = 2,
+ BfIsAttr_2 = 4,
+ BfIsAttr_3 = 8,
+ BfIsAttr_4 = 16,
+ BfIsAttr_5 = 32,
+ BfIsAttr_6 = 64,
+ BfIsAttr_7 = 128,
+ BfValidAttrSubmask = 255
+} BfEnTvRat_GenericAttributes;
+
+typedef enum
+{
+ US_TV_IsBlocked = BfIsBlocked,
+ US_TV_IsViolent = BfIsAttr_1,
+ US_TV_IsSexualSituation = BfIsAttr_2,
+ US_TV_IsAdultLanguage = BfIsAttr_3,
+ US_TV_IsSexuallySuggestiveDialog = BfIsAttr_4,
+ US_TV_ValidAttrSubmask = 31
+} BfEnTvRat_Attributes_US_TV;
+
+typedef enum
+{
+ MPAA_IsBlocked = BfIsBlocked,
+ MPAA_ValidAttrSubmask = 1
+} BfEnTvRat_Attributes_MPAA;
+
+typedef enum
+{
+ CAE_IsBlocked = BfIsBlocked,
+ CAE_ValidAttrSubmask = 1
+} BfEnTvRat_Attributes_CAE_TV;
+
+typedef enum
+{
+ CAF_IsBlocked = BfIsBlocked,
+ CAF_ValidAttrSubmask = 1
+} BfEnTvRat_Attributes_CAF_TV;
+
+
+[
+ object,
+ uuid(C5C5C5B0-3ABC-11D6-B25B-00C04FA0C026),
+ dual,
+ pointer_default(unique)
+]
+interface IXDSToRat : IDispatch
+{
+ [id(1)]
+ HRESULT Init();
+ [id(2)]
+ HRESULT ParseXDSBytePair([in] BYTE byte1, [in] BYTE byte2, [out] EnTvRat_System *pEnSystem, [out] EnTvRat_GenericLevel *pEnLevel, [out] LONG *plBfEnAttributes);
+};
+
+
+[
+ object,
+ uuid(C5C5C5B1-3ABC-11D6-B25B-00C04FA0C026),
+ dual,
+ pointer_default(unique)
+]
+interface IEvalRat : IDispatch
+{
+ [propget, id(1)]
+ HRESULT BlockedRatingAttributes([in] EnTvRat_System enSystem, [in] EnTvRat_GenericLevel enLevel, [out, retval] LONG *plbfAttrs);
+ [propput, id(1)]
+ HRESULT BlockedRatingAttributes([in] EnTvRat_System enSystem, [in] EnTvRat_GenericLevel enLevel, [in] LONG lbfAttrs);
+ [propget, id(2)]
+ HRESULT BlockUnRated([out, retval] BOOL *pfBlockUnRatedShows);
+ [propput, id(2)]
+ HRESULT BlockUnRated([in] BOOL fBlockUnRatedShows);
+ [id(3)]
+ HRESULT MostRestrictiveRating([in] EnTvRat_System enSystem1, [in] EnTvRat_GenericLevel enEnLevel1, [in] LONG lbfEnAttr1, [in] EnTvRat_System enSystem2, [in] EnTvRat_GenericLevel enEnLevel2, [in] LONG lbfEnAttr2, [out] EnTvRat_System *penSystem, [out] EnTvRat_GenericLevel *penEnLevel, [out] LONG *plbfEnAttr);
+ [id(4)]
+ HRESULT TestRating([in] EnTvRat_System enShowSystem, [in] EnTvRat_GenericLevel enShowLevel, [in] LONG lbfEnShowAttributes);
+
+};
+
+[uuid(C5C5C500-3ABC-11D6-B25B-00C04FA0C026)]
+library TVRATINGSLib
+{
+ importlib("stdole32.tlb");
+ importlib("stdole2.tlb");
+
+ [uuid(C5C5C5F0-3ABC-11D6-B25B-00C04FA0C026)]
+ coclass XDSToRat
+ {
+ [default] interface IXDSToRat;
+ };
+ [uuid(C5C5C5F1-3ABC-11D6-B25B-00C04FA0C026)]
+ coclass EvalRat
+ {
+ [default] interface IEvalRat;
+ };
+};
+