Sync the bundled .proto definitions with greyshirtguy/ProPresenter7-Proto "Proto 19beta" (dumped from ProPresenter v19 beta build 318767123, 2025-06-05). This pulls in the schema for ProPresenter 19 features including new advertisement groups, custom options, media metadata, prop API v1, transport API, feature flags, PSB workspace, and zone definitions, plus refactored analytics tracked events. Strategy: merge rather than wholesale replace. All Proto 19beta files overwrite our existing copies so we pick up the field/message updates upstream made between 7.16.2 and 19beta. Eleven new .proto files are added: advertisementGroup, analyticsEdit, analyticsMediaManagement, analyticsPowerPoint, analyticsTrackedEvents, analyticsTriggerCue, customOptions, mediaMetadata, proCoreFeatureFlags, psbWorkspace, zone. Three google/protobuf well-known types (any, source_context, type) are added for completeness; only descriptor.proto is actually imported. Five proto files are kept that are not part of Proto 19beta upstream: calendar.proto and keyMappings.proto were extracted from PP binaries to support our parse-calendar and parse-key-mappings tools, while analyticsCapture/Update/WHMStore.proto are retained from the prior 7.16.2 set so existing generated descriptors keep loading. generated/ is regenerated from scratch with `protoc --php_out=generated --proto_path=proto *.proto` (protoc 29.3, google/protobuf PHP 4.33.5). The full PHPUnit suite (369 tests, 1298 assertions) still passes without any source changes - the new schema is wire-compatible with our reference files and high-level wrappers. Documentation references to "v7.16.2" are updated to "Proto 19beta" in LICENSE, doc/formats/pp_song_spec.md, pp_playlist_spec.md, pp_bundle_spec.md, and doc/internal/decisions.md.
152 lines
3.3 KiB
Protocol Buffer
Executable file
152 lines
3.3 KiB
Protocol Buffer
Executable file
syntax = "proto3";
|
|
|
|
package rv.analytics.trigger.media;
|
|
|
|
option cc_enable_arenas = true;
|
|
option csharp_namespace = "Pro.SerializationInterop.RVProtoData.Analytics.Trigger.Media";
|
|
option swift_prefix = "Analytics_Trigger_Media_";
|
|
|
|
message Transition {
|
|
bool is_default = 1;
|
|
string name = 2;
|
|
}
|
|
|
|
message VisualMedia {
|
|
message Size {
|
|
uint32 width = 1;
|
|
uint32 height = 2;
|
|
}
|
|
|
|
enum Behavior {
|
|
BACKGROUND = 0;
|
|
FOREGROUND = 1;
|
|
VIDEO_INPUT = 2;
|
|
}
|
|
|
|
enum ScaleMode {
|
|
FIT = 0;
|
|
FILL = 1;
|
|
STRETCH = 2;
|
|
BLUR = 3;
|
|
}
|
|
|
|
enum FlipMode {
|
|
NONE = 0;
|
|
HORIZONTAL = 1;
|
|
VERTICAL = 2;
|
|
BOTH = 3;
|
|
}
|
|
|
|
enum NativeRotation {
|
|
STANDARD = 0;
|
|
_90 = 90;
|
|
_180 = 180;
|
|
_270 = 270;
|
|
}
|
|
|
|
.rv.analytics.trigger.media.VisualMedia.Behavior behavior = 1;
|
|
.rv.analytics.trigger.media.VisualMedia.ScaleMode scale_mode = 2;
|
|
.rv.analytics.trigger.media.VisualMedia.FlipMode flip_mode = 3;
|
|
.rv.analytics.trigger.media.VisualMedia.NativeRotation native_rotation = 4;
|
|
.rv.analytics.trigger.media.VisualMedia.Size resolution = 5;
|
|
uint32 enabled_effects_count = 6;
|
|
bool has_effect_preset = 7;
|
|
.rv.analytics.trigger.media.Transition transition = 8;
|
|
}
|
|
|
|
message Transport {
|
|
enum DurationRange {
|
|
UNDER_10S = 0;
|
|
_10S_TO_30S = 1;
|
|
_30S_TO_60S = 2;
|
|
_1M_TO_5M = 3;
|
|
_5M_TO_10M = 4;
|
|
_10M_TO_30M = 5;
|
|
_30M_TO_60M = 6;
|
|
_1H_TO_2H = 7;
|
|
OVER_2H = 8;
|
|
}
|
|
|
|
.rv.analytics.trigger.media.Transport.DurationRange source_duration_range = 1;
|
|
bool has_audio_ramp_in = 2;
|
|
bool has_audio_ramp_out = 3;
|
|
bool has_in_point = 4;
|
|
bool has_out_point = 5;
|
|
double play_rate = 6;
|
|
uint32 playback_marker_count = 7;
|
|
}
|
|
|
|
message Video {
|
|
enum PlaybackBehavior {
|
|
STOP = 0;
|
|
LOOP = 1;
|
|
LOOP_FOR_PLAY_COUNT = 2;
|
|
LOOP_FOR_TIME = 3;
|
|
}
|
|
|
|
.rv.analytics.trigger.media.VisualMedia visual_media = 7;
|
|
.rv.analytics.trigger.media.Video.PlaybackBehavior playback_behavior = 8;
|
|
.rv.analytics.trigger.media.CompletionTarget completion_target = 9;
|
|
bool soft_loop_enabled = 10;
|
|
double soft_loop_duration = 11;
|
|
double frame_rate = 12;
|
|
uint32 audio_channel_count = 13;
|
|
.rv.analytics.trigger.media.Transport transport = 14;
|
|
.rv.analytics.trigger.media.SourceType source_type = 15;
|
|
}
|
|
|
|
message Audio {
|
|
enum Behavior {
|
|
TUNE = 0;
|
|
SOUND = 1;
|
|
}
|
|
|
|
enum PlaybackBehavior {
|
|
STOP = 0;
|
|
LOOP = 1;
|
|
NEXT = 2;
|
|
}
|
|
|
|
.rv.analytics.trigger.media.Audio.Behavior behavior = 1;
|
|
.rv.analytics.trigger.media.Audio.PlaybackBehavior playback_behavior = 2;
|
|
.rv.analytics.trigger.media.Transition transition = 3;
|
|
uint32 audio_channel_count = 4;
|
|
.rv.analytics.trigger.media.Transport transport = 5;
|
|
.rv.analytics.trigger.media.SourceType source_type = 6;
|
|
}
|
|
|
|
message Image {
|
|
.rv.analytics.trigger.media.VisualMedia visual_media = 1;
|
|
.rv.analytics.trigger.media.CompletionTarget completion_target = 2;
|
|
.rv.analytics.trigger.media.SourceType source_type = 3;
|
|
}
|
|
|
|
message VideoInput {
|
|
.rv.analytics.trigger.media.VisualMedia visual_media = 1;
|
|
double frame_rate = 2;
|
|
uint32 audio_channel_count = 3;
|
|
.rv.analytics.trigger.media.SourceType source_type = 4;
|
|
}
|
|
|
|
message AirCastVideo {
|
|
bool password_enabled = 1;
|
|
}
|
|
|
|
message AirCastAudio {
|
|
bool password_enabled = 1;
|
|
}
|
|
|
|
enum CompletionTarget {
|
|
NONE = 0;
|
|
NEXT = 1;
|
|
RANDOM = 2;
|
|
CUE = 3;
|
|
FIRST = 4;
|
|
}
|
|
|
|
enum SourceType {
|
|
LOCAL = 0;
|
|
PROCONTENT = 1;
|
|
}
|
|
|