@osmo.inc/cli-linux-arm64 0.1.23 → 0.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/studio.js +5058 -930
  2. package/package.json +1 -1
  3. package/release.json +32 -32
  4. package/runtime/apps/native/tools/compile.mjs +22 -4
  5. package/runtime/packages/render-protocol/src/film-catalog.json +2543 -0
  6. package/runtime/packages/render-protocol/src/film-resources.mjs +91 -0
  7. package/runtime/packages/render-protocol/src/film-store.node.mjs +220 -0
  8. package/runtime/packages/scene/scripts/sync-film.mjs +8 -0
  9. package/runtime/packages/scene/scripts/validate-strict.mjs +14 -4
  10. package/runtime/packages/scene/scripts/verify-export-resolution.mjs +67 -0
  11. package/runtime/packages/scene/scripts/verify-film.mjs +66 -0
  12. package/runtime/packages/scene/src/effect-schemas.d.mts +246 -0
  13. package/runtime/packages/scene/src/effect-schemas.mjs +136 -0
  14. package/runtime/packages/scene/src/effects.ts +23 -6
  15. package/runtime/packages/scene/src/elements.ts +15 -3
  16. package/runtime/packages/scene/src/evaluate.ts +88 -12
  17. package/runtime/packages/scene/src/film-catalog.generated.ts +3 -0
  18. package/runtime/packages/scene/src/film.ts +39 -0
  19. package/runtime/packages/scene/src/index.ts +6 -2
  20. package/runtime/packages/scene/src/knob-schema.ts +5 -2
  21. package/runtime/packages/scene/src/metadata.d.mts +2 -1
  22. package/runtime/packages/scene/src/metadata.mjs +4 -4
  23. package/runtime/packages/scene/src/motion-blur.ts +30 -0
  24. package/src/starter/scene.tsx +1 -1
  25. package/studio/src/app.css +1 -1
  26. package/studio/src/app.js +197 -179
  27. package/studio/src/engine_bg.wasm +0 -0
  28. package/studio/src/preview-worker.js +33 -0
  29. package/studio/src/stretch-worklet-Z4ADHTIR.mjs +1 -0
  30. package/third-party/braw/BlackmagicRawAPI.h +1137 -0
  31. package/third-party/braw/README.md +7 -0
  32. package/third-party/cargo/block-buffer@0.10.4/Cargo.toml +32 -0
  33. package/third-party/cargo/block-buffer@0.10.4/LICENSE-APACHE +201 -0
  34. package/third-party/cargo/block-buffer@0.10.4/LICENSE-MIT +25 -0
  35. package/third-party/cargo/cc@1.4.5/Cargo.toml +89 -0
  36. package/third-party/cargo/cc@1.4.5/LICENSE-APACHE +201 -0
  37. package/third-party/cargo/cc@1.4.5/LICENSE-MIT +25 -0
  38. package/third-party/cargo/cpufeatures@0.2.17/Cargo.toml +71 -0
  39. package/third-party/cargo/cpufeatures@0.2.17/LICENSE-APACHE +201 -0
  40. package/third-party/cargo/cpufeatures@0.2.17/LICENSE-MIT +25 -0
  41. package/third-party/cargo/crypto-common@0.1.7/Cargo.toml +62 -0
  42. package/third-party/cargo/crypto-common@0.1.7/LICENSE-APACHE +201 -0
  43. package/third-party/cargo/crypto-common@0.1.7/LICENSE-MIT +25 -0
  44. package/third-party/cargo/digest@0.10.7/Cargo.toml +70 -0
  45. package/third-party/cargo/digest@0.10.7/LICENSE-APACHE +201 -0
  46. package/third-party/cargo/digest@0.10.7/LICENSE-MIT +25 -0
  47. package/third-party/cargo/find-msvc-tools@0.1.12/Cargo.toml +49 -0
  48. package/third-party/cargo/find-msvc-tools@0.1.12/LICENSE-APACHE +201 -0
  49. package/third-party/cargo/find-msvc-tools@0.1.12/LICENSE-MIT +25 -0
  50. package/third-party/cargo/generic-array@0.14.7/Cargo.toml +75 -0
  51. package/third-party/cargo/generic-array@0.14.7/LICENSE +21 -0
  52. package/third-party/cargo/sha2@0.10.9/Cargo.toml +90 -0
  53. package/third-party/cargo/sha2@0.10.9/LICENSE-APACHE +201 -0
  54. package/third-party/cargo/sha2@0.10.9/LICENSE-MIT +27 -0
  55. package/third-party/cargo/shlex@2.0.1/Cargo.toml +51 -0
  56. package/third-party/cargo/shlex@2.0.1/LICENSE-APACHE +13 -0
  57. package/third-party/cargo/shlex@2.0.1/LICENSE-MIT +21 -0
  58. package/third-party/cargo/typenum@1.20.1/Cargo.toml +75 -0
  59. package/third-party/cargo/typenum@1.20.1/LICENSE +1 -0
  60. package/third-party/cargo/typenum@1.20.1/LICENSE-APACHE +201 -0
  61. package/third-party/cargo/typenum@1.20.1/LICENSE-MIT +21 -0
  62. package/third-party/film/camera-COLOUR-LICENSE +11 -0
  63. package/third-party/film/camera-CONFIG-LICENSE +26 -0
  64. package/third-party/film/camera-LICENSE +26 -0
  65. package/third-party/film/camera-metadata.json +344 -0
  66. package/third-party/film/provenance.json +7 -0
  67. package/third-party/inventory.json +162 -0
  68. package/third-party/npm/signalsmith-stretch@1.3.2/package.json +26 -0
  69. package/third-party/npm/signalsmith-stretch@1.3.2/signalsmith-stretch-1.3.2-LICENSE.txt +21 -0
  70. package/vendor/osmo-lite +0 -0
  71. package/vendor/osmo-scene-0.1.0.tgz +0 -0
  72. package/vendor/platform.json +1 -1
