qedit.idl 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  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. import "oaidl.idl";
  19. import "ocidl.idl";
  20. /* import "dxtrans.idl"; */
  21. import "amstream.idl";
  22. import "msxml.idl";
  23. [
  24. object,
  25. uuid(0579154A-2B53-4994-B0D0-E773148EFF85),
  26. local,
  27. pointer_default(unique)
  28. ]
  29. interface ISampleGrabberCB : IUnknown
  30. {
  31. HRESULT SampleCB(
  32. double SampleTime,
  33. IMediaSample * pSample
  34. );
  35. HRESULT BufferCB(
  36. double SampleTime,
  37. BYTE * pBuffer,
  38. LONG BufferLen
  39. );
  40. }
  41. [
  42. object,
  43. uuid(6B652FFF-11FE-4fce-92AD-0266B5D7C78F),
  44. local,
  45. pointer_default(unique)
  46. ]
  47. interface ISampleGrabber: IUnknown
  48. {
  49. HRESULT SetOneShot(
  50. BOOL OneShot
  51. );
  52. HRESULT SetMediaType(
  53. const AM_MEDIA_TYPE * pType
  54. );
  55. HRESULT GetConnectedMediaType(
  56. AM_MEDIA_TYPE * pType
  57. );
  58. HRESULT SetBufferSamples(
  59. BOOL BufferThem
  60. );
  61. HRESULT GetCurrentBuffer(
  62. [in,out] LONG * pBufferSize,
  63. [out] LONG * pBuffer
  64. );
  65. HRESULT GetCurrentSample(
  66. [out] IMediaSample ** ppSample
  67. );
  68. HRESULT SetCallback(
  69. ISampleGrabberCB * pCallback,
  70. LONG WhichMethodToCallback
  71. );
  72. }
  73. [
  74. object,
  75. uuid(65bd0710-24d2-4FF7-9324-ed2e5d3abafa),
  76. pointer_default(unique)
  77. ]
  78. interface IMediaDet : IUnknown
  79. {
  80. HRESULT get_Filter(
  81. [out] IUnknown* *pVal
  82. );
  83. HRESULT put_Filter(
  84. IUnknown* newVal
  85. );
  86. HRESULT get_OutputStreams(
  87. [out] LONG *pVal
  88. );
  89. HRESULT get_CurrentStream(
  90. [out] LONG *pVal
  91. );
  92. HRESULT put_CurrentStream(
  93. LONG newVal
  94. );
  95. HRESULT get_StreamType(
  96. [out] GUID *pVal
  97. );
  98. HRESULT get_StreamTypeB(
  99. [out] BSTR *pVal
  100. );
  101. HRESULT get_StreamLength(
  102. [out] double *pVal
  103. );
  104. HRESULT get_Filename(
  105. [out] BSTR *pVal
  106. );
  107. HRESULT put_Filename(
  108. BSTR newVal
  109. );
  110. HRESULT GetBitmapBits(
  111. double StreamTime,
  112. LONG * pBufferSize,
  113. char * pBuffer,
  114. LONG Width,
  115. LONG Height
  116. );
  117. HRESULT WriteBitmapBits(
  118. double StreamTime,
  119. LONG Width,
  120. LONG Height,
  121. BSTR Filename
  122. );
  123. HRESULT get_StreamMediaType(
  124. [out] AM_MEDIA_TYPE * pVal
  125. );
  126. HRESULT GetSampleGrabber(
  127. [out] ISampleGrabber ** ppVal
  128. );
  129. HRESULT get_FrameRate(
  130. [out] double *pVal
  131. );
  132. HRESULT EnterBitmapGrabMode(
  133. double SeekTime
  134. );
  135. }
  136. [
  137. uuid(65BD0711-24D2-4ff7-9324-ED2E5D3ABAFA),
  138. ]
  139. coclass MediaDet
  140. {
  141. [default] interface IMediaDet;
  142. }
  143. [
  144. object,
  145. uuid(288581E0-66CE-11d2-918F-00C0DF10D434),
  146. odl,
  147. pointer_default(unique)
  148. ]
  149. interface IMediaLocator : IUnknown
  150. {
  151. HRESULT FindMediaFile(
  152. BSTR input,
  153. BSTR filter,
  154. BSTR * output,
  155. long flags
  156. );
  157. HRESULT AddFoundLocation(
  158. BSTR dir
  159. );
  160. }
  161. typedef struct
  162. {
  163. BSTR name;
  164. DISPID dispID;
  165. LONG nValues;
  166. } DEXTER_PARAM;
  167. typedef struct
  168. {
  169. VARIANT v;
  170. REFERENCE_TIME rt;
  171. DWORD dwInterp;
  172. } DEXTER_VALUE;
  173. [
  174. object,
  175. uuid(AE9472BD-B0C3-11D2-8D24-00A0C9441E20),
  176. pointer_default(unique)
  177. ]
  178. interface IPropertySetter : IUnknown
  179. {
  180. HRESULT LoadXML(
  181. [in] IUnknown * pxml
  182. );
  183. HRESULT PrintXML(
  184. [out] char * xml,
  185. [in] int size,
  186. [out] int * printed,
  187. [in] int indent
  188. );
  189. HRESULT CloneProps(
  190. [out] IPropertySetter ** setter,
  191. [in] REFERENCE_TIME start,
  192. [in] REFERENCE_TIME stop
  193. );
  194. HRESULT AddProp(
  195. [in] DEXTER_PARAM param,
  196. [in] DEXTER_VALUE * value
  197. );
  198. HRESULT GetProps(
  199. [out] LONG * params,
  200. [out] DEXTER_PARAM ** param,
  201. [out] DEXTER_VALUE ** value
  202. );
  203. HRESULT FreeProps(
  204. [in] LONG params,
  205. [in] DEXTER_PARAM * param,
  206. [in] DEXTER_VALUE * value
  207. );
  208. HRESULT ClearProps();
  209. HRESULT SaveToBlob(
  210. [out] LONG * size,
  211. [out] BYTE ** blob
  212. );
  213. HRESULT LoadFromBlob(
  214. [in] LONG size,
  215. [in] BYTE * blob
  216. );
  217. HRESULT SetProps(
  218. [in] IUnknown * target,
  219. [in] REFERENCE_TIME now
  220. );
  221. }
  222. [
  223. object,
  224. uuid(E43E73A2-0EFA-11d3-9601-00A0C9441E20),
  225. odl,
  226. pointer_default(unique)
  227. ]
  228. interface IAMErrorLog : IUnknown
  229. {
  230. HRESULT LogError(
  231. long severity,
  232. BSTR error_str,
  233. long error_code,
  234. long hresult,
  235. [in] VARIANT * extra
  236. );
  237. }
  238. [
  239. object,
  240. uuid(963566DA-BE21-4eaf-88E9-35704F8F52A1),
  241. odl,
  242. pointer_default(unique)
  243. ]
  244. interface IAMSetErrorLog : IUnknown
  245. {
  246. [propget] HRESULT ErrorLog(
  247. [out, retval] IAMErrorLog ** log
  248. );
  249. [propput] HRESULT ErrorLog(
  250. [in] IAMErrorLog * log
  251. );
  252. }
  253. interface IAMTimeline;
  254. interface IAMTimelineGroup;
  255. interface IAMTimelineObj;
  256. interface IAMTimelineSrc;
  257. typedef enum
  258. {
  259. TIMELINE_MAJOR_TYPE_COMPOSITE = 1,
  260. TIMELINE_MAJOR_TYPE_TRACK = 2,
  261. TIMELINE_MAJOR_TYPE_SOURCE = 4,
  262. TIMELINE_MAJOR_TYPE_TRANSITION = 8,
  263. TIMELINE_MAJOR_TYPE_EFFECT = 16,
  264. TIMELINE_MAJOR_TYPE_GROUP = 128
  265. } TIMELINE_MAJOR_TYPE;
  266. [
  267. object,
  268. uuid(78530B74-61F9-11D2-8CAD-00A024580902),
  269. odl,
  270. pointer_default(unique)
  271. ]
  272. interface IAMTimeline : IUnknown
  273. {
  274. HRESULT CreateEmptyNode(
  275. [out] IAMTimelineObj ** obj,
  276. TIMELINE_MAJOR_TYPE type
  277. );
  278. HRESULT AddGroup(
  279. IAMTimelineObj * group
  280. );
  281. HRESULT RemGroupFromList(
  282. IAMTimelineObj * group
  283. );
  284. HRESULT GetGroup(
  285. [out] IAMTimelineObj ** group,
  286. long index
  287. );
  288. HRESULT GetGroupCount(
  289. long * count
  290. );
  291. HRESULT ClearAllGroups();
  292. HRESULT GetInsertMode(
  293. long * mode
  294. );
  295. HRESULT SetInsertMode(
  296. long mode
  297. );
  298. HRESULT EnableTransitions(
  299. BOOL enabled
  300. );
  301. HRESULT TransitionsEnabled(
  302. BOOL * enabled
  303. );
  304. HRESULT EnableEffects(
  305. BOOL enabled
  306. );
  307. HRESULT EffectsEnabled(
  308. BOOL * enabled
  309. );
  310. HRESULT SetInterestRange(
  311. REFERENCE_TIME start,
  312. REFERENCE_TIME stop
  313. );
  314. HRESULT GetDuration(
  315. REFERENCE_TIME * duration
  316. );
  317. HRESULT GetDuration2(
  318. double * duration
  319. );
  320. HRESULT SetDefaultFPS(
  321. double fps
  322. );
  323. HRESULT GetDefaultFPS(
  324. double * fps
  325. );
  326. HRESULT IsDirty(
  327. BOOL * dirty
  328. );
  329. HRESULT GetDirtyRange(
  330. REFERENCE_TIME * start,
  331. REFERENCE_TIME * stop
  332. );
  333. HRESULT GetCountOfType(
  334. long group,
  335. long * value,
  336. long * value_with_comps,
  337. TIMELINE_MAJOR_TYPE type
  338. );
  339. HRESULT ValidateSourceNames(
  340. long flags,
  341. IMediaLocator * override,
  342. LONG_PTR notify_event
  343. );
  344. HRESULT SetDefaultTransition(
  345. GUID * guid
  346. );
  347. HRESULT GetDefaultTransition(
  348. GUID * guid
  349. );
  350. HRESULT SetDefaultEffect(
  351. GUID * guid
  352. );
  353. HRESULT GetDefaultEffect(
  354. GUID * guid
  355. );
  356. HRESULT SetDefaultTransitionB(
  357. BSTR guidb
  358. );
  359. HRESULT GetDefaultTransitionB(
  360. [out,retval] BSTR * guidb
  361. );
  362. HRESULT SetDefaultEffectB(
  363. BSTR guidb
  364. );
  365. HRESULT GetDefaultEffectB(
  366. [out,retval] BSTR * guidb
  367. );
  368. }
  369. [
  370. uuid(78530B75-61F9-11D2-8CAD-00A024580902)
  371. ]
  372. coclass AMTimeline
  373. {
  374. [default] interface IAMTimeline;
  375. interface IPersistStream;
  376. interface IAMSetErrorLog;
  377. }
  378. [
  379. object,
  380. uuid(9EED4F00-B8A6-11d2-8023-00C0DF10D434),
  381. odl,
  382. pointer_default(unique)
  383. ]
  384. interface IAMTimelineGroup : IUnknown
  385. {
  386. HRESULT SetTimeline(
  387. IAMTimeline * timeline
  388. );
  389. HRESULT GetTimeline(
  390. [out] IAMTimeline ** timeline
  391. );
  392. HRESULT GetPriority(
  393. long * priority
  394. );
  395. HRESULT GetMediaType(
  396. [out] AM_MEDIA_TYPE *
  397. );
  398. HRESULT SetMediaType(
  399. [in] AM_MEDIA_TYPE *
  400. );
  401. HRESULT SetOutputFPS(
  402. double fps
  403. );
  404. HRESULT GetOutputFPS(
  405. double * fps
  406. );
  407. HRESULT SetGroupName(
  408. BSTR name
  409. );
  410. HRESULT GetGroupName(
  411. [out,retval] BSTR * name
  412. );
  413. HRESULT SetPreviewMode(
  414. BOOL preview
  415. );
  416. HRESULT GetPreviewMode(
  417. BOOL * preview
  418. );
  419. HRESULT SetMediaTypeForVB(
  420. [in] long type
  421. );
  422. HRESULT GetOutputBuffering(
  423. [out] int * buffer
  424. );
  425. HRESULT SetOutputBuffering(
  426. [in] int buffer
  427. );
  428. HRESULT SetSmartRecompressFormat(
  429. long * format
  430. );
  431. HRESULT GetSmartRecompressFormat(
  432. long ** format
  433. );
  434. HRESULT IsSmartRecompressFormatSet(
  435. BOOL * set
  436. );
  437. HRESULT IsRecompressFormatDirty(
  438. BOOL * dirty
  439. );
  440. HRESULT ClearRecompressFormatDirty();
  441. HRESULT SetRecompFormatFromSource(
  442. IAMTimelineSrc * source
  443. );
  444. }
  445. [
  446. object,
  447. local,
  448. uuid(78530B77-61F9-11D2-8CAD-00A024580902),
  449. odl,
  450. pointer_default(unique)
  451. ]
  452. interface IAMTimelineObj : IUnknown
  453. {
  454. HRESULT GetStartStop(
  455. REFERENCE_TIME * start,
  456. REFERENCE_TIME * stop
  457. );
  458. HRESULT GetStartStop2(
  459. REFTIME * start, REFTIME * stop
  460. );
  461. HRESULT FixTimes(
  462. REFERENCE_TIME * start, REFERENCE_TIME * stop
  463. );
  464. HRESULT FixTimes2(
  465. REFTIME * start, REFTIME * stop
  466. );
  467. HRESULT SetStartStop(
  468. REFERENCE_TIME start,
  469. REFERENCE_TIME stop
  470. );
  471. HRESULT SetStartStop2(
  472. REFTIME start,
  473. REFTIME stop
  474. );
  475. HRESULT GetPropertySetter(
  476. [out,retval] IPropertySetter ** setter
  477. );
  478. HRESULT SetPropertySetter(
  479. IPropertySetter * setter
  480. );
  481. HRESULT GetSubObject(
  482. [out,retval] IUnknown ** obj
  483. );
  484. HRESULT SetSubObject(
  485. IUnknown * obj
  486. );
  487. HRESULT SetSubObjectGUID(
  488. GUID guid
  489. );
  490. HRESULT SetSubObjectGUIDB(
  491. BSTR guidb
  492. );
  493. HRESULT GetSubObjectGUID(
  494. GUID * guid
  495. );
  496. HRESULT GetSubObjectGUIDB(
  497. [out,retval] BSTR * guidb
  498. );
  499. HRESULT GetSubObjectLoaded(
  500. BOOL * loaded
  501. );
  502. HRESULT GetTimelineType(
  503. TIMELINE_MAJOR_TYPE * type
  504. );
  505. HRESULT SetTimelineType(
  506. TIMELINE_MAJOR_TYPE type
  507. );
  508. HRESULT GetUserID(
  509. long * id
  510. );
  511. HRESULT SetUserID(
  512. long id
  513. );
  514. HRESULT GetGenID(
  515. long * id
  516. );
  517. HRESULT GetUserName(
  518. [out,retval] BSTR * name
  519. );
  520. HRESULT SetUserName(
  521. BSTR name
  522. );
  523. HRESULT GetUserData(
  524. BYTE * data,
  525. long * size
  526. );
  527. HRESULT SetUserData(
  528. BYTE * data,
  529. long size
  530. );
  531. HRESULT GetMuted(
  532. BOOL * muted
  533. );
  534. HRESULT SetMuted(
  535. BOOL muted
  536. );
  537. HRESULT GetLocked(
  538. BOOL * locked
  539. );
  540. HRESULT SetLocked(
  541. BOOL locked
  542. );
  543. HRESULT GetDirtyRange(
  544. REFERENCE_TIME * start,
  545. REFERENCE_TIME * stop
  546. );
  547. HRESULT GetDirtyRange2(
  548. REFTIME * start,
  549. REFTIME * stop
  550. );
  551. HRESULT SetDirtyRange(
  552. REFERENCE_TIME start,
  553. REFERENCE_TIME stop
  554. );
  555. HRESULT SetDirtyRange2(
  556. REFTIME start,
  557. REFTIME stop
  558. );
  559. HRESULT ClearDirty();
  560. HRESULT Remove();
  561. HRESULT RemoveAll();
  562. HRESULT GetTimelineNoRef(
  563. IAMTimeline ** timeline
  564. );
  565. HRESULT GetGroupIBelongTo(
  566. [out] IAMTimelineGroup ** group
  567. );
  568. HRESULT GetEmbedDepth(
  569. long * depth
  570. );
  571. }
  572. [
  573. object,
  574. uuid(78530B79-61F9-11D2-8CAD-00A024580902),
  575. odl,
  576. pointer_default(unique)
  577. ]
  578. interface IAMTimelineSrc : IUnknown
  579. {
  580. HRESULT GetMediaTimes(
  581. REFERENCE_TIME * start,
  582. REFERENCE_TIME * stop
  583. );
  584. HRESULT GetMediaTimes2(
  585. REFTIME * start,
  586. REFTIME * stop
  587. );
  588. HRESULT ModifyStopTime(
  589. REFERENCE_TIME stop
  590. );
  591. HRESULT ModifyStopTime2(
  592. REFTIME stop
  593. );
  594. HRESULT FixMediaTimes(
  595. REFERENCE_TIME * start,
  596. REFERENCE_TIME * stop
  597. );
  598. HRESULT FixMediaTimes2(
  599. REFTIME * start,
  600. REFTIME * stop
  601. );
  602. HRESULT SetMediaTimes(
  603. REFERENCE_TIME Start,
  604. REFERENCE_TIME Stop
  605. );
  606. HRESULT SetMediaTimes2(
  607. REFTIME Start,
  608. REFTIME Stop
  609. );
  610. HRESULT SetMediaLength(
  611. REFERENCE_TIME length
  612. );
  613. HRESULT SetMediaLength2(
  614. REFTIME length
  615. );
  616. HRESULT GetMediaLength(
  617. REFERENCE_TIME * length
  618. );
  619. HRESULT GetMediaLength2(
  620. REFTIME * length
  621. );
  622. HRESULT GetMediaName(
  623. [out,retval] BSTR * name
  624. );
  625. HRESULT SetMediaName(
  626. BSTR name
  627. );
  628. HRESULT SpliceWithNext(
  629. IAMTimelineObj * next
  630. );
  631. HRESULT GetStreamNumber(
  632. long * num
  633. );
  634. HRESULT SetStreamNumber(
  635. long num
  636. );
  637. HRESULT IsNormalRate(
  638. BOOL * normal
  639. );
  640. HRESULT GetDefaultFPS(
  641. double * fps
  642. );
  643. HRESULT SetDefaultFPS(
  644. double fps
  645. );
  646. HRESULT GetStretchMode(
  647. int * mode
  648. );
  649. HRESULT SetStretchMode(
  650. int mode
  651. );
  652. }
  653. enum
  654. {
  655. E_NOTINTREE = 0x80040400,
  656. E_RENDER_ENGINE_IS_BROKEN = 0x80040401,
  657. E_MUST_INIT_RENDERER = 0x80040402,
  658. E_NOTDETERMINED = 0x80040403,
  659. E_NO_TIMELINE = 0x80040404,
  660. S_WARN_OUTPUTRESET = 40404
  661. };