New upstream version 23.2.1+dfsg1

This commit is contained in:
Simon Chopin 2019-07-27 14:47:10 +02:00
parent cdc9a9fc87
commit b14f9eae6d
1017 changed files with 37232 additions and 11111 deletions

View file

@ -99,9 +99,12 @@ static uint32_t color_source_getheight(void *data)
static void color_source_defaults(obs_data_t *settings)
{
struct obs_video_info ovi;
obs_get_video_info(&ovi);
obs_data_set_default_int(settings, "color", 0xFFFFFFFF);
obs_data_set_default_int(settings, "width", 400);
obs_data_set_default_int(settings, "height", 400);
obs_data_set_default_int(settings, "width", ovi.base_width);
obs_data_set_default_int(settings, "height", ovi.base_height);
}
struct obs_source_info color_source_info = {

View file

@ -3,4 +3,7 @@ File="ملف الصورة"
UnloadWhenNotShowing="إلغاء تحميل الصورة إذا لم تظهر"
ColorSource.Color="اللون"
ColorSource.Width="العرض"
ColorSource.Height="الإرتفاع"

View file

@ -1,5 +1,23 @@
ImageInput="Изображение"
File="Файл с изображение"
SlideShow.TransitionSpeed="Бързина на прехода (милисекунди)"
SlideShow.SlideTime="Време между слайдовете (милисекунди)"
SlideShow.Files="Файлове с изображения"
SlideShow.CustomSize.Auto="Автоматично"
SlideShow.Randomize="Произволно изпълнение"
SlideShow.Loop="Повтаряне"
SlideShow.Transition="Преход"
SlideShow.Transition.Cut="Изрязване"
SlideShow.Transition.Fade="Затъмняване"
SlideShow.PlaybackBehavior.AlwaysPlay="Винаги да се пуска, дори когато не се вижда"
SlideShow.SlideMode.Auto="Автоматично"
SlideShow.PlayPause="Пускане/пауза"
SlideShow.Restart="Рестартиране"
SlideShow.Stop="Спиране"
ColorSource="Източник за цвят"
ColorSource.Color="Цвят"
ColorSource.Width="Широчина"
ColorSource.Height="Височина"

View file

@ -2,27 +2,27 @@ ImageInput="Billede"
File="Billedfil"
UnloadWhenNotShowing="Fjern billede fra hukommelsen når det ikke vises"
SlideShow="Billede diasshow"
SlideShow.TransitionSpeed="Overgangshastighed (millisekunder)"
SlideShow.SlideTime="Tid mellem dias (millisekunder)"
SlideShow="Billedediasshow"
SlideShow.TransitionSpeed="Overgangshastighed (ms)"
SlideShow.SlideTime="Tid mellem dias (ms)"
SlideShow.Files="Billedfiler"
SlideShow.CustomSize="Afgrænsningsstørrelse/Formatforhold"
SlideShow.CustomSize.Auto="Automatisk"
SlideShow.Randomize="Tilfældig afspilning"
SlideShow.Loop="Gentagelse"
SlideShow.Loop="Løkke"
SlideShow.Transition="Overgang"
SlideShow.Transition.Cut="Klip"
SlideShow.Transition.Fade="Overgang"
SlideShow.Transition.Fade="Toning"
SlideShow.Transition.Swipe="Stryg"
SlideShow.Transition.Slide="Glide"
SlideShow.PlaybackBehavior="Synlighedsadfærd"
SlideShow.PlaybackBehavior.StopRestart="Stop når ikke synlig, genstart når synlig"
SlideShow.PlaybackBehavior.PauseUnpause="Sæt på pause når ikke synlig, genoptag når synlig"
SlideShow.PlaybackBehavior.AlwaysPlay="Afspil altid også når usynlig"
SlideShow.SlideMode="Diasshowtilstand"
SlideShow.PlaybackBehavior.AlwaysPlay="Afspil altid, også når usynlig"
SlideShow.SlideMode="Diastilstand"
SlideShow.SlideMode.Auto="Automatisk"
SlideShow.SlideMode.Manual="Manuel (styr diasshow via genvejstaster)"
SlideShow.PlayPause="Afspil/pause"
SlideShow.SlideMode.Manual="Manuelt (styr diasshow via genvejstaster)"
SlideShow.PlayPause="Afspil/Pause"
SlideShow.Restart="Genstart"
SlideShow.Stop="Stop"
SlideShow.NextSlide="Næste dias"

View file

@ -1,12 +1,12 @@
ImageInput="Bild"
File="Bilddatei"
UnloadWhenNotShowing="Entlade Bild, wenn es nicht angezeigt wird"
UnloadWhenNotShowing="Bild entladen, wenn es nicht angezeigt wird"
SlideShow="Diashow"
SlideShow.TransitionSpeed="Übergangsgeschwindigkeit (Millisekunden)"
SlideShow.SlideTime="Zeit zwischen Bildern (Millisekunden)"
SlideShow.Files="Bilddateien"
SlideShow.CustomSize="Rahmen Größe/Seitenverhältnis"
SlideShow.CustomSize="Rahmengröße/Seitenverhältnis"
SlideShow.CustomSize.Auto="Automatisch"
SlideShow.Randomize="Zufällige Wiedergabe"
SlideShow.Loop="Endlosschleife"
@ -16,14 +16,14 @@ SlideShow.Transition.Fade="Überblenden"
SlideShow.Transition.Swipe="Swipe"
SlideShow.Transition.Slide="Slide"
SlideShow.PlaybackBehavior="Sichtbarkeitsverhalten"
SlideShow.PlaybackBehavior.StopRestart="Anhalten wenn nicht sichtbar, neu starten 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.PlayPause="Abspielen/Pausieren"
SlideShow.Restart="Neu starten"
SlideShow.PlayPause="Abspielen/pausieren"
SlideShow.Restart="Neustarten"
SlideShow.Stop="Stop"
SlideShow.NextSlide="Nächstes Bild"
SlideShow.PreviousSlide="Vorheriges Bild"

View file

@ -0,0 +1,33 @@
ImageInput="تصویر"
File="پوشه تصویر"
UnloadWhenNotShowing="لغو بارگیری عکس زمانی که نشان داده نشد"
SlideShow="نمایش اسلایدی تصویر"
SlideShow.TransitionSpeed="سرعت انتقال (میلی ثانیه)"
SlideShow.SlideTime="زمان بین اسلاید (میلی ثانیه)"
SlideShow.Files="پوشه تصاویر"
SlideShow.CustomSize.Auto="خودکار"
SlideShow.Randomize="پخش تصادفی"
SlideShow.Loop="چرخه"
SlideShow.Transition="انتقال"
SlideShow.Transition.Cut="برش"
SlideShow.Transition.Fade="محو شدن"
SlideShow.Transition.Swipe="کشیدن"
SlideShow.Transition.Slide="اسلاید"
SlideShow.PlaybackBehavior="کنش های دیداری"
SlideShow.PlaybackBehavior.StopRestart="توقف زمانی که قابل مشاهده نیست، راه اندازی مجدد زمانی که قابل مشاهده است"
SlideShow.PlaybackBehavior.PauseUnpause="توقف زمانی که قابل مشاهده نیست، راه اندازی مجدد زمانی که قابل مشاهده است"
SlideShow.SlideMode="حالت اسلاید"
SlideShow.SlideMode.Auto="خودکار"
SlideShow.PlayPause="پخش/توقف"
SlideShow.Restart="راه اندازی مجدد"
SlideShow.Stop="توقف"
SlideShow.NextSlide="اسلاید بعدی"
SlideShow.PreviousSlide="اسلاید قبلی"
SlideShow.HideWhenDone="پنهان کردن هنگامی که نمایش پرده ای انجام می شود"
ColorSource="رنگ منبع"
ColorSource.Color="رنگ"
ColorSource.Width="عرض"
ColorSource.Height="ارتفاع"

View file

@ -4,9 +4,9 @@ UnloadWhenNotShowing="Décharger l'image quand elle n'est pas affichée"
SlideShow="Diaporama"
SlideShow.TransitionSpeed="Vitesse de transition (millisecondes)"
SlideShow.SlideTime="Temps entre chaque diapositive (millisecondes)"
SlideShow.SlideTime="Temps entre chaque diapositive (en millisecondes)"
SlideShow.Files="Fichiers image"
SlideShow.CustomSize="Taille Limite/Ratio d'aspect"
SlideShow.CustomSize="Taille du Cadre/Rapport d'aspect"
SlideShow.CustomSize.Auto="Automatique"
SlideShow.Randomize="Lecture aléatoire"
SlideShow.Loop="Boucle"
@ -18,11 +18,11 @@ SlideShow.Transition.Slide="Glissement"
SlideShow.PlaybackBehavior="Comportement de Visibilité"
SlideShow.PlaybackBehavior.StopRestart="Arrêter si non visible, redémarrer si visible"
SlideShow.PlaybackBehavior.PauseUnpause="Suspendre si non visible, reprendre si visible"
SlideShow.PlaybackBehavior.AlwaysPlay="Toujours jouer même lorsqu'elle n'est pas visible"
SlideShow.PlaybackBehavior.AlwaysPlay="Toujours jouer même si non visible"
SlideShow.SlideMode="Mode Diapo"
SlideShow.SlideMode.Auto="Automatique"
SlideShow.SlideMode.Manual="Manuel (utiliser les raccourcis clavier pour contrôler le diapo)"
SlideShow.PlayPause="Lire/Pause"
SlideShow.PlayPause="Lecture/Pause"
SlideShow.Restart="Relancer"
SlideShow.Stop="Arrêter"
SlideShow.NextSlide="Diapo suivante"

View file

@ -1,35 +1,35 @@
ImageInput="Immagine"
File="File Immagine"
UnloadWhenNotShowing="Non caricare immagine se non si vede"
File="File immagine"
UnloadWhenNotShowing="Disattiva l'immagine quando non è visibile"
SlideShow="Presentazione immagini"
SlideShow.TransitionSpeed="Velocità di transizione (millisecondi)"
SlideShow.SlideTime="Tempo tra le diapositive (millisecondi)"
SlideShow.Files="Files Immagini"
SlideShow="Presentazione di immagini"
SlideShow.TransitionSpeed="Velocità di transizione (in millisecondi)"
SlideShow.SlideTime="Tempo tra le diapositive (in millisecondi)"
SlideShow.Files="File di immagini"
SlideShow.CustomSize="Dimensioni/proporzioni"
SlideShow.CustomSize.Auto="Automatico"
SlideShow.Randomize="Randomizzare la riproduzione"
SlideShow.Loop="Loop"
SlideShow.CustomSize.Auto="Automatiche"
SlideShow.Randomize="Riproduzione casuale"
SlideShow.Loop="Ripetizione"
SlideShow.Transition="Transizione"
SlideShow.Transition.Cut="Taglio"
SlideShow.Transition.Fade="Dissolvenza"
SlideShow.Transition.Swipe="Scorri"
SlideShow.Transition.Slide="Scivola"
SlideShow.PlaybackBehavior="Comportamento visibilità"
SlideShow.PlaybackBehavior.StopRestart="Interrompi quando non visibile, riavvia quando visibile"
SlideShow.PlaybackBehavior.StopRestart="Interrompi quando non visibile, ricomincia quando visibile"
SlideShow.PlaybackBehavior.PauseUnpause="Pausa quando non visibile, riprendi quando visibile"
SlideShow.PlaybackBehavior.AlwaysPlay="Continua sempre anche quando non visibile"
SlideShow.SlideMode="Modalità Slide"
SlideShow.SlideMode.Auto="Automatico"
SlideShow.SlideMode.Manual="Manuale (usa i tasti di scelta rapida per controllare la presentazione)"
SlideShow.PlayPause="Play/Pausa"
SlideShow.Restart="Riavvia"
SlideShow.Stop="Stop"
SlideShow.NextSlide="Prossima Slide"
SlideShow.PreviousSlide="Slide Precedente"
SlideShow.SlideMode="Modalità diapositiva"
SlideShow.SlideMode.Auto="Automatica"
SlideShow.SlideMode.Manual="Manuale (usa le scorciatoie per controllare la presentazione)"
SlideShow.PlayPause="Riproduci/pausa"
SlideShow.Restart="Ricomincia"
SlideShow.Stop="Interrompi"
SlideShow.NextSlide="Diapositiva successiva"
SlideShow.PreviousSlide="Diapositiva precedente"
SlideShow.HideWhenDone="Nascondi quando la presentazione è terminata"
ColorSource="Origine del colore"
ColorSource="Fonte di colore"
ColorSource.Color="Colore"
ColorSource.Width="Larghezza"
ColorSource.Height="Altezza"

View file

@ -0,0 +1,22 @@
ImageInput="Зураг"
SlideShow.CustomSize.Auto="Aвтомат"
SlideShow.Randomize="Тоглуулагчыг түүвэрээр ажилууллах"
SlideShow.Loop="Давталт"
SlideShow.Transition="Шилжилт"
SlideShow.Transition.Cut="Шууд"
SlideShow.Transition.Fade="Алга болно"
SlideShow.Transition.Swipe="Хажуунаас"
SlideShow.Transition.Slide="Гулгаж"
SlideShow.PlaybackBehavior="Харагдах байдал"
SlideShow.PlaybackBehavior.StopRestart="Ил харагдахгүй бол зогсоох, харагдах үед дахин эхлүүлнэ"
SlideShow.PlaybackBehavior.PauseUnpause="Ил харагдахгүй бол пауз авах, харагдах үед паузаа болих"
SlideShow.PlaybackBehavior.AlwaysPlay="Ил харагдахгүй бол үргэлжлүүлэн тоглуулах"
SlideShow.SlideMode.Auto="Aвтомат"
SlideShow.PlayPause="Тоглуулах/Түр зогсоох"
SlideShow.Stop="Зогсоох"
ColorSource.Color="Өнгө"
ColorSource.Width="Өргөн"
ColorSource.Height="Өндөр"

View file

@ -6,11 +6,20 @@ SlideShow="Imagens em Deslize"
SlideShow.TransitionSpeed="Velocidade de transição (milissegundos)"
SlideShow.SlideTime="Tempo entre Deslizes (milissegundos)"
SlideShow.Files="Arquivos de Imagem"
SlideShow.CustomSize.Auto="Automático"
SlideShow.Randomize="Reprodução aleatória"
SlideShow.Loop="Loop"
SlideShow.Transition="Transição"
SlideShow.Transition.Cut="Cortar"
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.Auto="Automático"
SlideShow.PlayPause="Play/Pausa"
SlideShow.Stop="Stop"
ColorSource.Color="Cor"
ColorSource.Width="Largura"
ColorSource.Height="Altura"

View file

@ -2,19 +2,25 @@ ImageInput="Imagine"
File="Fișier imagine"
UnloadWhenNotShowing="Eliberează din memorie imaginea când nu este afișată"
SlideShow="Slide Show de imagini"
SlideShow.TransitionSpeed="Viteza de tranziție (milisecunde)"
SlideShow="Diaporamă"
SlideShow.TransitionSpeed="Viteză de tranziție (milisecunde)"
SlideShow.SlideTime="Timpul dintre diapozitive (milisecunde)"
SlideShow.Files="Fișiere Imagine"
SlideShow.Files="Fișiere imagine"
SlideShow.CustomSize.Auto="Automat"
SlideShow.Loop="Buclă"
SlideShow.Transition="Tranziție"
SlideShow.Transition.Cut="Decupare"
SlideShow.Transition.Slide="Diapozitiv"
SlideShow.Transition.Fade="Estompare"
SlideShow.Transition.Swipe="Glisare"
SlideShow.Transition.Slide="Culisare"
SlideShow.SlideMode.Auto="Automat"
SlideShow.NextSlide="Următorul diapozitiv"
SlideShow.PreviousSlide="Diapozitiv anterior"
SlideShow.PlayPause="Redă/Pune pe pauză"
SlideShow.Restart="Repornește"
SlideShow.Stop="Oprește"
SlideShow.NextSlide="Diapozitivul următor"
SlideShow.PreviousSlide="Diapozitivul anterior"
ColorSource="Sursă de culoare"
ColorSource.Color="Culoare"
ColorSource.Width="Lățime"
ColorSource.Height="Înălțime"

View file

@ -11,7 +11,7 @@ SlideShow.CustomSize.Auto="Автоматически"
SlideShow.Randomize="Случайное воспроизведение"
SlideShow.Loop="Повтор"
SlideShow.Transition="Переход"
SlideShow.Transition.Cut="Обрезка"
SlideShow.Transition.Cut="Обрезать"
SlideShow.Transition.Fade="Затухание"
SlideShow.Transition.Swipe="Перемещение"
SlideShow.Transition.Slide="Сдвиг"

View file

@ -6,11 +6,31 @@ SlideShow="Prikazivanje slajdova"
SlideShow.TransitionSpeed="Brzina prelaza (milisekunde)"
SlideShow.SlideTime="Vreme između slajdova (milisekunde)"
SlideShow.Files="Datoteke slika"
SlideShow.CustomSize="Veličina/proporcija"
SlideShow.CustomSize.Auto="Automatska"
SlideShow.Randomize="Nasumična reprodukcija"
SlideShow.Loop="Ponavljaj"
SlideShow.Transition="Prelaz"
SlideShow.Transition.Cut="Isecanje"
SlideShow.Transition.Fade="Zatamnjenje"
SlideShow.Transition.Swipe="Prevlačenje"
SlideShow.Transition.Slide="Klizanje"
SlideShow.PlaybackBehavior="Funkcionisanje u zavisnosti od vidljivosti"
SlideShow.PlaybackBehavior.StopRestart="Zaustavi kada nije vidljiv, počni ispočetka kada je vidljiv"
SlideShow.PlaybackBehavior.PauseUnpause="Pauziraj kada nije vidljiv, nastavi kada postane vidljiv"
SlideShow.PlaybackBehavior.AlwaysPlay="Uvek emituj, čak i kada nije vidljiv"
SlideShow.SlideMode="Slajd režim"
SlideShow.SlideMode.Auto="Automatski"
SlideShow.SlideMode.Manual="Ručni (Koristite prečice na tastaturi da kontrolišete prezentaciju)"
SlideShow.PlayPause="Pusti/Pauziraj"
SlideShow.Restart="Počni ispočetka"
SlideShow.Stop="Zaustavi"
SlideShow.NextSlide="Sledeći slajd"
SlideShow.PreviousSlide="Prethodni slajd"
SlideShow.HideWhenDone="Sakrij kada se prezentacija završi"
ColorSource="Izvor boje"
ColorSource.Color="Boja"
ColorSource.Width="Širina"
ColorSource.Height="Visina"

View file

@ -6,11 +6,31 @@ SlideShow="Приказивање слајдова"
SlideShow.TransitionSpeed="Брзина прелаза (милисекунде)"
SlideShow.SlideTime="Време између слајдова (милисекунде)"
SlideShow.Files="Датотеке слика"
SlideShow.CustomSize="Величина/пропорција"
SlideShow.CustomSize.Auto="Аутоматска"
SlideShow.Randomize="Насумична репродукција"
SlideShow.Loop="Понављај"
SlideShow.Transition="Прелаз"
SlideShow.Transition.Cut="Исецање"
SlideShow.Transition.Fade="Затамњење"
SlideShow.Transition.Swipe="Превлачење"
SlideShow.Transition.Slide="Клизање"
SlideShow.PlaybackBehavior="Функционисање у зависности од видљивости"
SlideShow.PlaybackBehavior.StopRestart="Заустави када није видљив, почни испочетка када је видљив"
SlideShow.PlaybackBehavior.PauseUnpause="Паузирај када није видљив, настави када постане видљив"
SlideShow.PlaybackBehavior.AlwaysPlay="Увек емитуј, чак и када није видљив"
SlideShow.SlideMode="Слајд режим"
SlideShow.SlideMode.Auto="Аутоматски"
SlideShow.SlideMode.Manual="Ручни (користите пречице на тастатури да контролишете презентацију)"
SlideShow.PlayPause="Пусти/Паузирај"
SlideShow.Restart="Почни испочетка"
SlideShow.Stop="Заустави"
SlideShow.NextSlide="Следећи слајд"
SlideShow.PreviousSlide="Претходни слајд"
SlideShow.HideWhenDone="Сакриј када се презентација заврши"
ColorSource="Извор боје"
ColorSource.Color="Боја"
ColorSource.Width="Ширина"
ColorSource.Height="Висина"

View file

@ -3,17 +3,17 @@ File="图像文件"
UnloadWhenNotShowing="当不显示时卸载图像"
SlideShow="图像幻灯片放映"
SlideShow.TransitionSpeed="过渡速度(毫秒)"
SlideShow.TransitionSpeed="转场速度(毫秒)"
SlideShow.SlideTime="幻灯片之间时间(毫秒)"
SlideShow.Files="图像文件"
SlideShow.CustomSize="边框大小/宽比"
SlideShow.CustomSize="边框大小/比"
SlideShow.CustomSize.Auto="自动"
SlideShow.Randomize="随机播放"
SlideShow.Loop="循环"
SlideShow.Transition="转换"
SlideShow.Transition="转换特效"
SlideShow.Transition.Cut="剪切"
SlideShow.Transition.Fade="淡出"
SlideShow.Transition.Swipe="滑"
SlideShow.Transition.Swipe="滑"
SlideShow.Transition.Slide="幻灯片"
SlideShow.PlaybackBehavior="可见性的行为"
SlideShow.PlaybackBehavior.StopRestart="不可见时停止, 可见时重新开始"
@ -27,7 +27,7 @@ SlideShow.Restart="重新开始"
SlideShow.Stop="停止"
SlideShow.NextSlide="下一张幻灯片"
SlideShow.PreviousSlide="上一张幻灯片"
SlideShow.HideWhenDone="幻灯片完成时隐藏"
SlideShow.HideWhenDone="幻灯片放映完成后隐藏"
ColorSource="色源"
ColorSource.Color="色彩"

View file

@ -25,7 +25,7 @@ struct image_source {
uint64_t last_time;
bool active;
gs_image_file_t image;
gs_image_file2_t if2;
};
@ -48,20 +48,20 @@ static void image_source_load(struct image_source *context)
char *file = context->file;
obs_enter_graphics();
gs_image_file_free(&context->image);
gs_image_file2_free(&context->if2);
obs_leave_graphics();
if (file && *file) {
debug("loading texture '%s'", file);
context->file_timestamp = get_modified_timestamp(file);
gs_image_file_init(&context->image, file);
gs_image_file2_init(&context->if2, file);
context->update_time_elapsed = 0;
obs_enter_graphics();
gs_image_file_init_texture(&context->image);
gs_image_file2_init_texture(&context->if2);
obs_leave_graphics();
if (!context->image.loaded)
if (!context->if2.image.loaded)
warn("failed to load texture '%s'", file);
}
}
@ -69,7 +69,7 @@ static void image_source_load(struct image_source *context)
static void image_source_unload(struct image_source *context)
{
obs_enter_graphics();
gs_image_file_free(&context->image);
gs_image_file2_free(&context->if2);
obs_leave_graphics();
}
@ -135,26 +135,26 @@ static void image_source_destroy(void *data)
static uint32_t image_source_getwidth(void *data)
{
struct image_source *context = data;
return context->image.cx;
return context->if2.image.cx;
}
static uint32_t image_source_getheight(void *data)
{
struct image_source *context = data;
return context->image.cy;
return context->if2.image.cy;
}
static void image_source_render(void *data, gs_effect_t *effect)
{
struct image_source *context = data;
if (!context->image.texture)
if (!context->if2.image.texture)
return;
gs_effect_set_texture(gs_effect_get_param_by_name(effect, "image"),
context->image.texture);
gs_draw_sprite(context->image.texture, 0,
context->image.cx, context->image.cy);
context->if2.image.texture);
gs_draw_sprite(context->if2.image.texture, 0,
context->if2.image.cx, context->if2.image.cy);
}
static void image_source_tick(void *data, float seconds)
@ -175,20 +175,20 @@ static void image_source_tick(void *data, float seconds)
if (obs_source_active(context->source)) {
if (!context->active) {
if (context->image.is_animated_gif)
if (context->if2.image.is_animated_gif)
context->last_time = frame_time;
context->active = true;
}
} else {
if (context->active) {
if (context->image.is_animated_gif) {
context->image.cur_frame = 0;
context->image.cur_loop = 0;
context->image.cur_time = 0;
if (context->if2.image.is_animated_gif) {
context->if2.image.cur_frame = 0;
context->if2.image.cur_loop = 0;
context->if2.image.cur_time = 0;
obs_enter_graphics();
gs_image_file_update_texture(&context->image);
gs_image_file2_update_texture(&context->if2);
obs_leave_graphics();
}
@ -198,13 +198,13 @@ static void image_source_tick(void *data, float seconds)
return;
}
if (context->last_time && context->image.is_animated_gif) {
if (context->last_time && context->if2.image.is_animated_gif) {
uint64_t elapsed = frame_time - context->last_time;
bool updated = gs_image_file_tick(&context->image, elapsed);
bool updated = gs_image_file2_tick(&context->if2, elapsed);
if (updated) {
obs_enter_graphics();
gs_image_file_update_texture(&context->image);
gs_image_file2_update_texture(&context->if2);
obs_leave_graphics();
}
}
@ -214,12 +214,14 @@ static void image_source_tick(void *data, float seconds)
static const char *image_filter =
"All formats (*.bmp *.tga *.png *.jpeg *.jpg *.gif);;"
"All formats (*.bmp *.tga *.png *.jpeg *.jpg *.gif *.psd);;"
"BMP Files (*.bmp);;"
"Targa Files (*.tga);;"
"PNG Files (*.png);;"
"JPEG Files (*.jpeg *.jpg);;"
"GIF Files (*.gif)";
"GIF Files (*.gif);;"
"PSD Files (*.psd);;"
"All Files (*.*)";
static obs_properties_t *image_source_properties(void *data)
{
@ -248,6 +250,12 @@ static obs_properties_t *image_source_properties(void *data)
return props;
}
uint64_t image_source_get_memory_usage(void *data)
{
struct image_source *s = data;
return s->if2.mem_usage;
}
static struct obs_source_info image_source_info = {
.id = "image_source",
.type = OBS_SOURCE_TYPE_INPUT,
@ -268,6 +276,10 @@ static struct obs_source_info image_source_info = {
OBS_DECLARE_MODULE()
OBS_MODULE_USE_DEFAULT_LOCALE("image-source", "en-US")
MODULE_EXPORT const char *obs_module_description(void)
{
return "Image/color/slideshow sources";
}
extern struct obs_source_info slideshow_info;
extern struct obs_source_info color_source_info;

View file

@ -57,6 +57,11 @@
/* ------------------------------------------------------------------------- */
extern uint64_t image_source_get_memory_usage(void *data);
#define BYTES_TO_MBYTES (1024 * 1024)
#define MAX_MEM_USAGE (250 * BYTES_TO_MBYTES)
struct image_file_data {
char *path;
obs_source_t *source;
@ -91,6 +96,7 @@ struct slideshow {
uint32_t cx;
uint32_t cy;
uint64_t mem_usage;
pthread_mutex_t mutex;
DARRAY(struct image_file_data) files;
@ -203,6 +209,9 @@ static void add_file(struct slideshow *ss, struct darray *array,
if (new_cx > *cx) *cx = new_cx;
if (new_cy > *cy) *cy = new_cy;
void *source_data = obs_obj_get_data(new_source);
ss->mem_usage += image_source_get_memory_usage(source_data);
}
*array = new_files.da;
@ -308,6 +317,8 @@ static void ss_update(void *data, obs_data_t *settings)
/* ------------------------------------- */
/* create new list of sources */
ss->mem_usage = 0;
for (size_t i = 0; i < count; i++) {
obs_data_t *item = obs_data_array_item(array, i);
const char *path = obs_data_get_string(item, "value");
@ -335,6 +346,9 @@ static void ss_update(void *data, obs_data_t *settings)
dstr_cat(&dir_path, ent->d_name);
add_file(ss, &new_files.da, dir_path.array,
&cx, &cy);
if (ss->mem_usage >= MAX_MEM_USAGE)
break;
}
dstr_free(&dir_path);
@ -344,6 +358,9 @@ static void ss_update(void *data, obs_data_t *settings)
}
obs_data_release(item);
if (ss->mem_usage >= MAX_MEM_USAGE)
break;
}
/* ------------------------------------- */
@ -358,10 +375,15 @@ static void ss_update(void *data, obs_data_t *settings)
ss->transition = new_tr;
}
if (new_duration < 50)
new_duration = 50;
if (new_speed > (new_duration - 50))
new_speed = new_duration - 50;
if (strcmp(tr_name, "cut_transition") != 0) {
if (new_duration < 100)
new_duration = 100;
new_duration += new_speed;
} else {
if (new_duration < 50)
new_duration = 50;
}
ss->tr_speed = new_speed;
ss->tr_name = tr_name;
@ -475,7 +497,7 @@ static void ss_next_slide(void *data)
{
struct slideshow *ss = data;
if (!ss->files.num)
if (!ss->files.num || obs_transition_get_time(ss->transition) < 1.0f)
return;
if (++ss->cur_item >= ss->files.num)
@ -488,7 +510,7 @@ static void ss_previous_slide(void *data)
{
struct slideshow *ss = data;
if (!ss->files.num)
if (!ss->files.num || obs_transition_get_time(ss->transition) < 1.0f)
return;
if (ss->cur_item == 0)