ReactOS 0.4.15-dev-7924-g5949c20
qedit.idl
Go to the documentation of this file.
1/*
2 * Copyright (C) 2008 Google (Lei Zhang)
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19import "oaidl.idl";
20import "ocidl.idl";
21/* import "dxtrans.idl"; */
22import "amstream.idl";
23import "msxml.idl";
24
25[
26 object,
27 uuid(0579154A-2B53-4994-B0D0-E773148EFF85),
28 local,
30]
32{
34 double SampleTime,
35 IMediaSample * pSample
36 );
38 double SampleTime,
39 BYTE * pBuffer,
40 LONG BufferLen
41 );
42}
43
44[
45 object,
46 uuid(6B652FFF-11FE-4fce-92AD-0266B5D7C78F),
47 local,
49]
51{
53 BOOL OneShot
54 );
55
57 const AM_MEDIA_TYPE * pType
58 );
59
61 AM_MEDIA_TYPE * pType
62 );
63
65 BOOL BufferThem
66 );
67
70 [out] LONG * pBuffer
71 );
72
74 [out] IMediaSample ** ppSample
75 );
76
79 LONG WhichMethodToCallback
80 );
81};
82
83[
84 object,
85 uuid(65bd0710-24d2-4FF7-9324-ed2e5d3abafa),
87]
89{
91 [out] IUnknown* *pVal
92 );
93
95 IUnknown* newVal
96 );
97
99 [out] LONG *pVal
100 );
101
103 [out] LONG *pVal
104 );
105
107 LONG newVal
108 );
109
111 [out] GUID *pVal
112 );
113
115 [out] BSTR *pVal
116 );
117
119 [out] double *pVal
120 );
121
123 [out] BSTR *pVal
124 );
125
127 BSTR newVal
128 );
129
131 double StreamTime,
133 char * pBuffer,
134 LONG Width,
136 );
137
139 double StreamTime,
140 LONG Width,
141 LONG Height,
143 );
144
146 [out] AM_MEDIA_TYPE * pVal
147 );
148
150 [out] ISampleGrabber ** ppVal
151 );
152
154 [out] double *pVal
155 );
156
158 double SeekTime
159 );
160};
161
162[
163 uuid(65BD0711-24D2-4ff7-9324-ED2E5D3ABAFA),
164]
165coclass MediaDet
166{
167 [default] interface IMediaDet;
168};
169
170[
171 object,
172 uuid(288581E0-66CE-11d2-918F-00C0DF10D434),
173 odl,
175]
177{
179 BSTR input,
180 BSTR filter,
181 BSTR * output,
182 long flags
183 );
184
186 BSTR dir
187 );
188};
189
190typedef struct
191{
196
197typedef struct
198{
203
204[
205 object,
206 uuid(AE9472BD-B0C3-11D2-8D24-00A0C9441E20),
208]
210{
212 [in] IUnknown * pxml
213 );
214
216 [out] char * xml,
217 [in] int size,
218 [out] int * printed,
219 [in] int indent
220 );
221
223 [out] IPropertySetter ** setter,
225 [in] REFERENCE_TIME stop
226 );
227
231 );
232
234 [out] LONG * params,
237 );
238
240 [in] LONG params,
243 );
244
246
248 [out] LONG * size,
249 [out] BYTE ** blob
250 );
251
253 [in] LONG size,
254 [in] BYTE * blob
255 );
256
258 [in] IUnknown * target,
260 );
261};
262
263[
264 object,
265 uuid(E43E73A2-0EFA-11d3-9601-00A0C9441E20),
266 odl,
268]
270{
272 long severity,
273 BSTR error_str,
274 long error_code,
275 long hresult,
276 [in] VARIANT * extra
277 );
278};
279
280[
281 object,
282 uuid(963566DA-BE21-4eaf-88E9-35704F8F52A1),
283 odl,
285]
287{
288 [propget] HRESULT ErrorLog(
289 [out, retval] IAMErrorLog ** log
290 );
291
292 [propput] HRESULT ErrorLog(
293 [in] IAMErrorLog * log
294 );
295};
296
297interface IAMTimeline;
298interface IAMTimelineGroup;
299interface IAMTimelineObj;
300interface IAMTimelineSrc;
301
302typedef enum
303{
311
312[
313 object,
314 uuid(78530B74-61F9-11D2-8CAD-00A024580902),
315 odl,
317]
319{
323 );
324
327 );
328
331 );
332
335 long index
336 );
337
339 long * count
340 );
341
343
345 long * mode
346 );
347
349 long mode
350 );
351
354 );
355
357 BOOL * enabled
358 );
359
362 );
363
365 BOOL * enabled
366 );
367
370 REFERENCE_TIME stop
371 );
372
374 REFERENCE_TIME * duration
375 );
376
378 double * duration
379 );
380
382 double fps
383 );
384
386 double * fps
387 );
388
390 BOOL * dirty
391 );
392
395 REFERENCE_TIME * stop
396 );
397
399 long group,
400 long * value,
401 long * value_with_comps,
403 );
404
406 long flags,
407 IMediaLocator * override,
408 LONG_PTR notify_event
409 );
410
412 GUID * guid
413 );
414
416 GUID * guid
417 );
418
420 GUID * guid
421 );
422
424 GUID * guid
425 );
426
428 BSTR guidb
429 );
430
432 [out,retval] BSTR * guidb
433 );
434
436 BSTR guidb
437 );
438
440 [out,retval] BSTR * guidb
441 );
442};
443
444[
445 uuid(78530B75-61F9-11D2-8CAD-00A024580902)
446]
447coclass AMTimeline
448{
449 [default] interface IAMTimeline;
450 interface IPersistStream;
451 interface IAMSetErrorLog;
452};
453
454[
455 object,
456 uuid(9EED4F00-B8A6-11d2-8023-00C0DF10D434),
457 odl,
459]
461{
463 IAMTimeline * timeline
464 );
465
467 [out] IAMTimeline ** timeline
468 );
469
471 long * priority
472 );
473
476 );
477
479 [in] AM_MEDIA_TYPE *
480 );
481
483 double fps
484 );
485
487 double * fps
488 );
489
491 BSTR name
492 );
493
495 [out,retval] BSTR * name
496 );
497
500 );
501
503 BOOL * preview
504 );
505
507 [in] long type
508 );
509
511 [out] int * buffer
512 );
513
515 [in] int buffer
516 );
517
519 long * format
520 );
521
523 long ** format
524 );
525
527 BOOL * set
528 );
529
531 BOOL * dirty
532 );
533
535
538 );
539};
540
541[
542 object,
543 local,
544 uuid(78530B77-61F9-11D2-8CAD-00A024580902),
545 odl,
547]
549{
552 REFERENCE_TIME * stop
553 );
554
556 REFTIME * start, REFTIME * stop
557 );
558
561 );
562
564 REFTIME * start, REFTIME * stop
565 );
566
569 REFERENCE_TIME stop
570 );
571
574 REFTIME stop
575 );
576
578 [out,retval] IPropertySetter ** setter
579 );
580
582 IPropertySetter * setter
583 );
584
586 [out,retval] IUnknown ** obj
587 );
588
590 IUnknown * obj
591 );
592
594 GUID guid
595 );
596
598 BSTR guidb
599 );
600
602 GUID * guid
603 );
604
606 [out,retval] BSTR * guidb
607 );
608
610 BOOL * loaded
611 );
612
615 );
616
619 );
620
622 long * id
623 );
624
626 long id
627 );
628
630 long * id
631 );
632
634 [out,retval] BSTR * name
635 );
636
638 BSTR name
639 );
640
642 BYTE * data,
643 long * size
644 );
645
647 BYTE * data,
648 long size
649 );
650
652 BOOL * muted
653 );
654
656 BOOL muted
657 );
658
660 BOOL * locked
661 );
662
664 BOOL locked
665 );
666
669 REFERENCE_TIME * stop
670 );
671
673 REFTIME * start,
674 REFTIME * stop
675 );
676
679 REFERENCE_TIME stop
680 );
681
684 REFTIME stop
685 );
686
688
690
692
694 IAMTimeline ** timeline
695 );
696
699 );
700
702 long * depth
703 );
704};
705
706[
707 object,
708 uuid(78530B79-61F9-11D2-8CAD-00A024580902),
709 odl,
711]
713{
716 REFERENCE_TIME * stop
717 );
718
720 REFTIME * start,
721 REFTIME * stop
722 );
723
725 REFERENCE_TIME stop
726 );
727
729 REFTIME stop
730 );
731
734 REFERENCE_TIME * stop
735 );
736
738 REFTIME * start,
739 REFTIME * stop
740 );
741
745 );
746
750 );
751
754 );
755
758 );
759
762 );
763
766 );
767
769 [out,retval] BSTR * name
770 );
771
773 BSTR name
774 );
775
778 );
779
781 long * num
782 );
783
785 long num
786 );
787
789 BOOL * normal
790 );
791
793 double * fps
794 );
795
797 double fps
798 );
799
801 int * mode
802 );
803
805 int mode
806 );
807};
808
809enum
810{
811 E_NOTINTREE = 0x80040400,
814 E_NOTDETERMINED = 0x80040403,
815 E_NO_TIMELINE = 0x80040404,
816 S_WARN_OUTPUTRESET = 40404
unsigned int dir
Definition: maze.c:112
DOUBLE REFTIME
Definition: axcore.idl:57
static previewinfo preview
Definition: print.c:56
Definition: ehthrow.cxx:93
coclass PSFactoryBuffer pointer_default(unique)] interface ObjectRpcBaseTypes
Definition: dcom.idl:35
#define FE(x)
static const WCHAR indent[]
Definition: object.c:1156
OLECHAR * BSTR
Definition: compat.h:2293
LONGLONG REFERENCE_TIME
Definition: dmusicks.h:9
r dirty
Definition: btrfs.c:3004
IN PVCB IN PBCB OUT PDIRENT IN USHORT IN POEM_STRING Filename
Definition: fatprocs.h:939
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
time_t now
Definition: finger.c:65
#define local
Definition: zutil.h:30
_Must_inspect_result_ _In_ ULONG _Out_writes_bytes_ pBufferSize PVOID _Inout_ PULONG pBufferSize
Definition: fsrtlfuncs.h:1165
FxPnpStateCallbackInfo * pCallback
GLuint start
Definition: gl.h:1545
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
GLsizeiptr size
Definition: glext.h:5919
GLenum GLenum GLsizei const GLuint GLboolean enabled
Definition: glext.h:7750
GLuint buffer
Definition: glext.h:5915
GLuint index
Definition: glext.h:6031
GLenum mode
Definition: glext.h:6217
GLenum const GLfloat * params
Definition: glext.h:5645
GLuint in
Definition: glext.h:9616
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: glext.h:7005
GLbitfield flags
Definition: glext.h:7161
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
GLboolean GLuint group
Definition: glext.h:11120
GLenum GLenum severity
Definition: glext.h:7750
GLuint GLuint num
Definition: glext.h:9618
GLfloat param
Definition: glext.h:5796
GLenum GLenum GLenum input
Definition: glext.h:9031
GLenum target
Definition: glext.h:7315
@ extra
Definition: id3.c:95
HRESULT LogError(long severity, BSTR error_str, long error_code, long hresult, [in] VARIANT *extra)
IAMErrorLog ErrorLog
HRESULT IsSmartRecompressFormatSet(BOOL *set)
HRESULT GetOutputBuffering([out] int *buffer)
HRESULT SetRecompFormatFromSource(IAMTimelineSrc *source)
HRESULT GetTimeline([out] IAMTimeline **timeline)
HRESULT SetTimeline(IAMTimeline *timeline)
HRESULT SetGroupName(BSTR name)
HRESULT ClearRecompressFormatDirty()
HRESULT GetOutputFPS(double *fps)
HRESULT SetPreviewMode(BOOL preview)
HRESULT GetGroupName([out, retval] BSTR *name)
HRESULT GetSmartRecompressFormat(long **format)
HRESULT SetSmartRecompressFormat(long *format)
HRESULT SetMediaType([in] AM_MEDIA_TYPE *)
HRESULT IsRecompressFormatDirty(BOOL *dirty)
HRESULT SetMediaTypeForVB([in] long type)
HRESULT GetMediaType([out] AM_MEDIA_TYPE *)
HRESULT GetPriority(long *priority)
HRESULT SetOutputBuffering([in] int buffer)
HRESULT SetOutputFPS(double fps)
HRESULT GetPreviewMode(BOOL *preview)
HRESULT GetPropertySetter([out, retval] IPropertySetter **setter)
HRESULT GetDirtyRange(REFERENCE_TIME *start, REFERENCE_TIME *stop)
HRESULT SetTimelineType(TIMELINE_MAJOR_TYPE type)
HRESULT ClearDirty()
HRESULT SetDirtyRange2(REFTIME start, REFTIME stop)
HRESULT Remove()
HRESULT GetDirtyRange2(REFTIME *start, REFTIME *stop)
HRESULT SetStartStop2(REFTIME start, REFTIME stop)
HRESULT GetMuted(BOOL *muted)
HRESULT GetSubObject([out, retval] IUnknown **obj)
HRESULT GetSubObjectLoaded(BOOL *loaded)
HRESULT SetUserID(long id)
HRESULT RemoveAll()
HRESULT GetGroupIBelongTo([out] IAMTimelineGroup **group)
HRESULT GetTimelineNoRef(IAMTimeline **timeline)
HRESULT GetTimelineType(TIMELINE_MAJOR_TYPE *type)
HRESULT GetUserName([out, retval] BSTR *name)
HRESULT GetGenID(long *id)
HRESULT SetPropertySetter(IPropertySetter *setter)
HRESULT FixTimes2(REFTIME *start, REFTIME *stop)
HRESULT SetMuted(BOOL muted)
HRESULT SetUserData(BYTE *data, long size)
HRESULT FixTimes(REFERENCE_TIME *start, REFERENCE_TIME *stop)
HRESULT SetUserName(BSTR name)
HRESULT SetSubObject(IUnknown *obj)
HRESULT GetSubObjectGUIDB([out, retval] BSTR *guidb)
HRESULT SetSubObjectGUID(GUID guid)
HRESULT GetUserID(long *id)
HRESULT GetUserData(BYTE *data, long *size)
HRESULT SetLocked(BOOL locked)
HRESULT GetEmbedDepth(long *depth)
HRESULT GetStartStop2(REFTIME *start, REFTIME *stop)
HRESULT SetDirtyRange(REFERENCE_TIME start, REFERENCE_TIME stop)
HRESULT GetSubObjectGUID(GUID *guid)
HRESULT SetSubObjectGUIDB(BSTR guidb)
HRESULT GetLocked(BOOL *locked)
HRESULT GetStartStop(REFERENCE_TIME *start, REFERENCE_TIME *stop)
HRESULT SetStartStop(REFERENCE_TIME start, REFERENCE_TIME stop)
HRESULT SetMediaLength2(REFTIME length)
HRESULT SetMediaTimes2(REFTIME Start, REFTIME Stop)
HRESULT SetMediaTimes(REFERENCE_TIME Start, REFERENCE_TIME Stop)
HRESULT FixMediaTimes2(REFTIME *start, REFTIME *stop)
HRESULT SetMediaLength(REFERENCE_TIME length)
HRESULT GetMediaLength(REFERENCE_TIME *length)
HRESULT SetDefaultFPS(double fps)
HRESULT GetStretchMode(int *mode)
HRESULT GetMediaTimes(REFERENCE_TIME *start, REFERENCE_TIME *stop)
HRESULT SetStreamNumber(long num)
HRESULT ModifyStopTime2(REFTIME stop)
HRESULT GetStreamNumber(long *num)
HRESULT SetMediaName(BSTR name)
HRESULT IsNormalRate(BOOL *normal)
HRESULT FixMediaTimes(REFERENCE_TIME *start, REFERENCE_TIME *stop)
HRESULT SpliceWithNext(IAMTimelineObj *next)
HRESULT ModifyStopTime(REFERENCE_TIME stop)
HRESULT GetMediaTimes2(REFTIME *start, REFTIME *stop)
HRESULT GetMediaName([out, retval] BSTR *name)
HRESULT SetStretchMode(int mode)
HRESULT GetDefaultFPS(double *fps)
HRESULT GetMediaLength2(REFTIME *length)
HRESULT SetDefaultEffect(GUID *guid)
HRESULT EnableTransitions(BOOL enabled)
HRESULT GetDefaultEffectB([out, retval] BSTR *guidb)
HRESULT GetDefaultTransitionB([out, retval] BSTR *guidb)
HRESULT GetDefaultEffect(GUID *guid)
HRESULT GetInsertMode(long *mode)
HRESULT ValidateSourceNames(long flags, IMediaLocator *override, LONG_PTR notify_event)
HRESULT SetInsertMode(long mode)
HRESULT TransitionsEnabled(BOOL *enabled)
HRESULT RemGroupFromList(IAMTimelineObj *group)
HRESULT GetCountOfType(long group, long *value, long *value_with_comps, TIMELINE_MAJOR_TYPE type)
HRESULT CreateEmptyNode([out] IAMTimelineObj **obj, TIMELINE_MAJOR_TYPE type)
HRESULT SetDefaultFPS(double fps)
HRESULT GetDuration2(double *duration)
HRESULT GetDirtyRange(REFERENCE_TIME *start, REFERENCE_TIME *stop)
HRESULT AddGroup(IAMTimelineObj *group)
HRESULT SetDefaultTransitionB(BSTR guidb)
HRESULT IsDirty(BOOL *dirty)
HRESULT GetDefaultTransition(GUID *guid)
HRESULT SetInterestRange(REFERENCE_TIME start, REFERENCE_TIME stop)
HRESULT GetGroup([out] IAMTimelineObj **group, long index)
HRESULT GetDuration(REFERENCE_TIME *duration)
HRESULT SetDefaultEffectB(BSTR guidb)
HRESULT EnableEffects(BOOL enabled)
HRESULT EffectsEnabled(BOOL *enabled)
HRESULT GetDefaultFPS(double *fps)
HRESULT ClearAllGroups()
HRESULT SetDefaultTransition(GUID *guid)
HRESULT GetGroupCount(long *count)
HRESULT WriteBitmapBits(double StreamTime, LONG Width, LONG Height, BSTR Filename)
HRESULT EnterBitmapGrabMode(double SeekTime)
HRESULT get_Filename([out] BSTR *pVal)
HRESULT get_CurrentStream([out] LONG *pVal)
HRESULT get_StreamMediaType([out] AM_MEDIA_TYPE *pVal)
HRESULT get_StreamLength([out] double *pVal)
HRESULT get_OutputStreams([out] LONG *pVal)
HRESULT GetBitmapBits(double StreamTime, LONG *pBufferSize, char *pBuffer, LONG Width, LONG Height)
HRESULT put_Filter(IUnknown *newVal)
HRESULT put_CurrentStream(LONG newVal)
HRESULT GetSampleGrabber([out] ISampleGrabber **ppVal)
HRESULT get_Filter([out] IUnknown **pVal)
HRESULT get_StreamType([out] GUID *pVal)
HRESULT put_Filename(BSTR newVal)
HRESULT get_StreamTypeB([out] BSTR *pVal)
HRESULT get_FrameRate([out] double *pVal)
HRESULT FindMediaFile(BSTR input, BSTR filter, BSTR *output, long flags)
HRESULT AddFoundLocation(BSTR dir)
HRESULT AddProp([in] DEXTER_PARAM param, [in] DEXTER_VALUE *value)
HRESULT LoadFromBlob([in] LONG size, [in] BYTE *blob)
HRESULT FreeProps([in] LONG params, [in] DEXTER_PARAM *param, [in] DEXTER_VALUE *value)
HRESULT SaveToBlob([out] LONG *size, [out] BYTE **blob)
HRESULT SetProps([in] IUnknown *target, [in] REFERENCE_TIME now)
HRESULT GetProps([out] LONG *params, [out] DEXTER_PARAM **param, [out] DEXTER_VALUE **value)
HRESULT LoadXML([in] IUnknown *pxml)
HRESULT CloneProps([out] IPropertySetter **setter, [in] REFERENCE_TIME start, [in] REFERENCE_TIME stop)
HRESULT PrintXML([out] char *xml, [in] int size, [out] int *printed, [in] int indent)
HRESULT ClearProps()
HRESULT SampleCB(double SampleTime, IMediaSample *pSample)
HRESULT BufferCB(double SampleTime, BYTE *pBuffer, LONG BufferLen)
HRESULT GetCurrentSample([out] IMediaSample **ppSample)
HRESULT SetCallback(ISampleGrabberCB *pCallback, LONG WhichMethodToCallback)
HRESULT SetMediaType(const AM_MEDIA_TYPE *pType)
HRESULT GetCurrentBuffer([in, out] LONG *pBufferSize, [out] LONG *pBuffer)
HRESULT SetOneShot(BOOL OneShot)
HRESULT SetBufferSamples(BOOL BufferThem)
HRESULT GetConnectedMediaType(AM_MEDIA_TYPE *pType)
Definition: msctf.idl:550
_In_opt_ PVOID _Out_ BOOLEAN * Stop
Definition: ldrtypes.h:241
const GUID * guid
BOOL loaded
Definition: xmlview.c:54
static VARIANTARG static DISPID
Definition: ordinal.c:52
static int priority
Definition: timer.c:163
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
coclass TestTypelib::Coclass3 odl
@ normal
Definition: optimize.h:166
long LONG
Definition: pedump.c:60
@ S_WARN_OUTPUTRESET
Definition: qedit.idl:816
@ E_NOTDETERMINED
Definition: qedit.idl:814
@ E_NO_TIMELINE
Definition: qedit.idl:815
@ E_NOTINTREE
Definition: qedit.idl:811
@ E_RENDER_ENGINE_IS_BROKEN
Definition: qedit.idl:812
@ E_MUST_INIT_RENDERER
Definition: qedit.idl:813
TIMELINE_MAJOR_TYPE
Definition: qedit.idl:303
@ TIMELINE_MAJOR_TYPE_EFFECT
Definition: qedit.idl:308
@ TIMELINE_MAJOR_TYPE_TRANSITION
Definition: qedit.idl:307
@ TIMELINE_MAJOR_TYPE_COMPOSITE
Definition: qedit.idl:304
@ TIMELINE_MAJOR_TYPE_SOURCE
Definition: qedit.idl:306
@ TIMELINE_MAJOR_TYPE_GROUP
Definition: qedit.idl:309
@ TIMELINE_MAJOR_TYPE_TRACK
Definition: qedit.idl:305
static unsigned __int64 next
Definition: rand_nt.c:6
PVOID pBuffer
static FILE * out
Definition: regtests2xml.c:44
#define F(x, y, z)
Definition: md5.c:51
#define log(outFile, fmt,...)
Definition: util.h:15
LONG nValues
Definition: qedit.idl:194
BSTR name
Definition: qedit.idl:192
DISPID dispID
Definition: qedit.idl:193
VARIANT v
Definition: qedit.idl:199
REFERENCE_TIME rt
Definition: qedit.idl:200
DWORD dwInterp
Definition: qedit.idl:201
Definition: image.c:134
Definition: name.c:39
Definition: pdh_main.c:94
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
Definition: font.h:89
_In_ HFONT _Out_ PUINT Height
Definition: font.h:88
@ Start
Definition: partlist.h:33
static int error_code[8]
Definition: odbccp32.c:61
unsigned char BYTE
Definition: xxhash.c:193