Merge branch 'develop' into versioning

This commit is contained in:
Florian Küpper authored and GitHub committed 2017-08-22 10:32:19 +02:00
commit ecc8142325
17 files changed
+1621 -890

No files matched your search

+9
View File
@@ -0,0 +1,9 @@
Write-Host "Deployment finished -> do en empty commit on the gh-pages branch to update the page"
cd ..
git clone -q "https://github.com/Vocaluxe/Vocaluxe.git" -b "gh-pages" --single-branch "VocaluxeWeb"
cd VocaluxeWeb
git config --global user.email "noreply@vocaluxe.org"
git config --global user.name "VocaluxeBuildBot"
git commit --allow-empty -m "Trigger page update after a new publish (triggered by $Env:APPVEYOR_REPO_COMMIT_MESSAGE [$Env:APPVEYOR_REPO_COMMIT])"
git push -q "https://$($Env:GitHubKey):x-oauth-basic@github.com/Vocaluxe/Vocaluxe.git" "gh-pages"
cd ..\Vocaluxe
+17 -9
View File
@@ -7,6 +7,8 @@ else{
Return;
}
$Env:IS_BETA_RELEASE = ($Env:APPVEYOR_REPO_TAG_NAME -match "beta")
$getRelaseInfoParams = @{
Uri = "https://api.github.com/repos/Vocaluxe/Vocaluxe/releases/tags/$targetTag";
Method = 'GET';
@@ -23,20 +25,26 @@ catch [System.Net.WebException]
# No Release found for this tag
$statusCode = [int]$_.Exception.Response.StatusCode
$html = $_.Exception.Response.StatusDescription
Write-Host "No Release found for this tag ($html): $($Env:APPVEYOR_REPO_TAG_NAME)"
Write-Host "No Release found for this tag ($html): $targetTag"
Return;
}
$assetId = ($result.assets | where {$_.name -EQ "Vocaluxe_$($Env:APPVEYOR_REPO_TAG_NAME)_Windows_$($Env:PLATFORM).zip" } | Select-Object -first 1 ).id
$releaseId = $result.id
if(!$assetId){
# No matching asset found in this release
Write-Host "No matching asset found in this release: Vocaluxe_$($Env:APPVEYOR_REPO_TAG_NAME)_Windows_$($Env:PLATFORM).zip"
if(!$releaseId){
# No matching release found in this release
Write-Host "No matching release found"
Return;
}
if($result.body -match $Env:APPVEYOR_REPO_COMMIT){
# An other build already recreated the release
Write-Host "An other build already recreated the release"
Return;
}
$deleteAssetParams = @{
Uri = "https://api.github.com/repos/Vocaluxe/Vocaluxe/releases/assets/$assetId";
Uri = "https://api.github.com/repos/Vocaluxe/Vocaluxe/releases/$releaseId";
Method = 'DELETE';
Headers = @{
Authorization = 'Basic ' + [Convert]::ToBase64String(
@@ -45,14 +53,14 @@ $deleteAssetParams = @{
}
try{
$result = Invoke-RestMethod @deleteAssetParams
Write-Host "Successfully deleted asset: Vocaluxe_$($Env:APPVEYOR_REPO_TAG_NAME)_Windows_$($Env:PLATFORM).zip"
Write-Host "Successfully deleted release for: $targetTag"
}
catch [System.Net.WebException]
{
# Could not delete asset
# Could not delete release
$statusCode = [int]$_.Exception.Response.StatusCode
$html = $_.Exception.Response.StatusDescription
Write-Host "Could not delete asset ($html): Vocaluxe_$($Env:APPVEYOR_REPO_TAG_NAME)_Windows_$($Env:PLATFORM).zip"
Write-Host "Could not delete release ($html) for: $targetTag"
Return;
}
+4
View File
@@ -73,6 +73,8 @@
<string name="TR_CONFIG_TIMERMODE_TOTAL">Celkem</string>
<string name="TR_CONFIG_TIMERLOOK_NORMAL">Normální</string>
<string name="TR_CONFIG_TIMERLOOK_EXPANDED">Rozšířené</string>
<string name="TR_CONFIG_HIGHSCORE_LIST_ALL">Uvést vše</string>
<string name="TR_CONFIG_HIGHSCORE_LIST_BEST">Uvést nejlepší</string>
<string name="TR_CONFIG_OWN_MUSIC">Vlastní hudba a hudba na pozadí</string>
<string name="TR_CONFIG_NO_OWN_MUSIC">Žádná vlastní hudba</string>
<string name="TR_CONFIG_ONLY_OWN_MUSIC">Pouze vlastní hudba</string>
@@ -183,6 +185,7 @@
<string name="TR_SCREENOGAME_TABS">Karty</string>
<string name="TR_SCREENOGAME_DIFFICULTY">Obtížnost hry</string>
<string name="TR_SCREENOGAME_TIMERMODE">Režim časomíry</string>
<string name="TR_SCREENOGAME_HIGHSCORESTYLE">Styl pro nejlepší výsledky</string>
<string name="TR_SCREENORECORD_OPTIONS">Nastavení nahrávání</string>
<string name="TR_SCREENORECORD_DEVICE">Zařízení</string>
<string name="TR_SCREENORECORD_INPUT">Vstup</string>
@@ -201,6 +204,7 @@
<string name="TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE">Zdroj hudby na pozadí</string>
<string name="TR_SCREENOSOUND_PREVIEWMUSICVOLUME">Hlasitost ukázky</string>
<string name="TR_SCREENOSOUND_GAMEMUSICVOLUME">Hlasitost hry</string>
<string name="TR_SCREENOSOUND_KARAOKEEFFECT">Efekt Karaoke</string>
<string name="TR_SCREENOTHEME_OPTIONS">Nastavení tématu</string>
<string name="TR_SCREENOTHEME_THEME">Téma</string>
<string name="TR_SCREENOTHEME_SKIN">Vzhled</string>
+9
View File
@@ -46,6 +46,7 @@
<string name="TR_CONFIG_LEVEL2">Niveau 2</string>
<string name="TR_CONFIG_LEVEL3">Niveau 3</string>
<string name="TR_CONFIG_LEVEL_MAX">Max</string>
<string name="TR_CONFIG_LIST">Afficher</string>
<string name="TR_CONFIG_DREIDEL">Caroussel</string>
<string name="TR_CONFIG_TILE_BOARD">Damier</string>
<string name="TR_CONFIG_BOOK">Livre</string>
@@ -72,6 +73,8 @@
<string name="TR_CONFIG_TIMERMODE_TOTAL">Total</string>
<string name="TR_CONFIG_TIMERLOOK_NORMAL">Normal</string>
<string name="TR_CONFIG_TIMERLOOK_EXPANDED">Développé</string>
<string name="TR_CONFIG_HIGHSCORE_LIST_ALL">Tout afficher</string>
<string name="TR_CONFIG_HIGHSCORE_LIST_BEST">Afficher les meilleurs</string>
<string name="TR_CONFIG_OWN_MUSIC">Musique personnelle et Musique de fond</string>
<string name="TR_CONFIG_NO_OWN_MUSIC">Pas de Musique personnelle</string>
<string name="TR_CONFIG_ONLY_OWN_MUSIC">Seulement la Musique personnelle</string>
@@ -79,6 +82,10 @@
<string name="TR_CONFIG_FADEPLAYERINFO_ALL">Tout</string>
<string name="TR_CONFIG_FADEPLAYERINFO_INFO">Seulement noms et avatars</string>
<string name="TR_CONFIG_FADEPLAYERINFO_OFF">Rien</string>
<string name="TR_CONFIG_LYRICSTYLE_FILL">Remplir</string>
<string name="TR_CONFIG_LYRICSTYLE_JUMP">Sauter</string>
<string name="TR_CONFIG_LYRICSTYLE_SLIDE">Glisser</string>
<string name="TR_CONFIG_LYRICSTYLE_ZOOM">Zoomer</string>
<string name="TR_CONFIG_LYRICSPOSITION_BOTTOM">En bas</string>
<string name="TR_CONFIG_LYRICSPOSITION_TOP">En haut</string>
<string name="TR_CONFIG_LYRICSPOSITION_BOTH">En haut et en bas</string>
@@ -178,6 +185,7 @@
<string name="TR_SCREENOGAME_TABS">Dossiers</string>
<string name="TR_SCREENOGAME_DIFFICULTY">Difficulté du Jeu</string>
<string name="TR_SCREENOGAME_TIMERMODE">Mode du Minuteur</string>
<string name="TR_SCREENOGAME_HIGHSCORESTYLE">Style meilleur score</string>
<string name="TR_SCREENORECORD_OPTIONS">Options d'Enregistrement</string>
<string name="TR_SCREENORECORD_DEVICE">Appareil</string>
<string name="TR_SCREENORECORD_INPUT">Entrée</string>
@@ -196,6 +204,7 @@
<string name="TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE">Source de la Musique de fond</string>
<string name="TR_SCREENOSOUND_PREVIEWMUSICVOLUME">Volume de la Musique de prévisualisation</string>
<string name="TR_SCREENOSOUND_GAMEMUSICVOLUME">Volume de la Musique du jeu</string>
<string name="TR_SCREENOSOUND_KARAOKEEFFECT">Effet Karaoké</string>
<string name="TR_SCREENOTHEME_OPTIONS">Options du Thème</string>
<string name="TR_SCREENOTHEME_THEME">Thème</string>
<string name="TR_SCREENOTHEME_SKIN">Environnement graphique</string>
+7
View File
@@ -46,6 +46,7 @@
<string name="TR_CONFIG_LEVEL2">Livello 2</string>
<string name="TR_CONFIG_LEVEL3">Livello 3</string>
<string name="TR_CONFIG_LEVEL_MAX">Max</string>
<string name="TR_CONFIG_LIST">Elenco</string>
<string name="TR_CONFIG_DREIDEL">Dreidel</string>
<string name="TR_CONFIG_TILE_BOARD">Scacchiera</string>
<string name="TR_CONFIG_BOOK">Libro</string>
@@ -72,6 +73,8 @@
<string name="TR_CONFIG_TIMERMODE_TOTAL">Totale</string>
<string name="TR_CONFIG_TIMERLOOK_NORMAL">Normale</string>
<string name="TR_CONFIG_TIMERLOOK_EXPANDED">Espanso</string>
<string name="TR_CONFIG_HIGHSCORE_LIST_ALL">Elenco tutti</string>
<string name="TR_CONFIG_HIGHSCORE_LIST_BEST">Elenco migliori</string>
<string name="TR_CONFIG_OWN_MUSIC">Musica personale e musica di sfondo</string>
<string name="TR_CONFIG_NO_OWN_MUSIC">Nessuna musica personale</string>
<string name="TR_CONFIG_ONLY_OWN_MUSIC">Solo musica personale</string>
@@ -79,6 +82,9 @@
<string name="TR_CONFIG_FADEPLAYERINFO_ALL">Tutto</string>
<string name="TR_CONFIG_FADEPLAYERINFO_INFO">Solo nomi e avatar</string>
<string name="TR_CONFIG_FADEPLAYERINFO_OFF">Niente</string>
<string name="TR_CONFIG_LYRICSTYLE_FILL">Riempi</string>
<string name="TR_CONFIG_LYRICSTYLE_JUMP">Salta</string>
<string name="TR_CONFIG_LYRICSTYLE_ZOOM">Zoom</string>
<string name="TR_CONFIG_LYRICSPOSITION_BOTTOM">Sotto</string>
<string name="TR_CONFIG_LYRICSPOSITION_TOP">Sopra</string>
<string name="TR_CONFIG_LYRICSPOSITION_BOTH">Sopra e sotto</string>
@@ -196,6 +202,7 @@
<string name="TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE">Sorgente musica di sfondo</string>
<string name="TR_SCREENOSOUND_PREVIEWMUSICVOLUME">Anteprima volume musica</string>
<string name="TR_SCREENOSOUND_GAMEMUSICVOLUME">Volume musica di gioco</string>
<string name="TR_SCREENOSOUND_KARAOKEEFFECT">Effetto karaoke</string>
<string name="TR_SCREENOTHEME_OPTIONS">Opzioni tema</string>
<string name="TR_SCREENOTHEME_THEME">Tema</string>
<string name="TR_SCREENOTHEME_SKIN">Skin</string>
@@ -15,6 +15,8 @@
<string name="TR_SCREENCONFIG_NUMPLAYERS">Počet hráčů</string>
<string name="TR_SCREENCONFIG_NUMMICS">Počet mikrofonů</string>
<string name="TR_SCREENCONFIG_NUMROUNDS">Počet kol</string>
<string name="TR_SCREENCONFIG_NUMJOKERS">Počet žolíků</string>
<string name="TR_SCREENCONFIG_REFILLJOKERS">Doplnit žolíky každé kolo</string>
<string name="TR_SCREENNAMES_TITLE">Soutěžní režim: Výběr hráče</string>
<string name="TR_SCREENNAMES_BUTTON_RANDOM">Vybrat náhodně</string>
<string name="TR_SCREENMAIN_TITLE">Soutěžní režim: Přehled</string>
@@ -15,6 +15,8 @@
<string name="TR_SCREENCONFIG_NUMPLAYERS">Nombre de joueurs</string>
<string name="TR_SCREENCONFIG_NUMMICS">Nombre de micros</string>
<string name="TR_SCREENCONFIG_NUMROUNDS">Nombre de tours</string>
<string name="TR_SCREENCONFIG_NUMJOKERS">Nombre de jokers</string>
<string name="TR_SCREENCONFIG_REFILLJOKERS">Remplir de nouveau les jokers à tour</string>
<string name="TR_SCREENNAMES_TITLE">Mode Challenge: Choix des joueurs</string>
<string name="TR_SCREENNAMES_BUTTON_RANDOM">Sélectionner au hasard</string>
<string name="TR_SCREENMAIN_TITLE">Mode Challenge: Résumé</string>
@@ -60,7 +60,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
// ReSharper disable ClassNeverInstantiated.Global
public sealed class CPartyModeTicTacToe : CPartyMode
// ReSharper restore ClassNeverInstantiated.Global
// ReSharper restore ClassNeverInstantiated.Global
{
public override int MinMics
{
@@ -96,7 +96,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe
get { return 10; }
}
private enum EStage
public readonly EGameMode[] AvailableGameModes = { EGameMode.TR_GAMEMODE_NORMAL, EGameMode.TR_GAMEMODE_SHORTSONG, EGameMode.TR_GAMEMODE_DUET };
private enum EStage
{
Config,
Names,
@@ -119,7 +121,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public int CategoryIndex;
public int PlaylistID;
public EGameMode GameMode;
public int GameMode;
public List<CRound> Rounds;
public List<int> Songs;
@@ -160,7 +162,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
SongSource = ESongSource.TR_ALLSONGS,
PlaylistID = 0,
CategoryIndex = 0,
GameMode = EGameMode.TR_GAMEMODE_NORMAL,
GameMode = 0,
Rounds = new List<CRound>(),
Songs = new List<int>(),
NumJokerRandom = new int[2],
@@ -432,20 +434,20 @@ namespace VocaluxeLib.PartyModes.TicTacToe
for (int i = 0; i < CBase.Playlist.GetSongCount(GameData.PlaylistID); i++)
{
int id = CBase.Playlist.GetSong(GameData.PlaylistID, i).SongID;
if (CBase.Songs.GetSongByID(id).AvailableGameModes.Contains(GameData.GameMode))
if (CBase.Songs.GetSongByID(id).AvailableGameModes.Contains(AvailableGameModes[GameData.GameMode]))
GameData.Songs.Add(id);
}
break;
case ESongSource.TR_ALLSONGS:
ReadOnlyCollection<CSong> avSongs = CBase.Songs.GetSongs();
GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(GameData.GameMode)).Select(song => song.ID));
GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(AvailableGameModes[GameData.GameMode])).Select(song => song.ID));
break;
case ESongSource.TR_CATEGORY:
CBase.Songs.SetCategory(GameData.CategoryIndex);
avSongs = CBase.Songs.GetVisibleSongs();
GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(GameData.GameMode)).Select(song => song.ID));
GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(AvailableGameModes[GameData.GameMode])).Select(song => song.ID));
CBase.Songs.SetCategory(-1);
break;
@@ -493,7 +495,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
if (isDuet)
players[1].VoiceNr = 1;
CBase.Game.AddSong(round.SongID, GameData.GameMode);
CBase.Game.AddSong(round.SongID, AvailableGameModes[GameData.GameMode]);
}
private void _SetNumJokers()
@@ -160,8 +160,8 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_SelectSlides[_SelectSlideGameMode].Visible = true;
_SelectSlides[_SelectSlideGameMode].Clear();
_SelectSlides[_SelectSlideGameMode].SetValues<EGameMode>((int)_PartyMode.GameData.GameMode);
_SelectSlides[_SelectSlideGameMode].RemoveValue(EGameMode.TR_GAMEMODE_MEDLEY.ToString());
_SelectSlides[_SelectSlideGameMode].AddValues(_PartyMode.AvailableGameModes.Select(gm => gm.ToString()));
_SelectSlides[_SelectSlideGameMode].Selection = _PartyMode.GameData.GameMode;
}
private void _UpdateSlides()
@@ -171,9 +171,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_PartyMode.GameData.SongSource = (ESongSource)_SelectSlides[_SelectSlideSongSource].Selection;
_PartyMode.GameData.PlaylistID = _SelectSlides[_SelectSlidePlaylist].Selection;
_PartyMode.GameData.CategoryIndex = _SelectSlides[_SelectSlideCategory].Selection;
_PartyMode.GameData.GameMode = (EGameMode)_SelectSlides[_SelectSlideGameMode].Selection;
_PartyMode.GameData.GameMode = _SelectSlides[_SelectSlideGameMode].Selection;
EGameMode gm = _PartyMode.GameData.GameMode;
EGameMode gm = _PartyMode.AvailableGameModes[_PartyMode.GameData.GameMode];
if (_PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST)
{
+59 -59
View File
@@ -58,7 +58,22 @@ namespace Vocaluxe.Lib.Video.Acinerella
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct SACFileInfo
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
public readonly string title;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
public readonly string author;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
public readonly string copyright;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
public readonly string comment;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
public readonly string album;
public readonly int year;
public readonly int track;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public readonly string genre;
public readonly Int64 Duration;
public readonly int Bitrate;
}
// TAc_instance represents an Acinerella instance. Each instance can open and
@@ -105,14 +120,17 @@ namespace Vocaluxe.Lib.Video.Acinerella
}
// Contains information about an Acinerella stream.
[StructLayout(LayoutKind.Sequential)]
[StructLayout(LayoutKind.Explicit)]
public struct SACStreamInfo
{
//Contains the type of the stream.
[FieldOffset(0)]
public readonly EACStreamType StreamType;
//Additional info about the stream
[FieldOffset(8)]
public SACAudioStreamInfo AudioInfo;
[FieldOffset(8)]
public SACVideoStreamInfo VideoInfo;
}
@@ -128,7 +146,7 @@ namespace Vocaluxe.Lib.Video.Acinerella
//The timecode of the currently decoded picture in seconds.
public readonly double Timecode;
public readonly double VideoClock;
//public readonly double VideoClock;
//Contains information about the stream the decoder is attached to.
public SACStreamInfo StreamInfo;
@@ -219,14 +237,14 @@ namespace Vocaluxe.Lib.Video.Acinerella
// Initializes an Acinerella instance.
//function ac_init(): PAc_instance; cdecl; external ac_dll;
[DllImport(_AcDll, EntryPoint = "ac_init", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
private static extern IntPtr _ac_init();
[DllImport(_AcDll, EntryPoint = "ac_init_of", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
private static extern IntPtr _ac_init(EACOutputFormat outputFormat);
public static IntPtr AcInit()
{
lock (_Lock)
{
return _ac_init();
return _ac_init(EACOutputFormat.ACOutputRGBA32);
}
}
@@ -243,52 +261,7 @@ namespace Vocaluxe.Lib.Video.Acinerella
}
}
// Opens a media file.
// @param(inst specifies the Acinerella Instance the stream should be opened for)
// @param(sender specifies a pointer that is sent to all callback functions to
// allow you to do object orientated programming. May be NULL.)
// @param(open_proc specifies the callback function that is called, when the
// media file is opened. May be NULL.)
// @param(close_proc specifies the callback function that is called when the media
// file is closed. May be NULL.)
/*function ac_open(
inst: PAc_instance;
sender: Pointer;
open_proc: TAc_openclose_callback;
read_proc: TAc_read_callback;
seek_proc: TAc_seek_callback;
close_proc: TAc_openclose_callback;
proberesult: PAc_proberesult): integer; cdecl; external ac_dll;
*/
/*
[DllImport(AcDll, EntryPoint = "ac_open", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
private static extern Int32 _ac_open(
IntPtr PAc_instance,
IntPtr sender,
TAc_openclose_callback open_proc,
TAc_read_callback read_proc,
TAc_seek_callback seek_proc,
TAc_openclose_callback close_proc,
IntPtr proberesult
);
public static Int32 ac_open(
IntPtr PAc_instance,
IntPtr sender,
TAc_openclose_callback open_proc,
TAc_read_callback read_proc,
TAc_seek_callback seek_proc,
TAc_openclose_callback close_proc,
IntPtr proberesult
)
{
lock (_GetLockToken(pAcDecoder))
{
return _ac_open(PAc_instance, sender, open_proc, read_proc, seek_proc, close_proc, proberesult);
}
}*/
[DllImport(_AcDll, EntryPoint = "ac_open", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
[DllImport(_AcDll, EntryPoint = "ac_open_file", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
private static extern Int32 _ac_open2(IntPtr pAcInstance, string filename);
// ReSharper disable UnusedMethodReturnValue.Global
@@ -337,28 +310,55 @@ namespace Vocaluxe.Lib.Video.Acinerella
[DllImport(_AcDll, EntryPoint = "ac_free_package", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
public static extern void ac_free_package(IntPtr pAcPackage);
[DllImport(_AcDll, EntryPoint = "ac_create_video_decoder", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
private static extern IntPtr _ac_create_video_decoder(IntPtr pAcInstance);
[DllImport(_AcDll, EntryPoint = "ac_create_decoder", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
private static extern IntPtr _ac_create_decoder(IntPtr pAcInstance, int i);
public static IntPtr AcCreateVideoDecoder(IntPtr pAcInstance)
{
lock (_GetLockToken(pAcInstance))
{
return _ac_create_video_decoder(pAcInstance);
var firstVideoStreamId = _GetFirstStreamByType(pAcInstance, EACStreamType.ACStreamTypeVideo);
if (firstVideoStreamId < 0)
{
throw new ArgumentException("The instace does not contain a video stream.");
}
return _ac_create_decoder(pAcInstance, firstVideoStreamId);
}
}
[DllImport(_AcDll, EntryPoint = "ac_create_audio_decoder", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
private static extern IntPtr _ac_create_audio_decoder(IntPtr pAcInstance);
public static IntPtr AcCreateAudioDecoder(IntPtr pAcInstance)
{
lock (_GetLockToken(pAcInstance))
{
return _ac_create_audio_decoder(pAcInstance);
var firstAudioStreamId = _GetFirstStreamByType(pAcInstance, EACStreamType.ACStreamTypeAudio);
if (firstAudioStreamId < 0)
{
throw new ArgumentException("The instace does not contain a audio stream.");
}
return _ac_create_decoder(pAcInstance, firstAudioStreamId);
}
}
private static int _GetFirstStreamByType(IntPtr pAcInstance, EACStreamType type)
{
var instance = (SACInstance)Marshal.PtrToStructure(pAcInstance, typeof(SACInstance));
int currentStream = 0;
SACStreamInfo currentStreamInfo;
while (currentStream < instance.StreamCount)
{
AcGetStreamInfo(pAcInstance, currentStream, out currentStreamInfo);
if (currentStreamInfo.StreamType == type)
return currentStream;
currentStream++;
}
return -1;
}
// Frees an created decoder.
//procedure ac_free_decoder(pDecoder: PAc_decoder); cdecl; external ac_dll;
[DllImport(_AcDll, EntryPoint = "ac_free_decoder", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
@@ -447,6 +447,7 @@ namespace Vocaluxe.Lib.Video.Acinerella
{
_Free();
Stop();
return;
}
while (!_Terminated)
File diff suppressed because it is too large. Load diff
+466 -158
View File
@@ -15,8 +15,8 @@
along with Acinerella. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef VIDEOPLAY_H
#define VIDEOPLAY_H
#ifndef _ACINERELLA_H_
#define _ACINERELLA_H_
#include <stdint.h>
#include <stdio.h>
@@ -24,187 +24,495 @@
#ifdef _WIN32
#define CALL_CONVT __cdecl
#define EXTERN extern __declspec(dllexport)
#else
#define CALL_CONVT
#define CALL_CONVT
#define EXTERN extern
#endif
typedef long long int64;
/**
* Defines the type of an Acinerella media stream. Currently only video and
* audio streams are supported, subtitle and data streams will be marked as
* "unknown".
*/
typedef enum _ac_stream_type {
/**
* The type of the media stream is not known. This kind of stream can not be
* decoded.
*/
AC_STREAM_TYPE_VIDEO = 0,
/*Defines the type of an Acinerella media stream. Currently only video and
audio streams are supported, subtitle and data streams will be marked as
"unknown".*/
enum _ac_stream_type {
/*The type of the media stream is not known. This kind of stream can not be
decoded.*/
AC_STREAM_TYPE_VIDEO = 0,
/*This media stream is a video stream.*/
AC_STREAM_TYPE_AUDIO = 1,
/*This media stream is an audio stream.*/
AC_STREAM_TYPE_UNKNOWN = -1
};
/**
* This media stream is a video stream.
*/
AC_STREAM_TYPE_AUDIO = 1,
typedef enum _ac_stream_type ac_stream_type;
/**
* This media stream is an audio stream.
*/
AC_STREAM_TYPE_UNKNOWN = -1
} ac_stream_type;
/*Defines the type of an Acinerella media decoder.*/
enum _ac_decoder_type {
/*This decoder is used to decode a video stream.*/
AC_DECODER_TYPE_VIDEO = 0,
/* This decoder is used to decode an audio stram.*/
AC_DECODER_TYPE_AUDIO = 1
};
/**
* Defines the type of an Acinerella media decoder.
*/
typedef enum _ac_decoder_type {
/**
* This decoder is used to decode a video stream.
*/
AC_DECODER_TYPE_VIDEO = 0,
typedef enum _ac_decoder_type ac_decoder_type;
/**
* This decoder is used to decode an audio stram.
*/
AC_DECODER_TYPE_AUDIO = 1
} ac_decoder_type;
/*Defines the format video/image data is outputted in*/
enum _ac_output_format {
AC_OUTPUT_RGB24 = 0,
AC_OUTPUT_BGR24 = 1,
AC_OUTPUT_RGBA32 = 2,
AC_OUTPUT_BGRA32 = 3
};
/**
* Defines the format video/image data is returned in.
*/
typedef enum _ac_output_format {
AC_OUTPUT_RGB24 = 0,
AC_OUTPUT_BGR24 = 1,
AC_OUTPUT_RGBA32 = 2,
AC_OUTPUT_BGRA32 = 3,
AC_OUTPUT_YUV420P = 4,
AC_OUTPUT_UYVY422 = 5,
AC_OUTPUT_YUYV422 = 6
} ac_output_format;
typedef enum _ac_output_format ac_output_format;
/*Contains information about the whole file/stream that has been opened. Default values are ""
/*Contains information about the whole file/stream that has been opened. Default
values are ""
for strings and -1 for integer values.*/
struct _ac_file_info {
/*Length of the file*/
int64_t duration;
};
typedef struct _ac_file_info {
/**
* Title of the media file
*/
char title[512];
typedef struct _ac_file_info ac_file_info;
typedef ac_file_info* lp_ac_file_info;
/**
* Author or artist of the media file.
*/
char author[512];
/*TAc_instance represents an Acinerella instance. Each instance can open and
decode one file at once. There can be only 26 Acinerella instances opened at
once.*/
struct _ac_instance {
/*If true, the instance currently opened a media file.*/
bool opened;
/*Contains the count of streams the media file has. This value is available
after calling the ac_open function.*/
int stream_count;
/*Set this value to change the image output format */
ac_output_format output_format;
/*Contains information about the opened stream/file*/
ac_file_info info;
};
/**
* Copyright information.
*/
char copyright[512];
typedef struct _ac_instance ac_instance;
/*Pointer on the Acinerella instance record.*/
typedef ac_instance* lp_ac_instance;
/**
* Comment stored in the file.
*/
char comment[512];
/*Contains information about an Acinerella video stream.*/
/**
* Album the media file is from.
*/
char album[512];
/**
* Year in which the media file was created.
*/
int year;
/**
* Track number.
*/
int track;
/**
* Genre of the media file.
*/
char genre[32];
/**
* Length of the file in milliseconds.
*/
int64_t duration;
/**
* Bitrate of the file.
*/
int bitrate;
} ac_file_info;
typedef ac_file_info *lp_ac_file_info;
/**
* ac_instance represents an Acinerella instance. Each instance can open and
* decode one file at once.
*/
typedef struct _ac_instance {
/**
* If true, the instance currently opened a media file.
*/
bool opened;
/**
* Contains the count of streams the media file has. This value is available
* after calling the ac_open function.
*/
int stream_count;
/**
* Set this value to change the image output format
*/
ac_output_format output_format;
/**
* Contains information about the opened stream/file
*/
ac_file_info info;
} ac_instance;
/**
* Pointer on the Acinerella instance record.
*/
typedef ac_instance *lp_ac_instance;
/**
* Contains information about an Acinerella video stream.
*/
struct _ac_video_stream_info {
/*The width of one frame.*/
int frame_width;
/*The height of one frame.*/
int frame_height;
/*The width of one pixel. 1.07 for 4:3 format, 1,42 for the 16:9 format*/
float pixel_aspect;
/*Frames per second that should be played.*/
double frames_per_second;
};
typedef struct _ac_video_stream_info ac_video_stream_info;
/*Contains information about an Acinerella audio stream.*/
struct _ac_audio_stream_info {
/*Samples per second. Default values are 44100 or 48000.*/
int samples_per_second;
/*Bits per sample. Can be 8 or 16 Bit.*/
int bit_depth;
/*Count of channels in the audio stream.*/
int channel_count;
};
typedef struct _ac_audio_stream_info ac_audio_stream_info;
/**
* The width of one frame.
*/
int frame_width;
/**
* The height of one frame.
*/
int frame_height;
/**
* The width of one pixel. 1.07 for 4:3 format, 1,42 for the 16:9 format
*/
float pixel_aspect;
/**
* Frames per second that should be played.
*/
double frames_per_second;
};
/**
* Contains information about an Acinerella audio stream.
*/
struct _ac_audio_stream_info {
/**
* Samples per second. Default values are 44100 or 48000.
*/
int samples_per_second;
/**
* Bits per sample. Can be 8, 16 or 32 Bit. In the latter case the data is
* in floating point format.
*/
int bit_depth;
/**
* Count of channels in the audio stream.
*/
int channel_count;
};
/**
* Additional info about the stream - use "video_info" when the stream
* is an video stream, "audio_info" when the stream is an audio stream.
*/
union _ac_additional_stream_info {
struct _ac_audio_stream_info audio_info;
struct _ac_video_stream_info video_info;
};
/*Contains information about an Acinerella stream.*/
struct _ac_stream_info {
/*Contains the type of the stream.*/
ac_stream_type stream_type;
ac_audio_stream_info audio_info;
ac_video_stream_info video_info;
};
typedef struct _ac_stream_info {
/**
* Contains the type of the stream.
*/
ac_stream_type stream_type;
typedef struct _ac_stream_info ac_stream_info;
/*Pointer on TAc_stream_info*/
typedef ac_stream_info* lp_ac_stream_info;
/**
* Additional data depending on the stream type. Either access the
* "audio_info" or the "video_info" field, depending on the value stored in
* the "stream_type" member.
*/
union _ac_additional_stream_info additional_info;
} ac_stream_info;
/*Contains information about an Acinerella video/audio decoder.*/
struct _ac_decoder {
/*Pointer on the Acinerella instance*/
lp_ac_instance pacInstance;
/*Contains the type of the decoder.*/
ac_decoder_type type;
/*The timecode of the currently decoded picture in seconds */
double timecode;
double video_clock;
/*Contains information about the stream the decoder is attached to.*/
ac_stream_info stream_info;
/*The index of the stream the decoder is attached to.*/
int stream_index;
/*Pointer to the buffer which contains the data.*/
char *pBuffer;
/*Size of the data in the buffer.*/
int buffer_size;
};
/**
* Pointer on ac_stream_info
*/
typedef ac_stream_info *lp_ac_stream_info;
typedef struct _ac_decoder ac_decoder;
/*Pointer on TAc_decoder.*/
typedef ac_decoder* lp_ac_decoder;
/**
* Contains information about an Acinerella video/audio decoder.
*/
typedef struct _ac_decoder {
/**
* Pointer on the Acinerella instance.
*/
lp_ac_instance pacInstance;
/*Contains information about an Acinerella package.*/
struct _ac_package {
/*The stream the package belongs to.*/
int stream_index;
};
/**
* Contains the type of the decoder.
*/
ac_decoder_type type;
typedef struct _ac_package ac_package;
/*Pointer on TAc_package*/
typedef ac_package* lp_ac_package;
/**
* The timecode of the currently decoded picture in seconds.
*/
double timecode;
/*Initializes an Acinerella instance.*/
extern lp_ac_instance CALL_CONVT ac_init(void);
extern void CALL_CONVT ac_free(lp_ac_instance pacInstance);
/**
* Contains information about the stream the decoder is attached to.
*/
ac_stream_info stream_info;
/*Opens a media file.*/
extern int CALL_CONVT ac_open2(
lp_ac_instance pacInstance,
const char* filename
);
/*Closes an opened media file.*/
extern void CALL_CONVT ac_close(lp_ac_instance pacInstance);
/*Stores information in "pInfo" about stream number "nb".*/
extern void CALL_CONVT ac_get_stream_info(lp_ac_instance pacInstance, int nb, lp_ac_stream_info info);
/**
* The index of the stream the decoder is attached to.
*/
int stream_index;
/*Reads a package from an opened media file.*/
extern lp_ac_package CALL_CONVT ac_read_package(lp_ac_instance pacInstance);
/*Frees a package that has been read.*/
extern void CALL_CONVT ac_free_package(lp_ac_package pPackage);
/**
* Pointer to the buffer which contains the data.
*/
uint8_t *pBuffer;
extern lp_ac_decoder CALL_CONVT ac_create_audio_decoder(lp_ac_instance pacInstance);
extern lp_ac_decoder CALL_CONVT ac_create_video_decoder(lp_ac_instance pacInstance);
/*Frees an created decoder.*/
extern void CALL_CONVT ac_free_decoder(lp_ac_decoder pDecoder);
/*Decodes a package using the specified decoder. The decodec data is stored in the
"buffer" property of the decoder.*/
extern int CALL_CONVT ac_decode_package(lp_ac_package pPackage, lp_ac_decoder pDecoder);
extern int CALL_CONVT ac_drop_decode_package(lp_ac_package pPackage, lp_ac_decoder pDecoder);
/**
* Size of the data in the buffer.
*/
int buffer_size;
} ac_decoder;
typedef ac_decoder *lp_ac_decoder;
/**
* Contains information about an Acinerella package.
*/
typedef struct _ac_package {
/*The stream the package belongs to.*/
int stream_index;
} ac_package;
typedef ac_package *lp_ac_package;
typedef void *lp_ac_proberesult;
/**
* Callback function used to ask the application to read data. Should return
* the number of bytes read or an value smaller than zero if an error occured.
*/
typedef int (CALL_CONVT *ac_read_callback)(void *sender, uint8_t *buf,
int size);
/**
* Callback function used to ask the application to seek.
*
* @param sender is the pointer specified in ac_open.
* @param pos is the position to which the stream should be seeked.
* @param whence specifies whether the seeking should be relative to the
* beginning of the file (0, SEEK_SET), relative to the current location (1,
* SEEK_CUR), or relative to the end of the file (2, SEEK_END)
* @return 0 if the function succeeds, -1 on failure.
*/
typedef int64_t (CALL_CONVT *ac_seek_callback)(void *sender, int64_t pos,
int whence);
/**
* Callback function that is used to notify the application when the data stream
* is opened or closed. For example the file pointer should be resetted to zero
* when the "open" function is called.
*/
typedef int (CALL_CONVT *ac_openclose_callback)(void *sender);
/**
* Initializes an Acinerella instance.
*
* @return a pointer at an acinerella instance. The instance must be freed using
* ac_free.
*/
EXTERN lp_ac_instance CALL_CONVT ac_init(void);
/**
* Initializes an Acinerella instance with a specific output format.
*
* @return a pointer at an acinerella instance. The instance must be freed using
* ac_free.
*/
EXTERN lp_ac_instance CALL_CONVT ac_init_of(ac_output_format outputFormat);
/**
* Frees a previously created Acinerella instance.
*
* @param pacInstance is the Acinerella instance that should be freed.
*/
EXTERN void CALL_CONVT ac_free(lp_ac_instance pacInstance);
/**
* Opens a media stream.
*
* @param inst specifies the Acinerella Instance the stream should be opened
* for.
* @param sender specifies a pointer that is sent to all callback functions to
* allow you to do object orientated programming. May be NULL.
* @param open_proc specifies the callback function that is called, when the
* media file is opened. May be NULL.
* @param seek_proc specifies the callback function that is called, when the
* ffmpeg decoder wants to seek in the file. May be NULL.
* @param close_proc specifies the callback function that is called when the
* media file is closed. May be NULL.
* @param proberesult is a pointer at a structure previously returned by
* ac_probe_input_buffer. May be NULL.
*/
EXTERN int CALL_CONVT
ac_open(lp_ac_instance pacInstance, void *sender,
ac_openclose_callback open_proc, ac_read_callback read_proc,
ac_seek_callback seek_proc, ac_openclose_callback close_proc,
lp_ac_proberesult proberesult);
/**
* Opens a media file.
*
* @param inst specifies the Acinerella Instance the stream should be opened
* for.
* @param file is the name of the file that should be opened.
*/
EXTERN int CALL_CONVT
ac_open_file(lp_ac_instance pacInstance, const char *filename);
/**
* Closes an opened media file.
*/
EXTERN void CALL_CONVT ac_close(lp_ac_instance pacInstance);
/**
* Stores information in "pInfo" about stream number "nb".
*/
EXTERN void CALL_CONVT ac_get_stream_info(lp_ac_instance pacInstance, int nb,
lp_ac_stream_info info);
/**
* Reads a package from an opened media file.
*
* @param pacInstance is the Acinerella instance from which the data should be
* read.
* @return a pointer at a ac_package structure or NULL on failure. The returned
* pointer must be freed with ac_free_package after use.
*/
EXTERN lp_ac_package CALL_CONVT ac_read_package(lp_ac_instance pacInstance);
/**
* Frees a package that has been read.
*
* @param pPackage is a pointer at the ac_package that should be freed. May be
* NULL in which case no operation is performed.
*/
EXTERN void CALL_CONVT ac_free_package(lp_ac_package pPackage);
/**
* Creates an decoder for the specified stream number. Returns NULL if no
* decoder could be found.
*/
EXTERN lp_ac_decoder CALL_CONVT
ac_create_decoder(lp_ac_instance pacInstance, int nb);
/**
* Frees an created decoder.
*/
EXTERN void CALL_CONVT ac_free_decoder(lp_ac_decoder pDecoder);
/**
* Decodes a package using the specified decoder. The decoded data is stored in
* the "buffer" property of the decoder.
*
* @param pPackage is the package that should be decoded, previously read by the
* ac_read_package method.
* @param pDecoder is the decoder instance that should be used to decode the
* package -- use the stream index stored in the package to determine the
* correct decoder.
*/
EXTERN int CALL_CONVT
ac_decode_package(lp_ac_package pPackage, lp_ac_decoder pDecoder);
/**
* Decodes a package using the specified decoder and skips it. Returns true if a frame was skiped.
*
* @param pPackage is the package that should be decoded, previously read by the
* ac_read_package method.
* @param pDecoder is the decoder instance that should be used to decode the
* package -- use the stream index stored in the package to determine the
* correct decoder.
*/
EXTERN int CALL_CONVT
ac_skip_package(lp_ac_package pPackage, lp_ac_decoder pDecoder);
/**
* Decodes a packages using the specified decoder and skips num frames. Returns true if num frames where skiped.
*
* @param pacInstance is the Acinerella instance from which the data should be
* read.
* @param pDecoder is the decoder instance that should be used to decode the
* package -- use the stream index stored in the package to determine the
* correct decoder.
* @num number of frames to skip.
*/
EXTERN int CALL_CONVT
ac_skip_frames(lp_ac_instance pacInstance, lp_ac_decoder pDecoder, int num);
/**
* Decodes a video frame using the specified decoder and strores the result in the decoder. Returns true if a frame cloud be decoded.
*
* @param pacInstance is the Acinerella instance from which the data should be
* read.
* @param pDecoder is the decoder instance that should be used to decode the
* package -- use the stream index stored in the package to determine the
* correct decoder.
*/
EXTERN int CALL_CONVT
ac_get_frame(lp_ac_instance pacInstance, lp_ac_decoder pDecoder);
/**
* Decodes a audio frame using the specified decoder and strores the result in the decoder. Returns true if a frame cloud be decoded.
*
* @param pacInstance is the Acinerella instance from which the data should be
* read.
* @param pDecoder is the decoder instance that should be used to decode the
* package -- use the stream index stored in the package to determine the
* correct decoder.
*/
EXTERN int CALL_CONVT
ac_get_audio_frame(lp_ac_instance pacInstance, lp_ac_decoder pDecoder);
/**
* Seeks to the given target position in the file. The seek funtion is not able
* to seek a single audio/video stream but seeks the whole file forward. The
* stream number paremter (nb) is only used for the timecode reference.
* The parameter "dir" specifies the seek direction: 0 for forward, -1 for
* backward. The target_pos paremeter is in milliseconds. Returns 1 if the
* functions succeded.
*/
EXTERN int CALL_CONVT
ac_seek(lp_ac_decoder pDecoder, int dir, int64_t target_pos);
/**
* Checks whether the given input buffer contains data that can potentially be
* decoded by Acinerella. If yes, returns a pointer that may be passed to
* ac_open in order to speed up the open process. Otherwise returns NULL.
*
* @param buf is a pointer to the buffer in which the data is stored.
* @param bufsize is the size of the buffer.
* @param filename is the name of the file the buffer originated from. May be
* empty or NULL.
* @param score_max is set to the maximum of the previous value of score_max
* and an internal score value.
* @return either a pointer at an internal "probe result" or NULL if the buffer
* contains no decodeable data.
*/
EXTERN lp_ac_proberesult CALL_CONVT
ac_probe_input_buffer(uint8_t *buf, int bufsize, char *filename,
int *score_max);
#endif /* _ACINERELLA_H_ */
extern int CALL_CONVT ac_get_audio_frame(lp_ac_instance pacInstance, lp_ac_decoder pDecoder);
extern int CALL_CONVT ac_get_frame(lp_ac_instance pacInstance, lp_ac_decoder pDecoder);
extern int CALL_CONVT ac_skip_frames(lp_ac_instance pacInstance, lp_ac_decoder pDecoder, int num);
/*Seeks to the given target position in the file. The seek funtion is not able to seek a single audio/video stream
but seeks the whole file forward. The stream number paremter (nb) is only used for the timecode reference.
The parameter "dir" specifies the seek direction: 0 for forward, -1 for backward.
The target_pos paremeter is in milliseconds. Returns 1 if the functions succeded.*/
extern int CALL_CONVT ac_seek(lp_ac_decoder pDecoder, int dir, int64_t target_pos);
#endif /*VIDEOPLAY_H*/
+5
View File
@@ -57,6 +57,7 @@ namespace Vocaluxe.Screens
_Texts[_TextRelease].Visible = true;
_Statics[_StaticWarningProfiles].Visible = false;
_Texts[_TextWarningProfiles].Visible = false;
_SelectElement(_Buttons[_ButtonSing]);
}
public override bool HandleInput(SKeyEvent keyEvent)
@@ -105,6 +106,10 @@ namespace Vocaluxe.Screens
return false;
break;
case Keys.Escape:
_SelectElement(_Buttons[_ButtonExit]);
break;
}
}
return true;
+6 -6
View File
@@ -535,10 +535,10 @@
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Rebuild for automatic package restore. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.acinerella.1.0.3\build\vocaluxe.dependencies.acinerella.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.acinerella.1.0.3\build\vocaluxe.dependencies.acinerella.targets'))" />
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.acinerella.1.0.5\build\vocaluxe.dependencies.acinerella.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.acinerella.1.0.5\build\vocaluxe.dependencies.acinerella.targets'))" />
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.aforgevideo.1.0.1\build\vocaluxe.dependencies.aforgevideo.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.aforgevideo.1.0.1\build\vocaluxe.dependencies.aforgevideo.targets'))" />
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.csharpsqlite.1.0.1\build\vocaluxe.dependencies.csharpsqlite.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.csharpsqlite.1.0.1\build\vocaluxe.dependencies.csharpsqlite.targets'))" />
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.ffmpeg.1.0.3\build\vocaluxe.dependencies.ffmpeg.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.ffmpeg.1.0.3\build\vocaluxe.dependencies.ffmpeg.targets'))" />
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.ffmpeg.1.0.4\build\vocaluxe.dependencies.ffmpeg.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.ffmpeg.1.0.4\build\vocaluxe.dependencies.ffmpeg.targets'))" />
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.gstreamersharp.1.0.1\build\vocaluxe.dependencies.gstreamersharp.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.gstreamersharp.1.0.1\build\vocaluxe.dependencies.gstreamersharp.targets'))" />
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.hidapi.1.0.4\build\vocaluxe.dependencies.hidapi.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.hidapi.1.0.4\build\vocaluxe.dependencies.hidapi.targets'))" />
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.opentk.1.0.1\build\vocaluxe.dependencies.opentk.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.opentk.1.0.1\build\vocaluxe.dependencies.opentk.targets'))" />
@@ -547,12 +547,12 @@
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.slimdx.1.0.1\build\vocaluxe.dependencies.slimdx.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.slimdx.1.0.1\build\vocaluxe.dependencies.slimdx.targets'))" />
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.sqlite.1.0.1\build\vocaluxe.dependencies.sqlite.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.sqlite.1.0.1\build\vocaluxe.dependencies.sqlite.targets'))" />
<Error Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND !Exists('..\packages\vocaluxe.dependencies.gstreamer.1.0.2\build\vocaluxe.dependencies.gstreamer.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.gstreamer.1.0.2\build\vocaluxe.dependencies.gstreamer.targets'))" />
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.1.0.10\build\vocaluxe.dependencies.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.1.0.10\build\vocaluxe.dependencies.targets'))" />
<Error Condition="!Exists('..\packages\vocaluxe.dependencies.1.0.11\build\vocaluxe.dependencies.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\vocaluxe.dependencies.1.0.11\build\vocaluxe.dependencies.targets'))" />
</Target>
<Import Project="..\packages\vocaluxe.dependencies.acinerella.1.0.3\build\vocaluxe.dependencies.acinerella.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.acinerella.1.0.3\build\vocaluxe.dependencies.acinerella.targets')" />
<Import Project="..\packages\vocaluxe.dependencies.acinerella.1.0.5\build\vocaluxe.dependencies.acinerella.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.acinerella.1.0.5\build\vocaluxe.dependencies.acinerella.targets')" />
<Import Project="..\packages\vocaluxe.dependencies.aforgevideo.1.0.1\build\vocaluxe.dependencies.aforgevideo.targets" Condition="Exists('..\packages\vocaluxe.dependencies.aforgevideo.1.0.1\build\vocaluxe.dependencies.aforgevideo.targets')" />
<Import Project="..\packages\vocaluxe.dependencies.csharpsqlite.1.0.1\build\vocaluxe.dependencies.csharpsqlite.targets" Condition="Exists('..\packages\vocaluxe.dependencies.csharpsqlite.1.0.1\build\vocaluxe.dependencies.csharpsqlite.targets')" />
<Import Project="..\packages\vocaluxe.dependencies.ffmpeg.1.0.3\build\vocaluxe.dependencies.ffmpeg.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.ffmpeg.1.0.3\build\vocaluxe.dependencies.ffmpeg.targets')" />
<Import Project="..\packages\vocaluxe.dependencies.ffmpeg.1.0.4\build\vocaluxe.dependencies.ffmpeg.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.ffmpeg.1.0.4\build\vocaluxe.dependencies.ffmpeg.targets')" />
<Import Project="..\packages\vocaluxe.dependencies.gstreamersharp.1.0.1\build\vocaluxe.dependencies.gstreamersharp.targets" Condition="Exists('..\packages\vocaluxe.dependencies.gstreamersharp.1.0.1\build\vocaluxe.dependencies.gstreamersharp.targets')" />
<Import Project="..\packages\vocaluxe.dependencies.hidapi.1.0.4\build\vocaluxe.dependencies.hidapi.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.hidapi.1.0.4\build\vocaluxe.dependencies.hidapi.targets')" />
<Import Project="..\packages\vocaluxe.dependencies.opentk.1.0.1\build\vocaluxe.dependencies.opentk.targets" Condition="Exists('..\packages\vocaluxe.dependencies.opentk.1.0.1\build\vocaluxe.dependencies.opentk.targets')" />
@@ -561,5 +561,5 @@
<Import Project="..\packages\vocaluxe.dependencies.slimdx.1.0.1\build\vocaluxe.dependencies.slimdx.targets" Condition="Exists('..\packages\vocaluxe.dependencies.slimdx.1.0.1\build\vocaluxe.dependencies.slimdx.targets')" />
<Import Project="..\packages\vocaluxe.dependencies.sqlite.1.0.1\build\vocaluxe.dependencies.sqlite.targets" Condition="Exists('..\packages\vocaluxe.dependencies.sqlite.1.0.1\build\vocaluxe.dependencies.sqlite.targets')" />
<Import Project="..\packages\vocaluxe.dependencies.gstreamer.1.0.2\build\vocaluxe.dependencies.gstreamer.targets" Condition="'$(Configuration)' != 'ReleaseLinux' AND '$(Configuration)' != 'DebugLinux' AND Exists('..\packages\vocaluxe.dependencies.gstreamer.1.0.2\build\vocaluxe.dependencies.gstreamer.targets')" />
<Import Project="..\packages\vocaluxe.dependencies.1.0.10\build\vocaluxe.dependencies.targets" Condition="Exists('..\packages\vocaluxe.dependencies.1.0.10\build\vocaluxe.dependencies.targets')" />
<Import Project="..\packages\vocaluxe.dependencies.1.0.11\build\vocaluxe.dependencies.targets" Condition="Exists('..\packages\vocaluxe.dependencies.1.0.11\build\vocaluxe.dependencies.targets')" />
</Project>
+3 -3
View File
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="vocaluxe.dependencies" version="1.0.10" targetFramework="net40" />
<package id="vocaluxe.dependencies.acinerella" version="1.0.3" targetFramework="net40" />
<package id="vocaluxe.dependencies" version="1.0.11" targetFramework="net40" />
<package id="vocaluxe.dependencies.acinerella" version="1.0.5" targetFramework="net40" />
<package id="vocaluxe.dependencies.aforgevideo" version="1.0.1" targetFramework="net40" />
<package id="vocaluxe.dependencies.csharpsqlite" version="1.0.1" targetFramework="net40" />
<package id="vocaluxe.dependencies.ffmpeg" version="1.0.3" targetFramework="net40" />
<package id="vocaluxe.dependencies.ffmpeg" version="1.0.4" targetFramework="net40" />
<package id="vocaluxe.dependencies.gstreamer" version="1.0.2" targetFramework="net40" />
<package id="vocaluxe.dependencies.gstreamersharp" version="1.0.1" targetFramework="net40" />
<package id="vocaluxe.dependencies.hidapi" version="1.0.4" targetFramework="net40" />
+5 -2
View File
@@ -80,6 +80,8 @@ after_build:
test: off
before_deploy:
- ps: ./.appveyor/prepareDeploy.ps1
after_deploy:
- ps: ./.appveyor/afterDeploy.ps1
deploy:
- provider: GitHub
tag: $(APPVEYOR_REPO_TAG_NAME)
@@ -88,7 +90,7 @@ deploy:
auth_token:
secure: JSlN/em0JdspVn8jwaQ4IjugY6OQi0au4Qq0rhctJmcfGMaEGnUAOmDFULI48REW
artifact: ReleaseZip
prerelease: true
prerelease: $(IS_BETA_RELEASE)
on:
APPVEYOR_REPO_TAG: true
NIGHTLY_BUILD: false
@@ -96,10 +98,11 @@ deploy:
- provider: GitHub
tag: $(APPVEYOR_REPO_TAG_NAME)
release: Latest Nightly build
description:
description: $(APPVEYOR_REPO_COMMIT)
auth_token:
secure: JSlN/em0JdspVn8jwaQ4IjugY6OQi0au4Qq0rhctJmcfGMaEGnUAOmDFULI48REW
artifact: ReleaseZip
prerelease: true
on:
APPVEYOR_REPO_TAG: true
NIGHTLY_BUILD: true