davinci-resolve-mcp 4.6.4 → 4.7.0

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,39 @@
2
2
 
3
3
  Release history for the DaVinci Resolve MCP Server. The latest release is summarized in the root README; older entries live here to keep the README focused.
4
4
 
5
+ ## What's New in v4.7.0 — the Resolve 21.1 transcription and timeline-item type reads are complete
6
+
7
+ The read-only pick from the 21.1 tracker ([#207](https://github.com/samuelgursky/davinci-resolve-mcp/issues/207)), by @legionsound in [#237](https://github.com/samuelgursky/davinci-resolve-mcp/pull/237). Granular 387 → 389; compound unchanged at 37.
8
+
9
+ ### Added
10
+
11
+ - **Granular `get_media_pool_item_transcription(clip_id, use_nested_clip_transcription=False)`** —
12
+ the complete 21.1 `MediaPoolItem.GetTranscription` dictionary with timed words. The
13
+ compound `media_pool_item get_transcription` already preferred it on 21.1; the
14
+ granular server had no way to reach it.
15
+ - **Compound `timeline_item get_type` and granular
16
+ `get_timeline_item_type(track_type, track_index, item_index)`** — the native
17
+ lowercase `TimelineItem.GetType`, addressed by position like the other 21.1 item
18
+ readers (`get_speed`, `get_fades`), behind the same `_requires_method(..., "21.1")`
19
+ guard. The granular item-properties bundle already carried `type` by id through an
20
+ unguarded call; this is the position-addressed twin of the compound action.
21
+ - `CODE_FLOORS` gains `MediaPoolItem.GetTranscription` and `TimelineItem.GetType` at
22
+ 21.1. Docs, README counts, and the generated agent-rule files are regenerated.
23
+
24
+ ### Validation
25
+
26
+ - Live on Studio 21.1.0.14 (contributor's measurement, reported): native, compound,
27
+ and granular agreed exactly — one English segment with 19 timed words, and item
28
+ type `video` — matching the 2026-09-09 measurement. `Transcription Status` reads
29
+ empty while processing and `Transcribed` when done.
30
+ `tests/live_resolve211_read_completion.py` reproduces it.
31
+ - Unit-tested: argument validation, the missing-method refusal below 21.1, and both
32
+ interfaces forwarding the native value unchanged. The 19.1.3.7 floor refusal was
33
+ not re-measured on landing (the open project had no timeline or clips); the guard
34
+ is the one the twelve v2.216.0 readers measured refusing on 19.1.3.7.
35
+ - Not tested: nested-clip transcription, non-English or multi-speaker audio,
36
+ `GetType` on audio/subtitle/generator/Fusion items, builds other than 21.1.0.14.
37
+
5
38
  ## What's New in v4.6.4 — `ripple="false"` no longer ripples
6
39
 
7
40
  ### Fixed
package/README.md CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  English | [简体中文](README.zh-CN.md)
4
4
 
5
- [![Version](https://img.shields.io/badge/version-4.6.4-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
5
+ [![Version](https://img.shields.io/badge/version-4.7.0-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
6
6
  [![npm](https://img.shields.io/npm/v/davinci-resolve-mcp.svg?label=npm&color=CB3837)](https://www.npmjs.com/package/davinci-resolve-mcp)
7
7
  [![API Coverage](https://img.shields.io/badge/API%20Coverage-100%25-brightgreen.svg)](docs/reference/api-coverage.md)
8
- [![Tools](https://img.shields.io/badge/MCP%20Tools-37%20(387%20full)-blue.svg)](#server-modes)
8
+ [![Tools](https://img.shields.io/badge/MCP%20Tools-37%20(389%20full)-blue.svg)](#server-modes)
9
9
  [![Advanced](https://img.shields.io/badge/Advanced%20(offline)-18%20tools-blueviolet.svg)](#server-modes)
10
10
  [![Tested](https://img.shields.io/badge/Live%20Tested-93.6%25-green.svg)](docs/reference/api-coverage.md#test-results)
11
11
  [![DaVinci Resolve](https://img.shields.io/badge/DaVinci%20Resolve-18.5+-darkred.svg)](https://www.blackmagicdesign.com/products/davinciresolve)
@@ -133,7 +133,7 @@ The command starts a loopback-only server and opens the control panel in your br
133
133
  | Mode | Entry point | Tools | Best for |
134
134
  |------|-------------|-------|----------|
135
135
  | Compound | `src/server.py` | 37 | Default mode for most assistants. Related Resolve operations are grouped behind action parameters to keep context usage low. |
136
- | Full / granular | `src/server.py --full` or `src/resolve_mcp_server.py` | 387 | Power users who want one MCP tool per Resolve API method. |
136
+ | Full / granular | `src/server.py --full` or `src/resolve_mcp_server.py` | 389 | Power users who want one MCP tool per Resolve API method. |
137
137
 
138
138
  The compound server is recommended unless you specifically need the granular one-tool-per-method surface.
139
139
 
@@ -410,7 +410,7 @@ The default server is a local stdio process launched by your MCP client; it does
410
410
 
411
411
  | Metric | Value |
412
412
  |--------|-------|
413
- | MCP Tools | **37** compound / **387** granular (live server) |
413
+ | MCP Tools | **37** compound / **389** granular (live server) |
414
414
  | Advanced (offline) tools | **18** — .drp/.drt/.drx + DB authoring, no Resolve running |
415
415
  | Kernel Actions | **136** guarded workflow actions across 9 compound tools |
416
416
  | API Methods Covered | **361/361** (100%) |
package/README.zh-CN.md CHANGED
@@ -2,17 +2,17 @@
2
2
 
3
3
  [English](README.md) | 简体中文
4
4
 
5
- [![Version](https://img.shields.io/badge/version-4.6.4-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
5
+ [![Version](https://img.shields.io/badge/version-4.7.0-blue.svg)](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
6
6
  [![npm](https://img.shields.io/npm/v/davinci-resolve-mcp.svg?label=npm&color=CB3837)](https://www.npmjs.com/package/davinci-resolve-mcp)
7
7
  [![API Coverage](https://img.shields.io/badge/API%20Coverage-100%25-brightgreen.svg)](docs/reference/api-coverage.md)
8
- [![Tools](https://img.shields.io/badge/MCP%20Tools-37%20(387%20full)-blue.svg)](#服务器模式)
8
+ [![Tools](https://img.shields.io/badge/MCP%20Tools-37%20(389%20full)-blue.svg)](#服务器模式)
9
9
  [![Advanced](https://img.shields.io/badge/Advanced%20(offline)-18%20tools-blueviolet.svg)](#服务器模式)
10
10
  [![Tested](https://img.shields.io/badge/Live%20Tested-93.6%25-green.svg)](docs/reference/api-coverage.md#test-results)
11
11
  [![DaVinci Resolve](https://img.shields.io/badge/DaVinci%20Resolve-18.5+-darkred.svg)](https://www.blackmagicdesign.com/products/davinciresolve)
12
12
  [![Python](https://img.shields.io/badge/python-3.10+-green.svg)](https://www.python.org/downloads/)
13
13
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
14
14
 
15
- > 本翻译对应 v4.6.4 版 README。如与英文原版有出入,以 [英文原版](README.md) 为准。
15
+ > 本翻译对应 v4.7.0 版 README。如与英文原版有出入,以 [英文原版](README.md) 为准。
16
16
 
17
17
  一个 Model Context Protocol (MCP) 服务器,让 AI 助手通过官方脚本 API 控制 DaVinci Resolve Studio(达芬奇)。它提供完整的 API 覆盖,外加带护栏的工作流助手,涵盖剪辑、媒体池整理、渲染设置、审阅标记、调色、Fusion、Fairlight、项目生命周期任务、扩展开发,以及不碰源媒体的媒体分析。
18
18
 
@@ -88,7 +88,7 @@ venv/bin/python -m src.control_panel
88
88
  | 模式 | 入口 | 工具数 | 适合谁 |
89
89
  |------|------|--------|--------|
90
90
  | Compound(复合) | `src/server.py` | 37 | 大多数助手的默认模式。相关的 Resolve 操作按 action 参数分组,压低上下文占用。 |
91
- | Full / granular(细粒度) | `src/server.py --full` 或 `src/resolve_mcp_server.py` | 387 | 想要"一个 Resolve API 方法 = 一个 MCP 工具"的重度用户。 |
91
+ | Full / granular(细粒度) | `src/server.py --full` 或 `src/resolve_mcp_server.py` | 389 | 想要"一个 Resolve API 方法 = 一个 MCP 工具"的重度用户。 |
92
92
 
93
93
  除非你明确需要一方法一工具的细粒度界面,否则推荐复合模式。
94
94
 
@@ -226,7 +226,7 @@ DRX 调色写入**针对 Resolve Studio 做过实机校准**:调色参数默
226
226
 
227
227
  | 指标 | 数值 |
228
228
  |------|------|
229
- | MCP 工具 | **37** 复合 / **387** 细粒度(实时服务器) |
229
+ | MCP 工具 | **37** 复合 / **389** 细粒度(实时服务器) |
230
230
  | Advanced(离线)工具 | **18**——.drp/.drt/.drx + 数据库创作,无需 Resolve 运行 |
231
231
  | 内核 action | 9 个复合工具下 **136** 个带护栏的工作流 action |
232
232
  | API 方法覆盖 | **361/361**(100%) |
package/docs/SKILL.md CHANGED
@@ -353,7 +353,7 @@ to the user as verified.
353
353
  | Mode | Entry point | Tool count | Use when |
354
354
  |---|---|---|---|
355
355
  | Compound (default) | `src/server.py` | 37 tools | Most workflows — keeps context lean |
356
- | Granular (full) | `src/server.py --full` | 387 tools | Power users needing one tool per API method |
356
+ | Granular (full) | `src/server.py --full` | 389 tools | Power users needing one tool per API method |
357
357
 
358
358
  Resolve 21.1 adds [twelve read-only discovery controls](reference/resolve211-read-controls.md)
359
359
  for edition, presets, audio formats/codecs, normalization modes, speed, fades
package/docs/install.md CHANGED
@@ -144,7 +144,7 @@ The MCP server comes in two modes:
144
144
  | Mode | File | Tools | Best For |
145
145
  |------|------|-------|----------|
146
146
  | **Compound** (default) | `src/server.py` | 37 | Most users — fast, clean, low context usage |
147
- | **Full** | `src/resolve_mcp_server.py` | 387 | Power users who want one tool per API method |
147
+ | **Full** | `src/resolve_mcp_server.py` | 389 | Power users who want one tool per API method |
148
148
 
149
149
  The compound server's `timeline_item` tool includes dedicated actions for common workflows:
150
150
 
@@ -159,7 +159,7 @@ The compound server's `timeline_item` tool includes dedicated actions for common
159
159
 
160
160
  The installer uses the compound server by default. To use the full server:
161
161
  ```bash
162
- python src/server.py --full # Launch full 387-tool server
162
+ python src/server.py --full # Launch full 389-tool server
163
163
  # Or point your MCP config directly at src/resolve_mcp_server.py
164
164
  ```
165
165
 
@@ -25,7 +25,7 @@ Every non-deprecated method in the bundled legacy README is represented. This
25
25
  does not claim complete coverage of the newer Resolve 21.1 typed API. The
26
26
  default compound server exposes **37 tools** that group related operations by
27
27
  action parameter, keeping LLM context windows lean. The full granular server
28
- provides **387 individual tools** for power users. The legacy coverage spans
28
+ provides **389 individual tools** for power users. The legacy coverage spans
29
29
  13 API object classes. MCP-level kernel actions are tracked separately in
30
30
  [Kernel Action Coverage](../kernels/README.md).
31
31
 
@@ -44,6 +44,10 @@ way Blackmagic's MCP exposes `search_scripting_api` — and each result also say
44
44
  whether this server wraps the method, so a lookup doubles as a parity check.
45
45
  See [Querying the typed API](typed-api-search.md).
46
46
 
47
+ The 21.1 full-transcription and native timeline-item type readers are also
48
+ available through both interfaces. A synthetic spoken clip matched the native
49
+ results exactly; see [Resolve 21.1 transcription and type reads](resolve211-transcription-type.md).
50
+
47
51
  The 34th compound tool is `timeline_versioning` (C6) — an MCP-level workflow
48
52
  tool, not a wrapper around a Resolve API method. It surfaces the
49
53
  version-on-mutate hook that auto-archives the working timeline before any
@@ -0,0 +1,35 @@
1
+ # Resolve 21.1 transcription and timeline-item type reads
2
+
3
+ Resolve 21.1 added `MediaPoolItem.GetTranscription` and
4
+ `TimelineItem.GetType`. The compound server already preferred the full native
5
+ transcription over the older truncated clip-property preview. This change adds
6
+ the missing granular transcription tool plus direct type reads in both server
7
+ modes.
8
+
9
+ ## Live acceptance
10
+
11
+ Tested on Resolve Studio 21.1.0.14 using a disposable project and a 14-second
12
+ synthetic spoken-camera clip. Native `TranscribeAudio(False, False)` completed
13
+ with status `Transcribed`. The official API, compound
14
+ `media_pool_item.get_transcription`, and granular
15
+ `get_media_pool_item_transcription` returned the same English transcription:
16
+ one segment with 19 timed words. Nested-clip transcription was disabled.
17
+
18
+ The clip was also placed on a timeline. Native `TimelineItem.GetType`, compound
19
+ `timeline_item.get_type`, and granular `get_timeline_item_type` all returned the
20
+ lowercase string `video`.
21
+
22
+ The reusable harness is `tests/live_resolve211_read_completion.py`; structured
23
+ evidence is in
24
+ `docs/reference/evidence/resolve211-transcription-type.json`.
25
+
26
+ ## Scope
27
+
28
+ This validates a non-nested English transcription on one video-plus-audio item
29
+ and the `video` timeline-item type. It does not establish nested-clip behavior,
30
+ speaker labels, other languages, audio-only items, titles, generators,
31
+ transitions, subtitles, multicam items, or every possible native type string.
32
+
33
+ ## Re-run on v4.6.3, 2026-09-15
34
+
35
+ Rebuilt from `main` at v4.6.3 and re-measured on Studio 21.1.0.14 in a local disposable project. Native `GetTranscription`, compound `media_pool_item get_transcription` and granular `get_media_pool_item_transcription` agreed exactly: one English segment, 19 timed words. Native `GetType`, compound `timeline_item get_type` and granular `get_timeline_item_type` all returned `video`. `Transcription Status` reads empty while transcription is still processing and `Transcribed` once it is done.
package/install.py CHANGED
@@ -37,7 +37,7 @@ from src.utils.update_check import (
37
37
 
38
38
  # ─── Version ──────────────────────────────────────────────────────────────────
39
39
 
40
- VERSION = "4.6.4"
40
+ VERSION = "4.7.0"
41
41
  # Only hard floor: mcp[cli] requires Python 3.10+. There is no upper bound —
42
42
  # Resolve's scripting bridge loads into newer interpreters on recent builds
43
43
  # (Python 3.14 verified against Resolve Studio 20.3.2). Older Resolve builds
@@ -1543,7 +1543,7 @@ def verify_resolve_connection(python_path, api_path, lib_path):
1543
1543
 
1544
1544
  def print_banner():
1545
1545
  title = f"DaVinci Resolve MCP Server — Installer v{VERSION}"
1546
- subtitle = "37 compound · 387 full · 3 platforms"
1546
+ subtitle = "37 compound · 389 full · 3 platforms"
1547
1547
  print()
1548
1548
  print(bold(" ╔══════════════════════════════════════════════════════╗"))
1549
1549
  print(bold(f" ║{title:^54}║"))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "davinci-resolve-mcp",
3
- "version": "4.6.4",
3
+ "version": "4.7.0",
4
4
  "description": "NPM bootstrapper for the DaVinci Resolve MCP Server.",
5
5
  "license": "MIT",
6
6
  "author": "Samuel Gursky <samgursky@gmail.com>",
@@ -93,7 +93,7 @@ if not logging.getLogger().handlers:
93
93
  handlers=[logging.StreamHandler()],
94
94
  )
95
95
 
96
- VERSION = "4.6.4"
96
+ VERSION = "4.7.0"
97
97
  logger = logging.getLogger("davinci-resolve-mcp")
98
98
  logger.info(f"Starting DaVinci Resolve MCP Server v{VERSION}")
99
99
  logger.info(f"Detected platform: {get_platform()}")
@@ -57,6 +57,25 @@ def get_project_settings_presets() -> dict:
57
57
  return {"presets": proj.GetProjectSettingsPresetList()}
58
58
 
59
59
 
60
+ @mcp.tool(annotations=READ_ONLY_TOOL)
61
+ def get_media_pool_item_transcription(clip_id: str, use_nested_clip_transcription: bool = False) -> dict:
62
+ """Read the complete 21.1 transcription dictionary for one Media Pool item, including timed words."""
63
+ if not isinstance(clip_id, str) or not clip_id:
64
+ return {"error": "clip_id must be a non-empty string"}
65
+ if type(use_nested_clip_transcription) is not bool:
66
+ return {"error": "use_nested_clip_transcription must be a boolean"}
67
+ _, proj = get_current_project()
68
+ if proj is None:
69
+ return {"error": "No project currently open"}
70
+ clip = _find_clip_by_id(proj.GetMediaPool().GetRootFolder(), clip_id)
71
+ if clip is None:
72
+ return {"error": "Media Pool item not found"}
73
+ missing = _requires_method(clip, "GetTranscription", "21.1")
74
+ if missing:
75
+ return missing
76
+ return {"transcription": clip.GetTranscription(use_nested_clip_transcription)}
77
+
78
+
60
79
  @mcp.tool(annotations=READ_ONLY_TOOL)
61
80
  def get_audio_render_formats() -> dict:
62
81
  """Read GetAudioRenderFormats (documented on Resolve 21.1+)."""
@@ -129,6 +148,19 @@ def get_timeline_item_fades(track_type: str = "video", track_index: int = 1, ite
129
148
  return missing
130
149
  return {"fades": item.GetFades()}
131
150
 
151
+ @mcp.tool(annotations=READ_ONLY_TOOL)
152
+ def get_timeline_item_type(track_type: str = "video", track_index: int = 1, item_index: int = 0) -> dict:
153
+ """Read the native lowercase TimelineItem type documented on Resolve 21.1+."""
154
+ if track_type not in ("video", "audio") or track_index < 1 or item_index < 0:
155
+ return {"error": "Use video/audio, a 1-based track index and a non-negative item index"}
156
+ item, error = _get_timeline_item(track_type, track_index, item_index)
157
+ if error:
158
+ return error
159
+ missing = _requires_method(item, "GetType", "21.1")
160
+ if missing:
161
+ return missing
162
+ return {"type": item.GetType()}
163
+
132
164
  @mcp.tool(annotations=READ_ONLY_TOOL)
133
165
  def get_timeline_item_output_blanking(track_type: str = "video", track_index: int = 1, item_index: int = 0) -> dict:
134
166
  """Read GetOutputBlanking (documented on Resolve 21.1+). Pixel coordinates; clips inheriting timeline blanking return an empty dict."""
@@ -34,7 +34,7 @@ from src.utils.update_check import start_background_update_check
34
34
  if __name__ == "__main__":
35
35
  try:
36
36
  start_background_update_check(VERSION, project_dir, logger)
37
- logger.info(f"Starting DaVinci Resolve MCP Server v{VERSION} (387 granular tools)")
37
+ logger.info(f"Starting DaVinci Resolve MCP Server v{VERSION} (389 granular tools)")
38
38
  run_fastmcp_stdio(mcp)
39
39
  except KeyboardInterrupt:
40
40
  logger.info("Server shutdown requested")
package/src/server.py CHANGED
@@ -11,7 +11,7 @@ Usage:
11
11
  python src/server.py --full # Start the 377-tool granular server instead
12
12
  """
13
13
 
14
- VERSION = "4.6.4"
14
+ VERSION = "4.7.0"
15
15
 
16
16
  import base64
17
17
  import os
@@ -26403,6 +26403,7 @@ def timeline_item(action: str, params: Optional[Dict[str, Any]] = None) -> Dict[
26403
26403
  set_fades(options, ...) -> {success} — native 21.1 FadeIn/FadeOut integer frames.
26404
26404
  get_speed(...) -> {speed} — documented on Resolve 21.1+.
26405
26405
  get_fades(...) -> {fades} — documented on Resolve 21.1+. Native frame durations.
26406
+ get_type(...) -> {type} — native lowercase TimelineItem type documented on Resolve 21.1+.
26406
26407
  get_output_blanking(...) -> {blanking} — documented on Resolve 21.1+. Pixel coordinates; empty on a clip inheriting timeline blanking.
26407
26408
  get_use_timeline_for_output_blanking(...) -> {use_timeline} — documented on Resolve 21.1+.
26408
26409
  get_name(track_type?, track_index?, item_index?) -> {name}
@@ -26516,6 +26517,11 @@ def timeline_item(action: str, params: Optional[Dict[str, Any]] = None) -> Dict[
26516
26517
  if missing:
26517
26518
  return missing
26518
26519
  return {"fades": _ser(item.GetFades())}
26520
+ if action == "get_type":
26521
+ missing = _requires_method(item, "GetType", "21.1")
26522
+ if missing:
26523
+ return missing
26524
+ return {"type": _ser(item.GetType())}
26519
26525
  if action == "get_output_blanking":
26520
26526
  missing = _requires_method(item, "GetOutputBlanking", "21.1")
26521
26527
  if missing:
@@ -26702,7 +26708,7 @@ def timeline_item(action: str, params: Optional[Dict[str, Any]] = None) -> Dict[
26702
26708
  return _err(f"Invalid interpolation. Must be one of: {', '.join(valid)}")
26703
26709
  return {"success": bool(item.SetKeyframeInterpolation(p["property"], p["frame"], p["interpolation"]))}
26704
26710
 
26705
- return _unknown(action, ["set_output_blanking","set_use_timeline_for_output_blanking","flatten_multicam","add_transition","set_speed","set_fades","get_speed","get_fades","get_output_blanking","get_use_timeline_for_output_blanking","get_name","get_property","set_property","get_duration","get_start","get_end","get_source_start_frame","get_source_end_frame","get_source_start_time","get_source_end_time","get_left_offset","get_right_offset","set_clip_enabled","get_clip_enabled","update_sidecar","get_unique_id","get_media_pool_item","get_stereo_convergence","get_stereo_left_window","get_stereo_right_window","get_linked_items","get_track_type_and_index","get_source_audio_mapping","load_burnin_preset","set_name","get_voice_isolation_state","set_voice_isolation_state","get_retime","set_retime","get_transform","set_transform","get_crop","set_crop","get_composite","set_composite","get_audio","set_audio","get_keyframes","add_keyframe","modify_keyframe","delete_keyframe","set_keyframe_interpolation"])
26711
+ return _unknown(action, ["set_output_blanking","set_use_timeline_for_output_blanking","flatten_multicam","add_transition","set_speed","set_fades","get_speed","get_fades","get_type","get_output_blanking","get_use_timeline_for_output_blanking","get_name","get_property","set_property","get_duration","get_start","get_end","get_source_start_frame","get_source_end_frame","get_source_start_time","get_source_end_time","get_left_offset","get_right_offset","set_clip_enabled","get_clip_enabled","update_sidecar","get_unique_id","get_media_pool_item","get_stereo_convergence","get_stereo_left_window","get_stereo_right_window","get_linked_items","get_track_type_and_index","get_source_audio_mapping","load_burnin_preset","set_name","get_voice_isolation_state","set_voice_isolation_state","get_retime","set_retime","get_transform","set_transform","get_crop","set_crop","get_composite","set_composite","get_audio","set_audio","get_keyframes","add_keyframe","modify_keyframe","delete_keyframe","set_keyframe_interpolation"])
26706
26712
 
26707
26713
 
26708
26714
  # ═══════════════════════════════════════════════════════════════════════════════
@@ -250,6 +250,8 @@ CODE_FLOORS: Dict[str, str] = {
250
250
  "Timeline.GetOutputBlanking": "21.1",
251
251
  "TimelineItem.GetSpeed": "21.1",
252
252
  "TimelineItem.GetFades": "21.1",
253
+ "MediaPoolItem.GetTranscription": "21.1",
254
+ "TimelineItem.GetType": "21.1",
253
255
  "TimelineItem.GetOutputBlanking": "21.1",
254
256
  "TimelineItem.GetUseTimelineForOutputBlanking": "21.1",
255
257