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
cad99811
Commit
cad99811
authored
Feb 11, 2006
by
Dmitry Timoshkov
Committed by
Alexandre Julliard
Feb 11, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msvfw32: Call codec's Configure dialog if the codec supports it.
Disable data rate and key frame fields if requested.
parent
46f4894d
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
84 additions
and
25 deletions
+84
-25
msvideo_main.c
dlls/msvideo/msvideo_main.c
+80
-25
msvideo_private.h
dlls/msvideo/msvideo_private.h
+4
-0
No files found.
dlls/msvideo/msvideo_main.c
View file @
cad99811
...
...
@@ -705,7 +705,13 @@ struct choose_compressor
COMPVARS
cv
;
};
static
BOOL
enum_compressors
(
HWND
list
,
COMPVARS
*
pcv
)
struct
codec_info
{
HIC
hic
;
ICINFO
icinfo
;
};
static
BOOL
enum_compressors
(
HWND
list
,
COMPVARS
*
pcv
,
BOOL
enum_all
)
{
UINT
id
,
total
=
0
;
ICINFO
icinfo
;
...
...
@@ -714,7 +720,7 @@ static BOOL enum_compressors(HWND list, COMPVARS *pcv)
while
(
ICInfo
(
pcv
->
fccType
,
id
,
&
icinfo
))
{
ICINFO
*
ic
;
struct
codec_info
*
ic
;
DWORD
idx
;
HIC
hic
;
...
...
@@ -729,7 +735,7 @@ static BOOL enum_compressors(HWND list, COMPVARS *pcv)
*/
DWORD
fccHandler
=
icinfo
.
fccHandler
;
if
(
pcv
->
lpbiIn
)
if
(
!
enum_all
&&
pcv
->
lpbiIn
)
{
if
(
ICCompressQuery
(
hic
,
pcv
->
lpbiIn
,
NULL
)
!=
ICERR_OK
)
{
...
...
@@ -742,12 +748,12 @@ static BOOL enum_compressors(HWND list, COMPVARS *pcv)
ICGetInfo
(
hic
,
&
icinfo
,
sizeof
(
icinfo
));
icinfo
.
fccHandler
=
fccHandler
;
ICClose
(
hic
);
idx
=
SendMessageW
(
list
,
CB_ADDSTRING
,
0
,
(
LPARAM
)
icinfo
.
szDescription
);
ic
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
ICINFO
));
*
ic
=
icinfo
;
ic
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
struct
codec_info
));
memcpy
(
&
ic
->
icinfo
,
&
icinfo
,
sizeof
(
ICINFO
));
ic
->
hic
=
hic
;
SendMessageW
(
list
,
CB_SETITEMDATA
,
idx
,
(
LPARAM
)
ic
);
}
total
++
;
...
...
@@ -762,22 +768,32 @@ static INT_PTR CALLBACK icm_choose_compressor_dlgproc(HWND hdlg, UINT msg, WPARA
{
case
WM_INITDIALOG
:
{
ICINFO
*
ic
;
struct
codec_info
*
ic
;
WCHAR
buf
[
128
];
struct
choose_compressor
*
choose_comp
=
(
struct
choose_compressor
*
)
lparam
;
if
(
choose_comp
->
title
)
SetWindowTextA
(
hdlg
,
choose_comp
->
title
);
if
(
!
(
choose_comp
->
flags
&
ICMF_CHOOSE_DATARATE
))
EnableWindow
(
GetDlgItem
(
hdlg
,
IDC_DATARATE
),
FALSE
);
if
(
!
(
choose_comp
->
flags
&
ICMF_CHOOSE_KEYFRAME
))
EnableWindow
(
GetDlgItem
(
hdlg
,
IDC_KEYFRAME
),
FALSE
);
/*if (!(choose_comp->flags & ICMF_CHOOSE_PREVIEW))
EnableWindow(GetDlgItem(hdlg, IDC_PREVIEW), FALSE);*/
LoadStringW
(
MSVFW32_hModule
,
IDS_FULLFRAMES
,
buf
,
128
);
SendDlgItemMessageW
(
hdlg
,
IDC_COMP_LIST
,
CB_ADDSTRING
,
0
,
(
LPARAM
)
buf
);
ic
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
ICINFO
));
ic
->
fccType
=
streamtypeVIDEO
;
ic
->
fccHandler
=
comptypeDIB
;
ic
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
struct
codec_info
));
ic
->
icinfo
.
fccType
=
streamtypeVIDEO
;
ic
->
icinfo
.
fccHandler
=
comptypeDIB
;
ic
->
hic
=
0
;
SendDlgItemMessageW
(
hdlg
,
IDC_COMP_LIST
,
CB_SETITEMDATA
,
0
,
(
LPARAM
)
ic
);
enum_compressors
(
GetDlgItem
(
hdlg
,
IDC_COMP_LIST
),
&
choose_comp
->
cv
);
enum_compressors
(
GetDlgItem
(
hdlg
,
IDC_COMP_LIST
),
&
choose_comp
->
cv
,
choose_comp
->
flags
&
ICMF_CHOOSE_ALLCOMPRESSORS
);
SendDlgItemMessageW
(
hdlg
,
IDC_COMP_LIST
,
CB_SETCURSEL
,
0
,
0
);
SetFocus
(
GetDlgItem
(
hdlg
,
IDC_COMP_LIST
));
...
...
@@ -789,28 +805,64 @@ static INT_PTR CALLBACK icm_choose_compressor_dlgproc(HWND hdlg, UINT msg, WPARA
case
WM_COMMAND
:
switch
(
LOWORD
(
wparam
))
{
case
IDC_COMP_LIST
:
{
INT
cur_sel
;
struct
codec_info
*
ic
;
BOOL
enable
=
FALSE
;
if
(
HIWORD
(
wparam
!=
CBN_SELCHANGE
))
break
;
cur_sel
=
SendMessageW
((
HWND
)
lparam
,
CB_GETCURSEL
,
0
,
0
);
ic
=
(
struct
codec_info
*
)
SendMessageW
((
HWND
)
lparam
,
CB_GETITEMDATA
,
cur_sel
,
0
);
if
(
ic
&&
ic
->
hic
)
{
if
(
ICQueryConfigure
(
ic
->
hic
)
==
DRVCNF_OK
)
enable
=
TRUE
;
}
EnableWindow
(
GetDlgItem
(
hdlg
,
IDC_CONFIGURE
),
enable
);
break
;
}
case
IDC_CONFIGURE
:
{
HWND
list
=
GetDlgItem
(
hdlg
,
IDC_COMP_LIST
);
INT
cur_sel
;
struct
codec_info
*
ic
;
if
(
HIWORD
(
wparam
!=
BN_CLICKED
))
break
;
cur_sel
=
SendMessageW
(
list
,
CB_GETCURSEL
,
0
,
0
);
ic
=
(
struct
codec_info
*
)
SendMessageW
(
list
,
CB_GETITEMDATA
,
cur_sel
,
0
);
if
(
ic
&&
ic
->
hic
)
ICConfigure
(
ic
->
hic
,
hdlg
);
break
;
}
case
IDOK
:
{
HWND
list
=
GetDlgItem
(
hdlg
,
IDC_COMP_LIST
);
INT
cur_sel
;
ICINFO
*
ic
;
struct
codec_info
*
ic
;
cur_sel
=
SendMessageW
(
list
,
CB_GETCURSEL
,
0
,
0
);
ic
=
(
ICINFO
*
)
SendMessageW
(
list
,
CB_GETITEMDATA
,
cur_sel
,
0
);
ic
=
(
struct
codec_info
*
)
SendMessageW
(
list
,
CB_GETITEMDATA
,
cur_sel
,
0
);
if
(
ic
)
{
struct
choose_compressor
*
choose_comp
=
(
struct
choose_compressor
*
)
GetWindowLongPtrW
(
hdlg
,
DWLP_USER
);
if
(
ic
->
fccHandler
!=
comptypeDIB
)
choose_comp
->
cv
.
hic
=
ICOpen
(
ic
->
fccType
,
ic
->
fccHandler
,
ICMODE_COMPRESS
);
choose_comp
->
cv
.
hic
=
ic
->
hic
;
choose_comp
->
cv
.
fccType
=
ic
->
icinfo
.
fccType
;
choose_comp
->
cv
.
fccHandler
=
ic
->
icinfo
.
fccHandler
;
/* FIXME: fill everything else */
if
(
ic
->
fccHandler
==
comptypeDIB
||
choose_comp
->
cv
.
hic
)
{
choose_comp
->
cv
.
fccType
=
ic
->
fccType
;
choose_comp
->
cv
.
fccHandler
=
ic
->
fccHandler
;
choose_comp
->
cv
.
hic
=
ICOpen
(
ic
->
fccType
,
ic
->
fccHandler
,
ICMODE_COMPRESS
);
/* FIXME: fill everything else */
}
/* prevent closing the codec handle below */
ic
->
hic
=
0
;
}
}
/* fall through */
...
...
@@ -821,11 +873,14 @@ static INT_PTR CALLBACK icm_choose_compressor_dlgproc(HWND hdlg, UINT msg, WPARA
while
(
1
)
{
LRESULT
ret
=
SendMessageW
(
list
,
CB_GETITEMDATA
,
idx
++
,
0
);
struct
codec_info
*
ic
;
ic
=
(
struct
codec_info
*
)
SendMessageW
(
list
,
CB_GETITEMDATA
,
idx
++
,
0
);
if
(
!
ret
||
ret
==
CB_ERR
)
break
;
if
(
!
ic
||
(
LONG_PTR
)
ic
==
CB_ERR
)
break
;
HeapFree
(
GetProcessHeap
(),
0
,
(
void
*
)
ret
);
if
(
ic
->
hic
)
ICClose
(
ic
->
hic
);
HeapFree
(
GetProcessHeap
(),
0
,
ic
);
}
EndDialog
(
hdlg
,
LOWORD
(
wparam
)
==
IDOK
);
...
...
dlls/msvideo/msvideo_private.h
View file @
cad99811
...
...
@@ -57,4 +57,8 @@ extern LRESULT (CALLBACK *pFnCallTo16)(HDRVR, HIC, UINT, LPARAM, LPARAM);
#define HDRAWDIB_16(h32) (LOWORD(h32))
#define HIC_16(h32) (LOWORD(h32))
#define IDC_CONFIGURE 882
#define IDC_KEYFRAME 888
#define IDC_DATARATE 895
#endif
/* __WINE_MSVIDEO_PRIVATE_H */
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