annotate libmpcodecs/ve_vfw.c @ 24131:30028bbcb9e8

Use a single select() for both key and slave input Previous code used two separate select() calls one after another, so that whenever it was running select() on one set of fds events in the other set would go unnoticed until later. Now there's a single select() which allows reacting immediately to any input source. The behavior of the new code differs somewhat from the old; for example multiple fds that stay readable are no longer handled in a round-robin fashion and the total amount the process sleeps can differ. Some tuning might be required later.
author uau
date Sat, 25 Aug 2007 04:28:11 +0000
parents d07cc034ed66
children 6a8be4b73d07
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
1 #include <stdio.h>
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
2 #include <stdlib.h>
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
3 #include <string.h>
7238
6f44ed6c4568 FreeBSD fix
nexus
parents: 7231
diff changeset
4 #include <unistd.h>
8585
27da710563c2 the long-waited MUXER layer, and new MPEG-PS muxer
arpi
parents: 8123
diff changeset
5 #include <inttypes.h>
22252
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
6 #include <sys/stat.h>
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
7
17012
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 15212
diff changeset
8 #include "config.h"
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
9
17012
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 15212
diff changeset
10 #include "mp_msg.h"
18004
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
11 #include "help_mp.h"
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
12
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
13 #include "codec-cfg.h"
22600
3c2b4a866c6a Add explicit location for headers from the stream/ directory.
diego
parents: 22577
diff changeset
14 //#include "stream/stream.h"
22601
ed8f90096c65 Add explicit location for headers from the libmpdemux/ directory.
diego
parents: 22600
diff changeset
15 //#include "libmpdemux/demuxer.h"
ed8f90096c65 Add explicit location for headers from the libmpdemux/ directory.
diego
parents: 22600
diff changeset
16 //#include "libmpdemux/stheader.h"
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
17
22577
a033e5519802 Include loader/ prefix in #include path everywhere.
diego
parents: 22252
diff changeset
18 #include "loader/loader.h"
a033e5519802 Include loader/ prefix in #include path everywhere.
diego
parents: 22252
diff changeset
19 //#include "loader/wine/mmreg.h"
a033e5519802 Include loader/ prefix in #include path everywhere.
diego
parents: 22252
diff changeset
20 #include "loader/wine/vfw.h"
a033e5519802 Include loader/ prefix in #include path everywhere.
diego
parents: 22252
diff changeset
21 #include "loader/wine/avifmt.h"
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
22
5607
1972c3475d93 mp_image.h and img_format.h moved to libmpcodecs
arpi
parents: 5565
diff changeset
23 #include "img_format.h"
1972c3475d93 mp_image.h and img_format.h moved to libmpcodecs
arpi
parents: 5565
diff changeset
24 #include "mp_image.h"
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
25 #include "vf.h"
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
26
22600
3c2b4a866c6a Add explicit location for headers from the stream/ directory.
diego
parents: 22577
diff changeset
27 #include "stream/stream.h"
22601
ed8f90096c65 Add explicit location for headers from the libmpdemux/ directory.
diego
parents: 22600
diff changeset
28 #include "libmpdemux/muxer.h"
8585
27da710563c2 the long-waited MUXER layer, and new MPEG-PS muxer
arpi
parents: 8123
diff changeset
29
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
30 //===========================================================================//
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
31
6083
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
32 static char *vfw_param_codec = NULL;
22252
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
33 static char *vfw_param_compdata = NULL;
6083
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
34
10594
57bdcdb061d7 Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents: 9014
diff changeset
35 #include "m_option.h"
6083
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
36
10594
57bdcdb061d7 Removed the historic cfgparser and switched full to the new config parser (altought some macros still remain for compatibility). As a side effect 90% of the warning messages are gone from the core. Things should be cleaner now and less confusing for newbies.
alex
parents: 9014
diff changeset
37 m_option_t vfwopts_conf[]={
6083
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
38 {"codec", &vfw_param_codec, CONF_TYPE_STRING, 0, 0, 0, NULL},
22252
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
39 {"compdata", &vfw_param_compdata, CONF_TYPE_STRING, 0, 0, 0, NULL},
6083
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
40 {NULL, NULL, 0, 0, 0, 0, NULL}
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
41 };
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
42
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
43 struct vf_priv_s {
8585
27da710563c2 the long-waited MUXER layer, and new MPEG-PS muxer
arpi
parents: 8123
diff changeset
44 muxer_stream_t* mux;
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
45 BITMAPINFOHEADER* bih;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
46 };
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
47
7557
f296ff05bcd0 warning fixes
arpi
parents: 7390
diff changeset
48 static HIC encoder_hic;
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
49 static void* encoder_buf=NULL;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
50 static int encoder_buf_size=0;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
51 static int encoder_frameno=0;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
52
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
53 //int init_vfw_encoder(char *dll_name, BITMAPINFOHEADER *input_bih, BITMAPINFOHEADER *output_bih)
22252
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
54 static BITMAPINFOHEADER* vfw_open_encoder(char *dll_name, char *compdatafile, BITMAPINFOHEADER *input_bih,unsigned int out_fourcc)
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
55 {
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
56 HRESULT ret;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
57 BITMAPINFOHEADER* output_bih=NULL;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
58 int temp_len;
22252
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
59 FILE *fd=NULL;
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
60 char *drvdata=NULL;
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
61 struct stat st;
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
62
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
63 //sh_video = malloc(sizeof(sh_video_t));
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
64
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
65 mp_msg(MSGT_WIN32,MSGL_V,"======= Win32 (VFW) VIDEO Encoder init =======\n");
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
66
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
67 // memset(&sh_video->o_bih, 0, sizeof(BITMAPINFOHEADER));
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
68 // output_bih->biSize = sizeof(BITMAPINFOHEADER);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
69
7390
2357ee501582 fixed to comply with new loader
alex
parents: 7368
diff changeset
70 // encoder_hic = ICOpen( 0x63646976, out_fourcc, ICMODE_COMPRESS);
7557
f296ff05bcd0 warning fixes
arpi
parents: 7390
diff changeset
71 encoder_hic = ICOpen( (long) dll_name, out_fourcc, ICMODE_COMPRESS);
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
72 if(!encoder_hic){
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
73 mp_msg(MSGT_WIN32,MSGL_ERR,"ICOpen failed! unknown codec / wrong parameters?\n");
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
74 return NULL;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
75 }
18004
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
76 mp_msg(MSGT_WIN32,MSGL_INFO,"HIC: %x\n", encoder_hic);
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
77
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
78 #if 1
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
79 {
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
80 ICINFO icinfo;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
81
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
82 ret = ICGetInfo(encoder_hic, &icinfo, sizeof(ICINFO));
18004
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
83 mp_msg(MSGT_WIN32,MSGL_INFO,"%ld - %ld - %d\n", ret, icinfo.dwSize, sizeof(ICINFO));
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
84 mp_msg(MSGT_WIN32,MSGL_INFO,MSGTR_MPCODECS_CompressorType, icinfo.fccType);
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
85 mp_msg(MSGT_WIN32,MSGL_INFO,MSGTR_MPCODECS_CompressorSubtype, icinfo.fccHandler);
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
86 mp_msg(MSGT_WIN32,MSGL_INFO,MSGTR_MPCODECS_CompressorFlags,
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
87 icinfo.dwFlags, icinfo.dwVersion, icinfo.dwVersionICM);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
88 //printf("Compressor name: %s\n", icinfo.szName);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
89 //printf("Compressor description: %s\n", icinfo.szDescription);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
90
18004
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
91 mp_msg(MSGT_WIN32,MSGL_INFO,MSGTR_MPCODECS_Flags);
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
92 if (icinfo.dwFlags & VIDCF_QUALITY)
18004
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
93 mp_msg(MSGT_WIN32,MSGL_INFO,MSGTR_MPCODECS_Quality);
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
94 if (icinfo.dwFlags & VIDCF_FASTTEMPORALD)
18004
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
95 mp_msg(MSGT_WIN32,MSGL_INFO," fast-decompr");
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
96 if (icinfo.dwFlags & VIDCF_QUALITYTIME)
18004
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
97 mp_msg(MSGT_WIN32,MSGL_INFO," temp-quality");
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
98 mp_msg(MSGT_WIN32,MSGL_INFO,"\n");
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
99 }
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
100 #endif
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
101
22252
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
102 if(compdatafile){
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
103 if (!strncmp(compdatafile, "dialog", 6)){
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
104 if (ICSendMessage(encoder_hic, ICM_CONFIGURE, -1, 0) != ICERR_OK){
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
105 mp_msg(MSGT_WIN32,MSGL_ERR,"Compressor doesn't have a configure dialog!\n");
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
106 return NULL;
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
107 }
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
108 if (ICSendMessage(encoder_hic, ICM_CONFIGURE, 0, 0) != ICERR_OK){
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
109 mp_msg(MSGT_WIN32,MSGL_ERR,"Compressor configure dialog failed!\n");
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
110 return NULL;
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
111 }
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
112 }
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
113 else {
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
114 if (stat(compdatafile, &st) < 0){
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
115 mp_msg(MSGT_WIN32,MSGL_ERR,"Compressor data file not found!\n");
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
116 return NULL;
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
117 }
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
118 fd = fopen(compdatafile, "rb");
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
119 if (!fd){
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
120 mp_msg(MSGT_WIN32,MSGL_ERR,"Cannot open Compressor data file!\n");
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
121 return NULL;
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
122 }
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
123 drvdata = (char *) malloc(st.st_size);
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
124 if (fread(drvdata, st.st_size, 1, fd) != 1) {
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
125 mp_msg(MSGT_WIN32,MSGL_ERR,"Cannot read Compressor data file!\n");
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
126 fclose(fd);
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
127 free(drvdata);
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
128 return NULL;
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
129 }
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
130 fclose(fd);
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
131 mp_msg(MSGT_WIN32,MSGL_ERR,"Compressor data %d bytes\n", st.st_size);
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
132 if (!(temp_len = (unsigned int) ICSendMessage(encoder_hic, ICM_SETSTATE, (LPARAM) drvdata, (int) st.st_size))){
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
133 mp_msg(MSGT_WIN32,MSGL_ERR,"ICSetState failed!\n");
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
134 free(drvdata);
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
135 return NULL;
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
136 }
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
137 free(drvdata);
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
138 mp_msg(MSGT_WIN32,MSGL_INFO,"ICSetState ret: %d\n", temp_len);
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
139 }
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
140 }
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
141
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
142 temp_len = ICCompressGetFormatSize(encoder_hic, input_bih);
18004
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
143 mp_msg(MSGT_WIN32,MSGL_INFO,"ICCompressGetFormatSize ret: %d\n", temp_len);
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
144
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
145 if (temp_len < sizeof(BITMAPINFOHEADER)) temp_len=sizeof(BITMAPINFOHEADER);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
146
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
147 output_bih = malloc(temp_len+4);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
148 memset(output_bih,0,temp_len);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
149 output_bih->biSize = temp_len; //sizeof(BITMAPINFOHEADER);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
150
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
151 return output_bih;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
152 }
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
153
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
154 static int vfw_start_encoder(BITMAPINFOHEADER *input_bih, BITMAPINFOHEADER *output_bih){
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
155 HRESULT ret;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
156 int temp_len=output_bih->biSize;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
157 int i;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
158
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
159 ret = ICCompressGetFormat(encoder_hic, input_bih, output_bih);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
160 if(ret < 0){
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
161 unsigned char* temp=(unsigned char*)output_bih;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
162 mp_msg(MSGT_WIN32,MSGL_ERR,"ICCompressGetFormat failed: Error %d (0x%X)\n", (int)ret, (int)ret);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
163 for (i=0; i < temp_len; i++) mp_msg(MSGT_WIN32, MSGL_DBG2, "%02x ", temp[i]);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
164 return 0;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
165 }
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
166 mp_msg(MSGT_WIN32,MSGL_V,"ICCompressGetFormat OK\n");
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
167
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
168 if (temp_len > sizeof(BITMAPINFOHEADER))
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
169 {
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
170 unsigned char* temp=(unsigned char*)output_bih;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
171 mp_msg(MSGT_WIN32, MSGL_V, "Extra info in o_bih (%d bytes)!\n",
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
172 temp_len-sizeof(BITMAPINFOHEADER));
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
173 for(i=sizeof(output_bih);i<temp_len;i++) mp_msg(MSGT_WIN32, MSGL_DBG2, "%02X ",temp[i]);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
174 }
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
175
17969
843e0427b5b9 Change 'if(verbose)' to the more appropriate mp_msg_test.
diego
parents: 17906
diff changeset
176 // if( mp_msg_test(MSGT_WIN32,MSGL_V) ) {
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
177 printf("Starting compression:\n");
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
178 printf(" Input format:\n");
8123
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7557
diff changeset
179 printf(" biSize %d\n", input_bih->biSize);
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7557
diff changeset
180 printf(" biWidth %d\n", input_bih->biWidth);
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7557
diff changeset
181 printf(" biHeight %d\n", input_bih->biHeight);
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
182 printf(" biPlanes %d\n", input_bih->biPlanes);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
183 printf(" biBitCount %d\n", input_bih->biBitCount);
8123
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7557
diff changeset
184 printf(" biCompression 0x%x ('%.4s')\n", input_bih->biCompression, (char *)&input_bih->biCompression);
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7557
diff changeset
185 printf(" biSizeImage %d\n", input_bih->biSizeImage);
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
186 printf(" Output format:\n");
8123
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7557
diff changeset
187 printf(" biSize %d\n", output_bih->biSize);
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7557
diff changeset
188 printf(" biWidth %d\n", output_bih->biWidth);
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7557
diff changeset
189 printf(" biHeight %d\n", output_bih->biHeight);
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
190 printf(" biPlanes %d\n", output_bih->biPlanes);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
191 printf(" biBitCount %d\n", output_bih->biBitCount);
8123
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7557
diff changeset
192 printf(" biCompression 0x%x ('%.4s')\n", output_bih->biCompression, (char *)&output_bih->biCompression);
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7557
diff changeset
193 printf(" biSizeImage %d\n", output_bih->biSizeImage);
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
194 // }
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
195
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
196 output_bih->biWidth=input_bih->biWidth;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
197 output_bih->biHeight=input_bih->biHeight;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
198
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
199 ret = ICCompressQuery(encoder_hic, input_bih, output_bih);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
200 if(ret){
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
201 mp_msg(MSGT_WIN32,MSGL_ERR,"ICCompressQuery failed: Error %d\n", (int)ret);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
202 return 0;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
203 } else
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
204 mp_msg(MSGT_WIN32,MSGL_V,"ICCompressQuery OK\n");
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
205
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
206 ret = ICCompressBegin(encoder_hic, input_bih, output_bih);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
207 if(ret){
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
208 mp_msg(MSGT_WIN32,MSGL_ERR,"ICCompressBegin failed: Error %d\n", (int)ret);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
209 // return 0;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
210 } else
18004
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
211 mp_msg(MSGT_WIN32,MSGL_V,"ICCompressBegin OK\n");
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
212 mp_msg(MSGT_WIN32,MSGL_INFO," Output format after query/begin:\n");
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
213 mp_msg(MSGT_WIN32,MSGL_INFO," biSize %d\n", output_bih->biSize);
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
214 mp_msg(MSGT_WIN32,MSGL_INFO," biWidth %d\n", output_bih->biWidth);
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
215 mp_msg(MSGT_WIN32,MSGL_INFO," biHeight %d\n", output_bih->biHeight);
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
216 mp_msg(MSGT_WIN32,MSGL_INFO," biPlanes %d\n", output_bih->biPlanes);
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
217 mp_msg(MSGT_WIN32,MSGL_INFO," biBitCount %d\n", output_bih->biBitCount);
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
218 mp_msg(MSGT_WIN32,MSGL_INFO," biCompression 0x%x ('%.4s')\n", output_bih->biCompression, (char *)&output_bih->biCompression);
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
219 mp_msg(MSGT_WIN32,MSGL_INFO," biSizeImage %d\n", output_bih->biSizeImage);
7231
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
220
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
221 encoder_buf_size=input_bih->biSizeImage;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
222 encoder_buf=malloc(encoder_buf_size);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
223 encoder_frameno=0;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
224
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
225 mp_msg(MSGT_WIN32,MSGL_V,"VIDEO CODEC Init OK!!! ;-)\n");
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
226 return 1;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
227 }
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
228
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
229 static int vfw_encode_frame(BITMAPINFOHEADER* biOutput,void* OutBuf,
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
230 BITMAPINFOHEADER* biInput,void* Image,
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
231 long* keyframe, int quality){
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
232 HRESULT ret;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
233
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
234 //long VFWAPIV ICCompress(
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
235 // HIC hic,long dwFlags,LPBITMAPINFOHEADER lpbiOutput,void* lpOutputBuf,
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
236 // LPBITMAPINFOHEADER lpbiInput,void* lpImage,long* lpckid,
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
237 // long* lpdwFlags,long lFrameNum,long dwFrameSize,long dwQuality,
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
238 // LPBITMAPINFOHEADER lpbiInputPrev,void* lpImagePrev
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
239 //);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
240
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
241 // printf("vfw_encode_frame(%p,%p, %p,%p, %p,%d)\n",biOutput,OutBuf,biInput,Image,keyframe,quality);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
242
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
243 ret=ICCompress(encoder_hic, 0,
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
244 biOutput, OutBuf,
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
245 biInput, Image,
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
246 NULL, keyframe, encoder_frameno, 0, quality,
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
247 biInput, encoder_buf);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
248
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
249 // printf("ok. size=%d\n",biOutput->biSizeImage);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
250
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
251 memcpy(encoder_buf,Image,encoder_buf_size);
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
252 ++encoder_frameno;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
253
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
254 return (int)ret;
1e84415320d8 merged with dll_init.c
alex
parents: 7127
diff changeset
255 }
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
256 #define mux_v (vf->priv->mux)
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
257 #define vfw_bih (vf->priv->bih)
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
258
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
259 static int config(struct vf_instance_s* vf,
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
260 int width, int height, int d_width, int d_height,
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
261 unsigned int flags, unsigned int outfmt){
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
262
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
263 vfw_bih->biWidth=width;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
264 vfw_bih->biHeight=height;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
265 vfw_bih->biSizeImage=width*height*((vfw_bih->biBitCount+7)/8);
12061
656a1b45b309 Use aspect from encoder for AVI vprp header
ranma
parents: 10594
diff changeset
266 mux_v->aspect = (float)d_width/d_height;
5551
73978162b6a1 soem fixes
arpi
parents: 5550
diff changeset
267
73978162b6a1 soem fixes
arpi
parents: 5550
diff changeset
268 if(!vfw_start_encoder(vfw_bih, mux_v->bih)) return 0;
73978162b6a1 soem fixes
arpi
parents: 5550
diff changeset
269
73978162b6a1 soem fixes
arpi
parents: 5550
diff changeset
270 // mux_v->bih->biWidth=width;
73978162b6a1 soem fixes
arpi
parents: 5550
diff changeset
271 // mux_v->bih->biHeight=height;
73978162b6a1 soem fixes
arpi
parents: 5550
diff changeset
272 // mux_v->bih->biSizeImage=width*height*((mux_v->bih->biBitCount+7)/8);
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
273
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
274 return 1;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
275 }
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
276
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
277 static int control(struct vf_instance_s* vf, int request, void* data){
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
278
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
279 return CONTROL_UNKNOWN;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
280 }
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
281
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
282 static int query_format(struct vf_instance_s* vf, unsigned int fmt){
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 14878
diff changeset
283 if(fmt==IMGFMT_BGR24) return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_FLIPPED;
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
284 return 0;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
285 }
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
286
17906
20aca9baf5d8 passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents: 17487
diff changeset
287 static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts){
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
288 long flags=0;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
289 int ret;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
290 // flip_upside_down(vo_image_ptr,vo_image_ptr,3*vo_w,vo_h); // dirty hack
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
291 ret=vfw_encode_frame(mux_v->bih, mux_v->buffer, vfw_bih, mpi->planes[0], &flags, 10000);
22252
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
292 // if (ret != ICERR_OK)
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
293 // return 0;
17906
20aca9baf5d8 passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents: 17487
diff changeset
294 muxer_write_chunk(mux_v,mux_v->bih->biSizeImage,flags, pts, pts);
7368
a894e99c1e51 changing return type of put_image void->int
arpi
parents: 7238
diff changeset
295 return 1;
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
296 }
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
297
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
298 //===========================================================================//
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
299
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
300 static int vf_open(vf_instance_t *vf, char* args){
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
301 vf->config=config;
14878
5723c4b2a2ea fixes for encoding of multiple files
henry
parents: 14549
diff changeset
302 vf->default_caps=VFCAP_CONSTANT;
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
303 vf->control=control;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
304 vf->query_format=query_format;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
305 vf->put_image=put_image;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
306 vf->priv=malloc(sizeof(struct vf_priv_s));
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
307 memset(vf->priv,0,sizeof(struct vf_priv_s));
8585
27da710563c2 the long-waited MUXER layer, and new MPEG-PS muxer
arpi
parents: 8123
diff changeset
308 vf->priv->mux=(muxer_stream_t*)args;
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
309
14549
acf3241be19b Initialized BITMAPINFOHEADER to 0 to avoid problems, esp. windows has problems
reimar
parents: 12061
diff changeset
310 vfw_bih=calloc(1, sizeof(BITMAPINFOHEADER));
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
311 vfw_bih->biSize=sizeof(BITMAPINFOHEADER);
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
312 vfw_bih->biWidth=0; // FIXME ?
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
313 vfw_bih->biHeight=0;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
314 vfw_bih->biPlanes=1;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
315 vfw_bih->biBitCount=24;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
316 vfw_bih->biCompression=0;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
317 // vfw_bih->biSizeImage=vo_w*vo_h*((vfw_bih->biBitCount+7)/8);
6083
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
318
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
319 if (!vfw_param_codec)
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
320 {
18004
bcd805923554 Part2 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu with LOTS of modifications by me
reynaldo
parents: 17969
diff changeset
321 mp_msg(MSGT_WIN32,MSGL_WARN, MSGTR_MPCODECS_NoVfwCodecSpecified);
6083
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
322 return 0;
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
323 }
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
324 // mux_v->bih=vfw_open_encoder("divxc32.dll",vfw_bih,mmioFOURCC('D', 'I', 'V', '3'));
6083
6aa4fc282fc7 added support for codec selection
alex
parents: 5607
diff changeset
325 // mux_v->bih=vfw_open_encoder("AvidAVICodec.dll",vfw_bih, 0);
22252
c5a591c4a372 Controllable quality setting of VFW enconding, through the dumped state of the dialog box. Patch by Gianluigi Tiesi
alex
parents: 21660
diff changeset
326 mux_v->bih = vfw_open_encoder(vfw_param_codec, vfw_param_compdata, vfw_bih, 0);
5550
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
327 if(!mux_v->bih) return 0;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
328
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
329 return 1;
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
330 }
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
331
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
332 vf_info_t ve_info_vfw = {
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
333 "Win32/VfW encoders",
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
334 "vfw",
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
335 "A'rpi",
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
336 "for internal use by mencoder",
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
337 vf_open
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
338 };
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
339
7d1dfb59c6c0 encoders
arpi
parents:
diff changeset
340 //===========================================================================//