Skip to content

Commit 6eaf4a0

Browse files
authored
Fix encoder selection (#1666)
* get list of encoders in new api * update ts * codestyle fix
1 parent ecabf00 commit 6eaf4a0

23 files changed

Lines changed: 413 additions & 0 deletions

js/module.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,7 @@ export interface IStreaming {
805805
network: INetwork;
806806
video: IVideo;
807807
signalHandler: (signal: EOutputSignal) => void;
808+
getAvailableEncoders(): IEncoderOption[];
808809
start(): void; // throws
809810
stop(force?: boolean): void;
810811
droppedFrames: number;
@@ -818,6 +819,10 @@ export interface EOutputSignal {
818819
code: number;
819820
error: string;
820821
}
822+
export interface IEncoderOption {
823+
title: string;
824+
name: string;
825+
}
821826
export interface ISimpleStreaming extends IStreaming {
822827
audioEncoder: IAudioEncoder;
823828
useAdvanced: boolean;
@@ -878,6 +883,7 @@ export interface IRecording extends IFileOutput {
878883
splitSize: number;
879884
fileResetTimestamps: boolean;
880885
signalHandler: (signal: EOutputSignal) => void;
886+
getAvailableEncoders(): IEncoderOption[];
881887
start(): void;
882888
stop(force?: boolean): void;
883889
splitFile(): void;

js/module.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1712,6 +1712,7 @@ export interface IStreaming {
17121712
network: INetwork,
17131713
video: IVideo,
17141714
signalHandler: (signal: EOutputSignal) => void,
1715+
getAvailableEncoders(): IEncoderOption[],
17151716
start(): void, // throws
17161717
stop(force?: boolean): void,
17171718
droppedFrames: number;
@@ -1727,6 +1728,11 @@ export interface EOutputSignal {
17271728
error: string
17281729
}
17291730

1731+
export interface IEncoderOption {
1732+
title: string,
1733+
name: string
1734+
}
1735+
17301736
export interface ISimpleStreaming extends IStreaming {
17311737
audioEncoder: IAudioEncoder,
17321738
useAdvanced: boolean,
@@ -1796,6 +1802,7 @@ export interface IRecording extends IFileOutput {
17961802
splitSize: number,
17971803
fileResetTimestamps: boolean,
17981804
signalHandler: (signal: EOutputSignal) => void,
1805+
getAvailableEncoders(): IEncoderOption[],
17991806
start(): void,
18001807
stop(force?: boolean): void,
18011808
splitFile(): void

obs-studio-client/source/advanced-recording.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ Napi::Object osn::AdvancedRecording::Init(Napi::Env env, Napi::Object exports)
5454
InstanceMethod("start", &osn::AdvancedRecording::Start),
5555
InstanceMethod("stop", &osn::AdvancedRecording::Stop),
5656
InstanceMethod("splitFile", &osn::AdvancedRecording::SplitFile),
57+
InstanceMethod("getAvailableEncoders", &osn::AdvancedRecording::GetAvailableEncoders),
5758

5859
StaticAccessor("legacySettings", &osn::AdvancedRecording::GetLegacySettings, &osn::AdvancedRecording::SetLegacySettings),
5960
InstanceMethod("lastFile", &osn::AdvancedRecording::GetLastFile),

obs-studio-client/source/advanced-streaming.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Napi::Object osn::AdvancedStreaming::Init(Napi::Env env, Napi::Object exports)
5555

5656
InstanceMethod("start", &osn::AdvancedStreaming::Start),
5757
InstanceMethod("stop", &osn::AdvancedStreaming::Stop),
58+
InstanceMethod("getAvailableEncoders", &osn::AdvancedStreaming::GetAvailableEncoders),
5859

5960
StaticAccessor("legacySettings", &osn::AdvancedStreaming::GetLegacySettings, &osn::AdvancedStreaming::SetLegacySettings)});
6061

obs-studio-client/source/enhanced-broadcasting-advanced-streaming.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ Napi::Object osn::EnhancedBroadcastingAdvancedStreaming::Init(Napi::Env env, Nap
6868

6969
InstanceMethod("start", &osn::EnhancedBroadcastingAdvancedStreaming::Start),
7070
InstanceMethod("stop", &osn::EnhancedBroadcastingAdvancedStreaming::Stop),
71+
InstanceMethod("getAvailableEncoders", &osn::EnhancedBroadcastingAdvancedStreaming::GetAvailableEncoders),
7172

7273
StaticAccessor("legacySettings", &osn::EnhancedBroadcastingAdvancedStreaming::GetLegacySettings,
7374
&osn::EnhancedBroadcastingAdvancedStreaming::SetLegacySettings)});

obs-studio-client/source/enhanced-broadcasting-simple-streaming.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ Napi::Object osn::EnhancedBroadcastingSimpleStreaming::Init(Napi::Env env, Napi:
6565

6666
InstanceMethod("start", &osn::EnhancedBroadcastingSimpleStreaming::Start),
6767
InstanceMethod("stop", &osn::EnhancedBroadcastingSimpleStreaming::Stop),
68+
InstanceMethod("getAvailableEncoders", &osn::EnhancedBroadcastingSimpleStreaming::GetAvailableEncoders),
6869

6970
StaticAccessor("legacySettings", &osn::EnhancedBroadcastingSimpleStreaming::GetLegacySettings,
7071
&osn::EnhancedBroadcastingSimpleStreaming::SetLegacySettings)});

obs-studio-client/source/recording.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,29 @@ void osn::Recording::SetSignalHandler(const Napi::CallbackInfo &info, const Napi
7777
this->cb.SuppressDestruct();
7878
}
7979

80+
Napi::Value osn::Recording::GetAvailableEncoders(const Napi::CallbackInfo &info)
81+
{
82+
auto conn = GetConnection(info);
83+
if (!conn)
84+
return info.Env().Undefined();
85+
86+
std::vector<ipc::value> response = conn->call_synchronous_helper(className, "GetAvailableEncoders", {ipc::value(this->uid)});
87+
88+
if (!ValidateResponse(info, response))
89+
return info.Env().Undefined();
90+
91+
Napi::Array arr = Napi::Array::New(info.Env());
92+
uint32_t idx = 0;
93+
for (size_t i = 1; i + 1 < response.size(); i += 2) {
94+
Napi::Object obj = Napi::Object::New(info.Env());
95+
obj.Set("title", Napi::String::New(info.Env(), response[i].value_str));
96+
obj.Set("name", Napi::String::New(info.Env(), response[i + 1].value_str));
97+
arr.Set(idx++, obj);
98+
}
99+
100+
return arr;
101+
}
102+
80103
void osn::Recording::Start(const Napi::CallbackInfo &info)
81104
{
82105
auto conn = GetConnection(info);

obs-studio-client/source/recording.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class Recording : public WorkerSignals, public FileOutput {
4848
Napi::Value GetFileResetTimestamps(const Napi::CallbackInfo &info);
4949
void SetFileResetTimestamps(const Napi::CallbackInfo &info, const Napi::Value &value);
5050

51+
Napi::Value GetAvailableEncoders(const Napi::CallbackInfo &info);
5152
void Start(const Napi::CallbackInfo &info);
5253
void Stop(const Napi::CallbackInfo &info);
5354
void SplitFile(const Napi::CallbackInfo &info);

obs-studio-client/source/simple-recording.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ Napi::Object osn::SimpleRecording::Init(Napi::Env env, Napi::Object exports)
5858
InstanceMethod("start", &osn::SimpleRecording::Start),
5959
InstanceMethod("stop", &osn::SimpleRecording::Stop),
6060
InstanceMethod("splitFile", &osn::SimpleRecording::SplitFile),
61+
InstanceMethod("getAvailableEncoders", &osn::SimpleRecording::GetAvailableEncoders),
6162

6263
StaticAccessor("legacySettings", &osn::SimpleRecording::GetLegacySettings, &osn::SimpleRecording::SetLegacySettings),
6364
InstanceMethod("lastFile", &osn::SimpleRecording::GetLastFile),

obs-studio-client/source/simple-streaming.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ Napi::Object osn::SimpleStreaming::Init(Napi::Env env, Napi::Object exports)
5353

5454
InstanceMethod("start", &osn::SimpleStreaming::Start),
5555
InstanceMethod("stop", &osn::SimpleStreaming::Stop),
56+
InstanceMethod("getAvailableEncoders", &osn::SimpleStreaming::GetAvailableEncoders),
5657

5758
StaticAccessor("legacySettings", &osn::SimpleStreaming::GetLegacySettings, &osn::SimpleStreaming::SetLegacySettings)});
5859

0 commit comments

Comments
 (0)