New upstream version 25.0.3+dfsg1
This commit is contained in:
parent
04fe0efc67
commit
8b2e5f2130
569 changed files with 62491 additions and 5875 deletions
|
|
@ -48,20 +48,20 @@ elseif("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD")
|
|||
add_subdirectory(linux-jack)
|
||||
endif()
|
||||
|
||||
if(WIN32 OR APPLE)
|
||||
option(BUILD_BROWSER "Build browser plugin" OFF)
|
||||
if (BUILD_BROWSER)
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-browser/CMakeLists.txt")
|
||||
add_subdirectory(obs-browser)
|
||||
set(BROWSER_AVAILABLE_INTERNAL ON CACHE BOOL "Interal global cmake variable" FORCE)
|
||||
else()
|
||||
message(STATUS "obs-browser submodule not found! Please fetch submodules. obs-browser plugin disabled.")
|
||||
set(BROWSER_AVAILABLE_INTERNAL OFF CACHE BOOL "Interal global cmake variable" FORCE)
|
||||
endif()
|
||||
option(BUILD_BROWSER "Build browser plugin" OFF)
|
||||
if (BUILD_BROWSER)
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-browser/CMakeLists.txt")
|
||||
add_subdirectory(obs-browser)
|
||||
set(BROWSER_AVAILABLE_INTERNAL ON CACHE BOOL "Internal global cmake variable" FORCE)
|
||||
else()
|
||||
set(BROWSER_AVAILABLE_INTERNAL OFF CACHE BOOL "Interal global cmake variable" FORCE)
|
||||
message(STATUS "obs-browser submodule not found! Please fetch submodules. obs-browser plugin disabled.")
|
||||
set(BROWSER_AVAILABLE_INTERNAL OFF CACHE BOOL "Internal global cmake variable" FORCE)
|
||||
endif()
|
||||
else()
|
||||
set(BROWSER_AVAILABLE_INTERNAL OFF CACHE BOOL "Internal global cmake variable" FORCE)
|
||||
endif()
|
||||
|
||||
if(WIN32 OR APPLE)
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-vst/CMakeLists.txt")
|
||||
add_subdirectory(obs-vst)
|
||||
else()
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
CoreAudioAAC="Кодер CoreAudio AAC"
|
||||
Bitrate="Битрейт"
|
||||
AllowHEAAC="Позволи HE-AAC"
|
||||
AllowHEAAC="Позволяване на HE-AAC"
|
||||
OutputSamplerate="Изходна честота на дискретизация"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
CoreAudioAAC="CoreAudio AAC-encoder"
|
||||
Bitrate="Bit-hastighed"
|
||||
Bitrate="Bithastighed"
|
||||
AllowHEAAC="Tillad HE-AAC"
|
||||
OutputSamplerate="Output Samplingsfrekvens"
|
||||
UseInputSampleRate="Benyt Input (OBS) Samplingsfrekvens (kan vise uunderstøttede bit-hastigheder)"
|
||||
UseInputSampleRate="Benyt Input (OBS) Samplingsfrekvens (kan vise uunderstøttede bithastigheder)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
CoreAudioAAC="CoreAudio AAC Kodierer"
|
||||
CoreAudioAAC="CoreAudio‐AAC‐Kodierer"
|
||||
Bitrate="Bitrate"
|
||||
AllowHEAAC="Erlaube HE‐AAC"
|
||||
OutputSamplerate="Ausgabeabtastrate"
|
||||
UseInputSampleRate="Verwenden Sie Eingabe (OBS) Abtastrate (kann nicht unterstützte Bitraten auflisten)"
|
||||
AllowHEAAC="HE‐AAC erlauben"
|
||||
OutputSamplerate="Ausgabe‐Sample‐Rate"
|
||||
UseInputSampleRate="Eingabe‐Sample‐Rate (OBS) verwenden (Listet möglicherweise nicht unterstützte Bitraten auf.)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
CoreAudioAAC="هسته صدا کدگذاری AAC"
|
||||
Bitrate="نرخ بیت"
|
||||
OutputSamplerate="نرخ صدای نمونه"
|
||||
UseInputSampleRate="استفاده از ورودی (OBS) میزان نمونه (پشتیبانی نشده bitrates لیست ممکن است)"
|
||||
AllowHEAAC="اجازه AAC با راندمان بالا"
|
||||
OutputSamplerate="نرخ نمونه خروجی"
|
||||
UseInputSampleRate="استفاده از ورودی (OBS) نرخ نمونه (ممکن است بیت ریت های پشتیبانی نشده را لیست کند)ممکن است بیت ریت های پشتیبانی نشده را لیست کند"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
CoreAudioAAC="CoreAudio AAC enkodér"
|
||||
Bitrate="Dátový tok"
|
||||
Bitrate="Bitrate"
|
||||
AllowHEAAC="Povoliť HE-AAC"
|
||||
OutputSamplerate="Vzorkovacia frekvencia výstupu"
|
||||
UseInputSampleRate="Použiť vstupnú (OBS) vzorkovaciu frekvenciu (môže obsahovať nepodporované dátové toky)"
|
||||
UseInputSampleRate="Použiť vstupnú (OBS) vzorkovaciu frekvenciu (môže obsahovať nepodporované bitraty)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
CoreAudioAAC="Bộ mã hóa CoreAudio AAC"
|
||||
Bitrate="Bitrate"
|
||||
AllowHEAAC="Cho phép HE-AAC"
|
||||
OutputSamplerate="Tốc độ lấy mẫu đầu ra"
|
||||
UseInputSampleRate="Sử dụng tốc độ lấy mẫu đầu vào của (OBS) (bitrate được liệt kê có thể không hỗ trợ)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#include "audio-repack.h"
|
||||
|
||||
#include <emmintrin.h>
|
||||
#include <util/sse-intrin.h>
|
||||
|
||||
int check_buffer(struct audio_repack *repack, uint32_t frame_count)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2,4 +2,21 @@ BlackmagicDevice="Blackmagic устройство"
|
|||
Device="Устройство"
|
||||
Mode="Режим"
|
||||
Buffering="Използвай буфериране"
|
||||
PixelFormat="Формат на пиксела"
|
||||
ColorSpace="Цветово пространство"
|
||||
ColorSpace.Default="По подразбиране"
|
||||
ColorRange="Цветови обхват"
|
||||
ColorRange.Default="По подразбиране"
|
||||
ColorRange.Partial="Частично"
|
||||
ColorRange.Full="Пълно"
|
||||
ChannelFormat="Канал"
|
||||
ChannelFormat.None="Без"
|
||||
ChannelFormat.2_0ch="2 канала"
|
||||
ChannelFormat.2_1ch="2.1 канала"
|
||||
ChannelFormat.4_0ch="4 канала"
|
||||
ChannelFormat.4_1ch="4.1 канала"
|
||||
ChannelFormat.5_1ch="5.1 канала"
|
||||
ChannelFormat.7_1ch="7.1 канала"
|
||||
DeactivateWhenNotShowing="Изключване, когато не се показва"
|
||||
AutoStart="Автоматично започване при пускане"
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ ColorRange.Partial="Parcial"
|
|||
ColorRange.Full="Complet"
|
||||
ChannelFormat="Canal"
|
||||
ChannelFormat.None="Cap"
|
||||
ChannelFormat.2_0ch="Estèreo "
|
||||
ChannelFormat.2_0ch="Estèreo"
|
||||
ChannelFormat.2_1ch="Canals 2.1"
|
||||
ChannelFormat.4_0ch="4"
|
||||
ChannelFormat.4_1ch="4.1"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
BlackmagicDevice="Blackmagic‐Gerät"
|
||||
Device="Gerät"
|
||||
Mode="Modus"
|
||||
Buffering="Puffern benutzen"
|
||||
Buffering="Pufferung benutzen"
|
||||
PixelFormat="Pixelformat"
|
||||
ColorSpace="Farbraum"
|
||||
ColorSpace.Default="Standard"
|
||||
|
|
@ -17,7 +17,7 @@ ChannelFormat.4_0ch="4‐Kanal"
|
|||
ChannelFormat.4_1ch="4.1‐Kanal"
|
||||
ChannelFormat.5_1ch="5.1‐Kanal"
|
||||
ChannelFormat.7_1ch="7.1‐Kanal"
|
||||
DeactivateWhenNotShowing="Deaktivieren, wenn die Quelle nicht angezeigt wird"
|
||||
DeactivateWhenNotShowing="Deaktivieren, wenn Quelle nicht gezeigt"
|
||||
AutoStart="Automatisch beim Öffnen starten"
|
||||
SwapFC-LFE="FC und LFE tauschen"
|
||||
SwapFC-LFE.Tooltip="Vorderen Front‐Center‐Kanal und LFE‐Kanal tauschen"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ ColorRange.Partial="Parcial"
|
|||
ColorRange.Full="Completo"
|
||||
ChannelFormat="Canal"
|
||||
ChannelFormat.None="Ninguno"
|
||||
ChannelFormat.2_0ch="Estéreo "
|
||||
ChannelFormat.2_0ch="Estéreo"
|
||||
ChannelFormat.2_1ch="2.1 canales"
|
||||
ChannelFormat.4_0ch="4 canales"
|
||||
ChannelFormat.4_1ch="4.1 canales"
|
||||
|
|
|
|||
|
|
@ -17,4 +17,6 @@ ChannelFormat.5_1ch="5.1ch"
|
|||
ChannelFormat.7_1ch="7.1ch"
|
||||
DeactivateWhenNotShowing="Desativar quando não visível"
|
||||
AutoStart="Iniciar automaticamente ao arrancar"
|
||||
VideoConnection="Conexão de Vídeo"
|
||||
AudioConnection="Conexão de Audio"
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ BlackmagicDevice="Blackmagic naprave"
|
|||
Device="Naprava"
|
||||
Mode="Način"
|
||||
Buffering="Uporabi medpomnilnik"
|
||||
PixelFormat="Oblika sl. točk"
|
||||
PixelFormat="Format piksla"
|
||||
ColorSpace="Barvni prostor"
|
||||
ColorSpace.Default="Privzeto"
|
||||
ColorRange="Barvni razpon"
|
||||
|
|
@ -11,12 +11,12 @@ ColorRange.Partial="Delno"
|
|||
ColorRange.Full="Polno"
|
||||
ChannelFormat="Kanal"
|
||||
ChannelFormat.None="Brez"
|
||||
ChannelFormat.2_0ch="2 kan."
|
||||
ChannelFormat.2_1ch="2.1 kan."
|
||||
ChannelFormat.4_0ch="4 kan."
|
||||
ChannelFormat.4_1ch="4.1 kan."
|
||||
ChannelFormat.5_1ch="5.1 kan."
|
||||
ChannelFormat.7_1ch="7.1 kan."
|
||||
ChannelFormat.2_0ch="2 kanala"
|
||||
ChannelFormat.2_1ch="2.1 kanalov"
|
||||
ChannelFormat.4_0ch="4 kanali"
|
||||
ChannelFormat.4_1ch="4.1 kanalov"
|
||||
ChannelFormat.5_1ch="5.1 kanalov"
|
||||
ChannelFormat.7_1ch="7.1 kanalov"
|
||||
DeactivateWhenNotShowing="Onemogoči, ko ni prikazano"
|
||||
AutoStart="Samodejno zaženi ob zagonu"
|
||||
SwapFC-LFE="Zamenjaj SS in nizke tone"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ ChannelFormat.5_1ch="5.1ch"
|
|||
ChannelFormat.7_1ch="7.1ch"
|
||||
DeactivateWhenNotShowing="Gösterilmediğinde devre dışı bırak"
|
||||
AutoStart="Açılışta otomatik olarak başlat"
|
||||
SwapFC-LFE="FC ve LFE'yi değiştir"
|
||||
SwapFC-LFE.Tooltip="Ön Merkez Kanalı ve LFE Kanalı Değişimi"
|
||||
VideoConnection="Video Bağlantısı"
|
||||
AudioConnection="Ses Bağlantısı"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
BlackmagicDevice="Thiết bị Blackmagic"
|
||||
Device="Thiết bị"
|
||||
Mode="Chế độ"
|
||||
Buffering="Dùng đệm"
|
||||
PixelFormat="Định dạng điểm ảnh"
|
||||
ColorSpace="Không gian màu"
|
||||
ColorSpace.Default="Mặc định"
|
||||
ColorRange="Phạm vi màu"
|
||||
ColorRange.Default="Mặc định"
|
||||
ColorRange.Partial="Một phần"
|
||||
ColorRange.Full="Đầy đủ"
|
||||
|
|
@ -11,4 +17,10 @@ ChannelFormat.4_0ch="4ch"
|
|||
ChannelFormat.4_1ch="4.1ch"
|
||||
ChannelFormat.5_1ch="5.1ch"
|
||||
ChannelFormat.7_1ch="7.1ch"
|
||||
DeactivateWhenNotShowing="Tắt khi không hiển thị"
|
||||
AutoStart="Tự bắt đầu khi khởi động"
|
||||
SwapFC-LFE="Tráo đổi FC và LFE"
|
||||
SwapFC-LFE.Tooltip="Tráo đổi kênh âm Front Center và LFE"
|
||||
VideoConnection="Kết nối video"
|
||||
AudioConnection="Kết nối Audio"
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ static void *decklink_output_create(obs_data_t *settings, obs_output_t *output)
|
|||
|
||||
decklinkOutput->deviceHash = obs_data_get_string(settings, DEVICE_HASH);
|
||||
decklinkOutput->modeID = obs_data_get_int(settings, MODE_ID);
|
||||
decklinkOutput->keyerMode = obs_data_get_int(settings, KEYER);
|
||||
decklinkOutput->keyerMode = (int)obs_data_get_int(settings, KEYER);
|
||||
|
||||
return decklinkOutput;
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ static void decklink_output_update(void *data, obs_data_t *settings)
|
|||
|
||||
decklink->deviceHash = obs_data_get_string(settings, DEVICE_HASH);
|
||||
decklink->modeID = obs_data_get_int(settings, MODE_ID);
|
||||
decklink->keyerMode = obs_data_get_int(settings, KEYER);
|
||||
decklink->keyerMode = (int)obs_data_get_int(settings, KEYER);
|
||||
}
|
||||
|
||||
static bool decklink_output_start(void *data)
|
||||
|
|
@ -46,6 +46,9 @@ static bool decklink_output_start(void *data)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!decklink->deviceHash || !*decklink->deviceHash)
|
||||
return false;
|
||||
|
||||
decklink->audio_samplerate = aoi.samples_per_sec;
|
||||
decklink->audio_planes = 2;
|
||||
decklink->audio_size =
|
||||
|
|
@ -74,7 +77,9 @@ static bool decklink_output_start(void *data)
|
|||
obs_output_set_video_conversion(decklink->GetOutput(), &to);
|
||||
|
||||
device->SetKeyerMode(decklink->keyerMode);
|
||||
decklink->Activate(device, decklink->modeID);
|
||||
|
||||
if (!decklink->Activate(device, decklink->modeID))
|
||||
return false;
|
||||
|
||||
struct audio_convert_info conversion = {};
|
||||
conversion.format = AUDIO_FORMAT_16BIT;
|
||||
|
|
|
|||
|
|
@ -342,6 +342,7 @@ struct obs_source_info create_decklink_source_info()
|
|||
decklink_source_info.update = decklink_update;
|
||||
decklink_source_info.show = decklink_show;
|
||||
decklink_source_info.hide = decklink_hide;
|
||||
decklink_source_info.icon_type = OBS_ICON_TYPE_CAMERA;
|
||||
|
||||
return decklink_source_info;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,19 +2,23 @@
|
|||
|
||||
#if defined(_WIN32)
|
||||
#include <DeckLinkAPI.h>
|
||||
#include "win/decklink-sdk/DeckLinkAPIVersion.h"
|
||||
typedef BOOL decklink_bool_t;
|
||||
typedef BSTR decklink_string_t;
|
||||
IDeckLinkDiscovery *CreateDeckLinkDiscoveryInstance(void);
|
||||
IDeckLinkIterator *CreateDeckLinkIteratorInstance(void);
|
||||
#define IUnknownUUID IID_IUnknown
|
||||
typedef REFIID CFUUIDBytes;
|
||||
#define CFUUIDGetUUIDBytes(x) x
|
||||
#elif defined(__APPLE__)
|
||||
#include "mac/decklink-sdk/DeckLinkAPI.h"
|
||||
#include "mac/decklink-sdk/DeckLinkAPIVersion.h"
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
typedef bool decklink_bool_t;
|
||||
typedef CFStringRef decklink_string_t;
|
||||
#elif defined(__linux__)
|
||||
#include "linux/decklink-sdk/DeckLinkAPI.h"
|
||||
#include "linux/decklink-sdk/DeckLinkAPIVersion.h"
|
||||
typedef bool decklink_bool_t;
|
||||
typedef const char *decklink_string_t;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -14,8 +14,43 @@ struct obs_source_info decklink_source_info;
|
|||
extern struct obs_output_info create_decklink_output_info();
|
||||
struct obs_output_info decklink_output_info;
|
||||
|
||||
void log_sdk_version()
|
||||
{
|
||||
IDeckLinkIterator *deckLinkIterator;
|
||||
IDeckLinkAPIInformation *deckLinkAPIInformation;
|
||||
HRESULT result;
|
||||
|
||||
deckLinkIterator = CreateDeckLinkIteratorInstance();
|
||||
if (deckLinkIterator == NULL) {
|
||||
blog(LOG_WARNING,
|
||||
"A DeckLink iterator could not be created. The DeckLink drivers may not be installed");
|
||||
return;
|
||||
}
|
||||
|
||||
result = deckLinkIterator->QueryInterface(
|
||||
IID_IDeckLinkAPIInformation, (void **)&deckLinkAPIInformation);
|
||||
if (result == S_OK) {
|
||||
decklink_string_t deckLinkVersion;
|
||||
deckLinkAPIInformation->GetString(BMDDeckLinkAPIVersion,
|
||||
&deckLinkVersion);
|
||||
|
||||
blog(LOG_INFO, "Decklink API Compiled version %s",
|
||||
BLACKMAGIC_DECKLINK_API_VERSION_STRING);
|
||||
|
||||
std::string versionString;
|
||||
DeckLinkStringToStdString(deckLinkVersion, versionString);
|
||||
|
||||
blog(LOG_INFO, "Decklink API Installed version %s",
|
||||
versionString.c_str());
|
||||
|
||||
deckLinkAPIInformation->Release();
|
||||
}
|
||||
}
|
||||
|
||||
bool obs_module_load(void)
|
||||
{
|
||||
log_sdk_version();
|
||||
|
||||
deviceEnum = new DeckLinkDeviceDiscovery();
|
||||
if (!deviceEnum->Init())
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,15 @@ IDeckLinkDiscovery *CreateDeckLinkDiscoveryInstance(void)
|
|||
return result == S_OK ? instance : nullptr;
|
||||
}
|
||||
|
||||
IDeckLinkIterator *CreateDeckLinkIteratorInstance(void)
|
||||
{
|
||||
IDeckLinkIterator *iterator;
|
||||
const HRESULT result =
|
||||
CoCreateInstance(CLSID_CDeckLinkIterator, nullptr, CLSCTX_ALL,
|
||||
IID_IDeckLinkIterator, (void **)&iterator);
|
||||
return result == S_OK ? iterator : nullptr;
|
||||
}
|
||||
|
||||
bool DeckLinkStringToStdString(decklink_string_t input, std::string &output)
|
||||
{
|
||||
if (input == nullptr)
|
||||
|
|
|
|||
|
|
@ -99,24 +99,50 @@ static uint32_t color_source_getheight(void *data)
|
|||
return context->height;
|
||||
}
|
||||
|
||||
static void color_source_defaults(obs_data_t *settings)
|
||||
static void color_source_defaults_v1(obs_data_t *settings)
|
||||
{
|
||||
obs_data_set_default_int(settings, "color", 0xFFFFFFFF);
|
||||
obs_data_set_default_int(settings, "width", 400);
|
||||
obs_data_set_default_int(settings, "height", 400);
|
||||
}
|
||||
|
||||
struct obs_source_info color_source_info = {
|
||||
static void color_source_defaults_v2(obs_data_t *settings)
|
||||
{
|
||||
obs_data_set_default_int(settings, "color", 0xFFFFFFFF);
|
||||
obs_data_set_default_int(settings, "width", 1920);
|
||||
obs_data_set_default_int(settings, "height", 1080);
|
||||
}
|
||||
|
||||
struct obs_source_info color_source_info_v1 = {
|
||||
.id = "color_source",
|
||||
.type = OBS_SOURCE_TYPE_INPUT,
|
||||
.output_flags = OBS_SOURCE_VIDEO | OBS_SOURCE_CUSTOM_DRAW |
|
||||
OBS_SOURCE_CAP_OBSOLETE,
|
||||
.create = color_source_create,
|
||||
.destroy = color_source_destroy,
|
||||
.update = color_source_update,
|
||||
.get_name = color_source_get_name,
|
||||
.get_defaults = color_source_defaults_v1,
|
||||
.get_width = color_source_getwidth,
|
||||
.get_height = color_source_getheight,
|
||||
.video_render = color_source_render,
|
||||
.get_properties = color_source_properties,
|
||||
.icon_type = OBS_ICON_TYPE_COLOR,
|
||||
};
|
||||
|
||||
struct obs_source_info color_source_info_v2 = {
|
||||
.id = "color_source",
|
||||
.version = 2,
|
||||
.type = OBS_SOURCE_TYPE_INPUT,
|
||||
.output_flags = OBS_SOURCE_VIDEO | OBS_SOURCE_CUSTOM_DRAW,
|
||||
.create = color_source_create,
|
||||
.destroy = color_source_destroy,
|
||||
.update = color_source_update,
|
||||
.get_name = color_source_get_name,
|
||||
.get_defaults = color_source_defaults,
|
||||
.get_defaults = color_source_defaults_v2,
|
||||
.get_width = color_source_getwidth,
|
||||
.get_height = color_source_getheight,
|
||||
.video_render = color_source_render,
|
||||
.get_properties = color_source_properties,
|
||||
.icon_type = OBS_ICON_TYPE_COLOR,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -16,18 +16,18 @@ SlideShow.Transition.Fade="Überblenden"
|
|||
SlideShow.Transition.Swipe="Swipe"
|
||||
SlideShow.Transition.Slide="Slide"
|
||||
SlideShow.PlaybackBehavior="Sichtbarkeitsverhalten"
|
||||
SlideShow.PlaybackBehavior.StopRestart="Anhalten, wenn nicht sichtbar, neustarten, wenn sichtbar"
|
||||
SlideShow.PlaybackBehavior.PauseUnpause="Pausieren, wenn nicht sichtbar, fortsetzen, wenn sichtbar"
|
||||
SlideShow.PlaybackBehavior.StopRestart="Anhalten, wenn nicht sichtbar; neustarten, wenn sichtbar"
|
||||
SlideShow.PlaybackBehavior.PauseUnpause="Pausieren, wenn nicht sichtbar; fortsetzen, wenn sichtbar"
|
||||
SlideShow.PlaybackBehavior.AlwaysPlay="Immer abspielen, auch wenn nicht sichtbar"
|
||||
SlideShow.SlideMode="Diashowmodus"
|
||||
SlideShow.SlideMode.Auto="Automatisch"
|
||||
SlideShow.SlideMode.Manual="Manuell (Hotkeys verwenden, um Diashow zu steuern)"
|
||||
SlideShow.SlideMode.Manual="Manuell (Hotkeys für die Steuerung der Diashow verwenden)"
|
||||
SlideShow.PlayPause="Abspielen/pausieren"
|
||||
SlideShow.Restart="Neustarten"
|
||||
SlideShow.Stop="Stop"
|
||||
SlideShow.Stop="Stoppen"
|
||||
SlideShow.NextSlide="Nächstes Bild"
|
||||
SlideShow.PreviousSlide="Vorheriges Bild"
|
||||
SlideShow.HideWhenDone="Verbergen, wenn die Diashow vorbei ist"
|
||||
SlideShow.HideWhenDone="Verbergen, wenn Diashow vorbei"
|
||||
|
||||
ColorSource="Farbquelle"
|
||||
ColorSource.Color="Farbe"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
ImageInput="Imagen"
|
||||
File="Archivo de imagen"
|
||||
UnloadWhenNotShowing="Descargar la imagen mientras no se muestre"
|
||||
UnloadWhenNotShowing="Descarga la imagen de la memoria cuando no se muestre"
|
||||
|
||||
SlideShow="Galería de imágenes"
|
||||
SlideShow.TransitionSpeed="Velocidad de la transición (milisegundos)"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ SlideShow="Diaporama"
|
|||
SlideShow.TransitionSpeed="Velocidade da transición (milisegundos)"
|
||||
SlideShow.SlideTime="Tempo entre diapositivas (milisegundos)"
|
||||
SlideShow.Files="Ficheiros de imaxe"
|
||||
SlideShow.CustomSize="Límite do tamaño/relación de aspecto"
|
||||
SlideShow.CustomSize="Límite do tamaño/proporción do aspecto"
|
||||
SlideShow.CustomSize.Auto="Automático"
|
||||
SlideShow.Randomize="Reproducir ao chou"
|
||||
SlideShow.Loop="Bucle"
|
||||
|
|
|
|||
4
plugins/image-source/data/locale/pa-IN.ini
Normal file
4
plugins/image-source/data/locale/pa-IN.ini
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
ImageInput="ਤਸਵੀਰ"
|
||||
|
||||
|
||||
|
||||
|
|
@ -15,9 +15,13 @@ SlideShow.Transition.Fade="Desvanecer"
|
|||
SlideShow.Transition.Swipe="Deslizar"
|
||||
SlideShow.Transition.Slide="Deslize"
|
||||
SlideShow.PlaybackBehavior.AlwaysPlay="Reproduzir sempre, mesmo quando não está visível"
|
||||
SlideShow.SlideMode="Modo de Slide"
|
||||
SlideShow.SlideMode.Auto="Automático"
|
||||
SlideShow.PlayPause="Play/Pausa"
|
||||
SlideShow.Restart="Reiniciar"
|
||||
SlideShow.Stop="Stop"
|
||||
SlideShow.NextSlide="Próximo Slide"
|
||||
SlideShow.PreviousSlide="Slide Anterior"
|
||||
|
||||
ColorSource.Color="Cor"
|
||||
ColorSource.Width="Largura"
|
||||
|
|
|
|||
|
|
@ -265,7 +265,9 @@ static struct obs_source_info image_source_info = {
|
|||
.get_height = image_source_getheight,
|
||||
.video_render = image_source_render,
|
||||
.video_tick = image_source_tick,
|
||||
.get_properties = image_source_properties};
|
||||
.get_properties = image_source_properties,
|
||||
.icon_type = OBS_ICON_TYPE_IMAGE,
|
||||
};
|
||||
|
||||
OBS_DECLARE_MODULE()
|
||||
OBS_MODULE_USE_DEFAULT_LOCALE("image-source", "en-US")
|
||||
|
|
@ -275,12 +277,14 @@ MODULE_EXPORT const char *obs_module_description(void)
|
|||
}
|
||||
|
||||
extern struct obs_source_info slideshow_info;
|
||||
extern struct obs_source_info color_source_info;
|
||||
extern struct obs_source_info color_source_info_v1;
|
||||
extern struct obs_source_info color_source_info_v2;
|
||||
|
||||
bool obs_module_load(void)
|
||||
{
|
||||
obs_register_source(&image_source_info);
|
||||
obs_register_source(&color_source_info);
|
||||
obs_register_source(&color_source_info_v1);
|
||||
obs_register_source(&color_source_info_v2);
|
||||
obs_register_source(&slideshow_info);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
extern uint64_t image_source_get_memory_usage(void *data);
|
||||
|
||||
#define BYTES_TO_MBYTES (1024 * 1024)
|
||||
#define MAX_MEM_USAGE (250 * BYTES_TO_MBYTES)
|
||||
#define MAX_MEM_USAGE (400 * BYTES_TO_MBYTES)
|
||||
|
||||
struct image_file_data {
|
||||
char *path;
|
||||
|
|
@ -940,4 +940,5 @@ struct obs_source_info slideshow_info = {
|
|||
.get_height = ss_height,
|
||||
.get_defaults = ss_defaults,
|
||||
.get_properties = ss_properties,
|
||||
.icon_type = OBS_ICON_TYPE_SLIDESHOW,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ struct obs_source_info alsa_input_capture = {
|
|||
.get_defaults = alsa_get_defaults,
|
||||
.get_name = alsa_get_name,
|
||||
.get_properties = alsa_get_properties,
|
||||
.icon_type = OBS_ICON_TYPE_AUDIO_INPUT,
|
||||
};
|
||||
|
||||
static bool _alsa_try_open(struct alsa_data *);
|
||||
|
|
|
|||
|
|
@ -1,2 +1,3 @@
|
|||
AlsaInput="Naprava za zajemanje zvoka (ALSA)"
|
||||
Device="Naprava"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,15 @@
|
|||
X11SharedMemoryScreenInput="صفحه نمایش ضبط (XSHM)"
|
||||
X11SharedMemoryScreenInput="ضبط صفحه نمایش(XSHM)"
|
||||
Screen="صفحه نمایش"
|
||||
CaptureCursor="گرفتن مکان نما"
|
||||
CaptureCursor="ضبط مکان نمای ماوس"
|
||||
AdvancedSettings="تنظیمات پیشرفته"
|
||||
XServer="سرویس دهنده"
|
||||
XCCapture="ضبط پنجره (Xcomposite)"
|
||||
Window="ویندوز"
|
||||
Window="پنجره"
|
||||
CropTop="برش بالا (پیکسل)"
|
||||
CropLeft="برش چپ (پیکسل)"
|
||||
CropRight="برش راست (پیکسل)"
|
||||
CropBottom="برش پایین (پیکسل)"
|
||||
SwapRedBlue="قرمز و آبی را تعویض کنید"
|
||||
LockX="سرور اکس قفل هنگام گرفتن"
|
||||
IncludeXBorder="شامل X مرز"
|
||||
ExcludeAlpha="استفاده از فرمت های بافت آلفا کمتر (مسا حلی)"
|
||||
|
|
|
|||
|
|
@ -2,14 +2,15 @@ X11SharedMemoryScreenInput="Zajemanje zaslona (XSHM)"
|
|||
Screen="Zaslon"
|
||||
CaptureCursor="Zajemi kazalec"
|
||||
AdvancedSettings="Napredne nastavitve"
|
||||
XServer="X Server"
|
||||
XServer="X strežnik"
|
||||
XCCapture="Zajemanje okna (Xcomposite)"
|
||||
Window="Okno"
|
||||
CropTop="Obreži zgoraj (pixels)"
|
||||
CropLeft="Obreži levo (pixels)"
|
||||
CropRight="Obreži desno (pixels)"
|
||||
CropBottom="Obreži spodaj (pixels)"
|
||||
CropTop="Obreži zgoraj (sl. točke)"
|
||||
CropLeft="Obreži levo (sl. točke)"
|
||||
CropRight="Obreži desno (sl. točke)"
|
||||
CropBottom="Obreži spodaj (sl. točke)"
|
||||
SwapRedBlue="Zamenjaj modro in rdečo"
|
||||
LockX="Zakleni X server med zajemanjem"
|
||||
IncludeXBorder="Vključujejo X meje"
|
||||
LockX="Zakleni X sstrežnik med zajemanjem"
|
||||
IncludeXBorder="Vključi obrobo X"
|
||||
ExcludeAlpha="Uporabi format za teksture, ki je brez alfa kanala (Mesa obvod)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
X11SharedMemoryScreenInput="Quay màn hỉnh (XSHM)"
|
||||
Screen="Màn hình"
|
||||
CaptureCursor="Quay cả con trỏ"
|
||||
AdvancedSettings="Cài đặt nâng cao"
|
||||
AdvancedSettings="Thiết đặt nâng cao"
|
||||
XServer="X Server"
|
||||
XCCapture="Quay cửa sổ (Xcomposite)"
|
||||
Window="Cửa sổ"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
X11SharedMemoryScreenInput="截取螢幕(XSHM)"
|
||||
Screen="螢幕"
|
||||
CaptureCursor="捕捉游標"
|
||||
AdvancedSettings="進階設定 "
|
||||
AdvancedSettings="進階設定"
|
||||
XServer="X server"
|
||||
XCCapture="截取視窗(Xcomposite)"
|
||||
Window="視窗"
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ extern "C" void xcomposite_load(void)
|
|||
sinfo.video_render = xcompcap_video_render;
|
||||
sinfo.get_width = xcompcap_getwidth;
|
||||
sinfo.get_height = xcompcap_getheight;
|
||||
sinfo.icon_type = OBS_ICON_TYPE_WINDOW_CAPTURE,
|
||||
|
||||
obs_register_source(&sinfo);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,6 +104,22 @@ bool randr_is_active(xcb_connection_t *xcb)
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool randr_has_monitors(xcb_connection_t *xcb)
|
||||
{
|
||||
xcb_randr_query_version_cookie_t ver_c;
|
||||
xcb_randr_query_version_reply_t *ver_r;
|
||||
|
||||
ver_c = xcb_randr_query_version(xcb, XCB_RANDR_MAJOR_VERSION,
|
||||
XCB_RANDR_MINOR_VERSION);
|
||||
ver_r = xcb_randr_query_version_reply(xcb, ver_c, 0);
|
||||
if (!ver_r)
|
||||
return 0;
|
||||
|
||||
bool ret = ver_r->major_version > 1 || ver_r->minor_version >= 5;
|
||||
free(ver_r);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int randr_screen_count(xcb_connection_t *xcb)
|
||||
{
|
||||
if (!xcb)
|
||||
|
|
@ -111,6 +127,19 @@ int randr_screen_count(xcb_connection_t *xcb)
|
|||
xcb_screen_t *screen;
|
||||
screen = xcb_setup_roots_iterator(xcb_get_setup(xcb)).data;
|
||||
|
||||
if (randr_has_monitors(xcb)) {
|
||||
xcb_randr_get_monitors_cookie_t mon_c;
|
||||
xcb_randr_get_monitors_reply_t *mon_r;
|
||||
|
||||
mon_c = xcb_randr_get_monitors(xcb, screen->root, true);
|
||||
mon_r = xcb_randr_get_monitors_reply(xcb, mon_c, 0);
|
||||
if (!mon_r)
|
||||
return 0;
|
||||
|
||||
int count = xcb_randr_get_monitors_monitors_length(mon_r);
|
||||
free(mon_r);
|
||||
return count;
|
||||
}
|
||||
xcb_randr_get_screen_resources_cookie_t res_c;
|
||||
xcb_randr_get_screen_resources_reply_t *res_r;
|
||||
|
||||
|
|
@ -124,11 +153,58 @@ int randr_screen_count(xcb_connection_t *xcb)
|
|||
|
||||
int randr_screen_geo(xcb_connection_t *xcb, int_fast32_t screen,
|
||||
int_fast32_t *x, int_fast32_t *y, int_fast32_t *w,
|
||||
int_fast32_t *h, xcb_screen_t **rscreen)
|
||||
int_fast32_t *h, xcb_screen_t **rscreen, char **name)
|
||||
{
|
||||
xcb_screen_t *xscreen;
|
||||
xscreen = xcb_setup_roots_iterator(xcb_get_setup(xcb)).data;
|
||||
|
||||
if (randr_has_monitors(xcb)) {
|
||||
xcb_randr_get_monitors_cookie_t mon_c;
|
||||
xcb_randr_get_monitors_reply_t *mon_r;
|
||||
|
||||
mon_c = xcb_randr_get_monitors(xcb, xscreen->root, true);
|
||||
mon_r = xcb_randr_get_monitors_reply(xcb, mon_c, 0);
|
||||
if (!mon_r)
|
||||
return 0;
|
||||
|
||||
int monitors = xcb_randr_get_monitors_monitors_length(mon_r);
|
||||
if (screen < 0 || screen >= monitors) {
|
||||
free(mon_r);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
xcb_randr_monitor_info_iterator_t mon_i;
|
||||
mon_i = xcb_randr_get_monitors_monitors_iterator(mon_r);
|
||||
|
||||
int s;
|
||||
for (s = 0; s < screen; s++)
|
||||
xcb_randr_monitor_info_next(&mon_i);
|
||||
|
||||
xcb_randr_monitor_info_t *mon = mon_i.data;
|
||||
|
||||
*x = mon->x;
|
||||
*y = mon->y;
|
||||
*w = mon->width;
|
||||
*h = mon->height;
|
||||
if (rscreen)
|
||||
*rscreen = xscreen;
|
||||
|
||||
if (mon->name && name) {
|
||||
xcb_get_atom_name_cookie_t atom_c;
|
||||
xcb_get_atom_name_reply_t *atom_r;
|
||||
|
||||
atom_c = xcb_get_atom_name(xcb, mon->name);
|
||||
atom_r = xcb_get_atom_name_reply(xcb, atom_c, 0);
|
||||
if (atom_r) {
|
||||
*name = strndup(
|
||||
xcb_get_atom_name_name(atom_r),
|
||||
xcb_get_atom_name_name_length(atom_r));
|
||||
free(atom_r);
|
||||
}
|
||||
}
|
||||
free(mon_r);
|
||||
return 0;
|
||||
}
|
||||
xcb_randr_get_screen_resources_cookie_t res_c;
|
||||
xcb_randr_get_screen_resources_reply_t *res_r;
|
||||
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ int randr_screen_count(xcb_connection_t *xcb);
|
|||
*/
|
||||
int randr_screen_geo(xcb_connection_t *xcb, int_fast32_t screen,
|
||||
int_fast32_t *x, int_fast32_t *y, int_fast32_t *w,
|
||||
int_fast32_t *h, xcb_screen_t **rscreen);
|
||||
int_fast32_t *h, xcb_screen_t **rscreen, char **name);
|
||||
|
||||
/**
|
||||
* Get screen geometry for a X11 screen
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ static int_fast32_t xshm_update_geometry(struct xshm_data *data)
|
|||
if (data->use_randr) {
|
||||
if (randr_screen_geo(data->xcb, data->screen_id, &data->x_org,
|
||||
&data->y_org, &data->width, &data->height,
|
||||
&data->xcb_screen) < 0) {
|
||||
&data->xcb_screen, NULL) < 0) {
|
||||
return -1;
|
||||
}
|
||||
} else if (data->use_xinerama) {
|
||||
|
|
@ -308,21 +308,31 @@ static bool xshm_server_changed(obs_properties_t *props, obs_property_t *p,
|
|||
: xcb_setup_roots_length(xcb_get_setup(xcb));
|
||||
|
||||
for (int_fast32_t i = 0; i < count; ++i) {
|
||||
char *name;
|
||||
char name_tmp[12];
|
||||
int_fast32_t x, y, w, h;
|
||||
x = y = w = h = 0;
|
||||
|
||||
name = NULL;
|
||||
if (randr)
|
||||
randr_screen_geo(xcb, i, &x, &y, &w, &h, NULL);
|
||||
randr_screen_geo(xcb, i, &x, &y, &w, &h, NULL, &name);
|
||||
else if (xinerama)
|
||||
xinerama_screen_geo(xcb, i, &x, &y, &w, &h);
|
||||
else
|
||||
x11_screen_geo(xcb, i, &w, &h);
|
||||
|
||||
if (name == NULL) {
|
||||
sprintf(name_tmp, "%" PRIuFAST32, i);
|
||||
name = name_tmp;
|
||||
}
|
||||
|
||||
dstr_printf(&screen_info,
|
||||
"Screen %" PRIuFAST32 " (%" PRIuFAST32
|
||||
"x%" PRIuFAST32 " @ %" PRIuFAST32 ",%" PRIuFAST32
|
||||
")",
|
||||
i, w, h, x, y);
|
||||
"Screen %s (%" PRIuFAST32 "x%" PRIuFAST32
|
||||
" @ %" PRIuFAST32 ",%" PRIuFAST32 ")",
|
||||
name, w, h, x, y);
|
||||
|
||||
if (name != name_tmp)
|
||||
free(name);
|
||||
|
||||
if (h > 0 && w > 0)
|
||||
obs_property_list_add_int(screens, screen_info.array,
|
||||
|
|
@ -508,4 +518,5 @@ struct obs_source_info xshm_input = {
|
|||
.video_render = xshm_video_render,
|
||||
.get_width = xshm_getwidth,
|
||||
.get_height = xshm_getheight,
|
||||
.icon_type = OBS_ICON_TYPE_DESKTOP_CAPTURE,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
StartJACKServer="شروع JACK سرور"
|
||||
Channels="تعداد کانال"
|
||||
StartJACKServer="شروع درگاه سرور"
|
||||
Channels="تعداد کانال ها"
|
||||
JACKInput="درگاه ورودی کلاینت"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
StartJACKServer="Vklopi JACK Server"
|
||||
StartJACKServer="Zaženi JACK strežnik"
|
||||
Channels="Število kanalov"
|
||||
JACKInput="JACK vhodni odjemalec"
|
||||
|
||||
|
|
|
|||
|
|
@ -147,4 +147,5 @@ struct obs_source_info jack_output_capture = {
|
|||
.update = jack_update,
|
||||
.get_defaults = jack_input_defaults,
|
||||
.get_properties = jack_input_properties,
|
||||
.icon_type = OBS_ICON_TYPE_AUDIO_OUTPUT,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -594,6 +594,7 @@ struct obs_source_info pulse_input_capture = {
|
|||
.update = pulse_update,
|
||||
.get_defaults = pulse_defaults,
|
||||
.get_properties = pulse_input_properties,
|
||||
.icon_type = OBS_ICON_TYPE_AUDIO_INPUT,
|
||||
};
|
||||
|
||||
struct obs_source_info pulse_output_capture = {
|
||||
|
|
@ -607,4 +608,5 @@ struct obs_source_info pulse_output_capture = {
|
|||
.update = pulse_update,
|
||||
.get_defaults = pulse_defaults,
|
||||
.get_properties = pulse_output_properties,
|
||||
.icon_type = OBS_ICON_TYPE_AUDIO_OUTPUT,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ include_directories(
|
|||
|
||||
set(linux-v4l2_SOURCES
|
||||
linux-v4l2.c
|
||||
v4l2-controls.c
|
||||
v4l2-input.c
|
||||
v4l2-helpers.c
|
||||
${linux-v4l2-udev_SOURCES}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ DVTiming="DV‐Timing"
|
|||
Resolution="Auflösung"
|
||||
FrameRate="Bildrate"
|
||||
LeaveUnchanged="Unverändert lassen"
|
||||
UseBuffering="Puffern benutzen"
|
||||
UseBuffering="Pufferung benutzen"
|
||||
ColorRange="Farbbereich"
|
||||
ColorRange.Default="Standard"
|
||||
ColorRange.Partial="Begrenzt"
|
||||
|
|
|
|||
|
|
@ -1,14 +1,15 @@
|
|||
V4L2Input="دستگاه ضبط ویدئویی (V4L2)"
|
||||
Device="دستگاه"
|
||||
Input="ورودی"
|
||||
VideoFormat="فرمت های تصویری"
|
||||
VideoStandard="استاندارد های تصویری"
|
||||
DVTiming="زمان بندی دی وی"
|
||||
Resolution="اندازه تصویر"
|
||||
VideoFormat="فرمت ویدئو"
|
||||
VideoStandard="استاندارد ویدئو"
|
||||
DVTiming="زمان بندی فیلم دیجیتال"
|
||||
Resolution="وضوح"
|
||||
FrameRate="نرخ فریم"
|
||||
LeaveUnchanged="ترک بدون تغییر"
|
||||
UseBuffering="استفاده از بافرینگ"
|
||||
ColorRange="طیف رنگ"
|
||||
LeaveUnchanged="رفتن بدون تغییر"
|
||||
UseBuffering="استفاده از بافر کردن"
|
||||
ColorRange="محدوده رنگ"
|
||||
ColorRange.Default="پیش فرض"
|
||||
ColorRange.Partial="جزئی"
|
||||
ColorRange.Full="کامل"
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ FrameRate="Bildefrekvens"
|
|||
LeaveUnchanged="La stå uendret"
|
||||
UseBuffering="Bruk bufring"
|
||||
ColorRange="Fargespekter"
|
||||
ColorRange.Default="Standard"
|
||||
ColorRange.Partial="Delvis"
|
||||
ColorRange.Full="Full"
|
||||
|
||||
|
|
|
|||
|
|
@ -8,4 +8,8 @@ Resolution="Resolução"
|
|||
FrameRate="Taxa de fotogramas"
|
||||
LeaveUnchanged="Deixar inalterado"
|
||||
UseBuffering="Utilizar Buffering"
|
||||
ColorRange="Gama de Cores"
|
||||
ColorRange.Default="Pré-definido"
|
||||
ColorRange.Partial="Parcial"
|
||||
ColorRange.Full="Completo"
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ FrameRate="Frekvencia snímok"
|
|||
LeaveUnchanged="Ponechať bez zmeny"
|
||||
UseBuffering="Použiť vyrovnávaciu pamäť"
|
||||
ColorRange="Farebný rozsah"
|
||||
ColorRange.Default="Predvolený"
|
||||
ColorRange.Partial="Čiastočný"
|
||||
ColorRange.Full="Plný"
|
||||
|
||||
|
|
|
|||
|
|
@ -8,4 +8,8 @@ Resolution="Resolucija"
|
|||
FrameRate="Slike na sekundo"
|
||||
LeaveUnchanged="Pusti nespremenjeno"
|
||||
UseBuffering="Uporabi medpomnilnik"
|
||||
ColorRange="Barvni razpon"
|
||||
ColorRange.Default="Privzeti"
|
||||
ColorRange.Partial="Delni"
|
||||
ColorRange.Full="Polni"
|
||||
|
||||
|
|
|
|||
153
plugins/linux-v4l2/v4l2-controls.c
Normal file
153
plugins/linux-v4l2/v4l2-controls.c
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
/*
|
||||
Copyright (C) 2019 by Gary Kramlich <grim@reaperworld.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <fcntl.h>
|
||||
|
||||
#include <linux/videodev2.h>
|
||||
#include <libv4l2.h>
|
||||
|
||||
#include "v4l2-controls.h"
|
||||
|
||||
#define blog(level, msg, ...) blog(level, "v4l2-controls: " msg, ##__VA_ARGS__)
|
||||
|
||||
#if defined(__LP64__)
|
||||
#define UINT_TO_POINTER(val) ((void *)(unsigned long)(val))
|
||||
#define POINTER_TO_UINT(p) ((unsigned int)(unsigned long)(p))
|
||||
#else
|
||||
#define UINT_TO_POINTER(val) ((void *)(unsigned int)(val))
|
||||
#define POINTER_TO_UINT(p) ((unsigned int)(unsigned int)(p))
|
||||
#endif
|
||||
|
||||
static bool v4l2_control_changed(void *data, obs_properties_t *props,
|
||||
obs_property_t *prop, obs_data_t *settings)
|
||||
{
|
||||
int dev = v4l2_open(obs_data_get_string(settings, "device_id"),
|
||||
O_RDWR | O_NONBLOCK);
|
||||
bool ret = false;
|
||||
|
||||
(void)props;
|
||||
|
||||
if (dev == -1)
|
||||
return false;
|
||||
|
||||
struct v4l2_control control;
|
||||
control.id = POINTER_TO_UINT(data);
|
||||
control.value = obs_data_get_int(settings, obs_property_name(prop));
|
||||
|
||||
if (0 != v4l2_ioctl(dev, VIDIOC_S_CTRL, &control)) {
|
||||
ret = true;
|
||||
}
|
||||
|
||||
v4l2_close(dev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int_fast32_t v4l2_update_controls_menu(int_fast32_t dev,
|
||||
obs_properties_t *props,
|
||||
struct v4l2_queryctrl *qctrl)
|
||||
{
|
||||
obs_property_t *prop;
|
||||
struct v4l2_querymenu qmenu;
|
||||
|
||||
prop = obs_properties_add_list(props, (char *)qctrl->name,
|
||||
(char *)qctrl->name, OBS_COMBO_TYPE_LIST,
|
||||
OBS_COMBO_FORMAT_INT);
|
||||
|
||||
obs_property_set_modified_callback2(prop, v4l2_control_changed,
|
||||
UINT_TO_POINTER(qctrl->id));
|
||||
|
||||
memset(&qmenu, 0, sizeof(qmenu));
|
||||
qmenu.id = qctrl->id;
|
||||
|
||||
for (qmenu.index = qctrl->minimum;
|
||||
qmenu.index <= (uint32_t)qctrl->maximum;
|
||||
qmenu.index += qctrl->step) {
|
||||
if (0 == v4l2_ioctl(dev, VIDIOC_QUERYMENU, &qmenu)) {
|
||||
obs_property_list_add_int(prop, (char *)qmenu.name,
|
||||
qmenu.value);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define INVALID_CONTROL_FLAGS \
|
||||
(V4L2_CTRL_FLAG_DISABLED | V4L2_CTRL_FLAG_READ_ONLY | \
|
||||
V4L2_CTRL_FLAG_VOLATILE)
|
||||
|
||||
static inline bool valid_control(struct v4l2_queryctrl *qctrl)
|
||||
{
|
||||
return (qctrl->flags & INVALID_CONTROL_FLAGS) == 0;
|
||||
}
|
||||
|
||||
static inline bool add_control_property(obs_properties_t *props,
|
||||
obs_data_t *settings, int_fast32_t dev,
|
||||
struct v4l2_queryctrl *qctrl)
|
||||
{
|
||||
obs_property_t *prop = NULL;
|
||||
|
||||
if (!valid_control(qctrl)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (qctrl->type) {
|
||||
case V4L2_CTRL_TYPE_INTEGER:
|
||||
prop = obs_properties_add_int_slider(
|
||||
props, (char *)qctrl->name, (char *)qctrl->name,
|
||||
qctrl->minimum, qctrl->maximum, qctrl->step);
|
||||
obs_data_set_default_int(settings, (char *)qctrl->name,
|
||||
qctrl->default_value);
|
||||
obs_property_set_modified_callback2(prop, v4l2_control_changed,
|
||||
UINT_TO_POINTER(qctrl->id));
|
||||
break;
|
||||
case V4L2_CTRL_TYPE_BOOLEAN:
|
||||
prop = obs_properties_add_bool(props, (char *)qctrl->name,
|
||||
(char *)qctrl->name);
|
||||
obs_data_set_default_bool(settings, (char *)qctrl->name,
|
||||
qctrl->default_value);
|
||||
obs_property_set_modified_callback2(prop, v4l2_control_changed,
|
||||
UINT_TO_POINTER(qctrl->id));
|
||||
break;
|
||||
case V4L2_CTRL_TYPE_MENU:
|
||||
case V4L2_CTRL_TYPE_INTEGER_MENU:
|
||||
v4l2_update_controls_menu(dev, props, qctrl);
|
||||
obs_data_set_default_int(settings, (char *)qctrl->name,
|
||||
qctrl->default_value);
|
||||
blog(LOG_INFO, "setting default for %s to %d",
|
||||
(char *)qctrl->name, qctrl->default_value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int_fast32_t v4l2_update_controls(int_fast32_t dev, obs_properties_t *props,
|
||||
obs_data_t *settings)
|
||||
{
|
||||
struct v4l2_queryctrl qctrl;
|
||||
|
||||
if (!dev || !props)
|
||||
return -1;
|
||||
|
||||
memset(&qctrl, 0, sizeof(qctrl));
|
||||
qctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL;
|
||||
while (0 == v4l2_ioctl(dev, VIDIOC_QUERYCTRL, &qctrl)) {
|
||||
add_control_property(props, settings, dev, &qctrl);
|
||||
qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
40
plugins/linux-v4l2/v4l2-controls.h
Normal file
40
plugins/linux-v4l2/v4l2-controls.h
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
Copyright (C) 2019 by Gary Kramlich <grim@reaperworld.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <obs-module.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Update a devices properties to include all v4l controls that it supports.
|
||||
*
|
||||
* @param dev handle to the v4l2 device
|
||||
* @param props properties for the device
|
||||
* @param data the settings for the source
|
||||
*
|
||||
* @return negative on failure
|
||||
*/
|
||||
int_fast32_t v4l2_update_controls(int_fast32_t dev, obs_properties_t *props,
|
||||
obs_data_t *settings);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
@ -35,6 +35,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include <util/platform.h>
|
||||
#include <obs-module.h>
|
||||
|
||||
#include "v4l2-controls.h"
|
||||
#include "v4l2-helpers.h"
|
||||
|
||||
#if HAVE_UDEV
|
||||
|
|
@ -579,6 +580,7 @@ static bool device_selected(obs_properties_t *props, obs_property_t *p,
|
|||
|
||||
obs_property_t *prop = obs_properties_get(props, "input");
|
||||
v4l2_input_list(dev, prop);
|
||||
v4l2_update_controls(dev, props, settings);
|
||||
v4l2_close(dev);
|
||||
|
||||
obs_property_modified(prop, settings);
|
||||
|
|
@ -1005,4 +1007,5 @@ struct obs_source_info v4l2_input = {
|
|||
.update = v4l2_update,
|
||||
.get_defaults = v4l2_defaults,
|
||||
.get_properties = v4l2_properties,
|
||||
.icon_type = OBS_ICON_TYPE_CAMERA,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2194,6 +2194,7 @@ bool obs_module_load(void)
|
|||
.get_defaults = av_capture_defaults,
|
||||
.get_properties = av_capture_properties,
|
||||
.update = av_capture_update,
|
||||
.icon_type = OBS_ICON_TYPE_CAMERA,
|
||||
};
|
||||
|
||||
obs_register_source(&av_capture_info);
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
AVCapture="Videoaufnahmegerät"
|
||||
Device="Gerät"
|
||||
UsePreset="Benutze Voreinstellung"
|
||||
UsePreset="Voreinstellung benutzen"
|
||||
Preset="Voreinstellung"
|
||||
Buffering="Puffern benutzen"
|
||||
Buffering="Pufferung benutzen"
|
||||
FrameRate="Bildrate"
|
||||
InputFormat="Eingabeformat"
|
||||
ColorSpace="Farbraum"
|
||||
|
|
|
|||
|
|
@ -3,4 +3,12 @@ Device="Naprava"
|
|||
UsePreset="Uporabi prednastavljeno"
|
||||
Preset="Prednastavljeno"
|
||||
Buffering="Uporabi medpomnilnik"
|
||||
FrameRate="Hitrost sličic"
|
||||
InputFormat="Vhodni format"
|
||||
ColorSpace="Barvni prostor"
|
||||
VideoRange="Video razpon"
|
||||
VideoRange.Partial="Delni"
|
||||
VideoRange.Full="Polni"
|
||||
Auto="Samodejni"
|
||||
Unknown="Neznano ($1)"
|
||||
|
||||
|
|
|
|||
|
|
@ -817,6 +817,7 @@ struct obs_source_info coreaudio_input_capture_info = {
|
|||
.update = coreaudio_update,
|
||||
.get_defaults = coreaudio_defaults,
|
||||
.get_properties = coreaudio_input_properties,
|
||||
.icon_type = OBS_ICON_TYPE_AUDIO_INPUT,
|
||||
};
|
||||
|
||||
struct obs_source_info coreaudio_output_capture_info = {
|
||||
|
|
@ -830,4 +831,5 @@ struct obs_source_info coreaudio_output_capture_info = {
|
|||
.update = coreaudio_update,
|
||||
.get_defaults = coreaudio_defaults,
|
||||
.get_properties = coreaudio_output_properties,
|
||||
.icon_type = OBS_ICON_TYPE_AUDIO_OUTPUT,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -658,4 +658,5 @@ struct obs_source_info display_capture_info = {
|
|||
.get_defaults = display_capture_defaults,
|
||||
.get_properties = display_capture_properties,
|
||||
.update = display_capture_update,
|
||||
.icon_type = OBS_ICON_TYPE_DESKTOP_CAPTURE,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -32,12 +32,7 @@ static CGImageRef get_image(struct window_capture *wc)
|
|||
kCGWindowListOptionIncludingWindow, wc->window.window_id);
|
||||
[arr autorelease];
|
||||
|
||||
if (arr.count)
|
||||
return CGWindowListCreateImage(
|
||||
CGRectNull, kCGWindowListOptionIncludingWindow,
|
||||
wc->window.window_id, wc->image_option);
|
||||
|
||||
if (!find_window(&wc->window, NULL, false))
|
||||
if (!arr.count && !find_window(&wc->window, NULL, false))
|
||||
return NULL;
|
||||
|
||||
return CGWindowListCreateImage(CGRectNull,
|
||||
|
|
@ -235,4 +230,5 @@ struct obs_source_info window_capture_info = {
|
|||
.get_defaults = window_capture_defaults,
|
||||
.get_properties = window_capture_properties,
|
||||
.update = window_capture_update,
|
||||
.icon_type = OBS_ICON_TYPE_WINDOW_CAPTURE,
|
||||
};
|
||||
|
|
|
|||
13
plugins/mac-syphon/data/locale/bg-BG.ini
Normal file
13
plugins/mac-syphon/data/locale/bg-BG.ini
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
Syphon="Клиент Syphon"
|
||||
Source="Източник"
|
||||
LaunchSyphonInject="Пускане на SyphonInject"
|
||||
Inject="Вмъкване"
|
||||
Application="Приложение"
|
||||
SyphonLicense="Лиценз на Syphon"
|
||||
Crop="Изрязване"
|
||||
Crop.origin.x="Изрязване отляво"
|
||||
Crop.origin.y="Изрязване отгоре"
|
||||
Crop.size.width="Изрязване отдясно"
|
||||
Crop.size.height="Изрязване отдолу"
|
||||
AllowTransparency="Позволяване на прозиране"
|
||||
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
Syphon="سیفون کلاینت"
|
||||
Source="منبع"
|
||||
LaunchSyphonInject="راه اندازی SyphonInject"
|
||||
Inject="تزریق"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ Syphon="Cliente Syphon"
|
|||
Source="Fonte"
|
||||
LaunchSyphonInject="Iniciar SyphonInject"
|
||||
Inject="Inxectar"
|
||||
Application="Aplicativo"
|
||||
Application="Aplicación"
|
||||
SyphonLicense="Licenza Syphon"
|
||||
Crop="Recortar"
|
||||
Crop.origin.x="Recortar pola esquerda"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
Syphon="Cliente Syphon"
|
||||
Source="Fonte"
|
||||
LaunchSyphonInject="Iniciar SyphonInject"
|
||||
Inject="Injetar"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
Syphon="Syphon odjemalec"
|
||||
Source="Vir"
|
||||
LaunchSyphonInject="Zaženi SyphonInject"
|
||||
Inject="Vstavi"
|
||||
|
|
|
|||
|
|
@ -1281,4 +1281,5 @@ struct obs_source_info syphon_info = {
|
|||
.get_height = syphon_get_height,
|
||||
.update = syphon_update,
|
||||
.save = syphon_save,
|
||||
.icon_type = OBS_ICON_TYPE_GAME_CAPTURE,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ VTH264EncSW="Apple‐VT‐H264‐Software‐Kodierer"
|
|||
VTEncoder="VideoToolbox‐Kodierer"
|
||||
Bitrate="Bitrate"
|
||||
UseMaxBitrate="Limitiere Bitrate"
|
||||
MaxBitrate="Max. Bitrate"
|
||||
MaxBitrate="Maximale Bitrate"
|
||||
MaxBitrateWindow="Maximales Bitratenfenster (Sekunden)"
|
||||
KeyframeIntervalSec="Keyframeintervall in Sek. (0 = automatisch)"
|
||||
Profile="Profil"
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
VTH264EncHW="Apple VT H264 Hardware Enkodér"
|
||||
VTH264EncSW="Apple VT H264 Software Enkodér"
|
||||
VTEncoder="VideoToolbox Enkodér"
|
||||
Bitrate="Dátový tok"
|
||||
UseMaxBitrate="Obmedziť dátový tok"
|
||||
MaxBitrate="Maximálny dátový tok"
|
||||
MaxBitrateWindow="Maximálny dátový tok okna (v sekundách)"
|
||||
Bitrate="Bitrate"
|
||||
UseMaxBitrate="Obmedziť bitrate"
|
||||
MaxBitrate="Maximálny bitrate"
|
||||
MaxBitrateWindow="Maximálny bitrate okna (v sekundách)"
|
||||
KeyframeIntervalSec="Interval kľúčových snímok (sekúnd, 0 = automaticky)"
|
||||
Profile="Profil"
|
||||
None="(Žiadny)"
|
||||
|
|
|
|||
14
plugins/mac-vth264/data/locale/sl-SI.ini
Normal file
14
plugins/mac-vth264/data/locale/sl-SI.ini
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
VTH264EncHW="Apple VT H264 strojni kodirnik"
|
||||
VTH264EncSW="Apple VT H264 strojni kodirnik"
|
||||
VTEncoder="VideoToolbox kodirnik"
|
||||
Bitrate="Bitna hitrost"
|
||||
UseMaxBitrate="Omeji bitno hitrost"
|
||||
MaxBitrate="Največja bitna hitrost"
|
||||
MaxBitrateWindow="Okno največje bitne hitrosti (sekunde)"
|
||||
KeyframeIntervalSec="Razmik med ključnimi sličicami (sekunde, 0=samodejni)"
|
||||
Profile="Profil"
|
||||
None="(brez)"
|
||||
DefaultEncoder="(privzeti kodirnik)"
|
||||
UseBFrames="Uporabi B-sličice"
|
||||
|
||||
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
#include <obs-module.h>
|
||||
#include <util/darray.h>
|
||||
#include <obs-avc.h>
|
||||
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#include <VideoToolbox/VideoToolbox.h>
|
||||
|
|
@ -671,6 +672,8 @@ static bool is_sample_keyframe(CMSampleBufferRef buffer)
|
|||
static bool parse_sample(struct vt_h264_encoder *enc, CMSampleBufferRef buffer,
|
||||
struct encoder_packet *packet, CMTime off)
|
||||
{
|
||||
int type;
|
||||
|
||||
CMTime pts = CMSampleBufferGetPresentationTimeStamp(buffer);
|
||||
CMTime dts = CMSampleBufferGetDecodeTimeStamp(buffer);
|
||||
|
||||
|
|
@ -703,6 +706,37 @@ static bool parse_sample(struct vt_h264_encoder *enc, CMSampleBufferRef buffer,
|
|||
packet->size = enc->packet_data.num;
|
||||
packet->keyframe = keyframe;
|
||||
|
||||
// VideoToolbox produces packets with priority lower than the RTMP code
|
||||
// expects, which causes it to be unable to recover from frame drops.
|
||||
// Fix this by manually adjusting the priority.
|
||||
uint8_t *start = enc->packet_data.array;
|
||||
uint8_t *end = start + enc->packet_data.num;
|
||||
|
||||
start = (uint8_t *)obs_avc_find_startcode(start, end);
|
||||
while (true) {
|
||||
while (start < end && !*(start++))
|
||||
;
|
||||
|
||||
if (start == end)
|
||||
break;
|
||||
|
||||
type = start[0] & 0x1F;
|
||||
if (type == OBS_NAL_SLICE_IDR || type == OBS_NAL_SLICE) {
|
||||
uint8_t prev_type = (start[0] >> 5) & 0x3;
|
||||
start[0] &= ~(3 << 5);
|
||||
|
||||
if (type == OBS_NAL_SLICE_IDR)
|
||||
start[0] |= OBS_NAL_PRIORITY_HIGHEST << 5;
|
||||
else if (type == OBS_NAL_SLICE &&
|
||||
prev_type != OBS_NAL_PRIORITY_DISPOSABLE)
|
||||
start[0] |= OBS_NAL_PRIORITY_HIGH << 5;
|
||||
else
|
||||
start[0] |= prev_type << 5;
|
||||
}
|
||||
|
||||
start = (uint8_t *)obs_avc_find_startcode(start, end);
|
||||
}
|
||||
|
||||
CFRelease(buffer);
|
||||
return true;
|
||||
|
||||
|
|
@ -929,6 +963,8 @@ void encoder_list_create()
|
|||
da_push_back(vt_encoders, &enc);
|
||||
#undef VT_DICTSTR
|
||||
}
|
||||
|
||||
CFRelease(encoder_list);
|
||||
}
|
||||
|
||||
void encoder_list_destroy()
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ set(obs-ffmpeg_config_HEADERS
|
|||
set(obs-ffmpeg_HEADERS
|
||||
obs-ffmpeg-formats.h
|
||||
obs-ffmpeg-compat.h
|
||||
closest-pixel-format.h)
|
||||
ffmpeg-encoded-output.h)
|
||||
|
||||
set(obs-ffmpeg_SOURCES
|
||||
obs-ffmpeg.c
|
||||
|
|
@ -30,6 +30,7 @@ set(obs-ffmpeg_SOURCES
|
|||
obs-ffmpeg-nvenc.c
|
||||
obs-ffmpeg-output.c
|
||||
obs-ffmpeg-mux.c
|
||||
ffmpeg-encoded-output.c
|
||||
obs-ffmpeg-source.c)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
|
|
|
|||
|
|
@ -1,94 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
static const enum AVPixelFormat i420_formats[] = {
|
||||
AV_PIX_FMT_YUV420P, AV_PIX_FMT_NV12, AV_PIX_FMT_NV21,
|
||||
AV_PIX_FMT_YUYV422, AV_PIX_FMT_UYVY422, AV_PIX_FMT_YUV422P,
|
||||
AV_PIX_FMT_YUV444P, AV_PIX_FMT_NONE};
|
||||
|
||||
static const enum AVPixelFormat nv12_formats[] = {
|
||||
AV_PIX_FMT_NV12, AV_PIX_FMT_NV21, AV_PIX_FMT_YUV420P,
|
||||
AV_PIX_FMT_YUYV422, AV_PIX_FMT_UYVY422, AV_PIX_FMT_YUV444P,
|
||||
AV_PIX_FMT_NONE};
|
||||
|
||||
static const enum AVPixelFormat i444_formats[] = {
|
||||
AV_PIX_FMT_YUV444P, AV_PIX_FMT_RGBA, AV_PIX_FMT_BGRA,
|
||||
AV_PIX_FMT_YUYV422, AV_PIX_FMT_UYVY422, AV_PIX_FMT_NV12,
|
||||
AV_PIX_FMT_NV21, AV_PIX_FMT_NONE};
|
||||
|
||||
static const enum AVPixelFormat yuy2_formats[] = {
|
||||
AV_PIX_FMT_YUYV422, AV_PIX_FMT_UYVY422, AV_PIX_FMT_NV12,
|
||||
AV_PIX_FMT_NV21, AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV444P,
|
||||
AV_PIX_FMT_NONE};
|
||||
|
||||
static const enum AVPixelFormat uyvy_formats[] = {
|
||||
AV_PIX_FMT_UYVY422, AV_PIX_FMT_YUYV422, AV_PIX_FMT_NV12,
|
||||
AV_PIX_FMT_NV21, AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV444P,
|
||||
AV_PIX_FMT_NONE};
|
||||
|
||||
static const enum AVPixelFormat rgba_formats[] = {
|
||||
AV_PIX_FMT_RGBA, AV_PIX_FMT_BGRA, AV_PIX_FMT_YUV444P,
|
||||
AV_PIX_FMT_YUYV422, AV_PIX_FMT_UYVY422, AV_PIX_FMT_NV12,
|
||||
AV_PIX_FMT_NV21, AV_PIX_FMT_NONE};
|
||||
|
||||
static const enum AVPixelFormat bgra_formats[] = {
|
||||
AV_PIX_FMT_BGRA, AV_PIX_FMT_RGBA, AV_PIX_FMT_YUV444P,
|
||||
AV_PIX_FMT_YUYV422, AV_PIX_FMT_UYVY422, AV_PIX_FMT_NV12,
|
||||
AV_PIX_FMT_NV21, AV_PIX_FMT_NONE};
|
||||
|
||||
static enum AVPixelFormat get_best_format(const enum AVPixelFormat *best,
|
||||
const enum AVPixelFormat *formats)
|
||||
{
|
||||
while (*best != AV_PIX_FMT_NONE) {
|
||||
enum AVPixelFormat best_format = *best;
|
||||
const enum AVPixelFormat *cur_formats = formats;
|
||||
|
||||
while (*cur_formats != AV_PIX_FMT_NONE) {
|
||||
enum AVPixelFormat avail_format = *cur_formats;
|
||||
|
||||
if (best_format == avail_format)
|
||||
return best_format;
|
||||
|
||||
cur_formats++;
|
||||
}
|
||||
|
||||
best++;
|
||||
}
|
||||
|
||||
return AV_PIX_FMT_NONE;
|
||||
}
|
||||
|
||||
static inline enum AVPixelFormat
|
||||
get_closest_format(enum AVPixelFormat format, const enum AVPixelFormat *formats)
|
||||
{
|
||||
enum AVPixelFormat best_format = AV_PIX_FMT_NONE;
|
||||
|
||||
if (!formats || formats[0] == AV_PIX_FMT_NONE)
|
||||
return format;
|
||||
|
||||
switch ((int)format) {
|
||||
|
||||
case AV_PIX_FMT_YUV444P:
|
||||
best_format = get_best_format(i444_formats, formats);
|
||||
break;
|
||||
case AV_PIX_FMT_YUV420P:
|
||||
best_format = get_best_format(i420_formats, formats);
|
||||
break;
|
||||
case AV_PIX_FMT_NV12:
|
||||
best_format = get_best_format(nv12_formats, formats);
|
||||
break;
|
||||
case AV_PIX_FMT_YUYV422:
|
||||
best_format = get_best_format(yuy2_formats, formats);
|
||||
break;
|
||||
case AV_PIX_FMT_UYVY422:
|
||||
best_format = get_best_format(uyvy_formats, formats);
|
||||
break;
|
||||
case AV_PIX_FMT_RGBA:
|
||||
best_format = get_best_format(rgba_formats, formats);
|
||||
break;
|
||||
case AV_PIX_FMT_BGRA:
|
||||
best_format = get_best_format(bgra_formats, formats);
|
||||
break;
|
||||
}
|
||||
|
||||
return (best_format == AV_PIX_FMT_NONE) ? formats[0] : best_format;
|
||||
}
|
||||
|
|
@ -19,7 +19,7 @@ NVENC.Preset.llhp="Ниска латентност, висока произво
|
|||
NVENC.LookAhead="Предопределяне"
|
||||
NVENC.CQLevel="Ниво CQ"
|
||||
|
||||
FFmpegSource="Източник на медия"
|
||||
FFmpegSource="Източник на медията"
|
||||
LocalFile="Локален файл"
|
||||
Looping="Преповтаряне"
|
||||
Input="Вход"
|
||||
|
|
@ -31,7 +31,18 @@ CloseFileWhenInactive="Затваряне на файла при неактив
|
|||
ColorRange.Auto="Автоматично"
|
||||
ColorRange.Partial="Частично"
|
||||
ColorRange.Full="Пълно"
|
||||
|
||||
|
||||
RestartMedia="Рестартиране"
|
||||
SpeedPercentage="Скорост"
|
||||
Play="Пускане"
|
||||
Pause="Пауза"
|
||||
Stop="Спиране"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Всички медийни файлове"
|
||||
MediaFileFilter.VideoFiles="Видеофайлове"
|
||||
MediaFileFilter.AudioFiles="Звукови файлове"
|
||||
MediaFileFilter.AllFiles="Всички файлове"
|
||||
|
||||
ReplayBuffer="Буфер за повторение"
|
||||
ReplayBuffer.Save="Записване на повторението"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="Gamma de color YUV"
|
|||
ColorRange.Auto="Automàtic"
|
||||
ColorRange.Partial="Parcial"
|
||||
ColorRange.Full="Màxim"
|
||||
RestartMedia="Reinicia els mitjans"
|
||||
RestartMedia="Reinicia"
|
||||
SpeedPercentage="Velocitat"
|
||||
Seekable="Cercable"
|
||||
Play="Reprodueix"
|
||||
Pause="Pausa"
|
||||
Stop="Atura"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Tots els arxius multimèdia"
|
||||
MediaFileFilter.VideoFiles="Arxius de vídeo"
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="Rozsah barev YUV"
|
|||
ColorRange.Auto="Automatický"
|
||||
ColorRange.Partial="Částečný"
|
||||
ColorRange.Full="Celkový"
|
||||
RestartMedia="Restartovat mediální zdroj"
|
||||
RestartMedia="Restartovat"
|
||||
SpeedPercentage="Rychlost"
|
||||
Seekable="Posouvatelné"
|
||||
Play="Přehrát"
|
||||
Pause="Pozastavit"
|
||||
Stop="Zastavit"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Všechny mediální soubory"
|
||||
MediaFileFilter.VideoFiles="Video soubory"
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="YUV-farveområde"
|
|||
ColorRange.Auto="Auto"
|
||||
ColorRange.Partial="Delvis"
|
||||
ColorRange.Full="Fuld"
|
||||
RestartMedia="Genstart Media"
|
||||
RestartMedia="Genstart"
|
||||
SpeedPercentage="Hastighed"
|
||||
Seekable="Søgbar"
|
||||
Play="Afspil"
|
||||
Pause="Pause"
|
||||
Stop="Stop"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Alle mediefiler"
|
||||
MediaFileFilter.VideoFiles="Videofiler"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ FFmpegOpus="FFmpeg‐Opus‐Kodierer"
|
|||
Bitrate="Bitrate"
|
||||
MaxBitrate="Max. Bitrate"
|
||||
Preset="Voreinstellung"
|
||||
RateControl="Qualitäts Regulierungsmethode"
|
||||
RateControl="Qualitätsregulierungsmethode"
|
||||
KeyframeIntervalSec="Keyframeintervall in Sek. (0 = automatisch)"
|
||||
Lossless="Verlustfrei"
|
||||
|
||||
|
|
@ -16,12 +16,12 @@ NVENC.Preset.hq="Qualität"
|
|||
NVENC.Preset.hp="Max. Leistung"
|
||||
NVENC.Preset.mq="Max. Qualität"
|
||||
NVENC.Preset.ll="Niedrige Latenz"
|
||||
NVENC.Preset.llhq="Niedrige Latenz + Qualität"
|
||||
NVENC.Preset.llhp="Niedrige Latenz + Leistung"
|
||||
NVENC.LookAhead="Look‐ahead"
|
||||
NVENC.LookAhead.ToolTip="Aktiviert dynamische B‐Frames.\n\nWenn deaktiviert, wird der Kodierer immer die Anzahl der B‐Frames verwenden, die in der „Max B‐Frames“‐Einstellung angegeben sind.\n\nWenn aktiviert, wird er die visuelle Qualität erhöhen, indem nur so viele B‐Frames verwendet werden wie benötigt, bis zum Maximum,\nzu den Kosten einer erhöhten GPU‐Nutzung."
|
||||
NVENC.Preset.llhq="Niedrige Latenz und Qualität"
|
||||
NVENC.Preset.llhp="Niedrige Latenz und Leistung"
|
||||
NVENC.LookAhead="Lookahead"
|
||||
NVENC.LookAhead.ToolTip="Aktiviert dynamische B‐Frames.\n\nWenn deaktiviert, wird der Kodierer immer die Anzahl der B‐Frames verwenden, die in der Einstellung „Max. B‐Frames“ angegeben sind.\n\nWenn aktiviert, wird die visuelle Qualität erhöht, indem nur so viele B‐Frames bis zum Maximum verwendet werden, wie benötigt.\n(Resultiert in eine höhere GPU‐Nutzung.)"
|
||||
NVENC.PsychoVisualTuning="Psycho Visual Tuning"
|
||||
NVENC.PsychoVisualTuning.ToolTip="Aktiviert Kodierereinstellungen, die die Verwendung der Bitrate für eine erhöhte wahrgenommene visuelle Qualität optimieren,\ninsbesondere in Situationen mit hoher Bewegung, zu Kosten einer erhöhten GPU‐Nutzung."
|
||||
NVENC.PsychoVisualTuning.ToolTip="Aktiviert Kodierereinstellungen, die die Verwendung der Bitrate für eine erhöhte wahrgenommene visuelle Qualität optimieren,\ninsbesondere in Situationen mit hoher Bewegung.\n(Resultiert in eine höhere GPU‐Nutzung.)"
|
||||
NVENC.CQLevel="CQ‐Level"
|
||||
|
||||
FFmpegSource="Medienquelle"
|
||||
|
|
@ -33,26 +33,29 @@ BufferingMB="Netzwerkpufferung"
|
|||
HardwareDecode="Hardwaredekodierung verwenden, falls verfügbar"
|
||||
ClearOnMediaEnd="Nichts anzeigen, wenn Wiedergabe endet"
|
||||
Advanced="Erweitert"
|
||||
RestartWhenActivated="Wiedergabe erneut starten, wenn Quelle aktiviert wird"
|
||||
RestartWhenActivated="Wiedergabe bei Quellenaktivierung erneut starten"
|
||||
CloseFileWhenInactive="Datei schließen, wenn inaktiv"
|
||||
CloseFileWhenInactive.ToolTip="Schließt die Datei, wenn die Quelle im Stream oder der Aufnahme nicht angezeigt wird.\nDies ermöglicht, dass die Datei geändert werden kann.\nDafür können aber Startverzögerungen auftreten, wenn die Quelle reaktiviert wird."
|
||||
ColorRange="YUV‐Farbmatrix"
|
||||
CloseFileWhenInactive.ToolTip="Schließt die Datei, wenn die Quelle im Stream oder in der Aufnahme nicht angezeigt wird.\nDies ermöglicht Änderungen an der Datei vorzunehmen,\nwas aber zu Reaktivierungsverzögerungen führen kann."
|
||||
ColorRange="YUV‐Farbbereich"
|
||||
ColorRange.Auto="Automatisch"
|
||||
ColorRange.Partial="Teilweise"
|
||||
ColorRange.Full="Voll"
|
||||
RestartMedia="Medium neustarten"
|
||||
RestartMedia="Neustarten"
|
||||
SpeedPercentage="Geschwindigkeit"
|
||||
Seekable="Durchsuchbar"
|
||||
Play="Abspielen"
|
||||
Pause="Pausieren"
|
||||
Stop="Stoppen"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Alle Mediendateien"
|
||||
MediaFileFilter.VideoFiles="Videodateien"
|
||||
MediaFileFilter.AudioFiles="Audiodateien"
|
||||
MediaFileFilter.AllFiles="Alle Dateien"
|
||||
|
||||
ReplayBuffer="Replay‐Puffer"
|
||||
ReplayBuffer.Save="Replay speichern"
|
||||
ReplayBuffer="Wiederholungspuffer"
|
||||
ReplayBuffer.Save="Wiederholung speichern"
|
||||
|
||||
HelperProcessFailed="Der Aufnahme‐Helfer‐Prozess kann nicht gestartet werden. Überprüfen Sie, ob OBS‐Dateien nicht von einer Drittanbieter‐Antiviren‐/Sicherheitssoftware blockiert oder entfernt werden."
|
||||
UnableToWritePath="Kann nicht zu %1 schreiben. Vergewissern Sie sich, dass Sie einen Aufnahmepfad verwenden, für das Ihr Benutzerkonto Schreibrechte hat und dass genügend Speicherplatz zur Verfügung steht."
|
||||
WarnWindowsDefender="Wenn Windows‐10‐Ransomware‐Schutz aktiviert ist, kann dies auch den Fehler auslösen. Versuchen Sie, den überwachten Ordnerzugriff in Windows‐Sicherheit → Viren‐ & Bedrohungsschutz auszuschalten."
|
||||
UnableToWritePath="Kann nicht zu %1 schreiben. Vergewissern Sie sich, dass Sie einen Aufnahmepfad verwenden, für den Ihr Benutzerkonto Schreibrechte hat und dass genügend Speicherplatz zur Verfügung steht."
|
||||
WarnWindowsDefender="Wenn Windows‐10‐Ransomware‐Schutz aktiviert ist, kann dies auch den Fehler auslösen. Versuchen Sie, den überwachten Ordnerzugriff in „Windows‐Sicherheit“ → „Viren‐ & Bedrohungsschutz“ auszuschalten."
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ ColorRange="Χώρος Χρωμάτων YUV"
|
|||
ColorRange.Auto="Αυτόματο"
|
||||
ColorRange.Partial="Μερικός"
|
||||
ColorRange.Full="Πλήρης"
|
||||
RestartMedia="Επανεκκίνηση Πολυμέσων"
|
||||
Seekable="Παρεχόμενη"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Όλα τα αρχεία πολυμέσων"
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="YUV Color Range"
|
|||
ColorRange.Auto="Auto"
|
||||
ColorRange.Partial="Partial"
|
||||
ColorRange.Full="Full"
|
||||
RestartMedia="Restart Media"
|
||||
RestartMedia="Restart"
|
||||
SpeedPercentage="Speed"
|
||||
Seekable="Seekable"
|
||||
Play="Play"
|
||||
Pause="Pause"
|
||||
Stop="Stop"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="All Media Files"
|
||||
MediaFileFilter.VideoFiles="Video Files"
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="Gama de Color YUV"
|
|||
ColorRange.Auto="Automatico"
|
||||
ColorRange.Partial="Parcial"
|
||||
ColorRange.Full="Completo"
|
||||
RestartMedia="Reiniciar Medio"
|
||||
RestartMedia="Reiniciar"
|
||||
SpeedPercentage="Velocidad"
|
||||
Seekable="Buscable"
|
||||
Play="Reproducir"
|
||||
Pause="Pausa"
|
||||
Stop="Detener"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Todos los archivos multimedia"
|
||||
MediaFileFilter.VideoFiles="Archivos de vídeo"
|
||||
|
|
|
|||
|
|
@ -1,12 +1,17 @@
|
|||
FFmpegOutput="FFmpeg väljund"
|
||||
FFmpegAAC="FFmpeg vaike AAC kodeerija"
|
||||
Bitrate="Bitikiirus"
|
||||
MaxBitrate="Maksimaalne bitikiirus"
|
||||
Preset="Eelseadistus"
|
||||
KeyframeIntervalSec="Võtmekaadri intervall (sekundit, 0=automaatne)"
|
||||
Lossless="Kadudeta"
|
||||
|
||||
|
||||
NVENC.Use2Pass="Kasuta Two-Pass kodeeringut"
|
||||
NVENC.Preset.default="Jõudlus"
|
||||
NVENC.Preset.hq="Kvaliteet"
|
||||
NVENC.Preset.hp="Maksimaalne jõudlus"
|
||||
NVENC.Preset.mq="Makimaalne kvaliteet"
|
||||
NVENC.Preset.ll="Madal-viivitus"
|
||||
|
||||
FFmpegSource="Meedia allikas"
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="YUV kolore-barrutia"
|
|||
ColorRange.Auto="Auto"
|
||||
ColorRange.Partial="Partziala"
|
||||
ColorRange.Full="Osoa"
|
||||
RestartMedia="Berrabiarazi euskarria"
|
||||
RestartMedia="Berrabiarazi"
|
||||
SpeedPercentage="Abiadura"
|
||||
Seekable="Bilagai"
|
||||
Play="Erreproduzitu"
|
||||
Pause="Pausatu"
|
||||
Stop="Gelditu"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Multimedia-fitxategi guztiak"
|
||||
MediaFileFilter.VideoFiles="Bideo-fitxategiak"
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ InputFormat="فرمت های ورودی"
|
|||
ColorRange.Auto="خودکار"
|
||||
ColorRange.Partial="جزئی"
|
||||
ColorRange.Full="کامل"
|
||||
RestartMedia="راه اندازی مجدد رسانه ها"
|
||||
Seekable="جستجوگر"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="تمامی فایل های رسانه"
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ LocalFile="Paikallinen tiedosto"
|
|||
Looping="Toista jatkuvasti"
|
||||
Input="Sisääntulo"
|
||||
InputFormat="Sisääntulon muoto"
|
||||
BufferingMB="Verkon puskurointi"
|
||||
HardwareDecode="Käytä laitteistotason purkua, kun mahdollista"
|
||||
ClearOnMediaEnd="Älä näytä mitään kun toisto päättyy"
|
||||
Advanced="Lisäasetukset"
|
||||
|
|
@ -39,8 +40,12 @@ ColorRange="YUV värialue"
|
|||
ColorRange.Auto="Automaattinen"
|
||||
ColorRange.Partial="Osittainen"
|
||||
ColorRange.Full="Täysi"
|
||||
RestartMedia="Uudelleenkäynnistä media"
|
||||
RestartMedia="Toista uudelleen"
|
||||
SpeedPercentage="Nopeus"
|
||||
Seekable="Haettava"
|
||||
Play="Toista"
|
||||
Pause="Tauko"
|
||||
Stop="Pysäytä"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Kaikki mediatiedostot"
|
||||
MediaFileFilter.VideoFiles="Videotiedostot"
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ ColorRange="Antas ng kulay ng YUV"
|
|||
ColorRange.Auto="I-Auto"
|
||||
ColorRange.Partial="I-Partial"
|
||||
ColorRange.Full="Buo"
|
||||
RestartMedia="Simulan muli ang Media"
|
||||
Seekable="I-Seekable"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Lahat ng Media Files"
|
||||
|
|
|
|||
|
|
@ -26,15 +26,15 @@ NVENC.CQLevel="Niveau CQ"
|
|||
|
||||
FFmpegSource="Source média"
|
||||
LocalFile="Fichier local"
|
||||
Looping="En boucle"
|
||||
Looping="Lire en boucle"
|
||||
Input="Entrée"
|
||||
InputFormat="Format d'entrée"
|
||||
BufferingMB="Tampon réseau (Mo)"
|
||||
HardwareDecode="Utiliser le décodage matériel si possible"
|
||||
HardwareDecode="Utiliser le décodage matériel (si disponible)"
|
||||
ClearOnMediaEnd="Ne rien afficher lorsque la lecture se termine"
|
||||
Advanced="Options avancées"
|
||||
RestartWhenActivated="Reprendre la lecture quand la source est active"
|
||||
CloseFileWhenInactive="Fermer fichier lorsqu’il est inactif"
|
||||
RestartWhenActivated="Reprendre depuis le début quand cette source redevient active"
|
||||
CloseFileWhenInactive="Fermer le fichier quand cette source est inactive"
|
||||
CloseFileWhenInactive.ToolTip="Ferme le fichier lorsque la source ne s'affiche pas sur le stream ou \nl'enregistrement. Cela permet de modifier le fichier lorsque la source n'est pas active, \nmais il peut y avoir un délai de démarrage lorsque la source se réactive."
|
||||
ColorRange="Gamme de couleurs YUV"
|
||||
ColorRange.Auto="Auto"
|
||||
|
|
@ -43,6 +43,9 @@ ColorRange.Full="Complète"
|
|||
RestartMedia="Reprendre depuis le début"
|
||||
SpeedPercentage="Vitesse"
|
||||
Seekable="Navigable"
|
||||
Play="Lecture"
|
||||
Pause="Pause"
|
||||
Stop="Arrêter"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Tous les fichiers multimédias"
|
||||
MediaFileFilter.VideoFiles="Fichiers vidéo"
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ ColorRange="Rainse dhathan YUV"
|
|||
ColorRange.Auto="Fèin-obrachail"
|
||||
ColorRange.Partial="Leth-phàirteach"
|
||||
ColorRange.Full="Làn"
|
||||
RestartMedia="Ath-thòisich am meadhan"
|
||||
Seekable="Gabhaidh sireadh ann"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="A h-uile faidhle meadhain"
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ Looping="Bucle"
|
|||
Input="Entrada"
|
||||
InputFormat="Formato de entrada"
|
||||
BufferingMB="Memoria intermedia de rede"
|
||||
HardwareDecode="Utilizar a descodificación por hárdware cando estiver dispoñible"
|
||||
HardwareDecode="Utilizar a descodificación por hárdware cando estiver dispoñíbel"
|
||||
ClearOnMediaEnd="Non amosar nada ao rematar a reprodución"
|
||||
Advanced="Avanzado"
|
||||
RestartWhenActivated="Reiniciar a reprodución cando fonte estea activa"
|
||||
|
|
@ -40,9 +40,12 @@ ColorRange="Gama de cor YUV"
|
|||
ColorRange.Auto="Automático"
|
||||
ColorRange.Partial="Parcial"
|
||||
ColorRange.Full="Total"
|
||||
RestartMedia="Reiniciar multimedia"
|
||||
RestartMedia="Reiniciar"
|
||||
SpeedPercentage="Velocidade"
|
||||
Seekable="Buscábel"
|
||||
Play="Reproducir"
|
||||
Pause="Pausa"
|
||||
Stop="Parar"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Todos os ficheiros multimedia"
|
||||
MediaFileFilter.VideoFiles="Ficheiros de vídeo"
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="YUV színtartomány"
|
|||
ColorRange.Auto="Auto"
|
||||
ColorRange.Partial="Részleges"
|
||||
ColorRange.Full="Teljes"
|
||||
RestartMedia="Media újraindítása"
|
||||
RestartMedia="Újraindítás"
|
||||
SpeedPercentage="Sebesség"
|
||||
Seekable="Kereshető"
|
||||
Play="Lejátszás"
|
||||
Pause="Szünet"
|
||||
Stop="Leállítás"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Minden médiafájl"
|
||||
MediaFileFilter.VideoFiles="Videofájlok"
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="Gamma di colore YUV"
|
|||
ColorRange.Auto="Automatico"
|
||||
ColorRange.Partial="Parziale"
|
||||
ColorRange.Full="Intero"
|
||||
RestartMedia="Riavvia media dall'inizio"
|
||||
RestartMedia="Riavvia"
|
||||
SpeedPercentage="Velocità"
|
||||
Seekable="Ricercabile"
|
||||
Play="Avvia"
|
||||
Pause="Pausa"
|
||||
Stop="Stop"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Tutti i file multimediali"
|
||||
MediaFileFilter.VideoFiles="File video"
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="YUV 色範囲"
|
|||
ColorRange.Auto="自動"
|
||||
ColorRange.Partial="一部"
|
||||
ColorRange.Full="全部"
|
||||
RestartMedia="メディアを再開する"
|
||||
RestartMedia="再開"
|
||||
SpeedPercentage="速度"
|
||||
Seekable="シーク可能"
|
||||
Play="再生"
|
||||
Pause="一時停止"
|
||||
Stop="停止"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="すべてのメディアファイル"
|
||||
MediaFileFilter.VideoFiles="ビデオファイル"
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Bitrate="ბიტური სიხშირე"
|
|||
MaxBitrate="უმაღლესი დასაშვები ბიტური სიხშირე"
|
||||
Preset="მზა პარამეტრები"
|
||||
RateControl="სიხშირის მართვა"
|
||||
KeyframeIntervalSec="საკვანძო კადრებს შორის შუალედი (წამი, 0=თვითშერჩევა)"
|
||||
KeyframeIntervalSec="საკვანძო კადრების შუალედი (წამი, 0=თვითშერჩევა)"
|
||||
Lossless="უდანაკარგო"
|
||||
|
||||
BFrames="B-კადრების დასაშვები რაოდენობა"
|
||||
|
|
@ -40,9 +40,12 @@ ColorRange="YUV ფერთა გამა"
|
|||
ColorRange.Auto="ავტომატური"
|
||||
ColorRange.Partial="ნაწილობრივი"
|
||||
ColorRange.Full="სრული"
|
||||
RestartMedia="მასალის ხელახლა გაშვება"
|
||||
RestartMedia="თავიდან ჩართვა"
|
||||
SpeedPercentage="სიჩქარე"
|
||||
Seekable="გადახვევით"
|
||||
Play="გაშვება"
|
||||
Pause="შეჩერება"
|
||||
Stop="შეწყვეტა"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="ყველა მასალა"
|
||||
MediaFileFilter.VideoFiles="ვიდეოფაილები"
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="YUV 색상 범위"
|
|||
ColorRange.Auto="자동"
|
||||
ColorRange.Partial="부분"
|
||||
ColorRange.Full="전체"
|
||||
RestartMedia="미디어 다시재생"
|
||||
RestartMedia="재시작"
|
||||
SpeedPercentage="속도"
|
||||
Seekable="탐색 가능"
|
||||
Play="재생"
|
||||
Pause="일시정지"
|
||||
Stop="중단"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="모든 미디어 파일"
|
||||
MediaFileFilter.VideoFiles="비디오 파일"
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ LocalFile="Lokal fil"
|
|||
Looping="Repeter"
|
||||
Input="Inngang"
|
||||
InputFormat="Inngangsformat"
|
||||
BufferingMB="Nettverksbuffer"
|
||||
HardwareDecode="Bruk maskinvaredekoding når tilgjengelig"
|
||||
ClearOnMediaEnd="Vis ingenting når avspillingen slutter"
|
||||
Advanced="Avansert"
|
||||
|
|
@ -39,7 +40,7 @@ ColorRange="YUV fargerom"
|
|||
ColorRange.Auto="Automatisk"
|
||||
ColorRange.Partial="Delvis"
|
||||
ColorRange.Full="Hel"
|
||||
RestartMedia="Start media på nytt"
|
||||
SpeedPercentage="Hastighet"
|
||||
Seekable="Søkbar"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Alle mediefiler"
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="YUV Kleurbereik"
|
|||
ColorRange.Auto="Automatisch"
|
||||
ColorRange.Partial="Gedeeltelijk"
|
||||
ColorRange.Full="Volledig"
|
||||
RestartMedia="Media herstarten"
|
||||
RestartMedia="Herstart"
|
||||
SpeedPercentage="Snelheid"
|
||||
Seekable="Zoekbaar"
|
||||
Play="Speel"
|
||||
Pause="Pauze"
|
||||
Stop="Stop"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Alle mediabestanden"
|
||||
MediaFileFilter.VideoFiles="Videobestanden"
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="Zakres kolorów YUV"
|
|||
ColorRange.Auto="Automatycznie"
|
||||
ColorRange.Partial="Częściowy"
|
||||
ColorRange.Full="Pełny"
|
||||
RestartMedia="Zrestartuj plik audio-wideo"
|
||||
RestartMedia="Zrestartuj"
|
||||
SpeedPercentage="Szybkość"
|
||||
Seekable="Przeszukiwalny"
|
||||
Play="Odtwórz"
|
||||
Pause="Pauza"
|
||||
Stop="Zatrzymaj"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Wszystkie pliki multimedialne"
|
||||
MediaFileFilter.VideoFiles="Pliki video"
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="Intervalo de Cores YUV"
|
|||
ColorRange.Auto="Auto"
|
||||
ColorRange.Partial="Parcial"
|
||||
ColorRange.Full="Completo"
|
||||
RestartMedia="Reiniciar Mídia"
|
||||
RestartMedia="Reiniciar"
|
||||
SpeedPercentage="Velocidade"
|
||||
Seekable="Procurável"
|
||||
Play="Iniciar"
|
||||
Pause="Pausar"
|
||||
Stop="Parar"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Todos Arquivos de Mídia"
|
||||
MediaFileFilter.VideoFiles="Arquivos de Vídeo"
|
||||
|
|
|
|||
|
|
@ -16,13 +16,19 @@ NVENC.Preset.hq="Qualidade"
|
|||
NVENC.Preset.hp="Máximo Desempenho"
|
||||
NVENC.Preset.mq="Qualidade Máxima"
|
||||
NVENC.Preset.ll="Baixa latência"
|
||||
NVENC.Preset.llhq="Qualidade com baixa latência"
|
||||
NVENC.Preset.llhp="Perfomance com baixa latência"
|
||||
NVENC.LookAhead.ToolTip="Ativa as B-frames dinâmicas.\n\nSe desativado, o codificador usará sempre o número de B-Frames especificado na definição 'Max B-frames'.\n\nSe ativado, aumentará a qualidade visual usando somente quantos quadros B forem necessários, até ao máximo,\ncom o custo na utilização da GPU."
|
||||
NVENC.CQLevel="Nível CQ"
|
||||
|
||||
FFmpegSource="Fonte de multimédia"
|
||||
LocalFile="Ficheiro local"
|
||||
Looping="Repetir"
|
||||
Input="Entrada"
|
||||
InputFormat="Formato de entrada"
|
||||
BufferingMB="Buffering de Rede"
|
||||
HardwareDecode="Utilizar descodificação de hardware quando disponível"
|
||||
ClearOnMediaEnd="Não mostrar nada quando a reprodução terminar"
|
||||
Advanced="Avançado"
|
||||
RestartWhenActivated="Reiniciar reprodução quando a fonte se torna ativo"
|
||||
CloseFileWhenInactive="Fechar ficheiro quando inativo"
|
||||
|
|
@ -30,6 +36,8 @@ ColorRange="Gama de cor YUV"
|
|||
ColorRange.Auto="Auto"
|
||||
ColorRange.Partial="Parcial"
|
||||
ColorRange.Full="Completo"
|
||||
SpeedPercentage="Velocidade"
|
||||
Seekable="Pesquisável"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Todos os Arquivos de Media"
|
||||
MediaFileFilter.VideoFiles="Arquivos de Vídeo"
|
||||
|
|
@ -37,4 +45,7 @@ MediaFileFilter.AudioFiles="Arquivos de Áudio"
|
|||
MediaFileFilter.AllFiles="Todos os ficheiros"
|
||||
|
||||
|
||||
HelperProcessFailed="Não foi possível iniciar o processo auxiliar de gravação. Verifique se os ficheiros do OBS não bloqueados ou removidos por qualquer software de segurança ou antivírus de terceiros."
|
||||
UnableToWritePath="Não foi possível gravar em %1. Certifique-se de que está a usar um caminho de gravação no qual sua conta de utilizador tem permissão para escrever e que há espaço suficiente em disco."
|
||||
WarnWindowsDefender="Se a proteção contra Ransomware estiver habilitada no Windows 10, pode ser essa a causa deste erro. Tente desativar o acesso controlado a pastas nas configurações de segurança do Windows ou nas definições de proteção contra ameaças e vírus."
|
||||
|
||||
|
|
|
|||
|
|
@ -40,9 +40,12 @@ ColorRange="Цветовой диапазон YUV"
|
|||
ColorRange.Auto="Автоматически"
|
||||
ColorRange.Partial="Частичный"
|
||||
ColorRange.Full="Полный"
|
||||
RestartMedia="Перезапустить медиа"
|
||||
RestartMedia="Перезапустить"
|
||||
SpeedPercentage="Скорость"
|
||||
Seekable="Перематываемый"
|
||||
Play="Запустить"
|
||||
Pause="Приостановить"
|
||||
Stop="Остановить"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Все медиа-файлы"
|
||||
MediaFileFilter.VideoFiles="Видеофайлы"
|
||||
|
|
|
|||
|
|
@ -2,21 +2,36 @@ FFmpegOutput="Výstup FFmpeg"
|
|||
FFmpegAAC="Predvolený FFmpeg AAC enkodér"
|
||||
FFmpegOpus="FFmpeg Opus enkodér"
|
||||
Bitrate="Bitrate"
|
||||
MaxBitrate="Max. bitrate"
|
||||
Preset="Predvoľba"
|
||||
RateControl="Riadenie toku"
|
||||
KeyframeIntervalSec="Interval kľúčových snímok (sekúnd, 0 = automaticky)"
|
||||
Lossless="Bezstratová"
|
||||
|
||||
BFrames="Maximum B-snímkov"
|
||||
|
||||
NVENC.Use2Pass="Použiť dvojfázové enkódovanie"
|
||||
NVENC.Preset.default="Výkon"
|
||||
NVENC.Preset.hq="Kvalita"
|
||||
NVENC.Preset.hp="Maximálny Výkon"
|
||||
NVENC.Preset.mq="Maximálna Kvalita"
|
||||
NVENC.Preset.ll="Nízka odozva"
|
||||
NVENC.Preset.llhq="Kvalita pri nízkej odozve"
|
||||
NVENC.Preset.llhp="Výkon pri nízkej odozve"
|
||||
NVENC.LookAhead="Look-ahead"
|
||||
NVENC.LookAhead.ToolTip="Aktivuje dynamické B-snímky.\n\nKeď sú vypnuté, enkodér bude vždy používať počet snímkov špecifikovaný v nastavení 'Maximum B-snímkov'.\n\nKeď sú zapnuté, zvýši sa vizuálna kvalita tým, že bude používať iba toľko B-snímkov, koľko je potrebné, až do maxima,\nna úkor zvýšeného používania GPU."
|
||||
NVENC.PsychoVisualTuning="Psycho Visual Tuning"
|
||||
NVENC.PsychoVisualTuning.ToolTip="Povolí nastavenia enkodéra, ktoré optimalizujú využitie bitrate pre vylepšenú vnímanú vizuálnu kvalitu,\nhlavne v situáciách s veľkým množstvom pohybu, na úkor zvýšenia používania GPU."
|
||||
NVENC.CQLevel="CQ Level"
|
||||
|
||||
FFmpegSource="Zdroj médií"
|
||||
LocalFile="Lokálny súbor"
|
||||
Looping="Slučka"
|
||||
Input="Vstup"
|
||||
InputFormat="Vstupný formát"
|
||||
BufferingMB="Vyrovnávacia pamäť siete"
|
||||
HardwareDecode="Použiť hardvérové dekódovanie podľa dostupnosti"
|
||||
ClearOnMediaEnd="Po skončení prehrávania neukazovať nič"
|
||||
Advanced="Rozšírené"
|
||||
RestartWhenActivated="Obnoviť prehrávanie pri aktivovaní zdroja"
|
||||
CloseFileWhenInactive="Zatvoriť súbor pri neaktivite"
|
||||
|
|
@ -25,8 +40,12 @@ ColorRange="Rozsah farieb YUV"
|
|||
ColorRange.Auto="Automaticky"
|
||||
ColorRange.Partial="Čiastočný"
|
||||
ColorRange.Full="Plný"
|
||||
RestartMedia="Reštartuj mediálny zdroj"
|
||||
RestartMedia="Reštartovať"
|
||||
SpeedPercentage="Rýchlosť"
|
||||
Seekable="Posúvateľný"
|
||||
Play="Prehrať"
|
||||
Pause="Pause"
|
||||
Stop="Zastaviť"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Všetky mediálne súbory"
|
||||
MediaFileFilter.VideoFiles="Video súbory"
|
||||
|
|
@ -38,4 +57,5 @@ ReplayBuffer.Save="Uložiť záznam"
|
|||
|
||||
HelperProcessFailed="Nepodarilo sa spustiť pomocný proces nahrávania. Skontrolujte, či neboli súbory OBS zablokované alebo odstránené zabezpečovacím softvérom/antivírusom tretej strany."
|
||||
UnableToWritePath="Nedá sa zapisovať do %1. Uistite sa, že v ceste nahrávania má váš používateľský účet právo na zápis a že máte dostatok miesta na disku."
|
||||
WarnWindowsDefender="Ak je ochrana proti Ransomwaru Windows 10 zapnutá, tak to môže taktiež spôsobiť túto chybu. Skúste vypnúť kontrolovaný prístup do priečinkov vo Windows Zabezpečení / Ochrana pred vírusmi a hrozbami."
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ Bitrate="Bitna hitrost"
|
|||
MaxBitrate="Največja bitna hitrost"
|
||||
Preset="Prednastavitev"
|
||||
RateControl="Nadzor hitrosti"
|
||||
KeyframeIntervalSec="Razmik med ključnimi sličicami (s, 0=samodejno)"
|
||||
KeyframeIntervalSec="Razmik med ključnimi sličicami (ssekunde, 0=samodejno)"
|
||||
Lossless="Brezizgubno"
|
||||
|
||||
BFrames="Največje št. sličic B"
|
||||
|
|
@ -28,7 +28,7 @@ FFmpegSource="Predstavnostni vir"
|
|||
LocalFile="Lokalna datoteka"
|
||||
Looping="Ponavljaj"
|
||||
Input="Vhod"
|
||||
InputFormat="Oblika vhoda"
|
||||
InputFormat="Vhodni format"
|
||||
BufferingMB="Omrežno medpomnenje"
|
||||
HardwareDecode="Uporabi strojno odkodiranje, ko je na voljo"
|
||||
ClearOnMediaEnd="Ne prikaži ničesar, ko se predvajanje konča"
|
||||
|
|
@ -40,17 +40,20 @@ ColorRange="Barvni razpon YUV"
|
|||
ColorRange.Auto="Samodejno"
|
||||
ColorRange.Partial="Delno"
|
||||
ColorRange.Full="Polno"
|
||||
RestartMedia="Pon. zaženi predstavnost"
|
||||
RestartMedia="Ponovno zaženi"
|
||||
SpeedPercentage="Hitrost"
|
||||
Seekable="Omogoči iskanje"
|
||||
Play="Predvajaj"
|
||||
Pause="Premor"
|
||||
Stop="Ustavi"
|
||||
|
||||
MediaFileFilter.AllMediaFiles="Vse predstavne datoteke"
|
||||
MediaFileFilter.VideoFiles="Videodatoteke"
|
||||
MediaFileFilter.AudioFiles="Zvočne datoteke"
|
||||
MediaFileFilter.AllFiles="Vse datoteke"
|
||||
|
||||
ReplayBuffer="Medpomn. za pon. predv."
|
||||
ReplayBuffer.Save="Shrani pon. predv."
|
||||
ReplayBuffer="Medpomn. za ponovitev"
|
||||
ReplayBuffer.Save="Shrani ponovitev"
|
||||
|
||||
HelperProcessFailed="Pomožnega opravila za snemanje ni bilo mogoče začeti. Preverite, da protivirusni/varnostni program ni blokiral ali odstranil datotek OBS."
|
||||
UnableToWritePath="Ni mogoče pisati v %1. Prepričajte se, da uporabljate pot za snemanje, na katero lahko vaš uporabniški račun zapisuje in da imate dovolj prostora na disku."
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue