Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
13cdc8af
Commit
13cdc8af
authored
Nov 20, 2023
by
Rémi Bernon
Committed by
Alexandre Julliard
Nov 22, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mfplat: Only convert MEDIASUBTYPE for the formats which need it.
parent
947d7af0
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
77 additions
and
23 deletions
+77
-23
mediatype.c
dlls/mfplat/mediatype.c
+26
-22
mfplat.c
dlls/mfplat/tests/mfplat.c
+51
-1
No files found.
dlls/mfplat/mediatype.c
View file @
13cdc8af
...
...
@@ -31,6 +31,10 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
mfplat
);
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_RGB1
,
D3DFMT_A1
);
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_RGB4
,
MAKEFOURCC
(
'4'
,
'P'
,
'x'
,
'x'
));
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_ARGB1555
,
D3DFMT_A1R5G5B5
);
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_ARGB4444
,
D3DFMT_A4R4G4B4
);
/* SDK MFVideoFormat_A2R10G10B10 uses D3DFMT_A2B10G10R10, let's name it the other way */
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_A2B10G10R10
,
D3DFMT_A2R10G10B10
);
...
...
@@ -3605,31 +3609,31 @@ static HRESULT mf_get_stride_for_bitmap_info_header(DWORD fourcc, const BITMAPIN
static
const
GUID
*
get_mf_subtype_for_am_subtype
(
const
GUID
*
subtype
)
{
static
const
GUID
null
;
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_RGB1
))
return
&
MFVideoFormat_RGB1
;
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_RGB4
))
return
&
MFVideoFormat_RGB4
;
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_RGB8
))
return
&
MFVideoFormat_RGB8
;
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_RGB555
))
return
&
MFVideoFormat_RGB555
;
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_RGB565
))
return
&
MFVideoFormat_RGB565
;
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_RGB24
))
return
&
MFVideoFormat_RGB24
;
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_RGB32
))
return
&
MFVideoFormat_RGB32
;
else
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_ARGB32
))
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_ARGB1555
))
return
&
MFVideoFormat_ARGB1555
;
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_ARGB4444
))
return
&
MFVideoFormat_ARGB4444
;
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_ARGB32
))
return
&
MFVideoFormat_ARGB32
;
else
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_I420
))
return
&
MFVideoFormat_I420
;
else
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_AYUV
))
return
&
MFVideoFormat_AYUV
;
else
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_YV12
))
return
&
MFVideoFormat_YV12
;
else
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_YUY2
))
return
&
MFVideoFormat_YUY2
;
else
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_UYVY
))
return
&
MFVideoFormat_UYVY
;
else
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_YVYU
))
return
&
MFVideoFormat_YVYU
;
else
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_NV12
))
return
&
MFVideoFormat_NV12
;
else
{
FIXME
(
"Unknown subtype %s.
\n
"
,
debugstr_guid
(
subtype
));
return
&
null
;
}
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_A2R10G10B10
))
return
&
MFVideoFormat_A2B10G10R10
;
if
(
IsEqualGUID
(
subtype
,
&
MEDIASUBTYPE_A2B10G10R10
))
return
&
MFVideoFormat_A2R10G10B10
;
return
subtype
;
}
/***********************************************************************
...
...
dlls/mfplat/tests/mfplat.c
View file @
13cdc8af
...
...
@@ -66,14 +66,38 @@ DEFINE_GUID(DUMMY_GUID3, 0x12345678,0x1234,0x1234,0x23,0x23,0x23,0x23,0x23,0x23,
extern
const
CLSID
CLSID_FileSchemePlugin
;
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_Base
,
0
);
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_RGB1
,
D3DFMT_A1
);
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_RGB4
,
MAKEFOURCC
(
'4'
,
'P'
,
'x'
,
'x'
));
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_ARGB1555
,
D3DFMT_A1R5G5B5
);
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_ARGB4444
,
D3DFMT_A4R4G4B4
);
/* SDK MFVideoFormat_A2R10G10B10 uses D3DFMT_A2B10G10R10, let's name it the other way */
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_A2B10G10R10
,
D3DFMT_A2R10G10B10
);
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_h264
,
MAKEFOURCC
(
'h'
,
'2'
,
'6'
,
'4'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_MP3
,
WAVE_FORMAT_MPEGLAYER3
);
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_IMC1
,
MAKEFOURCC
(
'I'
,
'M'
,
'C'
,
'1'
));
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_IMC2
,
MAKEFOURCC
(
'I'
,
'M'
,
'C'
,
'2'
));
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_IMC3
,
MAKEFOURCC
(
'I'
,
'M'
,
'C'
,
'3'
));
DEFINE_MEDIATYPE_GUID
(
MFVideoFormat_IMC4
,
MAKEFOURCC
(
'I'
,
'M'
,
'C'
,
'4'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_AVC1
,
MAKEFOURCC
(
'A'
,
'V'
,
'C'
,
'1'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_MP42
,
MAKEFOURCC
(
'M'
,
'P'
,
'4'
,
'2'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_mp42
,
MAKEFOURCC
(
'm'
,
'p'
,
'4'
,
'2'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_MPG4
,
MAKEFOURCC
(
'M'
,
'P'
,
'G'
,
'4'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_mpg4
,
MAKEFOURCC
(
'm'
,
'p'
,
'g'
,
'4'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_P422
,
MAKEFOURCC
(
'P'
,
'4'
,
'2'
,
'2'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_wmva
,
MAKEFOURCC
(
'w'
,
'm'
,
'v'
,
'a'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_WMVB
,
MAKEFOURCC
(
'W'
,
'M'
,
'V'
,
'B'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_wmvb
,
MAKEFOURCC
(
'w'
,
'm'
,
'v'
,
'b'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_wmvp
,
MAKEFOURCC
(
'w'
,
'm'
,
'v'
,
'p'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_wmvr
,
MAKEFOURCC
(
'w'
,
'm'
,
'v'
,
'r'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_wvp2
,
MAKEFOURCC
(
'w'
,
'v'
,
'p'
,
'2'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_X264
,
MAKEFOURCC
(
'X'
,
'2'
,
'6'
,
'4'
));
DEFINE_MEDIATYPE_GUID
(
MEDIASUBTYPE_x264
,
MAKEFOURCC
(
'x'
,
'2'
,
'6'
,
'4'
));
static
BOOL
is_win8_plus
;
#define EXPECT_REF(obj,ref) _expect_ref((IUnknown*)obj, ref, __LINE__)
...
...
@@ -9868,6 +9892,22 @@ static void test_MFInitMediaTypeFromAMMediaType(void)
const
GUID
*
mf_type
;
}
guid_types
[]
=
{
/* these RGB formats are converted, MEDIASUBTYPE variant isn't
* defined using DEFINE_MEDIATYPE_GUID */
{
&
MEDIASUBTYPE_RGB1
,
&
MFVideoFormat_RGB1
},
{
&
MEDIASUBTYPE_RGB4
,
&
MFVideoFormat_RGB4
},
{
&
MEDIASUBTYPE_RGB8
,
&
MFVideoFormat_RGB8
},
{
&
MEDIASUBTYPE_RGB555
,
&
MFVideoFormat_RGB555
},
{
&
MEDIASUBTYPE_RGB565
,
&
MFVideoFormat_RGB565
},
{
&
MEDIASUBTYPE_RGB24
,
&
MFVideoFormat_RGB24
},
{
&
MEDIASUBTYPE_RGB32
,
&
MFVideoFormat_RGB32
},
{
&
MEDIASUBTYPE_ARGB1555
,
&
MFVideoFormat_ARGB1555
},
{
&
MEDIASUBTYPE_ARGB4444
,
&
MFVideoFormat_ARGB4444
},
{
&
MEDIASUBTYPE_ARGB32
,
&
MFVideoFormat_ARGB32
},
{
&
MEDIASUBTYPE_A2R10G10B10
,
&
MFVideoFormat_A2B10G10R10
},
{
&
MEDIASUBTYPE_A2B10G10R10
,
&
MFVideoFormat_A2R10G10B10
},
/* any other GUID is passed through */
{
&
MEDIASUBTYPE_I420
,
&
MFVideoFormat_I420
},
{
&
MEDIASUBTYPE_AYUV
,
&
MFVideoFormat_AYUV
},
{
&
MEDIASUBTYPE_YV12
,
&
MFVideoFormat_YV12
},
...
...
@@ -9875,7 +9915,15 @@ static void test_MFInitMediaTypeFromAMMediaType(void)
{
&
MEDIASUBTYPE_UYVY
,
&
MFVideoFormat_UYVY
},
{
&
MEDIASUBTYPE_YVYU
,
&
MFVideoFormat_YVYU
},
{
&
MEDIASUBTYPE_NV12
,
&
MFVideoFormat_NV12
},
{
&
MEDIASUBTYPE_ARGB32
,
&
MFVideoFormat_ARGB32
},
/* even formats that don't exist in MF */
{
&
DUMMY_GUID3
,
&
DUMMY_GUID3
},
{
&
MEDIASUBTYPE_NV24
,
&
MEDIASUBTYPE_NV24
},
{
&
MEDIASUBTYPE_P208
,
&
MEDIASUBTYPE_P208
},
/* if the mapping is ambiguous, it is not corrected */
{
&
MEDIASUBTYPE_h264
,
&
MEDIASUBTYPE_h264
},
{
&
MEDIASUBTYPE_H264
,
&
MFVideoFormat_H264
},
};
unsigned
int
i
;
...
...
@@ -9999,6 +10047,7 @@ static void test_MFInitMediaTypeFromAMMediaType(void)
vih
.
bmiHeader
.
biHeight
=
24
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
guid_types
);
++
i
)
{
winetest_push_context
(
"%s"
,
debugstr_guid
(
guid_types
[
i
].
am_type
));
memcpy
(
&
mt
.
subtype
,
guid_types
[
i
].
am_type
,
sizeof
(
GUID
));
hr
=
MFInitMediaTypeFromAMMediaType
(
media_type
,
&
mt
);
...
...
@@ -10010,6 +10059,7 @@ static void test_MFInitMediaTypeFromAMMediaType(void)
hr
=
IMFMediaType_GetGUID
(
media_type
,
&
MF_MT_SUBTYPE
,
&
guid
);
ok
(
hr
==
S_OK
,
"Unexpected hr %#lx.
\n
"
,
hr
);
ok
(
IsEqualGUID
(
&
guid
,
guid_types
[
i
].
mf_type
),
"Unexpected guid %s.
\n
"
,
debugstr_guid
(
&
guid
));
winetest_pop_context
();
}
IMFMediaType_Release
(
media_type
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment