New upstream version 21.0.2+dfsg1

This commit is contained in:
Sebastian Ramacher 2018-02-19 20:54:37 +01:00
parent 1f1bbb3518
commit baafb6325b
706 changed files with 49633 additions and 5044 deletions

View file

@ -8,6 +8,7 @@ set(obs-transitions_SOURCES
transition-cut.c
transition-fade-to-color.c
transition-luma-wipe.c
transition-stinger.c
)
add_library(obs-transitions MODULE

View file

@ -2,6 +2,7 @@ FadeTransition="Esvair"
CutTransition="Talla"
SwipeTransition="Lliscar"
SlideTransition="Lliscar"
StingerTransition="Stinger"
FadeToColorTransition="Esvair a Color"
Direction="Direcció"
Direction.Left="Esquerra"
@ -10,6 +11,15 @@ Direction.Up="Amunt"
Direction.Down="Avall"
SwipeIn="Lliscament"
Color="Color"
VideoFile="Arxiu de vídeo"
TransitionPoint="Punt de la transició (mil·lisegons)"
TransitionPointFrame="Punt de transició (fotograma)"
TransitionPointType="Tipus de punt de transició"
TransitionPointTypeFrame="Fotograma"
TransitionPointTypeTime="Temps (en mil·lisegons)"
AudioFadeStyle="Estil de fos d'àudio"
AudioFadeStyle.FadeOutFadeIn="Es descolora al punt de transició i després s'esvaeix"
AudioFadeStyle.CrossFade="Transició"
SwitchPoint="Punt de Color màxim (percentatge)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Imatge"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Ratlles verticals"
LumaWipe.Type.Watercolor="Aquarel·la"
LumaWipe.Type.ZigzagHorizontal="Ziga-zaga horitzontal"
LumaWipe.Type.ZigzagVertical="Ziga-zaga vertical"
AudioMonitoring="Monitorització d'àudio"
AudioMonitoring.None="Monitorització desactivada"
AudioMonitoring.MonitorOnly="Només monitorització (sortida silenciosa)"
AudioMonitoring.Both="Monitorització i sortida"

View file

@ -2,6 +2,7 @@ FadeTransition="Slábnutí"
CutTransition="Střih"
SwipeTransition="Tažení"
SlideTransition="Sklouznutí"
StingerTransition="Stinger"
FadeToColorTransition="Barevný přechod"
Direction="Směr"
Direction.Left="Vlevo"
@ -10,6 +11,15 @@ Direction.Up="Nahoru"
Direction.Down="Dolů"
SwipeIn="Vtáhnout"
Color="Barva"
VideoFile="Video soubor"
TransitionPoint="Bod přechodu (ms)"
TransitionPointFrame="Bod přechodu (snímky)"
TransitionPointType="Typ bodu přechodu"
TransitionPointTypeFrame="Snímek"
TransitionPointTypeTime="Čas (ms)"
AudioFadeStyle="Styl přechodů"
AudioFadeStyle.FadeOutFadeIn="Zeslabovat do bodu přechodu, poté zesilovat"
AudioFadeStyle.CrossFade="Prolínání"
SwitchPoint="Špičkový bod barvy (%)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Obrázek"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Strips Vertical"
LumaWipe.Type.Watercolor="Watercolor"
LumaWipe.Type.ZigzagHorizontal="Zigzag Horizontal"
LumaWipe.Type.ZigzagVertical="Zigzag Vertical"
AudioMonitoring="Sledování zvuku"
AudioMonitoring.None="Sledování vypnuto"
AudioMonitoring.MonitorOnly="Pouze sledovat (ztlumit výstup)"
AudioMonitoring.Both="Sledovat i odesílat na výstup"

View file

@ -2,6 +2,7 @@ FadeTransition="Overgang"
CutTransition="Klip"
SwipeTransition="Swipe"
SlideTransition="Glide"
StingerTransition="Stinger-overgang"
FadeToColorTransition="Fade til farve"
Direction="Retning"
Direction.Left="Venstre"
@ -10,6 +11,15 @@ Direction.Up="Op"
Direction.Down="Ned"
SwipeIn="Swipe ind"
Color="Farve"
VideoFile="Videofil"
TransitionPoint="Overgangspunkt (millisekunder)"
TransitionPointFrame="Overgangspunkt (ramme)"
TransitionPointType="Overgangspunkttype"
TransitionPointTypeFrame="Billede"
TransitionPointTypeTime="Tid (ms)"
AudioFadeStyle="Lydudtoningsstil"
AudioFadeStyle.FadeOutFadeIn="Udtone til overgangspunkt, dernæst indtone"
AudioFadeStyle.CrossFade="Krydstoning (crossfade)"
SwitchPoint="Farvepeakpunkt (procent)"
LumaWipeTransition="Luma overgang"
LumaWipe.Image="Billede"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Strimmel vertikal"
LumaWipe.Type.Watercolor="Vandfarve"
LumaWipe.Type.ZigzagHorizontal="Zigzag horisontal"
LumaWipe.Type.ZigzagVertical="Zigzag vertical"
AudioMonitoring="Lydmonitering"
AudioMonitoring.None="Monitering Fra"
AudioMonitoring.MonitorOnly="Kun monitering (forstum output)"
AudioMonitoring.Both="Monitorering og output"

View file

@ -2,6 +2,7 @@ FadeTransition="Überblenden"
CutTransition="Schnitt"
SwipeTransition="Swipe"
SlideTransition="Slide"
StingerTransition="Stinger"
FadeToColorTransition="Fade to Color"
Direction="Richtung"
Direction.Left="Links"
@ -10,6 +11,15 @@ Direction.Up="Hoch"
Direction.Down="Runter"
SwipeIn="Swipe In"
Color="Farbe"
VideoFile="Videodatei"
TransitionPoint="Übergangspunkt (Millisekunden)"
TransitionPointFrame="Übergangspunkt (Frame)"
TransitionPointType="Übergangspunkttyp"
TransitionPointTypeFrame="Frame"
TransitionPointTypeTime="Zeit (Millisekunden)"
AudioFadeStyle="Audio Überblendstil"
AudioFadeStyle.FadeOutFadeIn="Zu Übergangspunkt ausblenden und dann einblenden"
AudioFadeStyle.CrossFade="Überblendung"
SwitchPoint="Peakfarbpunkt (Prozent)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Bild"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Vertikale Streifen"
LumaWipe.Type.Watercolor="Aquarell"
LumaWipe.Type.ZigzagHorizontal="Zigzag horizontal"
LumaWipe.Type.ZigzagVertical="Zigzag vertikal"
AudioMonitoring="Audiomonitoring"
AudioMonitoring.None="Monitor aus"
AudioMonitoring.MonitorOnly="Nur Monitor (Ausgabe stumm schalten)"
AudioMonitoring.Both="Monitor und Ausgabe"

View file

@ -3,4 +3,7 @@ CutTransition="Αποκοπή"
Direction.Left="Αριστερά"
Direction.Right="Δεξιά"
Color="Χρώμα"
VideoFile="Αρχείο Βίντεο"
TransitionPointTypeFrame="Καρέ"
TransitionPointTypeTime="Χρόνος (χιλιοστά δευτερολέπτου)"

View file

@ -2,6 +2,7 @@ FadeTransition="Fade"
CutTransition="Cut"
SwipeTransition="Swipe"
SlideTransition="Slide"
StingerTransition="Stinger"
FadeToColorTransition="Fade to Color"
Direction="Direction"
Direction.Left="Left"
@ -10,6 +11,15 @@ Direction.Up="Up"
Direction.Down="Down"
SwipeIn="Swipe In"
Color="Color"
VideoFile="Video File"
TransitionPoint="Transition Point (milliseconds)"
TransitionPointFrame="Transition Point (frame)"
TransitionPointType="Transition Point Type"
TransitionPointTypeFrame="Frame"
TransitionPointTypeTime="Time (milliseconds)"
AudioFadeStyle="Audio Fade Style"
AudioFadeStyle.FadeOutFadeIn="Fade out to transition point then fade in"
AudioFadeStyle.CrossFade="Crossfade"
SwitchPoint="Peak Color Point (percentage)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Image"
@ -49,3 +59,7 @@ LumaWipe.Type.StripsVertical="Strips Vertical"
LumaWipe.Type.Watercolor="Watercolor"
LumaWipe.Type.ZigzagHorizontal="Zigzag Horizontal"
LumaWipe.Type.ZigzagVertical="Zigzag Vertical"
AudioMonitoring="Audio Monitoring"
AudioMonitoring.None="Monitor Off"
AudioMonitoring.MonitorOnly="Monitor Only (mute output)"
AudioMonitoring.Both="Monitor and Output"

View file

@ -2,6 +2,7 @@ FadeTransition="Desvanecimiento"
CutTransition="Corte"
SwipeTransition="Deslizar"
SlideTransition="Deslizar"
StingerTransition="Stinger"
FadeToColorTransition="Desvanecer a Color"
Direction="Dirección"
Direction.Left="Izquierda"
@ -10,6 +11,15 @@ Direction.Up="Arriba"
Direction.Down="Abajo"
SwipeIn="Deslizamiento"
Color="Color"
VideoFile="Archivo de vídeo"
TransitionPoint="Punto de transición (milisegundos)"
TransitionPointFrame="Punto de transición (fotograma)"
TransitionPointType="Tipo de punto de transición"
TransitionPointTypeFrame="Fotograma"
TransitionPointTypeTime="Tiempo (en milisegundos)"
AudioFadeStyle="Estilo de fundido de audio"
AudioFadeStyle.FadeOutFadeIn="Se descolora al punto de transición y luego se desvanece"
AudioFadeStyle.CrossFade="Transición suave"
SwitchPoint="Punto de Color máximo (porcentaje)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Imagen"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Rayas verticales"
LumaWipe.Type.Watercolor="Acuarela"
LumaWipe.Type.ZigzagHorizontal="Zigzag horizontal"
LumaWipe.Type.ZigzagVertical="Zigzag vertical"
AudioMonitoring="Monitoreo de audio"
AudioMonitoring.None="Monitoreo apagado"
AudioMonitoring.MonitorOnly="Solo monitoreo (salida silenciosa)"
AudioMonitoring.Both="Monitoreo y salida"

View file

@ -2,6 +2,7 @@ FadeTransition="Iraungi"
CutTransition="Etena"
SwipeTransition="Korritu"
SlideTransition="Irristatu"
StingerTransition="Eztena"
FadeToColorTransition="Iraungi kolorera"
Direction="Norabidea"
Direction.Left="Ezker"
@ -10,6 +11,15 @@ Direction.Up="Gora"
Direction.Down="Behera"
SwipeIn="Korritu bertan"
Color="Kolorea"
VideoFile="Bideo-fitxategia"
TransitionPoint="Trantsizio-puntua (milisegundo)"
TransitionPointFrame="Trantsizio-puntua (fotograma)"
TransitionPointType="Trantsizio-puntu mota"
TransitionPointTypeFrame="Fotograma"
TransitionPointTypeTime="Denbora (milisegundo)"
AudioFadeStyle="Audio desagertze estiloa"
AudioFadeStyle.FadeOutFadeIn="Desagertu trantsizio puntura eta orduan agertu"
AudioFadeStyle.CrossFade="Kateatua"
SwitchPoint="Kolorearen gailur puntua (ehunekoa)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Irudia"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Banda bertikalak"
LumaWipe.Type.Watercolor="Akuarela"
LumaWipe.Type.ZigzagHorizontal="Sigi-saga horizontala"
LumaWipe.Type.ZigzagVertical="Sigi-saga bertikala"
AudioMonitoring="Adioaren monitorizazioa"
AudioMonitoring.None="Monitorea itzalita"
AudioMonitoring.MonitorOnly="Monitorea bakarrik (isildu irteera)"
AudioMonitoring.Both="Monitorea eta irteera"

View file

@ -2,6 +2,7 @@ FadeTransition="Häivytä"
CutTransition="Leikkaa"
SwipeTransition="Pyyhkäise"
SlideTransition="Liu'uta"
StingerTransition="Stinger"
FadeToColorTransition="Häivytä väriin"
Direction="Suunta"
Direction.Left="Vasemmalta"
@ -10,6 +11,15 @@ Direction.Up="Ylhäältä"
Direction.Down="Alhaalta"
SwipeIn="Pyyhkäise yli"
Color="Väri"
VideoFile="Videotiedosto"
TransitionPoint="Siirtymäkohta (millisekuntia)"
TransitionPointFrame="Siirtymäpisteen tyyppi (frame)"
TransitionPointType="Siirtymäpisteen tyyppi"
TransitionPointTypeFrame="Kehys"
TransitionPointTypeTime="Aika (millisekuntia)"
AudioFadeStyle="Äänen häivytyksen tyyli"
AudioFadeStyle.FadeOutFadeIn="Häivytä ulos siirtymäpisteeseen asti ja sitten häivytä sisään"
AudioFadeStyle.CrossFade="Ristiinhäivytys"
SwitchPoint="Korkein väripiste (prosentti)"
LumaWipeTransition="Luma-pyyhkäisy"
LumaWipe.Image="Kuva"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Strips pystytasossa"
LumaWipe.Type.Watercolor="Watercolor"
LumaWipe.Type.ZigzagHorizontal="Zigzag vaakatasossa"
LumaWipe.Type.ZigzagVertical="Zigzag pystysuorassa"
AudioMonitoring="Äänen monitorointi"
AudioMonitoring.None="Monitorointi pois"
AudioMonitoring.MonitorOnly="Vain monitorointi (hiljennä ulostulo)"
AudioMonitoring.Both="Monitorointi ja ulostulo"

View file

@ -2,6 +2,7 @@ FadeTransition="Fondu"
CutTransition="Coupure"
SwipeTransition="Balayage"
SlideTransition="Glissement"
StingerTransition="Stinger"
FadeToColorTransition="Fondu avec couleur"
Direction="Direction"
Direction.Left="Gauche"
@ -10,6 +11,15 @@ Direction.Up="Haut"
Direction.Down="Bas"
SwipeIn="Recouvrement"
Color="Couleur"
VideoFile="Fichier vidéo"
TransitionPoint="Point de transition (millisecondes)"
TransitionPointFrame="Point de transition (image)"
TransitionPointType="Type de transition"
TransitionPointTypeFrame="Image"
TransitionPointTypeTime="Durée (en millisecondes)"
AudioFadeStyle="Style de fondu audio"
AudioFadeStyle.FadeOutFadeIn="Fondu en fermeture jusqu'au point de transition puis fondu en ouverture"
AudioFadeStyle.CrossFade="Fondu enchaîné"
SwitchPoint="Point de couleur maximal (pourcentage)"
LumaWipeTransition="Luma"
LumaWipe.Image="Image"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Bandes verticales"
LumaWipe.Type.Watercolor="Aquarelle"
LumaWipe.Type.ZigzagHorizontal="Zigzags à l'horizontale"
LumaWipe.Type.ZigzagVertical="Zigzags à la verticale"
AudioMonitoring="Surveillance audio"
AudioMonitoring.None="Pas de surveillance"
AudioMonitoring.MonitorOnly="Surveillance seule (sortie en sourdine)"
AudioMonitoring.Both="Surveillance et sortie"

View file

@ -2,6 +2,7 @@ FadeTransition="Áttűnés"
CutTransition="Kivágás"
SwipeTransition="Lapozás"
SlideTransition="Csúsztatás"
StingerTransition="Stinger"
FadeToColorTransition="Színes áttűnés"
Direction="Irány"
Direction.Left="Bal"
@ -10,6 +11,15 @@ Direction.Up="Fel"
Direction.Down="Le"
SwipeIn="Belapozás"
Color="Szín"
VideoFile="Videofájl"
TransitionPoint="Átmenetpont (ezredmásodperc)"
TransitionPointFrame="Átmenetpont (Képkocka)"
TransitionPointType="Átmenetpont típus"
TransitionPointTypeFrame="Képkocka"
TransitionPointTypeTime="Idő (Ezredmásodperc)"
AudioFadeStyle="Hangáttűnés stílusa"
AudioFadeStyle.FadeOutFadeIn="Átmenetponthoz halkítás és visszahangosítás"
AudioFadeStyle.CrossFade="Átkeverés"
SwitchPoint="Színpont csúcs (százalék)"
LumaWipeTransition="Luma törlés"
LumaWipe.Image="Kép"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Függőleges csíkok"
LumaWipe.Type.Watercolor="Akvarell"
LumaWipe.Type.ZigzagHorizontal="Vízszintes cikkcakk"
LumaWipe.Type.ZigzagVertical="Függőleges cikkcakk"
AudioMonitoring="Hangfigyelés"
AudioMonitoring.None="Figyelés kikapcsolása"
AudioMonitoring.MonitorOnly="Csak figyelés (kimenet némítása)"
AudioMonitoring.Both="Figyelés és kimenet"

View file

@ -2,6 +2,7 @@ FadeTransition="Dissolvenza"
CutTransition="Taglio"
SwipeTransition="Scorri"
SlideTransition="Scivola"
StingerTransition="Stinger"
FadeToColorTransition="Dissolvenza a colore"
Direction="Direzione"
Direction.Left="Sinistra"
@ -10,6 +11,15 @@ Direction.Up="Sù"
Direction.Down="Giù"
SwipeIn="Scorri verso l'alto"
Color="Colore"
VideoFile="File video"
TransitionPoint="Punto di transizione (millisecondi)"
TransitionPointFrame="Punto di transizione (frame)"
TransitionPointType="Tipo di punto di transizione"
TransitionPointTypeFrame="Fotogramma"
TransitionPointTypeTime="Tempo (millisecondi)"
AudioFadeStyle="Stile dissolvenza audio"
AudioFadeStyle.FadeOutFadeIn="Dissolvenza fino al punto di transizione, poi dissolvenza in entrata"
AudioFadeStyle.CrossFade="Dissolvenza"
SwitchPoint="Picco Punto Colore (percentuale)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Immagine"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Striscie verticali"
LumaWipe.Type.Watercolor="Acquerello"
LumaWipe.Type.ZigzagHorizontal="Zig-zag orizzontale"
LumaWipe.Type.ZigzagVertical="Zig-zag verticale"
AudioMonitoring="Monitoraggio Audio"
AudioMonitoring.None="Monitoraggio off"
AudioMonitoring.MonitorOnly="Solo Monitoraggio (output mutato)"
AudioMonitoring.Both="Monitoraggio e Output"

View file

@ -2,6 +2,7 @@ FadeTransition="フェード"
CutTransition="カット"
SwipeTransition="スワイプ"
SlideTransition="スライド"
StingerTransition="スティンガー"
FadeToColorTransition="カラーにフェード"
Direction="方向"
Direction.Left="左"
@ -10,6 +11,15 @@ Direction.Up="上"
Direction.Down="下"
SwipeIn="スワイプイン"
Color="色"
VideoFile="動画ファイル"
TransitionPoint="トランジションポイント (ミリ秒)"
TransitionPointFrame="トランジションポイント (フレーム)"
TransitionPointType="トランジションポイントの種類"
TransitionPointTypeFrame="フレーム"
TransitionPointTypeTime="時間 (ミリ秒)"
AudioFadeStyle="オーディオフェードスタイル"
AudioFadeStyle.FadeOutFadeIn="トランジションポイントまでフェードアウトしてからフェードイン"
AudioFadeStyle.CrossFade="クロスフェード"
SwitchPoint="ピークカラーポイント (割合)"
LumaWipeTransition="輝度ワイプ"
LumaWipe.Image="画像"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="垂直ストライプ"
LumaWipe.Type.Watercolor="水彩"
LumaWipe.Type.ZigzagHorizontal="水平ジグザグ"
LumaWipe.Type.ZigzagVertical="垂直ジグザグ"
AudioMonitoring="音声モニタリング"
AudioMonitoring.None="モニターオフ"
AudioMonitoring.MonitorOnly="モニターのみ (出力はミュート)"
AudioMonitoring.Both="モニターと出力"

View file

@ -2,6 +2,7 @@ FadeTransition="서서히 사라지기"
CutTransition="자르기"
SwipeTransition="밀어내기"
SlideTransition="슬라이드"
StingerTransition="스팅어"
FadeToColorTransition="특정 색상으로 서서히 사라지기"
Direction="방향"
Direction.Left="왼쪽"
@ -10,6 +11,15 @@ Direction.Up="위쪽"
Direction.Down="아래쪽"
SwipeIn="덮기"
Color="색상"
VideoFile="비디오 파일"
TransitionPoint="전환 지점 (밀리초)"
TransitionPointFrame="전환 지점 (프레임)"
TransitionPointType="전환 지점 형식"
TransitionPointTypeFrame="프레임"
TransitionPointTypeTime="시간 (밀리초)"
AudioFadeStyle="소리 점감 형식"
AudioFadeStyle.FadeOutFadeIn="전환 지점까지 서서히 작아졌다가 다시 커지기"
AudioFadeStyle.CrossFade="천천히 작아지기와 커지기 동시"
SwitchPoint="최고조 색상 지점 (백분율)"
LumaWipeTransition="루마 지우기"
LumaWipe.Image="이미지 파일"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="줄무늬 (수직)"
LumaWipe.Type.Watercolor="수채화"
LumaWipe.Type.ZigzagHorizontal="지그재그 (수평)"
LumaWipe.Type.ZigzagVertical="지그재그 (수직)"
AudioMonitoring="소리 감시"
AudioMonitoring.None="감시 끄기"
AudioMonitoring.MonitorOnly="감시만 하기 (출력은 음소거)"
AudioMonitoring.Both="감시와 출력 모두"

View file

@ -2,6 +2,7 @@ FadeTransition="Forløpning"
CutTransition="Kutt"
SwipeTransition="Sveip"
SlideTransition="Skyv"
StingerTransition="Stinger"
FadeToColorTransition="Forløpning til farge"
Direction="Retning"
Direction.Left="Venstre"
@ -10,8 +11,56 @@ Direction.Up="Opp"
Direction.Down="Ned"
SwipeIn="Sveip inn"
Color="Farge"
VideoFile="Videofil"
TransitionPoint="Overgangspunkt (millisekunder)"
TransitionPointFrame="Overgangspunkt (ramme)"
TransitionPointType="Overgangspunkttype"
TransitionPointTypeFrame="Ramme"
TransitionPointTypeTime="Tid (millisekunder)"
AudioFadeStyle="Lyduttoningsstil"
AudioFadeStyle.FadeOutFadeIn="Ton ut til overgangspunktet, og så ton inn igjen"
AudioFadeStyle.CrossFade="Kryssuttoning"
SwitchPoint="Farge ved høydepunkt (prosent)"
LumaWipeTransition="Luminansfjerning"
LumaWipe.Image="Bilde"
LumaWipe.Invert="Inverter"
LumaWipe.Softness="Mykhet"
LumaWipe.Type.BarndoorBottomLeft="Låvedør ned til venstre"
LumaWipe.Type.BarndoorHorizontal="Vannrett låvedør"
LumaWipe.Type.BarndoorTopLeft="Låvedør opp til venstre"
LumaWipe.Type.BarndoorVertical="Loddrett låvedør"
LumaWipe.Type.BlindsHorizontal="Vannrette persienner"
LumaWipe.Type.BoxBottomLeft="Boks ned til venstre"
LumaWipe.Type.BoxBottomRight="Boks ned til høyre"
LumaWipe.Type.BoxTopLeft="Boks opp til venstre"
LumaWipe.Type.BoxTopRight="Boks opp til høyre"
LumaWipe.Type.Burst="Sprekk"
LumaWipe.Type.CheckerboardSmall="Et lite dambrett"
LumaWipe.Type.Circles="Sirkler"
LumaWipe.Type.Clock="Klokke"
LumaWipe.Type.Cloud="Sky"
LumaWipe.Type.Curtain="Gardin"
LumaWipe.Type.Fan="Vifte"
LumaWipe.Type.Fractal="Fraktal"
LumaWipe.Type.Iris="Iris"
LumaWipe.Type.LinearHorizontal="Vannrett lineær"
LumaWipe.Type.LinearTopLeft="Lineær opp til venstre"
LumaWipe.Type.LinearTopRight="Lineær opp til høyre"
LumaWipe.Type.LinearVertical="Lineær loddrett"
LumaWipe.Type.ParallelZigzagHorizontal="Parallell vannrett sikksakk"
LumaWipe.Type.ParallelZigzagVertical="Parallell loddrett sikksakk"
LumaWipe.Type.Sinus9="Sinus 9"
LumaWipe.Type.Spiral="Spiral"
LumaWipe.Type.Square="Kvadrat"
LumaWipe.Type.Squares="Kvadrater"
LumaWipe.Type.Stripes="Striper"
LumaWipe.Type.StripsHorizontal="Vannrette strimler"
LumaWipe.Type.StripsVertical="Loddrette strimler"
LumaWipe.Type.Watercolor="Vannfarging"
LumaWipe.Type.ZigzagHorizontal="Vannrett sikksakk"
LumaWipe.Type.ZigzagVertical="Loddrett sikksakk"
AudioMonitoring="Lydovervåking"
AudioMonitoring.None="Av for skjermen"
AudioMonitoring.MonitorOnly="Kun skjermen (Demp utdataen)"
AudioMonitoring.Both="Både skjermen og utdataen"

View file

@ -2,6 +2,7 @@ FadeTransition="Vervagen"
CutTransition="Knippen"
SwipeTransition="Vegen"
SlideTransition="Slide"
StingerTransition="Stinger"
FadeToColorTransition="Vervagen naar Kleur"
Direction="Richting"
Direction.Left="Links"
@ -10,6 +11,15 @@ Direction.Up="Omhoog"
Direction.Down="Omlaag"
SwipeIn="Naar binnen vegen"
Color="Kleur"
VideoFile="Videobestand"
TransitionPoint="Overgangspunt (milliseconden)"
TransitionPointFrame="Transitiepunt (frame)"
TransitionPointType="Transitiepunt-type"
TransitionPointTypeFrame="Frame"
TransitionPointTypeTime="Tijd (milliseconden)"
AudioFadeStyle="Audio Fade stijl"
AudioFadeStyle.FadeOutFadeIn="Overgang van punt dan fade-in uitfaden"
AudioFadeStyle.CrossFade="Crossfading"
SwitchPoint="Wisselpunt (percentage)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Afbeelding"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Strips Verticaal"
LumaWipe.Type.Watercolor="Waterverf"
LumaWipe.Type.ZigzagHorizontal="Zigzag Horizontaal"
LumaWipe.Type.ZigzagVertical="Zigzag Verticaal"
AudioMonitoring="Audio monitoring"
AudioMonitoring.None="Niet monitoren"
AudioMonitoring.MonitorOnly="Alleen monitoren (uitvoer gedempt)"
AudioMonitoring.Both="Monitoren en uitvoeren"

View file

@ -2,6 +2,7 @@ FadeTransition="Zanikanie"
CutTransition="Cięcie"
SwipeTransition="Przesunięcie"
SlideTransition="Slajd"
StingerTransition="Stinger"
FadeToColorTransition="Zanikanie do koloru"
Direction="Kierunek"
Direction.Left="W lewo"
@ -10,6 +11,15 @@ Direction.Up="W górę"
Direction.Down="W dół"
SwipeIn="Przesuwaj do środka"
Color="Kolor"
VideoFile="Plik wideo"
TransitionPoint="Punkt przejścia (w milisekundach)"
TransitionPointFrame="Punkt przejścia (ramka)"
TransitionPointType="Typ punktu przejścia"
TransitionPointTypeFrame="Ramka"
TransitionPointTypeTime="Czas (w milisekundach)"
AudioFadeStyle="Styl przejścia dźwięku"
AudioFadeStyle.FadeOutFadeIn="Stopniowe wyciszenie do punktu przejścia a następnie stopniowe wzmocnienie"
AudioFadeStyle.CrossFade="Płynne przejście"
SwitchPoint="Punkt szczytowy koloru (procent)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Obraz"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Paski pionowe"
LumaWipe.Type.Watercolor="Akwarela"
LumaWipe.Type.ZigzagHorizontal="Zygzak poziomy"
LumaWipe.Type.ZigzagVertical="Zygzak pionowy"
AudioMonitoring="Monitorowanie urządzenia audio"
AudioMonitoring.None="Wyłączone"
AudioMonitoring.MonitorOnly="Tylko monitorowanie (wyjście wyłączone)"
AudioMonitoring.Both="Monitorowanie i przekazywanie na wyjście"

View file

@ -2,6 +2,7 @@ FadeTransition="Esmaecer"
CutTransition="Cortar"
SwipeTransition="Deslizar"
SlideTransition="Deslizar"
StingerTransition="Stinger"
FadeToColorTransition="Esmaecer para a Cor"
Direction="Direção"
Direction.Left="Esquerda"
@ -10,6 +11,15 @@ Direction.Up="Cima"
Direction.Down="Baixo"
SwipeIn="Deslizar para"
Color="Cor"
VideoFile="Arquivo de Vídeo"
TransitionPoint="Ponto de Transição (milissegundos)"
TransitionPointFrame="Ponto de transição (quadro)"
TransitionPointType="Tipo de Ponto de Transição"
TransitionPointTypeFrame="Quadro"
TransitionPointTypeTime="Tempo (milissegundos)"
AudioFadeStyle="Estilo de Esmaecimento de Áudio"
AudioFadeStyle.FadeOutFadeIn="Esmaecer imagem até o ponto de transição e depois aparecer"
AudioFadeStyle.CrossFade="Transição Suave"
SwitchPoint="Ponto de Pico de Cor (porcentagem)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Imagem"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Listras Verticais"
LumaWipe.Type.Watercolor="Aquarela"
LumaWipe.Type.ZigzagHorizontal="Zigue-zague Horizontal"
LumaWipe.Type.ZigzagVertical="Zigue-zague Vertical"
AudioMonitoring="Monitoramento de Áudio"
AudioMonitoring.None="Não Monitorar"
AudioMonitoring.MonitorOnly="Apenas Monitorar (saída muda)"
AudioMonitoring.Both="Monitorar e Enviar Áudio"

View file

@ -2,6 +2,7 @@ FadeTransition="Затухание"
CutTransition="Обрезать"
SwipeTransition="Перемещение"
SlideTransition="Сдвиг"
StingerTransition="Стингер"
FadeToColorTransition="Затухание в цвет"
Direction="Направление"
Direction.Left="Влево"
@ -10,6 +11,15 @@ Direction.Up="Вверх"
Direction.Down="Вниз"
SwipeIn="Перемещение внутрь"
Color="Цвет"
VideoFile="Файл видео"
TransitionPoint="Точка перехода (миллисекунды)"
TransitionPointFrame="Точка перехода (кадр)"
TransitionPointType="Тип точки перехода"
TransitionPointTypeFrame="Кадр"
TransitionPointTypeTime="Время (миллисекунд)"
AudioFadeStyle="Стиль затухания аудио"
AudioFadeStyle.FadeOutFadeIn="Затухание в точку перехода с последующим появлением"
AudioFadeStyle.CrossFade="Переход"
SwitchPoint="Точка цветового пика (в процентах)"
LumaWipeTransition="Выцветание"
LumaWipe.Image="Изображение"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Вертикальные полосы"
LumaWipe.Type.Watercolor="Акварель"
LumaWipe.Type.ZigzagHorizontal="Горизонтальный зигзаг"
LumaWipe.Type.ZigzagVertical="Вертикальный зигзаг"
AudioMonitoring="Аудио мониторинг"
AudioMonitoring.None="Выключить мониторинг"
AudioMonitoring.MonitorOnly="Только мониторинг (заглушить вывод)"
AudioMonitoring.Both="Мониторинг и вывод"

View file

@ -0,0 +1,29 @@
FadeTransition="Miznutie"
CutTransition="Strih"
SwipeTransition="Potiahnutie"
SlideTransition="Posunutie"
StingerTransition="Stinger"
FadeToColorTransition="Miznutie do farby"
Direction="Smer"
Direction.Left="Vľavo"
Direction.Right="Vpravo"
Direction.Up="Nahor"
Direction.Down="Nadol"
Color="Farba"
VideoFile="Video súbor"
TransitionPoint="Bod prechodu (v milisekundách)"
TransitionPointFrame="Bod prechodu (v snímkoch)"
TransitionPointType="Typ bodu prechodu"
TransitionPointTypeFrame="Snímok"
TransitionPointTypeTime="Čas (v milisekundách)"
LumaWipe.Image="Obrázok"
LumaWipe.Invert="Invertovať"
LumaWipe.Softness="Mäkkosť"
LumaWipe.Type.Circles="Kruhy"
LumaWipe.Type.Clock="Hodiny"
LumaWipe.Type.Cloud="Oblak"
LumaWipe.Type.Curtain="Záves"
LumaWipe.Type.Fan="Ventilátor"
LumaWipe.Type.Fractal="Fractal"
LumaWipe.Type.Iris="Iris"

View file

@ -2,6 +2,7 @@ FadeTransition="Tona"
CutTransition="Klipp"
SwipeTransition="Svep"
SlideTransition="Glid"
StingerTransition="Stinger"
FadeToColorTransition="Tona till färg"
Direction="Riktning"
Direction.Left="Vänster"
@ -10,6 +11,15 @@ Direction.Up="Upp"
Direction.Down="Ned"
SwipeIn="Svep in"
Color="Färg"
VideoFile="Videofil"
TransitionPoint="Övergångspunkt (millisekunder)"
TransitionPointFrame="Övergångspunkt (bildruta)"
TransitionPointType="Typ av övergångspunkt"
TransitionPointTypeFrame="Bildruta"
TransitionPointTypeTime="Tid (millisekunder)"
AudioFadeStyle="Stil för ljuduttoning"
AudioFadeStyle.FadeOutFadeIn="Tona ut till övergångspunkten och sedan tona in"
AudioFadeStyle.CrossFade="Övertoning"
SwitchPoint="Maxpunkt för färg (procent)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Bild"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Streck, vertikalt"
LumaWipe.Type.Watercolor="Vattenfärg"
LumaWipe.Type.ZigzagHorizontal="Sicksack, horisontalt"
LumaWipe.Type.ZigzagVertical="Sicksack, vertikalt"
AudioMonitoring="Ljudövervakning"
AudioMonitoring.None="Övervaka inte"
AudioMonitoring.MonitorOnly="Övervaka endast (tysta utgång)"
AudioMonitoring.Both="Övervaka och mata ut"

View file

@ -2,6 +2,7 @@ FadeTransition="Soldur"
CutTransition="Kes"
SwipeTransition="Kaydır"
SlideTransition="Kaydır"
StingerTransition="Isırıcı"
FadeToColorTransition="Fade to Color"
Direction="Yönlendir"
Direction.Left="Sol"
@ -10,6 +11,15 @@ Direction.Up="Yukarı"
Direction.Down="Aşağı"
SwipeIn="İçeri Kaydır"
Color="Renk"
VideoFile="Video Dosyası"
TransitionPoint="Geçiş Noktası (milisaniye)"
TransitionPointFrame="Geçiş Noktası (kare)"
TransitionPointType="Geçiş Noktası Türü"
TransitionPointTypeFrame="Kare"
TransitionPointTypeTime="Süre (milisaniye)"
AudioFadeStyle="Ses Geçiş Stili"
AudioFadeStyle.FadeOutFadeIn="Geçiş noktasına doğru azalt sonra artır"
AudioFadeStyle.CrossFade="Çapraz Geçiş"
SwitchPoint="En yüksek Renk Noktası (yüzde)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Görüntü"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Strips Vertical"
LumaWipe.Type.Watercolor="Watercolor"
LumaWipe.Type.ZigzagHorizontal="Zigzag Horizontal"
LumaWipe.Type.ZigzagVertical="Zigzag Vertical"
AudioMonitoring="Ses İzleme"
AudioMonitoring.None="Ekran Kapalı"
AudioMonitoring.MonitorOnly="Sadece Ekran (sessiz çıkış)"
AudioMonitoring.Both="Ekran ve Çıkış"

View file

@ -2,6 +2,7 @@ FadeTransition="Fade"
CutTransition="Cut"
SwipeTransition="Swipe"
SlideTransition="Slide"
StingerTransition="Stinger"
FadeToColorTransition="Fade to Color"
Direction="Напрямок"
Direction.Left="Ліворуч"
@ -10,6 +11,15 @@ Direction.Up="Вгору"
Direction.Down="Вниз"
SwipeIn="В кадр"
Color="Колір"
VideoFile="Файл відео"
TransitionPoint="Точка відео-переходу (мілісекунд)"
TransitionPointFrame="Точка відео-переходу (кадр)"
TransitionPointType="Тип точки відео-переходу"
TransitionPointTypeFrame="Кадр"
TransitionPointTypeTime="Час (мілісекунд)"
AudioFadeStyle="Стиль затухання Аудіо"
AudioFadeStyle.FadeOutFadeIn="Затухання до точки відео-переходу, потім гучність наростає"
AudioFadeStyle.CrossFade="Плавний перехід (з початку)"
SwitchPoint="Найвища точка для кольору (відсоток)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="Зображення"
@ -39,7 +49,7 @@ LumaWipe.Type.LinearTopRight="Лінійно з правого верхньог
LumaWipe.Type.LinearVertical="Лінійно по вертикалі"
LumaWipe.Type.ParallelZigzagHorizontal="Паралельний зигзаг по горизонталі"
LumaWipe.Type.ParallelZigzagVertical="Паралельний зигзаг по вертикалі"
LumaWipe.Type.Sinus9="Синус 9"
LumaWipe.Type.Sinus9="Плазма"
LumaWipe.Type.Spiral="Спіраль"
LumaWipe.Type.Square="Квадрат"
LumaWipe.Type.Squares="Квадрати"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Ступінчасто по горизонталі
LumaWipe.Type.Watercolor="Водні розмиви"
LumaWipe.Type.ZigzagHorizontal="Зигзаг по горизонталі"
LumaWipe.Type.ZigzagVertical="Зигзаг по вертикалі"
AudioMonitoring="Тестування Аудіо (на слух)"
AudioMonitoring.None="Тест вимкнено"
AudioMonitoring.MonitorOnly="Слухати, але не Виводити"
AudioMonitoring.Both="Слухати та Виводити"

View file

@ -0,0 +1,20 @@
FadeTransition="Mờ dần"
CutTransition="Cắt"
SwipeTransition="Vuốt"
SlideTransition="Trượt"
Direction="Hướng"
Direction.Left="Trái"
Direction.Right="Phải"
Direction.Up="Trên"
Direction.Down="Xuống"
SwipeIn="Trượt lên"
Color="Màu"
VideoFile="Tập tin video"
TransitionPointTypeFrame="Khung hình"
AudioFadeStyle.CrossFade="Làm mờ ảnh"
LumaWipe.Image="Hình ảnh"
LumaWipe.Invert="Đảo ngược"
LumaWipe.Type.Square="Vuông"
LumaWipe.Type.Squares="Vuông"
LumaWipe.Type.Stripes="Sọc"

View file

@ -2,6 +2,7 @@ FadeTransition="淡出"
CutTransition="剪切"
SwipeTransition="滑动"
SlideTransition="滑动"
StingerTransition="毒刺"
FadeToColorTransition="色彩淡入淡出"
Direction="方向"
Direction.Left="左"
@ -10,6 +11,15 @@ Direction.Up="上"
Direction.Down="下"
SwipeIn="向上滑动"
Color="色彩"
VideoFile="视频文件"
TransitionPoint="转换点 (毫秒)"
TransitionPointFrame="转换点 (帧)"
TransitionPointType="转换点类型"
TransitionPointTypeFrame="帧"
TransitionPointTypeTime="时间 (毫秒)"
AudioFadeStyle="音频淡入淡出样式"
AudioFadeStyle.FadeOutFadeIn="淡出到过渡点然后淡入"
AudioFadeStyle.CrossFade="交叉淡入淡出"
SwitchPoint="峰值颜色点(百分比)"
LumaWipeTransition="亮度擦除"
LumaWipe.Image="图像"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="条纹垂直"
LumaWipe.Type.Watercolor="水彩"
LumaWipe.Type.ZigzagHorizontal="Z字形水平"
LumaWipe.Type.ZigzagVertical="Z字形垂直"
AudioMonitoring="音频监测"
AudioMonitoring.None="关闭监视"
AudioMonitoring.MonitorOnly="仅显示器(输出静音)"
AudioMonitoring.Both="显示器和输出"

View file

@ -2,6 +2,7 @@ FadeTransition="淡入淡出"
CutTransition="直接轉場"
SwipeTransition="滑出"
SlideTransition="推出"
StingerTransition="Stinger"
FadeToColorTransition="淡出至指定色彩"
Direction="方向"
Direction.Left="左"
@ -10,6 +11,15 @@ Direction.Up="上"
Direction.Down="下"
SwipeIn="滑入"
Color="顏色"
VideoFile="影片檔"
TransitionPoint="轉換點 (毫秒)"
TransitionPointFrame="轉換點 (訊框)"
TransitionPointType="轉換點類型"
TransitionPointTypeFrame="訊框"
TransitionPointTypeTime="時間 (毫秒)"
AudioFadeStyle="音訊淡入淡出風格"
AudioFadeStyle.FadeOutFadeIn="淡出至轉換點再淡入"
AudioFadeStyle.CrossFade="交叉式淡入淡出"
SwitchPoint="顏色峰值點 (百分比)"
LumaWipeTransition="Luma Wipe"
LumaWipe.Image="影像"
@ -49,4 +59,8 @@ LumaWipe.Type.StripsVertical="Strips Vertical"
LumaWipe.Type.Watercolor="Watercolor"
LumaWipe.Type.ZigzagHorizontal="Zigzag Horizontal"
LumaWipe.Type.ZigzagVertical="Zigzag Vertical"
AudioMonitoring="音訊監測"
AudioMonitoring.None="關閉監測"
AudioMonitoring.MonitorOnly="僅監測(輸出靜音)"
AudioMonitoring.Both="監測並輸出"

View file

@ -8,6 +8,7 @@ extern struct obs_source_info cut_transition;
extern struct obs_source_info fade_transition;
extern struct obs_source_info swipe_transition;
extern struct obs_source_info slide_transition;
extern struct obs_source_info stinger_transition;
extern struct obs_source_info fade_to_color_transition;
extern struct obs_source_info luma_wipe_transition;
@ -17,6 +18,7 @@ bool obs_module_load(void)
obs_register_source(&fade_transition);
obs_register_source(&swipe_transition);
obs_register_source(&slide_transition);
obs_register_source(&stinger_transition);
obs_register_source(&fade_to_color_transition);
obs_register_source(&luma_wipe_transition);
return true;

View file

@ -0,0 +1,370 @@
#include <obs-module.h>
#define TIMING_TIME 0
#define TIMING_FRAME 1
enum fade_style {
FADE_STYLE_FADE_OUT_FADE_IN,
FADE_STYLE_CROSS_FADE
};
struct stinger_info {
obs_source_t *source;
obs_source_t *media_source;
uint64_t duration_ns;
uint64_t duration_frames;
uint64_t transition_point_ns;
uint64_t transition_point_frame;
float transition_point;
float transition_a_mul;
float transition_b_mul;
bool transitioning;
bool transition_point_is_frame;
int monitoring_type;
enum fade_style fade_style;
float (*mix_a)(void *data, float t);
float (*mix_b)(void *data, float t);
};
static const char *stinger_get_name(void *type_data)
{
UNUSED_PARAMETER(type_data);
return obs_module_text("StingerTransition");
}
static float mix_a_fade_in_out(void *data, float t);
static float mix_b_fade_in_out(void *data, float t);
static float mix_a_cross_fade(void *data, float t);
static float mix_b_cross_fade(void *data, float t);
static void stinger_update(void *data, obs_data_t *settings)
{
struct stinger_info *s = data;
const char *path = obs_data_get_string(settings, "path");
obs_data_t *media_settings = obs_data_create();
obs_data_set_string(media_settings, "local_file", path);
obs_source_release(s->media_source);
s->media_source = obs_source_create_private("ffmpeg_source", NULL,
media_settings);
obs_data_release(media_settings);
int64_t point = obs_data_get_int(settings, "transition_point");
s->transition_point_is_frame =
obs_data_get_int(settings, "tp_type") == TIMING_FRAME;
if (s->transition_point_is_frame)
s->transition_point_frame = (uint64_t)point;
else
s->transition_point_ns = (uint64_t)(point * 1000000LL);
s->monitoring_type = (int)obs_data_get_int(settings,"audio_monitoring");
obs_source_set_monitoring_type(s->media_source, s->monitoring_type);
s->fade_style = (enum fade_style)obs_data_get_int(settings,
"audio_fade_style");
switch (s->fade_style) {
default:
case FADE_STYLE_FADE_OUT_FADE_IN:
s->mix_a = mix_a_fade_in_out;
s->mix_b = mix_b_fade_in_out;
break;
case FADE_STYLE_CROSS_FADE:
s->mix_a = mix_a_cross_fade;
s->mix_b = mix_b_cross_fade;
break;
}
}
static void *stinger_create(obs_data_t *settings, obs_source_t *source)
{
struct stinger_info *s = bzalloc(sizeof(*s));
s->source = source;
s->mix_a = mix_a_fade_in_out;
s->mix_b = mix_b_fade_in_out;
obs_transition_enable_fixed(s->source, true, 0);
obs_source_update(source, settings);
return s;
}
static void stinger_destroy(void *data)
{
struct stinger_info *s = data;
obs_source_release(s->media_source);
bfree(s);
}
static void stinger_video_render(void *data, gs_effect_t *effect)
{
struct stinger_info *s = data;
float t = obs_transition_get_time(s->source);
bool use_a = t < s->transition_point;
enum obs_transition_target target = use_a
? OBS_TRANSITION_SOURCE_A
: OBS_TRANSITION_SOURCE_B;
if (!obs_transition_video_render_direct(s->source, target))
return;
/* --------------------- */
float source_cx = (float)obs_source_get_width(s->source);
float source_cy = (float)obs_source_get_height(s->source);
uint32_t media_cx = obs_source_get_width(s->media_source);
uint32_t media_cy = obs_source_get_height(s->media_source);
if (!media_cx || !media_cy)
return;
float scale_x = source_cx / (float)media_cx;
float scale_y = source_cy / (float)media_cy;
gs_matrix_push();
gs_matrix_scale3f(scale_x, scale_y, 1.0f);
obs_source_video_render(s->media_source);
gs_matrix_pop();
UNUSED_PARAMETER(effect);
}
static inline float calc_fade(float t, float mul)
{
t *= mul;
return t > 1.0f ? 1.0f : t;
}
static float mix_a_fade_in_out(void *data, float t)
{
struct stinger_info *s = data;
return 1.0f - calc_fade(t, s->transition_a_mul);
}
static float mix_b_fade_in_out(void *data, float t)
{
struct stinger_info *s = data;
return 1.0f - calc_fade(1.0f - t, s->transition_b_mul);
}
static float mix_a_cross_fade(void *data, float t)
{
UNUSED_PARAMETER(data);
return 1.0f - t;
}
static float mix_b_cross_fade(void *data, float t)
{
UNUSED_PARAMETER(data);
return t;
}
static bool stinger_audio_render(void *data, uint64_t *ts_out,
struct obs_source_audio_mix *audio, uint32_t mixers,
size_t channels, size_t sample_rate)
{
struct stinger_info *s = data;
uint64_t ts = 0;
if (!obs_source_audio_pending(s->media_source)) {
ts = obs_source_get_audio_timestamp(s->media_source);
if (!ts)
return false;
}
bool success = obs_transition_audio_render(s->source, ts_out,
audio, mixers, channels, sample_rate, s->mix_a, s->mix_b);
if (!ts)
return success;
if (!*ts_out || ts < *ts_out)
*ts_out = ts;
struct obs_source_audio_mix child_audio;
obs_source_get_audio_mix(s->media_source, &child_audio);
for (size_t mix = 0; mix < MAX_AUDIO_MIXES; mix++) {
if ((mixers & (1 << mix)) == 0)
continue;
for (size_t ch = 0; ch < channels; ch++) {
register float *out = audio->output[mix].data[ch];
register float *in = child_audio.output[mix].data[ch];
register float *end = in + AUDIO_OUTPUT_FRAMES;
while (in < end)
*(out++) += *(in++);
}
}
return true;
}
static void stinger_transition_start(void *data)
{
struct stinger_info *s = data;
if (s->media_source) {
calldata_t cd = {0};
proc_handler_t *ph =
obs_source_get_proc_handler(s->media_source);
if (s->transitioning) {
proc_handler_call(ph, "restart", &cd);
return;
}
proc_handler_call(ph, "get_duration", &cd);
proc_handler_call(ph, "get_nb_frames", &cd);
s->duration_ns = (uint64_t)calldata_int(&cd, "duration");
s->duration_frames = (uint64_t)calldata_int(&cd, "num_frames");
if (s->transition_point_is_frame)
s->transition_point = (float)(
(long double)s->transition_point_frame /
(long double)s->duration_frames);
else
s->transition_point = (float)(
(long double)s->transition_point_ns /
(long double)s->duration_ns);
if (s->transition_point > 1.0f)
s->transition_point = 1.0f;
else if (s->transition_point < 0.001f)
s->transition_point = 0.001f;
s->transition_a_mul = (1.0f / s->transition_point);
s->transition_b_mul = (1.0f / (1.0f - s->transition_point));
obs_transition_enable_fixed(s->source, true,
(uint32_t)(s->duration_ns / 1000000));
calldata_free(&cd);
obs_source_add_active_child(s->source, s->media_source);
}
s->transitioning = true;
}
static void stinger_transition_stop(void *data)
{
struct stinger_info *s = data;
if (s->media_source)
obs_source_remove_active_child(s->source, s->media_source);
s->transitioning = false;
}
static void stinger_enum_active_sources(void *data,
obs_source_enum_proc_t enum_callback, void *param)
{
struct stinger_info *s = data;
if (s->media_source && s->transitioning)
enum_callback(s->source, s->media_source, param);
}
static void stinger_enum_all_sources(void *data,
obs_source_enum_proc_t enum_callback, void *param)
{
struct stinger_info *s = data;
if (s->media_source)
enum_callback(s->source, s->media_source, param);
}
#define FILE_FILTER \
"Video Files (*.mp4 *.ts *.mov *.wmv *.flv *.mkv *.avi *.gif *.webm);;"
static bool transition_point_type_modified(obs_properties_t *ppts,
obs_property_t *p, obs_data_t *s)
{
int64_t type = obs_data_get_int(s, "tp_type");
p = obs_properties_get(ppts, "transition_point");
if (type == TIMING_TIME)
obs_property_set_description(p,
obs_module_text("TransitionPoint"));
else
obs_property_set_description(p,
obs_module_text("TransitionPointFrame"));
return true;
}
static obs_properties_t *stinger_properties(void *data)
{
obs_properties_t *ppts = obs_properties_create();
obs_properties_set_flags(ppts, OBS_PROPERTIES_DEFER_UPDATE);
obs_properties_add_path(ppts, "path",
obs_module_text("VideoFile"),
OBS_PATH_FILE,
FILE_FILTER, NULL);
obs_property_t *list = obs_properties_add_list(ppts, "tp_type",
obs_module_text("TransitionPointType"),
OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
obs_property_list_add_int(list,
obs_module_text("TransitionPointTypeTime"),
TIMING_TIME);
obs_property_list_add_int(list,
obs_module_text("TransitionPointTypeFrame"),
TIMING_FRAME);
obs_property_set_modified_callback(list, transition_point_type_modified);
obs_properties_add_int(ppts, "transition_point",
obs_module_text("TransitionPoint"),
0, 120000, 1);
obs_property_t *monitor_list = obs_properties_add_list(ppts,
"audio_monitoring", obs_module_text("AudioMonitoring"),
OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
obs_property_list_add_int(monitor_list,
obs_module_text("AudioMonitoring.None"),
OBS_MONITORING_TYPE_NONE);
obs_property_list_add_int(monitor_list,
obs_module_text("AudioMonitoring.MonitorOnly"),
OBS_MONITORING_TYPE_MONITOR_ONLY);
obs_property_list_add_int(monitor_list,
obs_module_text("AudioMonitoring.Both"),
OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT);
obs_property_t *audio_fade_style = obs_properties_add_list(ppts,
"audio_fade_style", obs_module_text("AudioFadeStyle"),
OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
obs_property_list_add_int(audio_fade_style,
obs_module_text("AudioFadeStyle.FadeOutFadeIn"),
FADE_STYLE_FADE_OUT_FADE_IN);
obs_property_list_add_int(audio_fade_style,
obs_module_text("AudioFadeStyle.CrossFade"),
FADE_STYLE_CROSS_FADE);
UNUSED_PARAMETER(data);
return ppts;
}
struct obs_source_info stinger_transition = {
.id = "obs_stinger_transition",
.type = OBS_SOURCE_TYPE_TRANSITION,
.get_name = stinger_get_name,
.create = stinger_create,
.destroy = stinger_destroy,
.update = stinger_update,
.video_render = stinger_video_render,
.audio_render = stinger_audio_render,
.get_properties = stinger_properties,
.enum_active_sources = stinger_enum_active_sources,
.enum_all_sources = stinger_enum_all_sources,
.transition_start = stinger_transition_start,
.transition_stop = stinger_transition_stop
};