From 2be1c021cee90f5c3a7aeec94163405bef4796a2 Mon Sep 17 00:00:00 2001 From: Stephan Sundermann Date: Sun, 10 Feb 2013 18:03:53 +0100 Subject: [PATCH] Added empty gstreamer video implementation --- GstreamerHelper/GstreamerHelper.vcxproj | 4 + .../GstreamerHelper.vcxproj.filters | 12 ++ GstreamerHelper/GstreamerVideo.cpp | 133 ++++++++++++++++++ GstreamerHelper/GstreamerVideo.h | 32 +++++ GstreamerHelper/GstreamerVideoStream.cpp | 56 ++++++++ GstreamerHelper/GstreamerVideoStream.h | 25 ++++ Output/x64/gstreamer/GstreamerHelper.dll | Bin 149504 -> 195584 bytes Vocaluxe/Base/CVideo.cs | 4 +- Vocaluxe/Lib/Video/CVideoDecoderGstreamer.cs | 71 ++++++++++ .../Video/Gstreamer/CGstreamerVideoWrapper.cs | 65 +++++++++ Vocaluxe/Vocaluxe.csproj | 2 + VocaluxeLib/Menu/IMenu.cs | 3 +- 12 files changed, 405 insertions(+), 2 deletions(-) create mode 100644 GstreamerHelper/GstreamerVideo.cpp create mode 100644 GstreamerHelper/GstreamerVideo.h create mode 100644 GstreamerHelper/GstreamerVideoStream.cpp create mode 100644 GstreamerHelper/GstreamerVideoStream.h create mode 100644 Vocaluxe/Lib/Video/CVideoDecoderGstreamer.cs create mode 100644 Vocaluxe/Lib/Video/Gstreamer/CGstreamerVideoWrapper.cs diff --git a/GstreamerHelper/GstreamerHelper.vcxproj b/GstreamerHelper/GstreamerHelper.vcxproj index 70d35fea..4ae10323 100644 --- a/GstreamerHelper/GstreamerHelper.vcxproj +++ b/GstreamerHelper/GstreamerHelper.vcxproj @@ -164,6 +164,8 @@ + + @@ -184,6 +186,8 @@ + + Create Create diff --git a/GstreamerHelper/GstreamerHelper.vcxproj.filters b/GstreamerHelper/GstreamerHelper.vcxproj.filters index f0255fed..342e0d36 100644 --- a/GstreamerHelper/GstreamerHelper.vcxproj.filters +++ b/GstreamerHelper/GstreamerHelper.vcxproj.filters @@ -27,6 +27,12 @@ Headerdateien + + Headerdateien + + + Headerdateien + @@ -41,5 +47,11 @@ Quelldateien + + Quelldateien + + + Quelldateien + \ No newline at end of file diff --git a/GstreamerHelper/GstreamerVideo.cpp b/GstreamerHelper/GstreamerVideo.cpp new file mode 100644 index 00000000..f84837c6 --- /dev/null +++ b/GstreamerHelper/GstreamerVideo.cpp @@ -0,0 +1,133 @@ +#include "stdafx.h" +#include "GstreamerVideo.h" +#include "GstreamerVideoStream.h" + +map VideoStreams; +queue VideoIDs; + +DllExport void SetVideoLogCallback (LogCallback Callback) +{ + Log = Callback; +} + +DllExport bool InitVideo() +{ + for(int i = 0; i < 1000; i++) + { + VideoIDs.push(i); + } +#if _WIN64 + SetDllDirectory(L".\\x64\\gstreamer"); +#else + SetDllDirectory(L".\\x86\gstreamer"); +#endif + + gst_init(NULL, NULL); + GstRegistry* registry = gst_registry_get(); + +#if _WIN64 + gst_registry_scan_path(registry, ".\\x64\\gstreamer"); +#else + gst_registry_scan_path(registry, ".\\x86\\gstreamer"); +#endif + + return true; +} + +DllExport void CloseAllVideos(void) +{ + map::iterator p; + + for(p = VideoStreams.begin(); p != VideoStreams.end(); p++) { + p->second->CloseVideo(); + } +} + +DllExport int LoadVideo(const wchar_t* Media) +{ + GstreamerVideoStream *s = new GstreamerVideoStream(VideoIDs.front()); + VideoStreams.insert(pair (VideoIDs.front(), s)); + VideoIDs.pop(); + return s->LoadVideo(Media); +} + +DllExport bool CloseVideo(int Stream) +{ + map::iterator it = VideoStreams.find(Stream); + if(it != VideoStreams.end()) + { + return it->second->CloseVideo(); + } + else return false; +} + +DllExport int GetVideoNumStreams() +{ + return VideoStreams.size(); +} + +DllExport float GetVideoLength(int Stream) +{ + map::iterator it = VideoStreams.find(Stream); + if(it != VideoStreams.end()) + { + return it->second->GetVideoLength(); + } + else return -1.0; +} + +DllExport UINT8* GetFrame(int Stream, float Time, float &VideoTime) +{ + map::iterator it = VideoStreams.find(Stream); + if(it != VideoStreams.end()) + { + return it->second->GetFrame(Time, VideoTime); + } +} + +DllExport bool Skip(int Stream, float Start, float Gap) +{ + map::iterator it = VideoStreams.find(Stream); + if(it != VideoStreams.end()) + { + return it->second->Skip(Start, Gap); + } + else return false; +} + +DllExport void SetVideoLoop(int Stream, bool Loop) +{ + map::iterator it = VideoStreams.find(Stream); + if(it != VideoStreams.end()) + { + it->second->SetVideoLoop(Loop); + } +} + +DllExport void PauseVideo(int Stream) +{ + map::iterator it = VideoStreams.find(Stream); + if(it != VideoStreams.end()) + { + it->second->PauseVideo(); + } +} + +DllExport void ResumeVideo(int Stream) +{ + map::iterator it = VideoStreams.find(Stream); + if(it != VideoStreams.end()) + { + it->second->ResumeVideo(); + } +} + +DllExport bool Finished(int Stream) +{ + map::iterator it = VideoStreams.find(Stream); + if(it != VideoStreams.end()) + { + return it->second->Finished(); + } + else return true; +} diff --git a/GstreamerHelper/GstreamerVideo.h b/GstreamerHelper/GstreamerVideo.h new file mode 100644 index 00000000..57930064 --- /dev/null +++ b/GstreamerHelper/GstreamerVideo.h @@ -0,0 +1,32 @@ +#pragma once +#include +#include +#include +#include "gst/gst.h" +#define DllExport extern "C" __declspec(dllexport) + +using namespace std; + + typedef void (__stdcall * LogCallback)(const char* text); + static LogCallback Log; + + DllExport void SetVideoLogCallback(LogCallback Callback); + + DllExport bool InitVideo(); + DllExport void CloseAllVideos(); + + DllExport int LoadVideo(const wchar_t* Media); + DllExport bool CloseVideo(int StreamID); + DllExport int GetVideoNumStreams(); + + DllExport float GetVideoLength(int StreamID); + DllExport UINT8* GetFrame(int StreamID, float Time, float &VideoTime); + DllExport bool Skip(int StreamID, float Start, float Gap); + DllExport void SetVideoLoop(int StreamID, bool Loop); + DllExport void PauseVideo(int StreamID); + DllExport void ResumeVideo(int StreamID); + + DllExport bool Finished(int StreamID); + + void LogVideoError(const char* msg); + diff --git a/GstreamerHelper/GstreamerVideoStream.cpp b/GstreamerHelper/GstreamerVideoStream.cpp new file mode 100644 index 00000000..c23f90d0 --- /dev/null +++ b/GstreamerHelper/GstreamerVideoStream.cpp @@ -0,0 +1,56 @@ +#include "stdafx.h" +#include "GstreamerVideoStream.h" + + +GstreamerVideoStream::GstreamerVideoStream(int ID) +{ + this->ID = ID; +} + + +GstreamerVideoStream::~GstreamerVideoStream(void) +{ +} + +int GstreamerVideoStream::LoadVideo(const wchar_t* Filename) +{ + return ID; +} + + +bool GstreamerVideoStream::CloseVideo() +{ + return true; +} + +float GstreamerVideoStream::GetVideoLength() +{ + return 0.0; +} + +UINT8* GstreamerVideoStream::GetFrame(float Time, float &VideoTime) +{ + return 0; +} + +bool GstreamerVideoStream::Skip(float Start, float Gap) +{ + return true; +} + +void GstreamerVideoStream::SetVideoLoop(bool Loop) +{ +} + +void GstreamerVideoStream::PauseVideo() +{ +} + +void GstreamerVideoStream::ResumeVideo() +{ +} + +bool GstreamerVideoStream::Finished() +{ + return true; +} diff --git a/GstreamerHelper/GstreamerVideoStream.h b/GstreamerHelper/GstreamerVideoStream.h new file mode 100644 index 00000000..a355a254 --- /dev/null +++ b/GstreamerHelper/GstreamerVideoStream.h @@ -0,0 +1,25 @@ +#pragma once +#include "gst/gst.h" + using namespace std; +class GstreamerVideoStream +{ + +public: + int ID; + + GstreamerVideoStream(int ID); + ~GstreamerVideoStream(void); + + int LoadVideo(const wchar_t* VideoFileName); + bool CloseVideo(); + + float GetVideoLength(); + UINT8* GetFrame(float Time, float &VideoTime); + bool Skip(float Start, float Gap); + void SetVideoLoop(bool Loop); + void PauseVideo(); + void ResumeVideo(); + + bool Finished(); +}; + diff --git a/Output/x64/gstreamer/GstreamerHelper.dll b/Output/x64/gstreamer/GstreamerHelper.dll index 2a84bfd019727b90a7bd73967fe2f84b6407e11d..22465ffd9a5015acdd2d0a76df05378c04a086bc 100644 GIT binary patch literal 195584 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%0ANK*9z!DgkMd_is9F%)HU)eGoD|!X%`aB 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