@@ -0,0 +1,1137 @@
1
+ /* -LICENSE-START-
2
+ ** Copyright (c) 2026 Blackmagic Design
3
+ **
4
+ ** Permission is hereby granted, free of charge, to any person or organization
5
+ ** obtaining a copy of the software and accompanying documentation covered by
6
+ ** this license (the "Software") to use, reproduce, display, distribute,
7
+ ** execute, and transmit the Software, and to prepare derivative works of the
8
+ ** Software, and to permit third-parties to whom the Software is furnished to
9
+ ** do so, all subject to the following:
10
+ **
11
+ ** The copyright notices in the Software and this entire statement, including
12
+ ** the above license grant, this restriction and the following disclaimer,
13
+ ** must be included in all copies of the Software, in whole or in part, and
14
+ ** all derivative works of the Software, unless such copies or derivative
15
+ ** works are solely in the form of machine-executable object code generated by
16
+ ** a source language processor.
17
+ **
18
+ ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
21
+ ** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
22
+ ** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
23
+ ** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24
+ ** DEALINGS IN THE SOFTWARE.
25
+ ** -LICENSE-END-
26
+ */
27
+
28
+ #ifndef BMD_BLACKMAGICRAWAPI_H
29
+ #define BMD_BLACKMAGICRAWAPI_H
30
+
31
+ #ifndef BRAW_VERSION
32
+ # define BRAW_VERSION 600 // 100*major + 10*minor. sdk 6.0 does not support old interfaces. sdk 4.5 supports 3.x
33
+ #endif // BRAW_VERSION
34
+ #define BRAW_MAJOR (BRAW_VERSION / 100)
35
+
36
+ #ifndef BMD_CONST
37
+ #if defined(_MSC_VER)
38
+ #define BMD_CONST __declspec(selectany)
39
+ #else
40
+ #define BMD_CONST static const
41
+ #endif
42
+ #endif
43
+
44
+ #ifndef BMD_PUBLIC
45
+ #define BMD_PUBLIC
46
+ #endif
47
+
48
+ #if (__APPLE__ + 0)
49
+ #include <CoreFoundation/CoreFoundation.h>
50
+ #include <CoreFoundation/CFPlugInCOM.h>
51
+ #endif
52
+ #if (__linux__ + 0)
53
+ #include "LinuxCOM.h"
54
+ #endif
55
+ #include <stdint.h>
56
+
57
+ #if (_WIN32 + 0)
58
+ #include <comutil.h>
59
+ #include <oleauto.h> // VARIANT
60
+ //#include <wtype.h> // BSTR
61
+ typedef BSTR BRawStr;
62
+ struct CFUUIDBytes {
63
+ unsigned char byte0;
64
+ unsigned char byte1;
65
+ unsigned char byte2;
66
+ unsigned char byte3;
67
+ unsigned char byte4;
68
+ unsigned char byte5;
69
+ unsigned char byte6;
70
+ unsigned char byte7;
71
+ unsigned char byte8;
72
+ unsigned char byte9;
73
+ unsigned char byte10;
74
+ unsigned char byte11;
75
+ unsigned char byte12;
76
+ unsigned char byte13;
77
+ unsigned char byte14;
78
+ unsigned char byte15;
79
+
80
+ operator IID() const { return {(unsigned long)(byte0 << 24 | byte1 << 16 | byte2 << 8 | byte3), (unsigned short)(byte4 << 8 | byte5), (unsigned short)(byte6 << 8 | byte7), byte8, byte9, byte10, byte11, byte12, byte13, byte14, byte15};}
81
+ };
82
+ #elif (__APPLE__ + 0)
83
+ typedef CFStringRef BRawStr;
84
+ #else
85
+ typedef char* BRawStr;
86
+ #endif
87
+
88
+ typedef struct { void* iovBase; uint64_t iovLen; } BmdIoVec;
89
+
90
+ // Type Declarations
91
+ #if (BRAW_VERSION + 0) >= 450
92
+ # define IID_IBlackmagicRawClipResolutions IID_IBlackmagicRawClipResolutions4_5
93
+ # if (BRAW_VERSION + 0) >= 600
94
+ # define IID_IBlackmagicRawPipelineDevice IID_IBlackmagicRawPipelineDevice6
95
+ # else
96
+ # define IID_IBlackmagicRawPipelineDevice IID_IBlackmagicRawPipelineDevice4_5
97
+ # endif
98
+ #else
99
+ # define IID_IBlackmagicRawClipResolutions IID_IBlackmagicRawClipResolutions2
100
+ # if (BRAW_VERSION + 0) >= 400
101
+ # define IID_IBlackmagicRawPipelineDevice IID_IBlackmagicRawPipelineDevice4
102
+ # else
103
+ # define IID_IBlackmagicRawPipelineDevice IID_IBlackmagicRawPipelineDevice2
104
+ # endif
105
+ #endif
106
+ #if (BRAW_VERSION + 0) >= 300
107
+ # if (BRAW_VERSION + 0) >= 600
108
+ # define IID_IBlackmagicRaw IID_IBlackmagicRaw6
109
+ # else
110
+ # define IID_IBlackmagicRaw IID_IBlackmagicRaw3
111
+ # endif
112
+ #define IID_IBlackmagicRawFactory IID_IBlackmagicRawFactory3
113
+ #define IID_IBlackmagicRawConfiguration IID_IBlackmagicRawConfiguration3
114
+ #define IID_IBlackmagicRawPost3DLUT IID_IBlackmagicRawPost3DLUT2
115
+ #define IID_IBlackmagicRawClip IID_IBlackmagicRawClip2
116
+ #else
117
+ #define IID_IBlackmagicRaw IID_IBlackmagicRaw2
118
+ #define IID_IBlackmagicRawFactory IID_IBlackmagicRawFactory2
119
+ #define IID_IBlackmagicRawConfiguration IID_IBlackmagicRawConfiguration2
120
+ #define IID_IBlackmagicRawPost3DLUT IID_IBlackmagicRawPost3DLUT2
121
+ #define IID_IBlackmagicRawClip IID_IBlackmagicRawClip2
122
+ #endif
123
+ #if (BRAW_VERSION + 0) >= 600
124
+ # define IID_IBlackmagicRawClipProcessingAttributes IID_IBlackmagicRawClipProcessingAttributes6
125
+ # define IID_IBlackmagicRawClipEx IID_IBlackmagicRawClipEx6
126
+ # define IID_IBlackmagicRawClipMultiVideo IID_IBlackmagicRawClipMultiVideo6
127
+ #else
128
+ # define IID_IBlackmagicRawClipProcessingAttributes IID_IBlackmagicRawClipProcessingAttributes2
129
+ # define IID_IBlackmagicRawClipEx IID_IBlackmagicRawClipEx2
130
+ # define IID_IBlackmagicRawClipMultiVideo IID_IBlackmagicRawClipMultiVideo5
131
+ #endif
132
+ // Interface ID Declarations
133
+ BMD_CONST REFIID IID_IBlackmagicRaw2 = /* 5A540A06-1B62-4224-ACB0-A2385C6ED649 */ CFUUIDBytes{ 0x5A,0x54,0x0A,0x06,0x1B,0x62,0x42,0x24,0xAC,0xB0,0xA2,0x38,0x5C,0x6E,0xD6,0x49 };
134
+ BMD_CONST REFIID IID_IBlackmagicRawFactory2 = /* 74FEBEDC-12D6-490D-9A77-48F19E8F60CB */ CFUUIDBytes{ 0x74,0xFE,0xBE,0xDC,0x12,0xD6,0x49,0x0D,0x9A,0x77,0x48,0xF1,0x9E,0x8F,0x60,0xCB };
135
+ BMD_CONST REFIID IID_IBlackmagicRawConfiguration2 = /* F8588A3D-E31F-45BD-96C7-A5640EA8B8E7 */ CFUUIDBytes{ 0xF8,0x58,0x8A,0x3D,0xE3,0x1F,0x45,0xBD,0x96,0xC7,0xA5,0x64,0x0E,0xA8,0xB8,0xE7 };
136
+ BMD_CONST REFIID IID_IBlackmagicRawPost3DLUT2 = /* 72A53B50-BB40-4C69-83FB-58CF58AF35B6 */ CFUUIDBytes{ 0x72,0xA5,0x3B,0x50,0xBB,0x40,0x4C,0x69,0x83,0xFB,0x58,0xCF,0x58,0xAF,0x35,0xB6 };
137
+ BMD_CONST REFIID IID_IBlackmagicRawClip2 = /* 408F758F-347F-4CDA-BA9B-89B6F15603CF */ CFUUIDBytes{ 0x40,0x8F,0x75,0x8F,0x34,0x7F,0x4C,0xDA,0xBA,0x9B,0x89,0xB6,0xF1,0x56,0x03,0xCF };
138
+
139
+ BMD_CONST REFIID IID_IBlackmagicRaw3 = /* 558ABA39-B344-4E9B-A484-116CF2A4B5C6 */ CFUUIDBytes{ 0x55,0x8A,0xBA,0x39,0xB3,0x44,0x4E,0x9B,0xA4,0x84,0x11,0x6C,0xF2,0xA4,0xB5,0xC6 };
140
+ BMD_CONST REFIID IID_IBlackmagicRaw6 = /* C25C15E2-D1D0-4743-9EA8-F21F69751AF3 */ CFUUIDBytes{ 0xC2,0x5C,0x15,0xE2,0xD1,0xD0,0x47,0x43,0x9E,0xA8,0xF2,0x1F,0x69,0x75,0x1A,0xF3 };
141
+ BMD_CONST REFIID IID_IBlackmagicRawFactory3 = /* 78DEEB84-98C9-434A-B7E5-7AACC2988399 */ CFUUIDBytes{ 0x78,0xDE,0xEB,0x84,0x98,0xC9,0x43,0x4A,0xB7,0xE5,0x7A,0xAC,0xC2,0x98,0x83,0x99 };
142
+ BMD_CONST REFIID IID_IBlackmagicRawPipelineIterator = /* 051ED792-3D9D-4ED0-BB1F-3873E08773CB */ CFUUIDBytes{ 0x05,0x1E,0xD7,0x92,0x3D,0x9D,0x4E,0xD0,0xBB,0x1F,0x38,0x73,0xE0,0x87,0x73,0xCB };
143
+ BMD_CONST REFIID IID_IBlackmagicRawPipelineDeviceIterator = /* 32D3385F-06EE-4260-82EB-2BABFFFACED8 */ CFUUIDBytes{ 0x32,0xD3,0x38,0x5F,0x06,0xEE,0x42,0x60,0x82,0xEB,0x2B,0xAB,0xFF,0xFA,0xCE,0xD8 };
144
+ BMD_CONST REFIID IID_IBlackmagicRawOpenGLInteropHelper = /* 86444C8A-4398-4364-9166-7D10F41C315E */ CFUUIDBytes{ 0x86,0x44,0x4C,0x8A,0x43,0x98,0x43,0x64,0x91,0x66,0x7D,0x10,0xF4,0x1C,0x31,0x5E };
145
+ BMD_CONST REFIID IID_IBlackmagicRawPipelineDevice2 = /* 2B0D350D-8C17-431F-88AD-1E7945DF2F9F */ CFUUIDBytes{ 0x2B,0x0D,0x35,0x0D,0x8C,0x17,0x43,0x1F,0x88,0xAD,0x1E,0x79,0x45,0xDF,0x2F,0x9F };
146
+ BMD_CONST REFIID IID_IBlackmagicRawPipelineDevice4 = /* 67BB92E8-AD7E-432E-8BA5-E688A2A63F2F */ CFUUIDBytes{ 0x67,0xBB,0x92,0xE8,0xAD,0x7E,0x43,0x2E,0x8B,0xA5,0xE6,0x88,0xA2,0xA6,0x3F,0x2F };
147
+ BMD_CONST REFIID IID_IBlackmagicRawPipelineDevice4_5 = /* 5C7B0A9B-CF2C-4AB3-84C1-E1C7902360C8 */ CFUUIDBytes{ 0x5C,0x7B,0x0A,0x9B,0xCF,0x2C,0x4A,0xB3,0x84,0xC1,0xE1,0xC7,0x90,0x23,0x60,0xC8 };
148
+ BMD_CONST REFIID IID_IBlackmagicRawPipelineDevice6 = /* 078F1902-C143-4A49-A3C7-3408C755100A */ CFUUIDBytes{ 0x07,0x8F,0x19,0x02,0xC1,0x43,0x4A,0x49,0xA3,0xC7,0x34,0x08,0xC7,0x55,0x10,0x0A };
149
+ BMD_CONST REFIID IID_IBlackmagicRawToneCurve = /* 7E40C13D-3575-46B5-B2B7-85DAE1EEFD77 */ CFUUIDBytes{ 0x7E,0x40,0xC1,0x3D,0x35,0x75,0x46,0xB5,0xB2,0xB7,0x85,0xDA,0xE1,0xEE,0xFD,0x77 };
150
+ BMD_CONST REFIID IID_IBlackmagicRawConfiguration3 = /* 267E9866-FB40-4BFB-8BF8-96EA3F7DA36E */ CFUUIDBytes{ 0x26,0x7E,0x98,0x66,0xFB,0x40,0x4B,0xFB,0x8B,0xF8,0x96,0xEA,0x3F,0x7D,0xA3,0x6E };
151
+ BMD_CONST REFIID IID_IBlackmagicRawConfigurationEx = /* ACE9078F-ABA0-4B26-A954-EDA108DADA5A */ CFUUIDBytes{ 0xAC,0xE9,0x07,0x8F,0xAB,0xA0,0x4B,0x26,0xA9,0x54,0xED,0xA1,0x08,0xDA,0xDA,0x5A };
152
+ BMD_CONST REFIID IID_IBlackmagicRawClipGeometry = /* 22717196-36AE-4B8A-B5CC-24292F9660F0 */ CFUUIDBytes{ 0x22,0x71,0x71,0x96,0x36,0xAE,0x4B,0x8A,0xB5,0xCC,0x24,0x29,0x2F,0x96,0x60,0xF0 };
153
+ BMD_CONST REFIID IID_IBlackmagicRawResourceManager = /* 3C5C3C4A-812C-4AF0-99F0-06C6E197C189 */ CFUUIDBytes{ 0x3C,0x5C,0x3C,0x4A,0x81,0x2C,0x4A,0xF0,0x99,0xF0,0x06,0xC6,0xE1,0x97,0xC1,0x89 };
154
+ BMD_CONST REFIID IID_IBlackmagicRawMetadataIterator = /* F85AE78D-5DC2-40BC-8C1D-D0D805523ADA */ CFUUIDBytes{ 0xF8,0x5A,0xE7,0x8D,0x5D,0xC2,0x40,0xBC,0x8C,0x1D,0xD0,0xD8,0x05,0x52,0x3A,0xDA };
155
+ BMD_CONST REFIID IID_IBlackmagicRawClipProcessingAttributes2 = /* 1F53C8AE-2295-4C8E-B17F-5931F4F146AC */ CFUUIDBytes{ 0x1F,0x53,0xC8,0xAE,0x22,0x95,0x4C,0x8E,0xB1,0x7F,0x59,0x31,0xF4,0xF1,0x46,0xAC };
156
+ BMD_CONST REFIID IID_IBlackmagicRawClipProcessingAttributes6 = /* 7E5806E1-40B3-4DAD-8D03-5E294E65AC61 */ CFUUIDBytes{ 0x7E,0x58,0x06,0xE1,0x40,0xB3,0x4D,0xAD,0x8D,0x03,0x5E,0x29,0x4E,0x65,0xAC,0x61 };
157
+ BMD_CONST REFIID IID_IBlackmagicRawFrameProcessingAttributes = /* 5F7C5C0F-7138-445A-9D0D-6111B6409D17 */ CFUUIDBytes{ 0x5F,0x7C,0x5C,0x0F,0x71,0x38,0x44,0x5A,0x9D,0x0D,0x61,0x11,0xB6,0x40,0x9D,0x17 };
158
+ BMD_CONST REFIID IID_IBlackmagicRawPost3DLUT3 = /* 86052BC4-0231-48C6-B3C8-C771112AAD68 */ CFUUIDBytes{ 0x86,0x05,0x2B,0xC4,0x02,0x31,0x48,0xC6,0xB3,0xC8,0xC7,0x71,0x11,0x2A,0xAD,0x68 };
159
+ BMD_CONST REFIID IID_IBlackmagicRawProcessedImage = /* D87A0F72-A883-42BB-8488-0089411C5035 */ CFUUIDBytes{ 0xD8,0x7A,0x0F,0x72,0xA8,0x83,0x42,0xBB,0x84,0x88,0x00,0x89,0x41,0x1C,0x50,0x35 };
160
+ BMD_CONST REFIID IID_IBlackmagicRawJob = /* 34C05ACF-7118-45EA-8B71-887E0515395D */ CFUUIDBytes{ 0x34,0xC0,0x5A,0xCF,0x71,0x18,0x45,0xEA,0x8B,0x71,0x88,0x7E,0x05,0x15,0x39,0x5D };
161
+ BMD_CONST REFIID IID_IBlackmagicRawReadJobHints = /* 1069F99C-A4E2-415A-91C4-5E0CE0C6AF77 */ CFUUIDBytes{ 0x10,0x69,0xF9,0x9C,0xA4,0xE2,0x41,0x5A,0x91,0xC4,0x5E,0x0C,0xE0,0xC6,0xAF,0x77 };
162
+ BMD_CONST REFIID IID_IBlackmagicRawCallback = /* E9F98FAC-33DB-4A65-BB94-8A82B027AED0 */ CFUUIDBytes{ 0xE9,0xF9,0x8F,0xAC,0x33,0xDB,0x4A,0x65,0xBB,0x94,0x8A,0x82,0xB0,0x27,0xAE,0xD0 };
163
+ BMD_CONST REFIID IID_IBlackmagicRawClipAudio = /* 76D4ACED-E0D6-45BB-B547-56B7435B2A1D */ CFUUIDBytes{ 0x76,0xD4,0xAC,0xED,0xE0,0xD6,0x45,0xBB,0xB5,0x47,0x56,0xB7,0x43,0x5B,0x2A,0x1D };
164
+ BMD_CONST REFIID IID_IBlackmagicRawClipAccelerometerMotion = /* 983AACBB-F469-40C9-AA81-345B0B7CCD05 */ CFUUIDBytes{ 0x98,0x3A,0xAC,0xBB,0xF4,0x69,0x40,0xC9,0xAA,0x81,0x34,0x5B,0x0B,0x7C,0xCD,0x05 };
165
+ BMD_CONST REFIID IID_IBlackmagicRawClipGyroscopeMotion = /* 00543A2C-FDED-4C79-A60C-A460415F0296 */ CFUUIDBytes{ 0x00,0x54,0x3A,0x2C,0xFD,0xED,0x4C,0x79,0xA6,0x0C,0xA4,0x60,0x41,0x5F,0x02,0x96 };
166
+ BMD_CONST REFIID IID_IBlackmagicRawClipPDAFData = /* AAE71534-F951-4062-B6A9-69B8808CD267 */ CFUUIDBytes{ 0xAA,0xE7,0x15,0x34,0xF9,0x51,0x40,0x62,0xB6,0xA9,0x69,0xB8,0x80,0x8C,0xD2,0x67 };
167
+ BMD_CONST REFIID IID_IBlackmagicRawFrame = /* A500B253-1808-4EF2-8692-D23C692404EA */ CFUUIDBytes{ 0xA5,0x00,0xB2,0x53,0x18,0x08,0x4E,0xF2,0x86,0x92,0xD2,0x3C,0x69,0x24,0x04,0xEA };
168
+ BMD_CONST REFIID IID_IBlackmagicRawFrameEx = /* F8C6C374-D7FB-4BD3-AD0B-C533464FF450 */ CFUUIDBytes{ 0xF8,0xC6,0xC3,0x74,0xD7,0xFB,0x4B,0xD3,0xAD,0x0B,0xC5,0x33,0x46,0x4F,0xF4,0x50 };
169
+ BMD_CONST REFIID IID_IBlackmagicRawFrameMultiVideo = /* 96AE962B-30A4-4904-813D-A9EFFE5953C2 */ CFUUIDBytes{ 0x96,0xAE,0x96,0x2B,0x30,0xA4,0x49,0x04,0x81,0x3D,0xA9,0xEF,0xFE,0x59,0x53,0xC2 };
170
+ BMD_CONST REFIID IID_IBlackmagicRawManualDecoderFlow1 = /* 278815A6-A3C1-47C7-A0A6-6754DEAE5E7A */ CFUUIDBytes{ 0x27,0x88,0x15,0xA6,0xA3,0xC1,0x47,0xC7,0xA0,0xA6,0x67,0x54,0xDE,0xAE,0x5E,0x7A };
171
+ BMD_CONST REFIID IID_IBlackmagicRawManualDecoderFlow2 = /* DBEC4C39-B4C2-4A65-AA8C-2B3C7F4777E3 */ CFUUIDBytes{ 0xDB,0xEC,0x4C,0x39,0xB4,0xC2,0x4A,0x65,0xAA,0x8C,0x2B,0x3C,0x7F,0x47,0x77,0xE3 };
172
+ BMD_CONST REFIID IID_IBlackmagicRawClip3 = /* A2910203-787B-4BF2-A374-B1A459E2D351 */ CFUUIDBytes{ 0xA2,0x91,0x02,0x03,0x78,0x7B,0x4B,0xF2,0xA3,0x74,0xB1,0xA4,0x59,0xE2,0xD3,0x51 };
173
+ BMD_CONST REFIID IID_IBlackmagicRawClipEx2 = /* D260C7D0-93BD-4D68-B600-93B4CAB7F870 */ CFUUIDBytes{ 0xD2,0x60,0xC7,0xD0,0x93,0xBD,0x4D,0x68,0xB6,0x00,0x93,0xB4,0xCA,0xB7,0xF8,0x70 };
174
+ BMD_CONST REFIID IID_IBlackmagicRawClipEx6 = /* 7DB60B13-6BB2-49DE-9A24-AA14A9F3CA6B */ CFUUIDBytes{ 0x7D,0xB6,0x0B,0x13,0x6B,0xB2,0x49,0xDE,0x9A,0x24,0xAA,0x14,0xA9,0xF3,0xCA,0x6B };
175
+ BMD_CONST REFIID IID_IBlackmagicRawClipMultiVideo5 = /* C699E3E2-3268-4E08-8037-D5C4A2C5CE52 */ CFUUIDBytes{ 0xC6,0x99,0xE3,0xE2,0x32,0x68,0x4E,0x08,0x80,0x37,0xD5,0xC4,0xA2,0xC5,0xCE,0x52 };
176
+ BMD_CONST REFIID IID_IBlackmagicRawClipMultiVideo6 = /* B868316D-18E6-4792-ACF4-D7F25CB5CBB6 */ CFUUIDBytes{ 0xB8,0x68,0x31,0x6D,0x18,0xE6,0x47,0x92,0xAC,0xF4,0xD7,0xF2,0x5C,0xB5,0xCB,0xB6 };
177
+ BMD_CONST REFIID IID_IBlackmagicRawClipImmersiveVideo = /* 47D287A7-9148-4659-BFCF-C767A089A200 */ CFUUIDBytes{ 0x47,0xD2,0x87,0xA7,0x91,0x48,0x46,0x59,0xBF,0xCF,0xC7,0x67,0xA0,0x89,0xA2,0x00 };
178
+ BMD_CONST REFIID IID_IBlackmagicRawClipResolutions2 = /* 3070805E-ABE3-498C-9D77-8C991B2B77E5 */ CFUUIDBytes{ 0x30,0x70,0x80,0x5E,0xAB,0xE3,0x49,0x8C,0x9D,0x77,0x8C,0x99,0x1B,0x2B,0x77,0xE5 };
179
+ BMD_CONST REFIID IID_IBlackmagicRawClipResolutions4_5 = /* C63C290F-525B-4EBE-AB56-87B010CACE19 */ CFUUIDBytes{ 0xC6,0x3C,0x29,0x0F,0x52,0x5B,0x4E,0xBE,0xAB,0x56,0x87,0xB0,0x10,0xCA,0xCE,0x19 };
180
+
181
+ // 6.0
182
+ BMD_CONST REFIID IID_IBlackmagicRawFilesystem = /* 48640A3F-DC26-4CF9-B540-1CD8087986DD */ CFUUIDBytes{ 0x48,0x64,0x0A,0x3F,0xDC,0x26,0x4C,0xF9,0xB5,0x40,0x1C,0xD8,0x08,0x79,0x86,0xDD };
183
+ BMD_CONST REFIID IID_IBlackmagicRawFile = /* 9D0B46AB-C9DC-4BFB-8DDF-5E5A8F19BEFC */ CFUUIDBytes{ 0x9D,0x0B,0x46,0xAB,0xC9,0xDC,0x4B,0xFB,0x8D,0xDF,0x5E,0x5A,0x8F,0x19,0xBE,0xFC };
184
+ BMD_CONST REFIID IID_IBlackmagicRawAudioBuffer = /* 6FCA661F-35AA-469A-AFCE-3012B40760CC */ CFUUIDBytes{ 0x6F,0xCA,0x66,0x1F,0x35,0xAA,0x46,0x9A,0xAF,0xCE,0x30,0x12,0xB4,0x07,0x60,0xCC };
185
+
186
+
187
+ /* Enum BlackmagicRawVariantType - Variant types that may be stored as metadata */
188
+
189
+ #ifndef _WIN32
190
+ enum {
191
+ VT_EMPTY = 0,
192
+ VT_UI1 = 1,
193
+ VT_I2 = 2,
194
+ VT_UI2 = 3,
195
+ VT_I4 = 4,
196
+ VT_UI4 = 5,
197
+ VT_R4 = 6,
198
+ VT_BSTR = 7,
199
+ VT_SAFEARRAY = 8,
200
+ VT_R8 = 9,
201
+ };
202
+ #endif
203
+ typedef uint32_t BlackmagicRawVariantType;
204
+ enum _BlackmagicRawVariantType {
205
+ blackmagicRawVariantTypeEmpty = VT_EMPTY,
206
+ blackmagicRawVariantTypeU8 = VT_UI1,
207
+ blackmagicRawVariantTypeS16 = VT_I2,
208
+ blackmagicRawVariantTypeU16 = VT_UI2,
209
+ blackmagicRawVariantTypeS32 = VT_I4,
210
+ blackmagicRawVariantTypeU32 = VT_UI4,
211
+ blackmagicRawVariantTypeFloat32 = VT_R4,
212
+ blackmagicRawVariantTypeString = VT_BSTR,
213
+ blackmagicRawVariantTypeSafeArray = VT_SAFEARRAY,
214
+ blackmagicRawVariantTypeFloat64 = VT_R8,
215
+ };
216
+
217
+ /* Enum BlackmagicRawResourceType - Used in IBlackmagicRawResourceManager */
218
+
219
+ typedef uint32_t BlackmagicRawResourceType;
220
+ enum _BlackmagicRawResourceType {
221
+ blackmagicRawResourceTypeBufferCPU = /* 'cpub' */ 0x63707562, // block of CPU memory
222
+ blackmagicRawResourceTypeBufferMetal = /* 'metb' */ 0x6D657462, // a MTLBuffer
223
+ blackmagicRawResourceTypeBufferCUDA = /* 'cudb' */ 0x63756462, // a CUdeviceptr
224
+ blackmagicRawResourceTypeBufferOpenCL = /* 'oclb' */ 0x6F636C62 // a cl_mem
225
+ };
226
+
227
+ /* Enum BlackmagicRawResourceFormat - Used for resource allocation */
228
+
229
+ typedef uint32_t BlackmagicRawResourceFormat;
230
+ enum _BlackmagicRawResourceFormat {
231
+ blackmagicRawResourceFormatRGBAU8 = /* 'rgba' */ 0x72676261,
232
+ blackmagicRawResourceFormatBGRAU8 = /* 'bgra' */ 0x62677261,
233
+ blackmagicRawResourceFormatRGBU16 = /* '16il' */ 0x3136696C,
234
+ blackmagicRawResourceFormatRGBAU16 = /* '16al' */ 0x3136616C,
235
+ blackmagicRawResourceFormatBGRAU16 = /* '16la' */ 0x31366C61,
236
+ blackmagicRawResourceFormatRGBU16Planar = /* '16pl' */ 0x3136706C,
237
+ blackmagicRawResourceFormatRGBF32 = /* 'f32s' */ 0x66333273,
238
+ blackmagicRawResourceFormatRGBAF32 = /* 'f32l' */ 0x6633326C,
239
+ blackmagicRawResourceFormatBGRAF32 = /* 'f32a' */ 0x66333261,
240
+ blackmagicRawResourceFormatRGBF32Planar = /* 'f32p' */ 0x66333270,
241
+ blackmagicRawResourceFormatRGBF16 = /* 'f16s' */ 0x66313673,
242
+ blackmagicRawResourceFormatRGBAF16 = /* 'f16l' */ 0x6631366C,
243
+ blackmagicRawResourceFormatBGRAF16 = /* 'f16a' */ 0x66313661,
244
+ blackmagicRawResourceFormatRGBF16Planar = /* 'f16p' */ 0x66313670,
245
+ };
246
+
247
+ /* Enum BlackmagicRawResourceUsage - Used in IBlackmagicRawResourceManager */
248
+
249
+ typedef uint32_t BlackmagicRawResourceUsage;
250
+ enum _BlackmagicRawResourceUsage {
251
+ blackmagicRawResourceUsageReadCPUWriteCPU = /* 'rcwc' */ 0x72637763,
252
+ blackmagicRawResourceUsageReadGPUWriteGPU = /* 'rgwg' */ 0x72677767,
253
+ blackmagicRawResourceUsageReadGPUWriteCPU = /* 'rgwc' */ 0x72677763,
254
+ blackmagicRawResourceUsageReadCPUWriteGPU = /* 'rcwg' */ 0x72637767
255
+ };
256
+
257
+ /* Enum BlackmagicRawPipeline - Used in IBlackmagicRawConfiguration. Each pipeline has different mappings to context/commandQueue */
258
+
259
+ typedef uint32_t BlackmagicRawPipeline;
260
+ enum _BlackmagicRawPipeline {
261
+ blackmagicRawPipelineCPU = /* 'cpub' */ 0x63707562,
262
+ blackmagicRawPipelineCUDA = /* 'cuda' */ 0x63756461, // context/commandQueue maps to CUcontext/CUstream
263
+ blackmagicRawPipelineMetal = /* 'metl' */ 0x6D65746C, // context/commandQueue maps to nil/MTLCommandQueue
264
+ blackmagicRawPipelineOpenCL = /* 'opcl' */ 0x6F70636C // context/commandQueue maps to cl_context/cl_command_queue
265
+ };
266
+
267
+ /* Enum BlackmagicRawInstructionSet - Used in IBlackmagicRawConfiguration */
268
+
269
+ typedef uint32_t BlackmagicRawInstructionSet;
270
+ enum _BlackmagicRawInstructionSet {
271
+ blackmagicRawInstructionSetSSE41 = /* 'se41' */ 0x73653431,
272
+ blackmagicRawInstructionSetAVX = /* 'avx_' */ 0x6176785F,
273
+ blackmagicRawInstructionSetAVX2 = /* 'avx2' */ 0x61767832,
274
+ blackmagicRawInstructionSetNEON = /* 'neon' */ 0x6E656F6E
275
+ };
276
+
277
+ /* Enum BlackmagicRawAudioFormat - Used in IBlackmagicRawFileAudio */
278
+
279
+ typedef uint32_t BlackmagicRawAudioFormat;
280
+ enum _BlackmagicRawAudioFormat {
281
+ blackmagicRawAudioFormatPCMLittleEndian = /* 'pcml' */ 0x70636D6C
282
+ };
283
+
284
+ /* Enum BlackmagicRawResolutionScale - Used in IBlackmagicRawFrame */
285
+
286
+ typedef uint32_t BlackmagicRawResolutionScale;
287
+ enum _BlackmagicRawResolutionScale {
288
+ blackmagicRawResolutionScaleFull = /* 'full' */ 0x66756C6C,
289
+ blackmagicRawResolutionScaleHalf = /* 'half' */ 0x68616C66,
290
+ blackmagicRawResolutionScaleQuarter = /* 'qrtr' */ 0x71727472,
291
+ blackmagicRawResolutionScaleEighth = /* 'eith' */ 0x65697468,
292
+ };
293
+
294
+ /* Enum BlackmagicRawClipProcessingAttribute - Variant types that may be stored as metadata */
295
+
296
+ typedef uint32_t BlackmagicRawClipProcessingAttribute;
297
+ enum _BlackmagicRawClipProcessingAttribute {
298
+ blackmagicRawClipProcessingAttributeColorScienceGen = /* 'csgn' */ 0x6373676E, // u16
299
+ blackmagicRawClipProcessingAttributeGamma = /* 'gama' */ 0x67616D61, // string
300
+ blackmagicRawClipProcessingAttributeGamut = /* 'gamt' */ 0x67616D74, // string
301
+ blackmagicRawClipProcessingAttributeToneCurveContrast = /* 'tcon' */ 0x74636F6E, // float
302
+ blackmagicRawClipProcessingAttributeToneCurveSaturation = /* 'tsat' */ 0x74736174, // float
303
+ blackmagicRawClipProcessingAttributeToneCurveMidpoint = /* 'tmid' */ 0x746D6964, // float
304
+ blackmagicRawClipProcessingAttributeToneCurveHighlights = /* 'thih' */ 0x74686968, // float
305
+ blackmagicRawClipProcessingAttributeToneCurveShadows = /* 'tsha' */ 0x74736861, // float
306
+ blackmagicRawClipProcessingAttributeToneCurveVideoBlackLevel = /* 'tvbl' */ 0x7476626C, // u16
307
+ blackmagicRawClipProcessingAttributeToneCurveBlackLevel = /* 'tblk' */ 0x74626C6B, // float
308
+ blackmagicRawClipProcessingAttributeToneCurveWhiteLevel = /* 'twit' */ 0x74776974, // float
309
+ blackmagicRawClipProcessingAttributeHighlightRecovery = /* 'hlry' */ 0x686C7279, // u16
310
+ blackmagicRawClipProcessingAttributeAnalogGainIsConstant = /* 'agic' */ 0x61676963, // u16
311
+ blackmagicRawClipProcessingAttributeAnalogGain = /* 'gain' */ 0x6761696E, // float
312
+ blackmagicRawClipProcessingAttributePost3DLUTMode = /* 'lutm' */ 0x6C75746D, // string
313
+ blackmagicRawClipProcessingAttributeEmbeddedPost3DLUTName = /* 'emln' */ 0x656D6C6E, // string
314
+ blackmagicRawClipProcessingAttributeEmbeddedPost3DLUTTitle = /* 'emlt' */ 0x656D6C74, // string
315
+ blackmagicRawClipProcessingAttributeEmbeddedPost3DLUTSize = /* 'emls' */ 0x656D6C73, // u16
316
+ blackmagicRawClipProcessingAttributeEmbeddedPost3DLUTData = /* 'emld' */ 0x656D6C64, // float array, size*size*size*3 elements
317
+ blackmagicRawClipProcessingAttributeSidecarPost3DLUTName = /* 'scln' */ 0x73636C6E, // string
318
+ blackmagicRawClipProcessingAttributeSidecarPost3DLUTTitle = /* 'sclt' */ 0x73636C74, // string
319
+ blackmagicRawClipProcessingAttributeSidecarPost3DLUTSize = /* 'scls' */ 0x73636C73, // u16
320
+ blackmagicRawClipProcessingAttributeSidecarPost3DLUTData = /* 'scld' */ 0x73636C64, // float array, size*size*size*3 elements
321
+ blackmagicRawClipProcessingAttributeGamutCompressionEnable = /* 'gace' */ 0x67616365, // u16, 0=disabled, 1=enabled
322
+ blackmagicRawClipProcessingAttributeLensShadingEnable = /* 'shde' */ 0x73686465, // u16
323
+ blackmagicRawClipProcessingAttributeLensDistortionCorrectionEnable = /* 'dice' */ 0x64696365, // u16
324
+ blackmagicRawClipProcessingAttributeLensChromaticAberrationCorrectionEnable = /* 'cace' */ 0x63616365, // u16
325
+ };
326
+
327
+ /* Enum BlackmagicRawFrameProcessingAttribute - Variant types that may be stored as metadata */
328
+
329
+ typedef uint32_t BlackmagicRawFrameProcessingAttribute;
330
+ enum _BlackmagicRawFrameProcessingAttribute {
331
+ blackmagicRawFrameProcessingAttributeWhiteBalanceKelvin = /* 'wbkv' */ 0x77626B76, // u32
332
+ blackmagicRawFrameProcessingAttributeWhiteBalanceTint = /* 'wbtn' */ 0x7762746E, // s16
333
+ blackmagicRawFrameProcessingAttributeExposure = /* 'expo' */ 0x6578706F, // float
334
+ blackmagicRawFrameProcessingAttributeISO = /* 'fiso' */ 0x6669736F, // u32
335
+ blackmagicRawFrameProcessingAttributeAnalogGain = /* 'agpf' */ 0x61677066 // float
336
+ };
337
+
338
+ /* Enum BlackmagicRawImmersiveAttribute - Variant types that may be stored as metadata */
339
+
340
+ typedef uint32_t BlackmagicRawImmersiveAttribute;
341
+ enum _BlackmagicRawImmersiveAttribute {
342
+ blackmagicRawImmersiveAttributeOpticalLensProcessingDataFileUUID = /* 'oldu' */ 0x6F6C6475, // string
343
+ blackmagicRawImmersiveAttributeOpticalILPDFileName = /* 'oldf' */ 0x6F6C6466, // string
344
+ blackmagicRawImmersiveAttributeOpticalInteraxial = /* 'olix' */ 0x6F6C6978, // i8
345
+ blackmagicRawImmersiveAttributeOpticalProjectionKind = /* 'olpk' */ 0x6F6C706B, // string
346
+ blackmagicRawImmersiveAttributeOpticalCalibrationType = /* 'olct' */ 0x6F6C6374, // string
347
+ blackmagicRawImmersiveAttributeOpticalProjectionData = /* 'olpd' */ 0x6F6C7064 // string
348
+ };
349
+
350
+ /* Enum BlackmagicRawInterop - */
351
+
352
+ typedef uint32_t BlackmagicRawInterop;
353
+ enum _BlackmagicRawInterop {
354
+ blackmagicRawInteropNone = /* 'none' */ 0x6E6F6E65,
355
+ blackmagicRawInteropOpenGL = /* 'opgl' */ 0x6F70676C
356
+ };
357
+
358
+ /* Enum BlackmagicRawAnamorphicRatio - */
359
+
360
+ typedef uint32_t BlackmagicRawAnamorphicRatio;
361
+ enum _BlackmagicRawAnamorphicRatio {
362
+ blackmagicRawAnamorphicRatioFromMetadata = /* 'meta' */ 0x6D657461,
363
+ blackmagicRawAnamorphicRatioDisabled = /* 'dsbl' */ 0x6473626C,
364
+ blackmagicRawAnamorphicRatio133x = /* '133x' */ 0x31333378,
365
+ blackmagicRawAnamorphicRatio15x = /* '15x_' */ 0x3135785F,
366
+ blackmagicRawAnamorphicRatio16x = /* '16x_' */ 0x3136785F,
367
+ blackmagicRawAnamorphicRatio166x = /* '166x' */ 0x31363678,
368
+ blackmagicRawAnamorphicRatio18x = /* '18x_' */ 0x3138785F,
369
+ blackmagicRawAnamorphicRatio2x = /* '2x__' */ 0x32785F5F
370
+ };
371
+
372
+ /* Enum BlackmagicRawRotation - */
373
+
374
+ typedef uint32_t BlackmagicRawRotation;
375
+ enum _BlackmagicRawRotation {
376
+ blackmagicRawRotationFromMetadata = /* 'meta' */ 0x6D657461,
377
+ blackmagicRawRotationDisabled = /* 'dsbl' */ 0x6473626C,
378
+ blackmagicRawRotationClockwise90 = /* 'r90_' */ 0x7239305F,
379
+ blackmagicRawRotationClockwise180 = /* 'r180' */ 0x72313830,
380
+ blackmagicRawRotationClockwise270 = /* 'r270' */ 0x72323730
381
+ };
382
+
383
+ /* Enum BlackmagicRawFlip - */
384
+
385
+ typedef uint32_t BlackmagicRawFlip;
386
+ enum _BlackmagicRawFlip {
387
+ blackmagicRawFlipFromMetadata = /* 'meta' */ 0x6D657461,
388
+ blackmagicRawFlipDisabled = /* 'dsbl' */ 0x6473626C,
389
+ blackmagicRawFlipHorizontal = /* 'flpx' */ 0x666C7078,
390
+ blackmagicRawFlipVertical = /* 'flpy' */ 0x666C7079,
391
+ blackmagicRawFlipBoth = /* 'flpb' */ 0x666C7062
392
+ };
393
+
394
+ /* Enum BlackmagicRawSizeLimit - Used in IBlackmagicRawConfigurationEx */
395
+ // braw 4.5
396
+ typedef uint32_t BlackmagicRawSizeLimit;
397
+ enum _BlackmagicRawSizeLimit {
398
+ blackmagicRawSizeLimitNone = /* 'szln' */ 0x737A6C6E,
399
+ blackmagicRawSizeLimitScale = /* 'szsc' */ 0x737A7363,
400
+ blackmagicRawSizeLimitCrop = /* 'szlc' */ 0x737A6C63
401
+ };
402
+
403
+ /* Enum BlackmagicRawImmersiveVideoTrack - */
404
+
405
+ typedef uint32_t BlackmagicRawImmersiveVideoTrack;
406
+ enum _BlackmagicRawImmersiveVideoTrack {
407
+ blackmagicRawImmersiveVideoTrackLeft = 0,
408
+ blackmagicRawImmersiveVideoTrackRight = 1
409
+ };
410
+
411
+ #if defined(__cplusplus)
412
+
413
+ // Forward Declarations
414
+
415
+ class IBlackmagicRaw;
416
+ class IBlackmagicRawFactory;
417
+ class IBlackmagicRawPipelineIterator;
418
+ class IBlackmagicRawPipelineDeviceIterator;
419
+ class IBlackmagicRawOpenGLInteropHelper;
420
+ class IBlackmagicRawPipelineDevice;
421
+ class IBlackmagicRawToneCurve;
422
+ class IBlackmagicRawConfiguration;
423
+ class IBlackmagicRawConfigurationEx;
424
+ class IBlackmagicRawClipGeometry;
425
+ class IBlackmagicRawResourceManager;
426
+ class IBlackmagicRawMetadataIterator;
427
+ class IBlackmagicRawClipProcessingAttributes;
428
+ class IBlackmagicRawFrameProcessingAttributes;
429
+ class IBlackmagicRawPost3DLUT;
430
+ class IBlackmagicRawProcessedImage;
431
+ class IBlackmagicRawJob;
432
+ class IBlackmagicRawReadJobHints;
433
+ class IBlackmagicRawCallback;
434
+ class IBlackmagicRawClipAudio;
435
+ class IBlackmagicRawFilesystem;
436
+ class IBlackmagicRawFile;
437
+ class IBlackmagicRawClipAccelerometerMotion;
438
+ class IBlackmagicRawClipGyroscopeMotion;
439
+ class IBlackmagicRawClipPDAFData;
440
+ class IBlackmagicRawAudioBuffer;
441
+ class IBlackmagicRawFrame;
442
+ class IBlackmagicRawFrameEx;
443
+ class IBlackmagicRawFrameMultiVideo;
444
+ class IBlackmagicRawManualDecoderFlow1;
445
+ class IBlackmagicRawManualDecoderFlow2;
446
+ class IBlackmagicRawClip;
447
+ class IBlackmagicRawClipEx;
448
+ class IBlackmagicRawClipMultiVideo;
449
+ class IBlackmagicRawClipImmersiveVideo;
450
+ class IBlackmagicRawClipResolutions;
451
+
452
+ /* Struct SafeArrayBound - Dimensionality of a SafeArray */
453
+
454
+ #ifdef _WIN32
455
+ using SafeArray = SAFEARRAY;
456
+ using SafeArrayBound = SAFEARRAYBOUND;
457
+ #else
458
+ struct SafeArrayBound
459
+ {
460
+ uint32_t lLbound;
461
+ uint32_t cElements;
462
+ };
463
+
464
+ /* Struct SafeArray - Typed array of data, passed into and out of API library */
465
+
466
+ struct SafeArray
467
+ {
468
+ BlackmagicRawVariantType variantType;
469
+ uint32_t cDims;
470
+ uint8_t* data;
471
+ SafeArrayBound bounds;
472
+ };
473
+
474
+ /* Struct Variant - Structure wrapping metadata, passed into and out of the API Library */
475
+
476
+ struct Variant
477
+ {
478
+ BlackmagicRawVariantType vt;
479
+
480
+ // Metadata
481
+ union {
482
+ int16_t iVal;
483
+ uint16_t uiVal;
484
+ int32_t intVal;
485
+ uint32_t uintVal;
486
+ float fltVal;
487
+ BRawStr bstrVal;
488
+ SafeArray* parray;
489
+ };
490
+ };
491
+ using VARIANT = Variant;
492
+ using VARTYPE = BlackmagicRawVariantType;
493
+ #endif
494
+
495
+ /* Interface IBlackmagicRaw - A single codec instance */
496
+
497
+ class BMD_PUBLIC IBlackmagicRaw : public IUnknown
498
+ {
499
+ public:
500
+ // fileName or filePath(6.0)
501
+ virtual HRESULT OpenClip (/* in */ BRawStr fileName, /* out */ IBlackmagicRawClip** clip) = 0;
502
+ #if (BRAW_MAJOR + 0) >= 3
503
+ virtual HRESULT OpenClipWithGeometry (/* in */ BRawStr fileName, /* in */ IBlackmagicRawClipGeometry* geometry, /* out */ IBlackmagicRawClip** clip) = 0;
504
+ #endif
505
+ #if (BRAW_MAJOR + 0) >= 6
506
+ virtual HRESULT OpenClipFromFile (/* in */ IBlackmagicRawFile* brawFile, /* out */ IBlackmagicRawClip** clip) = 0;
507
+ virtual HRESULT OpenClipFromFileWithGeometry (/* in */ IBlackmagicRawFile* brawFile, /* in */ IBlackmagicRawClipGeometry* geometry, /* out */ IBlackmagicRawClip** clip) = 0;
508
+ #endif
509
+ virtual HRESULT SetCallback (/* in */ IBlackmagicRawCallback* callback) = 0;
510
+ virtual HRESULT PreparePipeline (/* in */ BlackmagicRawPipeline pipeline, /* in */ void* pipelineContext, /* in */ void* pipelineCommandQueue, /* in */ void* userData /* optional */) = 0; // Asynchronously prepares the current pipeline
511
+ virtual HRESULT PreparePipelineForDevice (/* in */ IBlackmagicRawPipelineDevice* pipelineDevice, /* in */ void* userData /* optional */) = 0; // Asynchronously prepares the current pipeline
512
+ virtual HRESULT FlushJobs (void) = 0; // Blocking call which will only return once all jobs have been completed
513
+
514
+ protected:
515
+ virtual ~IBlackmagicRaw () {} // call Release method to drop reference count
516
+ };
517
+
518
+ /* Interface IBlackmagicRawFactory - Use this to create one or more Codec objects */
519
+
520
+ class BMD_PUBLIC IBlackmagicRawFactory : public IUnknown
521
+ {
522
+ public:
523
+ virtual HRESULT CreateCodec (/* out */ IBlackmagicRaw** codec) = 0;
524
+ virtual HRESULT CreatePipelineIterator (/* in */ BlackmagicRawInterop interop, /* out */ IBlackmagicRawPipelineIterator** pipelineIterator) = 0;
525
+ virtual HRESULT CreatePipelineDeviceIterator (/* in */ BlackmagicRawPipeline pipeline, /* in */ BlackmagicRawInterop interop, /* out */ IBlackmagicRawPipelineDeviceIterator** deviceIterator) = 0;
526
+ #if (BRAW_MAJOR + 0) >= 3
527
+ virtual HRESULT CreateClipGeometry (/* out */ IBlackmagicRawClipGeometry** geometry) = 0;
528
+ #endif
529
+ protected:
530
+ virtual ~IBlackmagicRawFactory () {} // call Release method to drop reference count
531
+ };
532
+
533
+ /* Interface IBlackmagicRawPipelineIterator - Use this to determine pipelines available for use on the system */
534
+
535
+ class BMD_PUBLIC IBlackmagicRawPipelineIterator : public IUnknown
536
+ {
537
+ public:
538
+ virtual HRESULT Next (void) = 0; // When at last entry, calling Next() will return S_FALSE
539
+ virtual HRESULT GetName (/* out */ BRawStr* pipelineName) = 0;
540
+ virtual HRESULT GetInterop (/* out */ BlackmagicRawInterop* interop) = 0;
541
+ virtual HRESULT GetPipeline (/* out */ BlackmagicRawPipeline* pipeline) = 0;
542
+
543
+ protected:
544
+ virtual ~IBlackmagicRawPipelineIterator () {} // call Release method to drop reference count
545
+ };
546
+
547
+ /* Interface IBlackmagicRawPipelineDeviceIterator - Use this to determine pipeline devices available for use on the system */
548
+
549
+ class BMD_PUBLIC IBlackmagicRawPipelineDeviceIterator : public IUnknown
550
+ {
551
+ public:
552
+ virtual HRESULT Next (void) = 0; // When at last entry, calling Next() will return S_FALSE
553
+ virtual HRESULT GetPipeline (/* out */ BlackmagicRawPipeline* pipeline) = 0;
554
+ virtual HRESULT GetInterop (/* out */ BlackmagicRawInterop* interop) = 0;
555
+ virtual HRESULT CreateDevice (/* out */ IBlackmagicRawPipelineDevice** pipelineDevice) = 0;
556
+
557
+ protected:
558
+ virtual ~IBlackmagicRawPipelineDeviceIterator () {} // call Release method to drop reference count
559
+ };
560
+
561
+ /* Interface IBlackmagicRawOpenGLInteropHelper - */
562
+
563
+ class BMD_PUBLIC IBlackmagicRawOpenGLInteropHelper : public IUnknown
564
+ {
565
+ public:
566
+ virtual HRESULT GetPreferredResourceFormat (/* out */ BlackmagicRawResourceFormat* preferredFormat) = 0;
567
+ virtual HRESULT SetImage (/* in */ IBlackmagicRawProcessedImage* processedImage, /* out */ uint32_t* openGLTextureName, /* out */ int32_t* openGLTextureTarget) = 0;
568
+
569
+ protected:
570
+ virtual ~IBlackmagicRawOpenGLInteropHelper () {} // call Release method to drop reference count
571
+ };
572
+
573
+ /* Interface IBlackmagicRawPipelineDevice - */
574
+
575
+ class BMD_PUBLIC IBlackmagicRawPipelineDevice : public IUnknown
576
+ {
577
+ public:
578
+ virtual HRESULT SetBestInstructionSet (void) = 0;
579
+ virtual HRESULT SetInstructionSet (/* in */ BlackmagicRawInstructionSet instructionSet) = 0;
580
+ virtual HRESULT GetInstructionSet (/* out */ BlackmagicRawInstructionSet* instructionSet) = 0;
581
+ virtual HRESULT GetIndex (/* out */ uint32_t* deviceIndex) = 0;
582
+ virtual HRESULT GetName (/* out */ BRawStr* deviceName) = 0;
583
+ #if (BRAW_VERSION + 0) >= 600
584
+ virtual HRESULT GetUniqueIdentifier (/* out */ uint64_t* uniqueIdentifier) = 0;
585
+ #endif
586
+ virtual HRESULT GetInterop (/* out */ BlackmagicRawInterop* interop) = 0;
587
+ virtual HRESULT GetPipeline (/* out */ BlackmagicRawPipeline* pipeline, /* out */ void** context, /* out */ void** commandQueue) = 0;
588
+ virtual HRESULT GetPipelineName (/* out */ BRawStr* pipelineName) = 0;
589
+ virtual HRESULT GetOpenGLInteropHelper (/* out */ IBlackmagicRawOpenGLInteropHelper** interopHelper) = 0;
590
+ #if (BRAW_VERSION + 0) >= 400
591
+ virtual HRESULT GetSupportedResourceFormats (/* out */ BlackmagicRawResourceFormat* array /* optional */, /* in, out */ uint32_t* arrayElementCount /* optional */) = 0;
592
+ # if (BRAW_VERSION + 0) >= 450
593
+ virtual HRESULT GetMaximumTextureSize (/* out */ uint32_t* maximumWidth, /* out */ uint32_t* maximumHeight) = 0;
594
+ # endif
595
+ #endif
596
+ #if (BRAW_VERSION + 0) >= 600 || (BRAW_VERSION + 0) < 400
597
+ protected:
598
+ virtual ~IBlackmagicRawPipelineDevice () {} // call Release method to drop reference count
599
+ #endif
600
+ };
601
+
602
+ /* Interface IBlackmagicRawToneCurve - Functions which provide useful tone curve operations */
603
+
604
+ class BMD_PUBLIC IBlackmagicRawToneCurve : public IUnknown
605
+ {
606
+ public:
607
+ virtual HRESULT GetToneCurve (/* in */ BRawStr cameraType, /* in */ BRawStr gamma, /* in */ uint16_t gen /* Color science gen */, /* out */ float* contrast, /* out */ float* saturation, /* out */ float* midpoint, /* out */ float* highlights, /* out */ float* shadows, /* out */ float* blackLevel, /* out */ float* whiteLevel, /* out */ uint16_t* videoBlackLevel) = 0; // Query tone curve parameters for a specific camera and gamma. These are only currently available on Gamut: Blackmagic Design, Gamma: Blackmagic Design Film, Blackmagic Design Extended Video, Blackmagic Design Custom. Note: Custom gamma can define a tone curve per clip, see BlackmagicRawClipProcessingAttributes::GetToneCurveForCustomGamma()
608
+ virtual HRESULT EvaluateToneCurve (/* in */ BRawStr cameraType, /* in */ uint16_t gen, /* in */ float contrast, /* in */ float saturation, /* in */ float midpoint, /* in */ float highlights, /* in */ float shadows, /* in */ float blackLevel, /* in */ float whiteLevel, /* in */ uint16_t videoBlackLevel, /* out */ float* array, /* in */ uint32_t arrayElementCount) = 0; // Evaluates tone curve, returned buffer can be used to visualise curve
609
+
610
+ protected:
611
+ virtual ~IBlackmagicRawToneCurve () {} // call Release method to drop reference count
612
+ };
613
+
614
+ /* Interface IBlackmagicRawConfiguration - Configuration for Codec Object. Configuration properties are read on first OpenClip() */
615
+
616
+ class BMD_PUBLIC IBlackmagicRawConfiguration : public IUnknown
617
+ {
618
+ public:
619
+ virtual HRESULT SetPipeline (/* in */ BlackmagicRawPipeline pipeline /* changing pipeline will cause the default resource manager to be re-created */, /* in */ void* pipelineContext, /* in */ void* pipelineCommandQueue) = 0;
620
+ virtual HRESULT GetPipeline (/* out */ BlackmagicRawPipeline* pipeline /* optional */, /* out */ void** pipelineContextOut /* optional */, /* out */ void** pipelineCommandQueueOut /* optional */) = 0;
621
+ virtual HRESULT IsPipelineSupported (/* in */ BlackmagicRawPipeline pipeline, /* out */ bool* pipelineSupported) = 0; // Verifies relevant hardware/DLLs are available
622
+ virtual HRESULT SetCPUThreads (/* in */ uint32_t threadCount /* set 0 for default */) = 0;
623
+ virtual HRESULT GetCPUThreads (/* out */ uint32_t* threadCount) = 0;
624
+ virtual HRESULT GetMaxCPUThreadCount (/* out */ uint32_t* threadCount) = 0;
625
+ virtual HRESULT SetWriteMetadataPerFrame (/* in */ bool writePerFrame) = 0; // if true, frame metadata will be written to only the relevant frame
626
+ virtual HRESULT GetWriteMetadataPerFrame (/* out */ bool* writePerFrame) = 0;
627
+ virtual HRESULT SetFromDevice (/* in */ IBlackmagicRawPipelineDevice* pipelineDevice) = 0;
628
+ #if (BRAW_MAJOR + 0) >= 3
629
+ virtual HRESULT GetVersion (/* out */ BRawStr* version) = 0;
630
+ virtual HRESULT GetCameraSupportVersion (/* out */ BRawStr* version) = 0;
631
+ #endif
632
+ protected:
633
+ virtual ~IBlackmagicRawConfiguration () {} // call Release method to drop reference count
634
+ };
635
+
636
+ /* Interface IBlackmagicRawConfigurationEx - Extended Configuration for Codec Object */
637
+
638
+ class BMD_PUBLIC IBlackmagicRawConfigurationEx : public IUnknown
639
+ {
640
+ public:
641
+ virtual HRESULT GetResourceManager (/* out */ IBlackmagicRawResourceManager** resourceManager) = 0;
642
+ virtual HRESULT SetResourceManager (/* in */ IBlackmagicRawResourceManager* resourceManager /* setting null will restore the default resource manager */) = 0; // Set to NULL to return to default resource manager
643
+ virtual HRESULT GetInstructionSet (/* out */ BlackmagicRawInstructionSet* instructionSet) = 0;
644
+ virtual HRESULT SetInstructionSet (/* in */ BlackmagicRawInstructionSet instructionSet) = 0;
645
+
646
+ protected:
647
+ virtual ~IBlackmagicRawConfigurationEx () {} // call Release method to drop reference count
648
+ };
649
+
650
+ /* Interface IBlackmagicRawClipGeometry - Geometry properties of Clip object */
651
+
652
+ class BMD_PUBLIC IBlackmagicRawClipGeometry : public IUnknown
653
+ {
654
+ public:
655
+ virtual HRESULT GetAnamorphicRatio (/* out */ BlackmagicRawAnamorphicRatio* anamorphic) = 0;
656
+ virtual HRESULT SetAnamorphicRatio (/* in */ BlackmagicRawAnamorphicRatio anamorphic) = 0;
657
+ virtual HRESULT GetRotation (/* out */ BlackmagicRawRotation* rotation) = 0;
658
+ virtual HRESULT SetRotation (/* in */ BlackmagicRawRotation rotation) = 0;
659
+ virtual HRESULT GetFlip (/* out */ BlackmagicRawFlip* flip) = 0;
660
+ virtual HRESULT SetFlip (/* in */ BlackmagicRawFlip flip) = 0;
661
+
662
+ #if (BRAW_MAJOR + 0) >= 4
663
+ protected:
664
+ virtual ~IBlackmagicRawClipGeometry () {} // call Release method to drop reference count
665
+ #endif
666
+ };
667
+
668
+ /* Interface IBlackmagicRawResourceManager - Resource manager allows manual handling of CPU/GPU resource allocation */
669
+
670
+ class BMD_PUBLIC IBlackmagicRawResourceManager : public IUnknown
671
+ {
672
+ public:
673
+ virtual HRESULT CreateResource (/* in */ void* context, /* in */ void* commandQueue, /* in */ uint32_t sizeBytes, /* in */ BlackmagicRawResourceType type, /* in */ BlackmagicRawResourceUsage usage, /* out */ void** resource) = 0;
674
+ virtual HRESULT ReleaseResource (/* in */ void* context, /* in */ void* commandQueue, /* in */ void* resource, /* in */ BlackmagicRawResourceType type) = 0;
675
+ virtual HRESULT CopyResource (/* in */ void* context, /* in */ void* commandQueue, /* in */ void* source, /* in */ BlackmagicRawResourceType sourceType, /* in */ void* destination, /* in */ BlackmagicRawResourceType destinationType, /* in */ uint32_t sizeBytes, /* in */ bool copyAsync) = 0; // Utility function, not called by the API
676
+ virtual HRESULT GetResourceHostPointer (/* in */ void* context, /* in */ void* commandQueue, /* in */ void* resource, /* in */ BlackmagicRawResourceType resourceType, /* out */ void** hostPointer) = 0; // Utility function, not called by the API
677
+
678
+ protected:
679
+ virtual ~IBlackmagicRawResourceManager () {} // call Release method to drop reference count
680
+ };
681
+
682
+ /* Interface IBlackmagicRawMetadataIterator - Iterating metadata */
683
+
684
+ class BMD_PUBLIC IBlackmagicRawMetadataIterator : public IUnknown
685
+ {
686
+ public:
687
+ virtual HRESULT Next (void) = 0; // When at last entry, calling Next() will return S_FALSE
688
+ virtual HRESULT GetKey (/* out */ BRawStr* key) = 0;
689
+ virtual HRESULT GetData (/* out */ VARIANT* data) = 0;
690
+
691
+ protected:
692
+ virtual ~IBlackmagicRawMetadataIterator () {} // call Release method to drop reference count
693
+ };
694
+
695
+ /* Interface IBlackmagicRawClipProcessingAttributes - Clip attributes used during processing */
696
+
697
+ class BMD_PUBLIC IBlackmagicRawClipProcessingAttributes : public IUnknown
698
+ {
699
+ public:
700
+ virtual HRESULT GetClipAttribute (/* in */ BlackmagicRawClipProcessingAttribute attribute, /* out */ VARIANT* value) = 0;
701
+ virtual HRESULT SetClipAttribute (/* in */ BlackmagicRawClipProcessingAttribute attribute, /* in */ VARIANT* value) = 0;
702
+ virtual HRESULT GetClipAttributeRange (/* in */ BlackmagicRawClipProcessingAttribute attribute, /* out */ VARIANT* valueMin, /* out */ VARIANT* valueMax, /* out */ bool* isReadOnly) = 0;
703
+ virtual HRESULT GetClipAttributeList (/* in */ BlackmagicRawClipProcessingAttribute attribute, /* out */ VARIANT* array /* optional */, /* out */ uint32_t* arrayElementCount /* optional */, /* out */ bool* isReadOnly) = 0;
704
+ virtual HRESULT GetISOList (/* out */ uint32_t* array /* optional */, /* in, out */ uint32_t* arrayElementCount /* optional */, /* out */ bool* isReadOnly) = 0;
705
+ virtual HRESULT GetPost3DLUT (/* out */ IBlackmagicRawPost3DLUT** lut) = 0;
706
+ #if (BRAW_VERSION + 0) >= 600
707
+ virtual HRESULT GetSidecarPost3DLUT (/* out */ IBlackmagicRawPost3DLUT** lut) = 0;
708
+ virtual HRESULT SetSidecarPost3DLUT (/* in */ BRawStr name, /* in */ BRawStr title, /* in */ uint16_t size, /* in */ VARIANT* data) = 0;
709
+ virtual HRESULT GetEmbeddedPost3DLUT (/* out */ IBlackmagicRawPost3DLUT** lut) = 0;
710
+ virtual HRESULT SetEmbeddedPost3DLUT (/* in */ BRawStr name, /* in */ BRawStr title, /* in */ uint16_t size, /* in */ VARIANT* data) = 0;
711
+ #endif
712
+ protected:
713
+ virtual ~IBlackmagicRawClipProcessingAttributes () {} // call Release method to drop reference count
714
+ };
715
+
716
+ /* Interface IBlackmagicRawFrameProcessingAttributes - Frame attributes used during processing */
717
+
718
+ class BMD_PUBLIC IBlackmagicRawFrameProcessingAttributes : public IUnknown
719
+ {
720
+ public:
721
+ virtual HRESULT GetFrameAttribute (/* in */ BlackmagicRawFrameProcessingAttribute attribute, /* out */ VARIANT* value) = 0;
722
+ virtual HRESULT SetFrameAttribute (/* in */ BlackmagicRawFrameProcessingAttribute attribute, /* in */ VARIANT* value) = 0;
723
+ virtual HRESULT GetFrameAttributeRange (/* in */ BlackmagicRawFrameProcessingAttribute attribute, /* out */ VARIANT* valueMin, /* out */ VARIANT* valueMax, /* out */ bool* isReadOnly) = 0;
724
+ virtual HRESULT GetFrameAttributeList (/* in */ BlackmagicRawFrameProcessingAttribute attribute, /* out */ VARIANT* array /* optional */, /* out */ uint32_t* arrayElementCount /* optional */, /* out */ bool* isReadOnly) = 0;
725
+ virtual HRESULT GetISOList (/* out */ uint32_t* array /* optional */, /* in, out */ uint32_t* arrayElementCount /* optional */, /* out */ bool* isReadOnly) = 0;
726
+
727
+ protected:
728
+ virtual ~IBlackmagicRawFrameProcessingAttributes () {} // call Release method to drop reference count
729
+ };
730
+
731
+ /* Interface IBlackmagicRawPost3DLUT - 3D LUT object */
732
+
733
+ class BMD_PUBLIC IBlackmagicRawPost3DLUT : public IUnknown
734
+ {
735
+ public:
736
+ virtual HRESULT GetName (/* out */ BRawStr* name) = 0;
737
+ virtual HRESULT GetTitle (/* out */ BRawStr* title) = 0;
738
+ virtual HRESULT GetSize (/* out */ uint32_t* size) = 0;
739
+ virtual HRESULT GetResourceGPU (/* in */ void* context, /* in */ void* commandQueue, /* out */ BlackmagicRawResourceType* type, /* out */ void** resource) = 0;
740
+ virtual HRESULT GetResourceCPU (/* out */ void** resource) = 0;
741
+ virtual HRESULT GetResourceSizeBytes (/* out */ uint32_t* sizeBytes) = 0;
742
+ #if (BRAW_MAJOR + 0) >= 3
743
+ virtual HRESULT WriteCubeFile (/* in */ BRawStr fileName) = 0;
744
+ #endif
745
+ #if (BRAW_VERSION + 0) >= 600
746
+ virtual HRESULT WriteCubeToFile (/* in */ IBlackmagicRawFile* cubeFile) = 0;
747
+ #endif
748
+ protected:
749
+ virtual ~IBlackmagicRawPost3DLUT () {} // call Release method to drop reference count
750
+ };
751
+
752
+ /* Interface IBlackmagicRawProcessedImage - Processed image ready to display */
753
+
754
+ class BMD_PUBLIC IBlackmagicRawProcessedImage : public IUnknown
755
+ {
756
+ public:
757
+ virtual HRESULT GetWidth (/* out */ uint32_t* width) = 0;
758
+ virtual HRESULT GetHeight (/* out */ uint32_t* height) = 0;
759
+ virtual HRESULT GetResource (/* out */ void** resource) = 0;
760
+ virtual HRESULT GetResourceType (/* out */ BlackmagicRawResourceType* type) = 0;
761
+ virtual HRESULT GetResourceFormat (/* out */ BlackmagicRawResourceFormat* format) = 0;
762
+ virtual HRESULT GetResourceSizeBytes (/* out */ uint32_t* sizeBytes) = 0;
763
+ virtual HRESULT GetResourceContextAndCommandQueue (/* out */ void** context, /* out */ void** commandQueue) = 0;
764
+
765
+ protected:
766
+ virtual ~IBlackmagicRawProcessedImage () {} // call Release method to drop reference count
767
+ };
768
+
769
+ /* Interface IBlackmagicRawJob - Asynchronous job object */
770
+
771
+ class BMD_PUBLIC IBlackmagicRawJob : public IUnknown
772
+ {
773
+ public:
774
+ virtual HRESULT Submit (void) = 0;
775
+ virtual HRESULT Abort (void) = 0;
776
+ virtual HRESULT SetUserData (/* in */ void* userData) = 0;
777
+ virtual HRESULT GetUserData (/* out */ void** userData) = 0;
778
+
779
+ protected:
780
+ virtual ~IBlackmagicRawJob () {} // call Release method to drop reference count
781
+ };
782
+
783
+ /* Interface IBlackmagicRawReadJobHints - Read job hints */
784
+
785
+ class BMD_PUBLIC IBlackmagicRawReadJobHints : public IUnknown
786
+ {
787
+ public:
788
+ virtual HRESULT SetReaderResolutionScale (/* in */ BlackmagicRawResolutionScale readerResolutionScale) = 0;
789
+ #if (BRAW_VERSION + 0) >= 600
790
+ protected:
791
+ virtual ~IBlackmagicRawReadJobHints () {} // call Release method to drop reference count
792
+ #endif
793
+ };
794
+
795
+ /* Interface IBlackmagicRawCallback - Callback for IBlackmagicRaw */
796
+
797
+ class BMD_PUBLIC IBlackmagicRawCallback : public IUnknown
798
+ {
799
+ public:
800
+ virtual void ReadComplete (/* in */ IBlackmagicRawJob* job, /* in */ HRESULT result, /* in */ IBlackmagicRawFrame* frame) = 0;
801
+ #if (BRAW_VERSION + 0) >= 600
802
+ virtual void ReadAudioComplete (/* in */ IBlackmagicRawJob* job, /* in */ HRESULT result, /* in */ IBlackmagicRawAudioBuffer* audioBuffer) = 0;
803
+ #endif
804
+ virtual void DecodeComplete (/* in */ IBlackmagicRawJob* job, /* in */ HRESULT result) = 0;
805
+ virtual void ProcessComplete (/* in */ IBlackmagicRawJob* job, /* in */ HRESULT result, /* in */ IBlackmagicRawProcessedImage* processedImage) = 0;
806
+ virtual void TrimProgress (/* in */ IBlackmagicRawJob* job, /* in */ float progress) = 0;
807
+ virtual void TrimComplete (/* in */ IBlackmagicRawJob* job, /* in */ HRESULT result) = 0;
808
+ virtual void SidecarMetadataParseWarning (/* in */ IBlackmagicRawClip* clip, /* in */ BRawStr fileName, /* in */ uint32_t lineNumber, /* in */ BRawStr info) = 0; // offending line will be ignored
809
+ virtual void SidecarMetadataParseError (/* in */ IBlackmagicRawClip* clip, /* in */ BRawStr fileName, /* in */ uint32_t lineNumber, /* in */ BRawStr info) = 0; // entire file will be ignored
810
+ virtual void PreparePipelineComplete (/* in */ void* userData, /* in */ HRESULT result) = 0;
811
+
812
+ protected:
813
+ virtual ~IBlackmagicRawCallback () {} // call Release method to drop reference count
814
+ };
815
+
816
+ /* Interface IBlackmagicRawClipAudio - Audio component for an opened movie clip */
817
+
818
+ class BMD_PUBLIC IBlackmagicRawClipAudio : public IUnknown
819
+ {
820
+ public:
821
+ virtual HRESULT GetAudioFormat (/* out */ BlackmagicRawAudioFormat* format) = 0;
822
+ virtual HRESULT GetAudioBitDepth (/* out */ uint32_t* bitDepth) = 0;
823
+ virtual HRESULT GetAudioChannelCount (/* out */ uint32_t* channelCount) = 0;
824
+ virtual HRESULT GetAudioSampleRate (/* out */ uint32_t* sampleRate) = 0;
825
+ virtual HRESULT GetAudioSampleCount (/* out */ uint64_t* sampleCount) = 0;
826
+ virtual HRESULT GetAudioSamples (/* in */ int64_t sampleFrameIndex, /* in */ void* buffer, /* in */ uint32_t bufferSizeBytes, /* in */ uint32_t maxSampleCount, /* out */ uint32_t* samplesRead /* optional */, /* out */ uint32_t* bytesRead /* optional */) = 0;
827
+
828
+ protected:
829
+ virtual ~IBlackmagicRawClipAudio () {} // call Release method to drop reference count
830
+ };
831
+ /* Interface IBlackmagicRawFilesystem - Provides filesystem operations */
832
+
833
+ class BMD_PUBLIC IBlackmagicRawFilesystem : public IUnknown
834
+ {
835
+ public:
836
+ virtual HRESULT OpenCompanionFile (/* in */ IBlackmagicRawFile* parentFile, /* in */ BRawStr fileName, /* out */ IBlackmagicRawFile** fileOut) = 0;
837
+ virtual HRESULT CreateCompanionFile (/* in */ IBlackmagicRawFile* parentFile, /* in */ BRawStr fileName, /* in */ bool replaceExisting, /* out */ IBlackmagicRawFile** fileOut) = 0;
838
+
839
+ protected:
840
+ virtual ~IBlackmagicRawFilesystem () {} // call Release method to drop reference count
841
+ };
842
+
843
+ /* Interface IBlackmagicRawFile - Provides access to a file */
844
+
845
+ class BMD_PUBLIC IBlackmagicRawFile : public IUnknown
846
+ {
847
+ public:
848
+ virtual HRESULT GetFilesystem (/* out */ IBlackmagicRawFilesystem** filesystemOut) = 0;
849
+ virtual HRESULT GetFileName (/* out */ BRawStr* fileName) = 0;
850
+ virtual HRESULT SetFileLength (/* in */ uint64_t fileLength) = 0;
851
+ virtual HRESULT GetFileLength (/* out */ uint64_t* fileLength) = 0;
852
+ virtual HRESULT ReadV (/* in */ BmdIoVec* buffers, /* in */ uint32_t bufferCount, /* in */ uint64_t fileOffset, /* out */ uint64_t* bytesRead) = 0;
853
+ virtual HRESULT WriteV (/* in */ BmdIoVec* buffers, /* in */ uint32_t bufferCount, /* in */ uint64_t fileOffset, /* out */ uint64_t* bytesWritten) = 0;
854
+ virtual HRESULT GetPreferredIoAlignment (/* out */ uint32_t* alignment) = 0;
855
+ virtual HRESULT FlushWrites (void) = 0;
856
+ virtual HRESULT CommitFile (void) = 0;
857
+
858
+ protected:
859
+ virtual ~IBlackmagicRawFile () {} // call Release method to drop reference count
860
+ };
861
+ /* Interface IBlackmagicRawClipAccelerometerMotion - Accelerometer motion for an opened movie clip */
862
+
863
+ class BMD_PUBLIC IBlackmagicRawClipAccelerometerMotion : public IUnknown
864
+ {
865
+ public:
866
+ virtual HRESULT GetSampleRate (/* out */ float* sampleRate) = 0;
867
+ virtual HRESULT GetSampleCount (/* out */ uint32_t* sampleCount) = 0;
868
+ virtual HRESULT GetSampleSize (/* out */ uint32_t* sampleSize) = 0;
869
+ virtual HRESULT GetSampleRange (/* in */ uint64_t sampleStartIndex, /* in */ uint32_t sampleCount, /* out */ float* samples, /* out */ uint32_t* sampleCountOut) = 0;
870
+
871
+ protected:
872
+ virtual ~IBlackmagicRawClipAccelerometerMotion () {} // call Release method to drop reference count
873
+ };
874
+
875
+ /* Interface IBlackmagicRawClipGyroscopeMotion - Gyroscope motion for an opened movie clip */
876
+
877
+ class BMD_PUBLIC IBlackmagicRawClipGyroscopeMotion : public IUnknown
878
+ {
879
+ public:
880
+ virtual HRESULT GetSampleRate (/* out */ float* sampleRate) = 0;
881
+ virtual HRESULT GetSampleCount (/* out */ uint32_t* sampleCount) = 0;
882
+ virtual HRESULT GetSampleSize (/* out */ uint32_t* sampleSize) = 0;
883
+ virtual HRESULT GetSampleRange (/* in */ uint64_t sampleStartIndex, /* in */ uint32_t sampleCount, /* out */ float* samples, /* out */ uint32_t* sampleCountOut) = 0;
884
+
885
+ protected:
886
+ virtual ~IBlackmagicRawClipGyroscopeMotion () {} // call Release method to drop reference count
887
+ };
888
+
889
+ /* Interface IBlackmagicRawClipPDAFData - Phase detection autofocus data for an opened movie clip */
890
+ // 4.0
891
+ class BMD_PUBLIC IBlackmagicRawClipPDAFData : public IUnknown
892
+ {
893
+ public:
894
+ virtual HRESULT GetSampleImageWidthInPixels (/* out */ uint32_t* sampleImageWidthInPixelsOut) = 0;
895
+ virtual HRESULT GetSampleImageHeightInPixels (/* out */ uint32_t* sampleImageHeightInPixelsOut) = 0;
896
+ virtual HRESULT GetSampleImageBytesPerPixel (/* out */ uint32_t* sampleImageBytesPerPixelOut) = 0;
897
+ virtual HRESULT GetSampleSize (/* out */ uint32_t* sampleSizeOut) = 0;
898
+ virtual HRESULT GetSampleCount (/* out */ uint32_t* sampleCountOut) = 0;
899
+ virtual HRESULT GetSampleImages (/* in */ uint64_t sampleIndex, /* out */ uint8_t* leftSampleImageDataOut, /* out */ uint8_t* rightSampleImageDataOut, /* in */ uint32_t sampleImageDataSize) = 0;
900
+
901
+ protected:
902
+ virtual ~IBlackmagicRawClipPDAFData () {} // call Release method to drop reference count
903
+ };
904
+
905
+ /* Interface IBlackmagicRawAudioBuffer - Audio buffer */
906
+
907
+ class BMD_PUBLIC IBlackmagicRawAudioBuffer : public IUnknown
908
+ {
909
+ public:
910
+ virtual HRESULT GetAudioFormat (/* out */ BlackmagicRawAudioFormat* format) = 0;
911
+ virtual HRESULT GetAudioBitDepth (/* out */ uint32_t* bitDepth) = 0;
912
+ virtual HRESULT GetAudioChannelCount (/* out */ uint32_t* channelCount) = 0;
913
+ virtual HRESULT GetAudioSampleRate (/* out */ uint32_t* sampleRate) = 0;
914
+ virtual HRESULT GetAudioSampleCount (/* out */ uint64_t* sampleCount) = 0;
915
+ virtual HRESULT GetAudioSamples (/* in */ void** buffer, /* in */ uint32_t* bufferSizeBytes) = 0;
916
+
917
+ protected:
918
+ virtual ~IBlackmagicRawAudioBuffer () {} // call Release method to drop reference count
919
+ };
920
+
921
+ /* Interface IBlackmagicRawFrame - Frame of a clip */
922
+
923
+ class BMD_PUBLIC IBlackmagicRawFrame : public IUnknown
924
+ {
925
+ public:
926
+ virtual HRESULT GetFrameIndex (/* out */ uint64_t* frameIndex) = 0;
927
+ virtual HRESULT GetTimecode (/* out */ BRawStr* timecode) = 0;
928
+ virtual HRESULT GetMetadataIterator (/* out */ IBlackmagicRawMetadataIterator** iterator) = 0;
929
+ virtual HRESULT GetMetadata (/* in */ BRawStr key, /* out */ VARIANT* value) = 0;
930
+ virtual HRESULT SetMetadata (/* in */ BRawStr key, /* in */ VARIANT* value) = 0; // To clear metadata to movie original, set value to NULL. This data is not saved to disk until SaveSideCar() is called
931
+ virtual HRESULT CloneFrameProcessingAttributes (/* out */ IBlackmagicRawFrameProcessingAttributes** frameProcessingAttributes) = 0; // creates object with current frame processing attributes
932
+ virtual HRESULT SetResolutionScale (/* in */ BlackmagicRawResolutionScale resolutionScale) = 0;
933
+ virtual HRESULT GetResolutionScale (/* out */ BlackmagicRawResolutionScale* resolutionScale) = 0;
934
+ virtual HRESULT SetResourceFormat (/* in */ BlackmagicRawResourceFormat resourceFormat) = 0;
935
+ virtual HRESULT GetResourceFormat (/* out */ BlackmagicRawResourceFormat* resourceFormat) = 0;
936
+ virtual HRESULT GetSensorRate (/* out */ float* sensorRate) = 0;
937
+ virtual HRESULT CreateJobDecodeAndProcessFrame (/* in */ IBlackmagicRawClipProcessingAttributes* clipProcessingAttributes /* optionally override clipProcessingAttributes */, /* in */ IBlackmagicRawFrameProcessingAttributes* frameProcessingAttributes /* optionally override frameProcessingAttributes */, /* out */ IBlackmagicRawJob** job) = 0;
938
+
939
+ protected:
940
+ virtual ~IBlackmagicRawFrame () {} // call Release method to drop reference count
941
+ };
942
+
943
+ /* Interface IBlackmagicRawFrameEx - provides extra information for use with IBlackmagicRawManualDecoder */
944
+
945
+ class BMD_PUBLIC IBlackmagicRawFrameEx : public IUnknown
946
+ {
947
+ public:
948
+ virtual HRESULT GetBitStreamSizeBytes (/* out */ uint32_t* bitStreamSizeBytes) = 0;
949
+ virtual HRESULT GetProcessedImageResolution (/* out */ uint32_t* width, /* out */ uint32_t* height) = 0;
950
+
951
+ protected:
952
+ virtual ~IBlackmagicRawFrameEx () {} // call Release method to drop reference count
953
+ };
954
+
955
+ /* Interface IBlackmagicRawFrameMultiVideo - provides extra information related to frames from multi video track files */
956
+
957
+ class BMD_PUBLIC IBlackmagicRawFrameMultiVideo : public IUnknown
958
+ {
959
+ public:
960
+ virtual HRESULT GetVideoTrackIndex (/* out */ uint32_t* videoTrackIndex) = 0;
961
+
962
+ protected:
963
+ virtual ~IBlackmagicRawFrameMultiVideo () {} // call Release method to drop reference count
964
+ };
965
+
966
+ /* Interface IBlackmagicRawManualDecoderFlow1 - Allowing manual decoding/processing of buffers, Flow1 is a pure CPU solution */
967
+
968
+ class BMD_PUBLIC IBlackmagicRawManualDecoderFlow1 : public IUnknown
969
+ {
970
+ public:
971
+ virtual HRESULT PopulateFrameStateBuffer (/* in */ IBlackmagicRawFrame* frame, /* in */ IBlackmagicRawClipProcessingAttributes* clipProcessingAttributes /* optionally override clipProcessingAttributes */, /* in */ IBlackmagicRawFrameProcessingAttributes* frameProcessingAttributes /* optionally override frameProcessingAttributes */, /* out */ void* frameState, /* in */ uint32_t frameStateSizeBytes) = 0;
972
+ virtual HRESULT GetFrameStateSizeBytes (/* out */ uint32_t* frameStateSizeBytes) = 0;
973
+ virtual HRESULT GetDecodedSizeBytes (/* in */ void* frameStateBufferCPU, /* out */ uint32_t* decodedSizeBytes) = 0;
974
+ virtual HRESULT GetProcessedSizeBytes (/* in */ void* frameStateBufferCPU, /* out */ uint32_t* processedSizeBytes) = 0;
975
+ virtual HRESULT GetPost3DLUTSizeBytes (/* in */ void* frameStateBufferCPU, /* out */ uint32_t* post3DLUTSizeBytes) = 0;
976
+ virtual HRESULT CreateJobDecode (/* in */ void* frameStateBufferCPU, /* in */ void* bitStreamBufferCPU, /* in */ void* decodedBufferCPU, /* out */ IBlackmagicRawJob** job) = 0;
977
+ virtual HRESULT CreateJobProcess (/* in */ void* frameStateBufferCPU, /* in */ void* decodedBufferCPU, /* in */ void* processedBufferCPU, /* in */ void* post3DLUTBufferCPU, /* out */ IBlackmagicRawJob** job) = 0;
978
+
979
+ protected:
980
+ virtual ~IBlackmagicRawManualDecoderFlow1 () {} // call Release method to drop reference count
981
+ };
982
+
983
+ /* Interface IBlackmagicRawManualDecoderFlow2 - Allowing manual decoding/processing of buffers, Flow2 is a hybrid CPU/GPU solution */
984
+
985
+ class BMD_PUBLIC IBlackmagicRawManualDecoderFlow2 : public IUnknown
986
+ {
987
+ public:
988
+ virtual HRESULT PopulateFrameStateBuffer (/* in */ IBlackmagicRawFrame* frame, /* in */ IBlackmagicRawClipProcessingAttributes* clipProcessingAttributes /* optionally override clipProcessingAttributes */, /* in */ IBlackmagicRawFrameProcessingAttributes* frameProcessingAttributes /* optionally override frameProcessingAttributes */, /* out */ void* frameState, /* in */ uint32_t frameStateSizeBytes) = 0;
989
+ virtual HRESULT GetFrameStateSizeBytes (/* out */ uint32_t* frameStateSizeBytes) = 0;
990
+ virtual HRESULT GetDecodedSizeBytes (/* in */ void* frameStateBufferCPU, /* out */ uint32_t* decodedSizeBytes) = 0;
991
+ virtual HRESULT GetWorkingSizeBytes (/* in */ void* frameStateBufferCPU, /* out */ uint32_t* workingSizeBytes) = 0;
992
+ virtual HRESULT GetProcessedSizeBytes (/* in */ void* frameStateBufferCPU, /* out */ uint32_t* processedSizeBytes) = 0;
993
+ virtual HRESULT GetPost3DLUTSizeBytes (/* in */ void* frameStateBufferCPU, /* out */ uint32_t* post3DLUTSizeBytes) = 0;
994
+ virtual HRESULT CreateJobDecode (/* in */ void* frameStateBufferCPU, /* in */ void* bitStreamBufferCPU, /* in */ void* decodedBufferCPU, /* out */ IBlackmagicRawJob** job) = 0;
995
+ virtual HRESULT CreateJobProcess (/* in */ void* context, /* in */ void* commandQueue, /* in */ void* frameStateBufferCPU, /* in */ void* decodedBufferGPU, /* in */ void* workingBufferGPU /* additional working buffer */, /* in */ void* processedBufferGPU, /* in */ void* post3DLUTBufferGPU, /* out */ IBlackmagicRawJob** job) = 0; // Create a job to process a frame. This is performed on the specified GPU. After this process is complete a final processed image will be provided via a OnProcessComplete() callback
996
+
997
+ protected:
998
+ virtual ~IBlackmagicRawManualDecoderFlow2 () {} // call Release method to drop reference count
999
+ };
1000
+
1001
+ /* Interface IBlackmagicRawClip - Opened movie clip */
1002
+
1003
+ class BMD_PUBLIC IBlackmagicRawClip : public IUnknown
1004
+ {
1005
+ public:
1006
+ virtual HRESULT GetWidth (/* out */ uint32_t* width) = 0;
1007
+ virtual HRESULT GetHeight (/* out */ uint32_t* height) = 0;
1008
+ virtual HRESULT GetFrameRate (/* out */ float* frameRate) = 0;
1009
+ virtual HRESULT GetFrameCount (/* out */ uint64_t* frameCount) = 0;
1010
+ virtual HRESULT GetTimecodeForFrame (/* in */ uint64_t frameIndex, /* out */ BRawStr* timecode) = 0;
1011
+ virtual HRESULT GetMetadataIterator (/* out */ IBlackmagicRawMetadataIterator** iterator) = 0;
1012
+ virtual HRESULT GetMetadata (/* in */ BRawStr key, /* out */ VARIANT* value) = 0;
1013
+ virtual HRESULT SetMetadata (/* in */ BRawStr key, /* in */ VARIANT* value) = 0; // To clear metadata to movie original, set value to NULL. This data is not saved to disk until SaveSideCar() is called
1014
+ virtual HRESULT GetCameraType (/* out */ BRawStr* cameraType) = 0;
1015
+ virtual HRESULT CloneClipProcessingAttributes (/* out */ IBlackmagicRawClipProcessingAttributes** clipProcessingAttributes) = 0; // creates object with current clip processing attributes
1016
+ virtual HRESULT GetMulticardFileCount (/* out */ uint32_t* multicardFileCount) = 0;
1017
+ virtual HRESULT IsMulticardFilePresent (/* in */ uint32_t index, /* out */ bool* isMulticardFilePresent) = 0;
1018
+ virtual HRESULT GetSidecarFileAttached (/* out */ bool* isSidecarFileAttached) = 0; // Check for successfully parsed sidecar file, which is automatically loaded upon opening of a clip
1019
+ virtual HRESULT SaveSidecarFile (void) = 0; // Save metadata to sidecar file
1020
+ virtual HRESULT ReloadSidecarFile (void) = 0; // Reload metadata from sidecar file
1021
+ virtual HRESULT CreateJobReadFrame (/* in */ uint64_t frameIndex, /* out */ IBlackmagicRawJob** job) = 0; // Create a job to read a frame
1022
+ #if (BRAW_VERSION + 0) >= 600
1023
+ virtual HRESULT CreateJobReadAudio (/* in */ uint64_t sampleIndex, /* in */ uint64_t maxSampleCount, /* out */ IBlackmagicRawJob** job) = 0;
1024
+ #endif // Create a job to read audio samples
1025
+ virtual HRESULT CreateJobTrim (/* in */ BRawStr filePath, /* in */ uint64_t frameIndex, /* in */ uint64_t frameCount, /* in */ IBlackmagicRawClipProcessingAttributes* clipProcessingAttributes /* optional */, /* in */ IBlackmagicRawFrameProcessingAttributes* frameProcessingAttributes /* optional */, /* out */ IBlackmagicRawJob** job) = 0;
1026
+ #if (BRAW_VERSION + 0) >= 600
1027
+ virtual HRESULT CreateJobTrimToFile (/* in */ IBlackmagicRawFile* destinationFile, /* in */ uint64_t frameIndex, /* in */ uint64_t frameCount, /* in */ IBlackmagicRawClipProcessingAttributes* clipProcessingAttributes /* optional */, /* in */ IBlackmagicRawFrameProcessingAttributes* frameProcessingAttributes /* optional */, /* out */ IBlackmagicRawJob** job) = 0;
1028
+ #endif
1029
+ #if (BRAW_MAJOR + 0) >= 3
1030
+ virtual HRESULT CloneWithGeometry (/* in */ IBlackmagicRawClipGeometry* geometry, /* out */ IBlackmagicRawClip** clip) = 0;
1031
+ #endif
1032
+
1033
+ protected:
1034
+ virtual ~IBlackmagicRawClip () {} // call Release method to drop reference count
1035
+ };
1036
+
1037
+ /* Interface IBlackmagicRawClipEx - Extended use of IBlackmagicRawClip, to pass custom bitstream */
1038
+
1039
+ class BMD_PUBLIC IBlackmagicRawClipEx : public IUnknown
1040
+ {
1041
+ public:
1042
+ virtual HRESULT GetMaxBitStreamSizeBytes (/* out */ uint32_t* maxBitStreamSizeBytes) = 0;
1043
+ virtual HRESULT GetBitStreamSizeBytes (/* in */ uint64_t frameIndex, /* out */ uint32_t* bitStreamSizeBytes) = 0;
1044
+ virtual HRESULT CreateJobReadFrame (/* in */ uint64_t frameIndex, /* out */ void* bitStream /* optional */, /* in */ uint32_t bitStreamSizeBytes /* optional */, /* out */ IBlackmagicRawJob** job) = 0;
1045
+ #if (BRAW_VERSION + 0) >= 600
1046
+ virtual HRESULT CreateJobTrim (/* in */ BRawStr filePath, /* in */ uint64_t frameIndex, /* in */ uint64_t frameCount, /* in */ uint32_t frameStep, /* in */ float frameRate /* optional */, /* in */ IBlackmagicRawClipProcessingAttributes* clipProcessingAttributes /* optional */, /* in */ IBlackmagicRawFrameProcessingAttributes* frameProcessingAttributes /* optional */, /* out */ IBlackmagicRawJob** job) = 0;
1047
+ virtual HRESULT CreateJobTrimToFile (/* in */ IBlackmagicRawFile* destinationFile, /* in */ uint64_t frameIndex, /* in */ uint64_t frameCount, /* in */ uint32_t frameStep, /* in */ float frameRate /* optional */, /* in */ IBlackmagicRawClipProcessingAttributes* clipProcessingAttributes /* optional */, /* in */ IBlackmagicRawFrameProcessingAttributes* frameProcessingAttributes /* optional */, /* out */ IBlackmagicRawJob** job) = 0;
1048
+ #endif
1049
+ virtual HRESULT QueryTimecodeInfo (/* out */ uint32_t* baseFrameIndex, /* out */ bool* isDropFrameTimecode) = 0;
1050
+ #if (BRAW_VERSION + 0) >= 600
1051
+ virtual HRESULT GetFrameImageOffsetAndSize (/* in */ uint64_t frameIndex, /* out */ uint32_t* imageSizeBytes, /* out */ uint64_t* imageOffsetBytes, /* out */ uint32_t* fileIndex) = 0;
1052
+ virtual HRESULT GetAudioChunkInfo (/* in */ uint64_t sampleIndex, /* out */ uint32_t* audioChunkSizeBytesOut, /* out */ uint64_t* audioChunkOffsetBytesOut, /* out */ uint64_t* audioChunkSampleCountOut, /* out */ uint64_t* audioChunkStartSampleIndexOut) = 0;
1053
+ #endif
1054
+ protected:
1055
+ virtual ~IBlackmagicRawClipEx () {} // call Release method to drop reference count
1056
+ };
1057
+
1058
+ /* Interface IBlackmagicRawClipMultiVideo - Extended use of IBlackmagicRawClip, to support multi video track video clips */
1059
+
1060
+ class BMD_PUBLIC IBlackmagicRawClipMultiVideo : public IUnknown
1061
+ {
1062
+ public:
1063
+ virtual HRESULT GetVideoTrackCount (/* out */ uint32_t* videoTrackCount) = 0;
1064
+ virtual HRESULT GetVideoFrameCount (/* in */ uint32_t videoTrackIndex, /* out */ uint64_t* videoFrameCount) = 0;
1065
+ virtual HRESULT GetVideoTrackSource (/* in */ uint32_t videoTrackIndex, /* out */ uint32_t* videoSourceFourCC) = 0;
1066
+ virtual HRESULT CreateJobReadFrame (/* in */ uint32_t videoTrackIndex, /* in */ uint64_t frameIndex, /* out */ IBlackmagicRawJob** job) = 0; // Create a job o read a frame
1067
+ virtual HRESULT GetBitStreamSizeBytes (/* in */ uint32_t videoTrackIndex, /* in */ uint64_t frameIndex, /* out */ uint32_t* bitStreamSizeBytes) = 0;
1068
+ virtual HRESULT CreateJobReadFrameEx (/* in */ uint32_t videoTrackIndex, /* in */ uint64_t frameIndex, /* out */ void* bitStream /* optional */, /* in */ uint32_t bitStreamSizeBytes /* optional */, /* out */ IBlackmagicRawJob** job) = 0;
1069
+ #if (BRAW_VERSION + 0) >= 600
1070
+ virtual HRESULT GetFrameImageOffsetAndSize (/* in */ uint32_t videoTrackIndex, /* in */ uint64_t frameIndex, /* out */ uint32_t* imageSizeBytes, /* out */ uint64_t* imageOffsetBytes, /* out */ uint32_t* fileIndex) = 0;
1071
+ #endif
1072
+
1073
+ protected:
1074
+ virtual ~IBlackmagicRawClipMultiVideo () {} // call Release method to drop reference count
1075
+ };
1076
+
1077
+ /* Interface IBlackmagicRawClipImmersiveVideo - Extended use of IBlackmagicRawClip, to support immersive video clips */
1078
+
1079
+ class BMD_PUBLIC IBlackmagicRawClipImmersiveVideo : public IUnknown
1080
+ {
1081
+ public:
1082
+ virtual HRESULT CreateJobImmersiveReadFrame (/* in */ BlackmagicRawImmersiveVideoTrack videoTrack, /* in */ uint64_t frameIndex, /* out */ IBlackmagicRawJob** job) = 0; // Create a job to read a frame
1083
+ virtual HRESULT GetImmersiveBitStreamSizeBytes (/* in */ BlackmagicRawImmersiveVideoTrack videoTrack, /* in */ uint64_t frameIndex, /* out */ uint32_t* bitStreamSizeBytes) = 0;
1084
+ virtual HRESULT CreateJobImmersiveReadFrameEx (/* in */ BlackmagicRawImmersiveVideoTrack videoTrack, /* in */ uint64_t frameIndex, /* out */ void* bitStream /* optional */, /* in */ uint32_t bitStreamSizeBytes /* optional */, /* out */ IBlackmagicRawJob** job) = 0;
1085
+ virtual HRESULT GetDistanceBetweenLenses (/* out */ uint32_t* distanceBetweenLenses) = 0;
1086
+ virtual HRESULT GetComfortDisparityAdjustment (/* out */ int32_t* comfortDisparityAdjustment) = 0;
1087
+ virtual HRESULT GetHorizontalFieldOfView (/* out */ uint32_t* horizontalFieldOfView) = 0;
1088
+ virtual HRESULT GetImmersiveAttribute (/* in */ BlackmagicRawImmersiveAttribute attribute, /* out */ VARIANT* value) = 0;
1089
+
1090
+ protected:
1091
+ virtual ~IBlackmagicRawClipImmersiveVideo () {} // call Release method to drop reference count
1092
+ };
1093
+
1094
+ /* Interface IBlackmagicRawClipResolutions - Supports querying of resolutions and/or scales for processed image results */
1095
+
1096
+ class BMD_PUBLIC IBlackmagicRawClipResolutions : public IUnknown
1097
+ {
1098
+ public:
1099
+ virtual HRESULT GetResolutionCount (/* out */ uint32_t* resolutionCount) = 0;
1100
+ virtual HRESULT GetResolution (/* in */ uint32_t resolutionIndex, /* out */ uint32_t* resolutionWidthPixels, /* out */ uint32_t* resolutionHeightPixels) = 0;
1101
+ #if (BRAW_VERSION + 0) >= 450
1102
+ virtual HRESULT GetRecordedResolution (/* in */ uint32_t resolutionIndex, /* out */ uint32_t* recordedResolutionWidthPixels, /* out */ uint32_t* recordedResolutionHeightPixels) = 0;
1103
+ #endif
1104
+ virtual HRESULT GetClosestResolutionForScale (/* in */ BlackmagicRawResolutionScale resolutionScale, /* out */ uint32_t* resolutionWidthPixels, /* out */ uint32_t* resolutionHeightPixels) = 0;
1105
+ #if (BRAW_VERSION + 0) >= 300
1106
+ virtual HRESULT GetClosestScaleForResolution (/* in */ uint32_t resolutionWidthPixels, /* in */ uint32_t resolutionHeightPixels, /* out */ BlackmagicRawResolutionScale* resolutionScale) = 0;
1107
+ #else
1108
+ virtual HRESULT GetClosestScaleForResolution (/* in */ uint32_t resolutionWidthPixels, /* in */ uint32_t resolutionHeightPixels, /* in */ bool requestUpsideDown, /* out */ BlackmagicRawResolutionScale* resolutionScale) = 0;
1109
+ #endif
1110
+ protected:
1111
+ virtual ~IBlackmagicRawClipResolutions () {} // call Release method to drop reference count
1112
+ };
1113
+
1114
+ /* Functions */
1115
+
1116
+ extern "C" {
1117
+
1118
+ BMD_PUBLIC IBlackmagicRawFactory* CreateBlackmagicRawFactoryInstance(void);
1119
+ #ifndef _WIN32
1120
+ BMD_PUBLIC IBlackmagicRawFactory* CreateBlackmagicRawFactoryInstanceFromPath(/* in */ BRawStr loadPath);
1121
+ BMD_PUBLIC IBlackmagicRawFactory* CreateBlackmagicRawFactoryInstanceFromExeRelativePath(/* in */ BRawStr loadPath);
1122
+ BMD_PUBLIC HRESULT VariantInit(/* in */ VARIANT* variant);
1123
+ BMD_PUBLIC HRESULT VariantClear(/* in */ VARIANT* variant);
1124
+ BMD_PUBLIC SafeArray* SafeArrayCreate(/* in */ BlackmagicRawVariantType variantType, /* in */ uint32_t dimensions, /* in */ SafeArrayBound* safeArrayBound);
1125
+ BMD_PUBLIC HRESULT SafeArrayGetVartype(/* in */ SafeArray* safeArray, /* out */ BlackmagicRawVariantType* variantType);
1126
+ BMD_PUBLIC HRESULT SafeArrayGetLBound(/* in */ SafeArray* safeArray, /* in */ uint32_t dimensions, /* out */ long* lBound);
1127
+ BMD_PUBLIC HRESULT SafeArrayGetUBound(/* in */ SafeArray* safeArray, /* in */ uint32_t dimensions, /* out */ long* uBound);
1128
+ BMD_PUBLIC HRESULT SafeArrayAccessData(/* in */ SafeArray* safeArray, /* out */ void** outData);
1129
+ BMD_PUBLIC HRESULT SafeArrayUnaccessData(/* in */ SafeArray* safeArray);
1130
+ BMD_PUBLIC HRESULT SafeArrayDestroy(/* in */ SafeArray* safeArray);
1131
+ #endif
1132
+ }
1133
+
1134
+
1135
+
1136
+ #endif /* defined(__cplusplus) */
1137
+ #endif /* defined(BMD_BLACKMAGICRAWAPI_H) */