## Problem Summary
A custom Premiere Pro exporter plugin is not being recognized or loaded by Adobe Premiere Pro 2025 (version 25.5.0, Build 13). The plugin is built with the Premiere Pro 24.0 SDK, but Premiere Pro 25.5 appears to require newer PiPL resource structures that are not supported by the 24.0 SDK template.
## Environment
- **macOS Version**: macOS 15.0 (Sequoia)
- **Premiere Pro Version**: 25.5.0 (Build 13)
- **SDK Version**: Premiere Pro 24.0 SDK
- **Plugin Type**: Exporter plugin (`.prm` bundle)
- **Architecture**: ARM64 (Apple Silicon)
## Plugin Details
- **Plugin Name**: HS Plugin
- **Entry Point**: `xSDKExport`
- **Installation Location**: `/Library/Application Support/Adobe/Common/Plug-ins/25.0/MediaCore/HSPlugin.prm`
- **Bundle Structure**: Valid macOS bundle with `Contents/MacOS/libHSPlugin.dylib` and `Contents/Info.plist`
## Current PiPL Resource Structure
The plugin currently uses the following PiPL resource structure (compatible with 24.0 SDK):
```
resource 'PiPL' (16000) {
{
Kind {
PrDataExport // 'ExpD' - Exporter plugin type
},
Name {
"HS Plugin"
},
Category {
"Exporter"
},
Version {
0x000A0000 // Version 10 (prExportVersion800)
},
CodePowerPC {
0, // Reserved
0, // Reserved
"xSDKExport" // Entry point function
},
}
};
```
## Issue Analysis
### 1. Plugin Not Being Loaded
Premiere Pro logs show no mention of the HSPlugin during startup. The logs only show errors for other plugins (ArriRawSourceSettings, ExporterQuickTimeHost) trying to find various entry points, but our plugin is completely ignored.
**Log Evidence**:
```
2025-11-09 21:18:44.523 E Adobe Premiere Pro 2025[26053:5f1b4] [com.apple.CFBundle:loading]
dlsym cannot find symbol xSDKExport in CFBundle 0x600002f9c540
</Applications/Adobe Premiere Pro 2025/Adobe Premiere Pro 2025.app/Contents/PlugIns/Common/ArriRawSourceSettings.bundle>
```
No similar errors appear for HSPlugin, indicating Premiere Pro is not even attempting to load it.
### 2. SDK Version Mismatch
The plugin is built with the **Premiere Pro 24.0 SDK**, but Premiere Pro **25.5.0** is being used. The 24.0 SDK template (`PrSDKPiPL.r`) only supports:
- `PrDataExport` for exporter plugins
- `CodePowerPC` for entry points
However, Premiere Pro 25.5 may require:
- `prPlugin` for the Kind
- `CodeMacARM64` and `CodeMacIntel64` for modern entry points
### 3. PiPL Resource Template Limitations
The `PrSDKPiPL.r` template in the 24.0 SDK does not include:
- `prPlugin` as a Kind option
- `CodeMacARM64` case in the switch statement
- `CodeMacIntel64` case in the switch statement
Attempting to use these in the resource file causes Rez compilation errors:
```
### Rez - Expected identifier, but got number (1835102829)
### Rez - Can't find a match for 'CodeMacARM64' in the switch statement.
```
### 4. C++ Header Inclusion Issues
The SDK headers `PrSDKMALErrors.h` and `PrSDKExport.h` include C++ headers that the Rez compiler (a C compiler) cannot parse. This prevents us from including them directly in the `.r` file to get `EXPORTMOD_VERSION` and `prGetVersionNum`.
**Error Example**:
```
/Users/abc/code/hs/AdobeSDKs/PremiereProSDK/Premiere_Pro_24.0_SDK/Examples/Headers/PrSDKTypes.h:152:
### Rez - Expected 'DATA', 'ENUM', 'INCLUDE', 'READ', 'RESOURCE', or 'TYPE', but got identifier (static_assert)
```
## Current Workarounds
1. **Manually defining constants**: We manually define `EXPORTMOD_VERSION = 10` and `prGetVersionNum(x) = (x)` instead of including `PrSDKExport.h`.
2. **Using older entry points**: We use `PrDataExport` and `CodePowerPC` instead of `prPlugin` and `CodeMacARM64`/`CodeMacIntel64`.
3. **MAC_ENV definition**: We define `MAC_ENV` before including headers to prevent some C++ includes, but this doesn't fully solve the problem.
## Verification Steps Taken
1. **PiPL Resource Embedded**: Verified using `DeRez` that the PiPL resource is correctly embedded in the dylib
2. **Entry Point Present**: Verified using `nm` that `xSDKExport` symbol exists in the dylib
3. **Bundle Structure**: Verified that the `.prm` bundle has correct structure with `Contents/MacOS/` and `Contents/Info.plist`
4. **Info.plist Match**: Verified that `CFBundleExecutable` matches the actual dylib name (`libHSPlugin.dylib`)
5. **Installation Location**: Verified plugin is installed in `/Library/Application Support/Adobe/Common/Plug-ins/25.0/MediaCore/`
6. **Permissions**: Verified extended attributes cleared with `xattr -rc`
7. **Cache Cleared**: Cleared Premiere Pro preferences cache
## Code Files
### HSPlugin.r (Current)
```r
// src/HSPlugin.r
// Define MAC_ENV before including headers to prevent C++ includes
#define MAC_ENV
// ONLY include the C-safe headers Rez needs
#include "PrSDKPiPLVer.h"
// Manually define what we need since PrSDKExport.h includes C++ headers
// EXPORTMOD_VERSION = prExportVersion800 = 10
#define EXPORTMOD_VERSION 10
// Manually define prGetVersionNum since it's not available in C context
// prGetVersionNum just returns the version number directly
#define prGetVersionNum(x) (x)
// Include the PiPL template to get the resource type definition
// MAC_ENV should prevent C++ includes
#include "PrSDKPiPL.r"
// Define the resource manually
// Note: prPlugin, CodeMacARM64, and CodeMacIntel64 aren't in the 24.0 SDK template,
// so we'll use PrDataExport and CodePowerPC which work for modern macOS
resource 'PiPL' (16000) {
{
// 1. The Kind - using PrDataExport (prPlugin not in 24.0 SDK template)
Kind {
PrDataExport
},
// 2. Name and Category
Name {
"HS Plugin"
},
Category {
"Exporter"
},
// 3. Version (EXPORTMOD_VERSION = 10, so version = 10 << 16 = 0x000A0000)
// Using literal value since Rez doesn't support macro expansion in Version field
Version {
0x000A0000
},
// 4. CRITICAL: Use CodePowerPC entry point (works for both ARM64 and Intel64)
// CodeMacARM64 and CodeMacIntel64 aren't in the 24.0 SDK template,
// but CodePowerPC works for modern macOS architectures
CodePowerPC {
0, // Reserved
0, // Reserved
"xSDKExport"
},
}
};
```
### Desired Structure (What Premiere Pro 25.5 May Require)
```r
resource 'PiPL' (16000) {
{
Kind {
prPlugin // Not available in 24.0 SDK template
},
Name {
"HS Plugin"
},
Category {
"Exporter"
},
Version {
(prGetVersionNum(EXPORTMOD_VERSION) << 16)
},
CodeMacARM64 { // Not available in 24.0 SDK template
"xSDKExport"
},
CodeMacIntel64 { // Not available in 24.0 SDK template
"xSDKExport"
},
}
};
```
## Questions for Adobe Premiere Team
1. **SDK Compatibility**: Is the Premiere Pro 24.0 SDK compatible with Premiere Pro 25.5.0? If not, where can we obtain the Premiere Pro 25.0 SDK?
2. **PiPL Resource Requirements**: Does Premiere Pro 25.5 require `prPlugin` and `CodeMacARM64`/`CodeMacIntel64` entry points, or can it still recognize `PrDataExport` and `CodePowerPC`?
3. **Template Updates**: Will the `PrSDKPiPL.r` template be updated to support `prPlugin` and `CodeMacARM64`/`CodeMacIntel64`? If so, when will this be available?
4. **Backward Compatibility**: Should plugins built with the 24.0 SDK work with Premiere Pro 25.5, or is a rebuild with a newer SDK required?
5. **Debugging**: Are there any debugging tools or verbose logging options in Premiere Pro that can help diagnose why a plugin is not being loaded?
6. **Alternative Entry Points**: If `CodeMacARM64`/`CodeMacIntel64` are required, is there a way to manually define them in the resource file without modifying the SDK template?
## Build Configuration
### CMakeLists.txt (Relevant Sections)
```cmake
# Create shared library (dylib)
add_library(${PROJECT_NAME} SHARED ${SOURCES})
# Set the .prm extension and bundle properties
set_target_properties(${PROJECT_NAME} PROPERTIES
BUNDLE TRUE
BUNDLE_EXTENSION "prm"
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist"
)
# Set output directory to create bundle structure
set_target_properties(${PROJECT_NAME} PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.prm/Contents/MacOS"
)
# Compile PiPL resource file using Rez
add_custom_command(
OUTPUT ${PIPL_RESOURCE_OBJ}
COMMAND Rez
-I "${PREMIERE_SDK_INCLUDE_DIR}"
-I "${PREMIERE_SDK_INCLUDE_DIR}/adobesdk/config"
-I "${CMAKE_CURRENT_SOURCE_DIR}/include"
-o "${PIPL_RESOURCE_OBJ}"
"${PIPL_RESOURCE_FILE}"
COMMENT "Compiling PiPL resource file"
DEPENDS
"${PIPL_RESOURCE_FILE}"
"${PREMIERE_SDK_INCLUDE_DIR}/PrSDKPiPLVer.h"
"${PREMIERE_SDK_INCLUDE_DIR}/PrSDKExport.h"
)
# Use Rez to append resource to the final dylib after linking
add_custom_command(
TARGET ${PROJECT_NAME} POST_BUILD
COMMAND Rez
-append
-I "${PREMIERE_SDK_INCLUDE_DIR}"
-I "${PREMIERE_SDK_INCLUDE_DIR}/adobesdk/config"
-I "${CMAKE_CURRENT_SOURCE_DIR}/include"
-o "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.prm/Contents/MacOS/lib${PROJECT_NAME}.dylib"
"${PIPL_RESOURCE_FILE}"
COMMENT "Adding PiPL resource to dylib"
)
```
### Info.plist
```xml
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>libHSPlugin.dylib</string>
<key>CFBundleIdentifier</key>
<string>com.h.s.plugin</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>HS Plugin</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>0.2.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>10.15</string>
</dict>
</plist>
```
## Verification Commands
```bash
# Check if PiPL resource is embedded
DeRez build/HSPlugin.prm/Contents/MacOS/libHSPlugin.dylib | grep -A 20 "PiPL"
# Check if entry point exists
nm -gU build/HSPlugin.prm/Contents/MacOS/libHSPlugin.dylib | grep xSDKExport
# Check Premiere Pro logs
log show --predicate 'process == "Adobe Premiere Pro 2025"' --last 5m --style compact | grep -i "plugin\|hs\|error"
```
## Expected Behavior
When Premiere Pro 25.5 loads, it should:
1. Scan the plugin directory `/Library/Application Support/Adobe/Common/Plug-ins/25.0/MediaCore/`
2. Read the PiPL resource from each `.prm` bundle
3. Recognize the plugin as an exporter
4. Display "HS" in the Format dropdown when exporting media
## Actual Behavior
Premiere Pro 25.5:
1. Does not appear to scan or recognize the HSPlugin.prm bundle
2. Does not log any errors related to the plugin
3. Does not display "HS" in the Format dropdown
## Additional Context
- The plugin compiles and builds successfully
- The PiPL resource is correctly embedded in the dylib
- The entry point `xSDKExport` is present and exported
- All required SDK selectors are implemented (`exSelQueryExportFileExtension`, `exSelQueryOutputSettings`, `exSelValidateOutputSettings`)
- The plugin works correctly when tested with the 24.0 SDK examples
## Request for Assistance
We need guidance on:
1. Whether the 24.0 SDK is compatible with Premiere Pro 25.5
2. How to properly configure the PiPL resource for Premiere Pro 25.5
3. Whether we need to obtain a newer SDK version
4. Any debugging steps or tools to diagnose plugin loading issues
Thank you for your assistance!