GwJlr9?u?C%*1QMUEchNGEhW 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 diff --git a/Vocaluxe/Base/CVideo.cs b/Vocaluxe/Base/CVideo.cs index 0124494e..766e90d2 100644 --- a/Vocaluxe/Base/CVideo.cs +++ b/Vocaluxe/Base/CVideo.cs @@ -22,7 +22,9 @@ namespace Vocaluxe.Base case EVideoDecoder.FFmpeg: _VideoDecoder = new CVideoDecoderFFmpeg(); break; - + case EVideoDecoder.Gstreamer: + _VideoDecoder = new CVideoDecoderGstreamer(); + break; default: _VideoDecoder = new CVideoDecoderFFmpeg(); break; diff --git a/Vocaluxe/Lib/Video/CVideoDecoderGstreamer.cs b/Vocaluxe/Lib/Video/CVideoDecoderGstreamer.cs new file mode 100644 index 00000000..391a0f09 --- /dev/null +++ b/Vocaluxe/Lib/Video/CVideoDecoderGstreamer.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Vocaluxe.Lib.Video.Gstreamer; + +namespace Vocaluxe.Lib.Video +{ + class CVideoDecoderGstreamer : IVideoDecoder + { + public bool Init() + { + return CGstreamerVideoWrapper.InitVideo(); + } + + public void CloseAll() + { + CGstreamerVideoWrapper.CloseAllVideos(); + } + + public int Load(string VideoFileName) + { + return CGstreamerVideoWrapper.LoadVideo(VideoFileName); + } + + public bool Close(int StreamID) + { + return CGstreamerVideoWrapper.CloseVideo(StreamID); + } + + public int GetNumStreams() + { + return CGstreamerVideoWrapper.GetVideoNumStreams(); + } + + public float GetLength(int StreamID) + { + return CGstreamerVideoWrapper.GetVideoLength(StreamID); + } + + public bool GetFrame(int StreamID, ref Menu.STexture Frame, float Time, ref float VideoTime) + { + IntPtr buffer = CGstreamerVideoWrapper.GetFrame(StreamID, Time, ref VideoTime); + return true; + } + + public bool Skip(int StreamID, float Start, float Gap) + { + return CGstreamerVideoWrapper.Skip(StreamID, Start, Gap); + } + + public void SetLoop(int StreamID, bool Loop) + { + CGstreamerVideoWrapper.SetVideoLoop(StreamID, Loop); + } + + public void Pause(int StreamID) + { + CGstreamerVideoWrapper.PauseVideo(StreamID); + } + + public void Resume(int StreamID) + { + CGstreamerVideoWrapper.ResumeVideo(StreamID); + } + + public bool Finished(int StreamID) + { + return CGstreamerVideoWrapper.Finished(StreamID); + } + } +} diff --git a/Vocaluxe/Lib/Video/Gstreamer/CGstreamerVideoWrapper.cs b/Vocaluxe/Lib/Video/Gstreamer/CGstreamerVideoWrapper.cs new file mode 100644 index 00000000..ea9b775e --- /dev/null +++ b/Vocaluxe/Lib/Video/Gstreamer/CGstreamerVideoWrapper.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace Vocaluxe.Lib.Video.Gstreamer +{ + public static class CGstreamerVideoWrapper + { +#region arch +#if ARCH_X86 +#if WIN + private const string Dll = "x86\\gstreamerhelper.dll"; +#endif +#endif + +#if ARCH_X64 +#if WIN + private const string Dll = "x64\\gstreamer\\gstreamerhelper.dll"; +#endif +#endif +#endregion arch + public delegate void LogCallback(string message); + + [DllImport(Dll)] + public static extern void SetVideoLogCallback(LogCallback c); + + [DllImport(Dll)] + public static extern bool InitVideo(); + + [DllImport(Dll)] + public static extern void CloseAllVideos(); + + [DllImport(Dll)] + public static extern int LoadVideo(string VideoFileName); + + [DllImport(Dll)] + public static extern bool CloseVideo(int StreamID); + + [DllImport(Dll)] + public static extern int GetVideoNumStreams(); + + [DllImport(Dll)] + public static extern float GetVideoLength(int StreamID); + + [DllImport(Dll)] + public static extern IntPtr GetFrame(int StreamID, float Time, ref float VideoTime); + + [DllImport(Dll)] + public static extern bool Skip(int StreamID, float Start, float Gap); + + [DllImport(Dll)] + public static extern void SetVideoLoop(int StreamID, bool Loop); + + [DllImport(Dll)] + public static extern void PauseVideo(int StreamID); + + [DllImport(Dll)] + public static extern void ResumeVideo(int StreamID); + + [DllImport(Dll)] + public static extern bool Finished(int StreamID); + + } +} diff --git a/Vocaluxe/Vocaluxe.csproj b/Vocaluxe/Vocaluxe.csproj index b3c711de..ce5349c8 100644 --- a/Vocaluxe/Vocaluxe.csproj +++ b/Vocaluxe/Vocaluxe.csproj @@ -224,6 +224,8 @@ + + diff --git a/VocaluxeLib/Menu/IMenu.cs b/VocaluxeLib/Menu/IMenu.cs index 5bc80276..310dfaa1 100644 --- a/VocaluxeLib/Menu/IMenu.cs +++ b/VocaluxeLib/Menu/IMenu.cs @@ -657,7 +657,8 @@ namespace Vocaluxe.Menu public enum EVideoDecoder { - FFmpeg + FFmpeg, + Gstreamer } public enum ESongMenu