New upstream version 24.0.1+dfsg1
This commit is contained in:
parent
b14f9eae6d
commit
5a730d6ec3
842 changed files with 42245 additions and 33385 deletions
|
|
@ -48,7 +48,8 @@ static bool decklink_output_start(void *data)
|
|||
|
||||
decklink->audio_samplerate = aoi.samples_per_sec;
|
||||
decklink->audio_planes = 2;
|
||||
decklink->audio_size = get_audio_size(AUDIO_FORMAT_16BIT, aoi.speakers, 1);
|
||||
decklink->audio_size =
|
||||
get_audio_size(AUDIO_FORMAT_16BIT, aoi.speakers, 1);
|
||||
|
||||
decklink->start_timestamp = 0;
|
||||
|
||||
|
|
@ -68,7 +69,7 @@ static bool decklink_output_start(void *data)
|
|||
to.format = VIDEO_FORMAT_UYVY;
|
||||
}
|
||||
to.width = mode->GetWidth();
|
||||
to.height = mode->GetHeight();
|
||||
to.height = mode->GetHeight();
|
||||
|
||||
obs_output_set_video_conversion(decklink->GetOutput(), &to);
|
||||
|
||||
|
|
@ -78,7 +79,7 @@ static bool decklink_output_start(void *data)
|
|||
struct audio_convert_info conversion = {};
|
||||
conversion.format = AUDIO_FORMAT_16BIT;
|
||||
conversion.speakers = SPEAKERS_STEREO;
|
||||
conversion.samples_per_sec = 48000; // Only format the decklink supports
|
||||
conversion.samples_per_sec = 48000; // Only format the decklink supports
|
||||
|
||||
obs_output_set_audio_conversion(decklink->GetOutput(), &conversion);
|
||||
|
||||
|
|
@ -112,14 +113,14 @@ static void decklink_output_raw_video(void *data, struct video_data *frame)
|
|||
}
|
||||
|
||||
static bool prepare_audio(DeckLinkOutput *decklink,
|
||||
const struct audio_data *frame,
|
||||
struct audio_data *output)
|
||||
const struct audio_data *frame,
|
||||
struct audio_data *output)
|
||||
{
|
||||
*output = *frame;
|
||||
|
||||
if (frame->timestamp < decklink->start_timestamp) {
|
||||
uint64_t duration = (uint64_t)frame->frames * 1000000000 /
|
||||
(uint64_t)decklink->audio_samplerate;
|
||||
(uint64_t)decklink->audio_samplerate;
|
||||
uint64_t end_ts = frame->timestamp + duration;
|
||||
uint64_t cutoff;
|
||||
|
||||
|
|
@ -132,8 +133,8 @@ static bool prepare_audio(DeckLinkOutput *decklink,
|
|||
cutoff *= (uint64_t)decklink->audio_samplerate / 1000000000;
|
||||
|
||||
for (size_t i = 0; i < decklink->audio_planes; i++)
|
||||
output->data[i] += decklink->audio_size *
|
||||
(uint32_t)cutoff;
|
||||
output->data[i] +=
|
||||
decklink->audio_size * (uint32_t)cutoff;
|
||||
|
||||
output->frames -= (uint32_t)cutoff;
|
||||
}
|
||||
|
|
@ -156,7 +157,8 @@ static void decklink_output_raw_audio(void *data, struct audio_data *frames)
|
|||
}
|
||||
|
||||
static bool decklink_output_device_changed(obs_properties_t *props,
|
||||
obs_property_t *list, obs_data_t *settings)
|
||||
obs_property_t *list,
|
||||
obs_data_t *settings)
|
||||
{
|
||||
const char *name = obs_data_get_string(settings, DEVICE_NAME);
|
||||
const char *hash = obs_data_get_string(settings, DEVICE_HASH);
|
||||
|
|
@ -193,13 +195,13 @@ static bool decklink_output_device_changed(obs_properties_t *props,
|
|||
obs_property_list_item_disable(modeList, 0, true);
|
||||
obs_property_list_item_disable(keyerList, 0, true);
|
||||
} else {
|
||||
const std::vector<DeckLinkDeviceMode*> &modes =
|
||||
device->GetOutputModes();
|
||||
const std::vector<DeckLinkDeviceMode *> &modes =
|
||||
device->GetOutputModes();
|
||||
|
||||
for (DeckLinkDeviceMode *mode : modes) {
|
||||
obs_property_list_add_int(modeList,
|
||||
mode->GetName().c_str(),
|
||||
mode->GetId());
|
||||
mode->GetName().c_str(),
|
||||
mode->GetId());
|
||||
}
|
||||
|
||||
obs_property_list_add_int(keyerList, "Disabled", 0);
|
||||
|
|
@ -222,22 +224,26 @@ static obs_properties_t *decklink_output_properties(void *unused)
|
|||
obs_properties_t *props = obs_properties_create();
|
||||
|
||||
obs_property_t *list = obs_properties_add_list(props, DEVICE_HASH,
|
||||
TEXT_DEVICE, OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_STRING);
|
||||
obs_property_set_modified_callback(list, decklink_output_device_changed);
|
||||
TEXT_DEVICE,
|
||||
OBS_COMBO_TYPE_LIST,
|
||||
OBS_COMBO_FORMAT_STRING);
|
||||
obs_property_set_modified_callback(list,
|
||||
decklink_output_device_changed);
|
||||
|
||||
fill_out_devices(list);
|
||||
|
||||
obs_properties_add_list(props,
|
||||
MODE_ID, TEXT_MODE, OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
|
||||
obs_properties_add_list(props, MODE_ID, TEXT_MODE, OBS_COMBO_TYPE_LIST,
|
||||
OBS_COMBO_FORMAT_INT);
|
||||
|
||||
obs_properties_add_bool(props, AUTO_START, TEXT_AUTO_START);
|
||||
|
||||
obs_properties_add_list(props, KEYER, TEXT_ENABLE_KEYER, OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
|
||||
obs_properties_add_list(props, KEYER, TEXT_ENABLE_KEYER,
|
||||
OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
|
||||
|
||||
return props;
|
||||
}
|
||||
|
||||
static const char *decklink_output_get_name(void*)
|
||||
static const char *decklink_output_get_name(void *)
|
||||
{
|
||||
return obs_module_text("BlackmagicDevice");
|
||||
}
|
||||
|
|
@ -246,17 +252,17 @@ struct obs_output_info create_decklink_output_info()
|
|||
{
|
||||
struct obs_output_info decklink_output_info = {};
|
||||
|
||||
decklink_output_info.id = "decklink_output";
|
||||
decklink_output_info.flags = OBS_OUTPUT_AV;
|
||||
decklink_output_info.get_name = decklink_output_get_name;
|
||||
decklink_output_info.create = decklink_output_create;
|
||||
decklink_output_info.destroy = decklink_output_destroy;
|
||||
decklink_output_info.start = decklink_output_start;
|
||||
decklink_output_info.stop = decklink_output_stop;
|
||||
decklink_output_info.id = "decklink_output";
|
||||
decklink_output_info.flags = OBS_OUTPUT_AV;
|
||||
decklink_output_info.get_name = decklink_output_get_name;
|
||||
decklink_output_info.create = decklink_output_create;
|
||||
decklink_output_info.destroy = decklink_output_destroy;
|
||||
decklink_output_info.start = decklink_output_start;
|
||||
decklink_output_info.stop = decklink_output_stop;
|
||||
decklink_output_info.get_properties = decklink_output_properties;
|
||||
decklink_output_info.raw_video = decklink_output_raw_video;
|
||||
decklink_output_info.raw_audio = decklink_output_raw_audio;
|
||||
decklink_output_info.update = decklink_output_update;
|
||||
decklink_output_info.raw_video = decklink_output_raw_video;
|
||||
decklink_output_info.raw_audio = decklink_output_raw_audio;
|
||||
decklink_output_info.update = decklink_output_update;
|
||||
|
||||
return decklink_output_info;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue