propresenter-php/proto/timedPlayback.proto
Thorsten Bus 22ba4aff7d refactor: make repo Composer-compatible by moving php/ to root and ref/ to doc/reference_samples
- Move src/, tests/, bin/, generated/, proto/, composer.json, composer.lock, phpunit.xml from php/ to repo root
- Move ref/ to doc/reference_samples/ for better organization
- Remove vendor/ from git tracking (now properly gitignored)
- Update all test file paths (dirname adjustments and ref/ -> doc/reference_samples/)
- Update all documentation paths (AGENTS.md, doc/*.md)
- Remove php.bak/ directory
- All 252 tests pass
2026-03-30 13:26:29 +02:00

140 lines
3.2 KiB
Protocol Buffer
Executable file

syntax = "proto3";
package rv.data;
option cc_enable_arenas = true;
option csharp_namespace = "Pro.SerializationInterop.RVProtoData";
option swift_prefix = "RVData_";
import "action.proto";
import "cue.proto";
import "presentation.proto";
import "uuid.proto";
message TriggerSource {
message Library {
string path = 1;
string presentation_name = 2;
}
message Playlist {
.rv.data.UUID identifier = 1;
.rv.data.UUID item_identifier = 2;
}
oneof Location {
.rv.data.TriggerSource.Library library_location = 1;
.rv.data.TriggerSource.Playlist playlist_location = 2;
.rv.data.TriggerSource.Playlist media_playlist_location = 3;
.rv.data.TriggerSource.Playlist audio_playlist_location = 4;
}
}
message TimedPlayback {
message Sequence {
message SequenceItem {
.rv.data.UUID identifier = 1;
double time = 2;
.rv.data.TriggerSource trigger_source = 3;
.rv.data.Action.ContentDestination content_destination = 4;
double end_time = 7;
oneof Item {
.rv.data.Cue cue = 5;
.rv.data.Action action = 6;
}
}
repeated .rv.data.TimedPlayback.Sequence.SequenceItem sequence = 1;
.rv.data.Action.ContentDestination content_destination = 2;
.rv.data.Presentation presentation = 3;
}
message Timing {
message LayerTransport {
int32 layer = 1;
}
message SMPTETimecode {
enum Format {
FORMAT_24_FPS = 0;
FORMAT_25_FPS = 1;
FORMAT_29_97_FPS = 2;
FORMAT_30_FPS = 3;
}
string device_identifier = 1;
int32 channel = 2;
.rv.data.TimedPlayback.Timing.SMPTETimecode.Format format = 3;
double offset = 4;
}
message Internal {
double duration = 1;
bool should_loop = 2;
}
oneof Source {
.rv.data.TimedPlayback.Timing.LayerTransport layer_transport = 1;
.rv.data.TimedPlayback.Timing.SMPTETimecode smpte_timecode = 2;
.rv.data.TimedPlayback.Timing.Internal internal = 3;
}
}
message Update {
message Play {
}
message Record {
bool is_recording = 1;
}
message Pause {
}
message Reset {
}
message JumpToTime {
double time = 1;
}
message StartScrub {
double time = 1;
}
message EndScrub {
double time = 2;
}
message Duration {
double duration = 1;
}
message Loop {
bool loop = 1;
}
message MonitorSource {
bool enable = 1;
}
oneof ActionType {
.rv.data.TimedPlayback.Update.Play play = 1;
.rv.data.TimedPlayback.Update.Record record = 2;
.rv.data.TimedPlayback.Update.Pause pause = 3;
.rv.data.TimedPlayback.Update.Reset reset = 4;
.rv.data.TimedPlayback.Update.JumpToTime jump_to_time = 5;
.rv.data.TimedPlayback.Update.StartScrub start_scrub = 6;
.rv.data.TimedPlayback.Update.EndScrub end_scrub = 7;
.rv.data.TimedPlayback.Update.Duration duration = 8;
.rv.data.TimedPlayback.Update.Loop loop = 9;
.rv.data.TimedPlayback.Sequence update_sequence = 10;
.rv.data.TimedPlayback.Update.MonitorSource monitor_source = 11;
}
}
.rv.data.TimedPlayback.Sequence sequence = 1;
.rv.data.TimedPlayback.Timing timing = 2;
}