Skip to content

Commit

Permalink
Added a support for pre-exsiting pipe
Browse files Browse the repository at this point in the history
  • Loading branch information
OmriGoldberger committed Jan 1, 2024
1 parent eb221c3 commit 36d778a
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 1 deletion.
46 changes: 46 additions & 0 deletions FFMpegCore/FFMpeg/Arguments/InputExistingPipeArgument.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
using System.Diagnostics;
using FFMpegCore.Pipes;

namespace FFMpegCore.Arguments
{
/// <summary>
/// Represents input parameter for a specific name pipe
/// </summary>
public class InputExistingPipeArgument : IInputArgument
{
public string PipeName { get; }
public string PipePath => PipeHelpers.GetPipePath(PipeName);
public string Text => $"-i \"{PipePath}\"";

public InputExistingPipeArgument(string pipeName)
{
PipeName = pipeName;
}

public void Pre()
{
if (string.IsNullOrEmpty(PipeName))
{
throw new InvalidOperationException("Pipe name cannot be null or empty");
}
}

public async Task During(CancellationToken cancellationToken = default)
{
try
{
var tcs = new TaskCompletionSource<bool>();
cancellationToken.Register(() => tcs.TrySetCanceled());
await tcs.Task;
}
catch(OperationCanceledException)
{
Debug.WriteLine($"{GetType().Name} cancelled");
}
}

public void Post()
{
}
}
}
2 changes: 2 additions & 0 deletions FFMpegCore/FFMpeg/FFMpegArguments.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ private string GetText()
public static FFMpegArguments FromUrlInput(Uri uri, Action<FFMpegArgumentOptions>? addArguments = null) => new FFMpegArguments().WithInput(new InputArgument(uri.AbsoluteUri, false), addArguments);
public static FFMpegArguments FromDeviceInput(string device, Action<FFMpegArgumentOptions>? addArguments = null) => new FFMpegArguments().WithInput(new InputDeviceArgument(device), addArguments);
public static FFMpegArguments FromPipeInput(IPipeSource sourcePipe, Action<FFMpegArgumentOptions>? addArguments = null) => new FFMpegArguments().WithInput(new InputPipeArgument(sourcePipe), addArguments);
public static FFMpegArguments FromPipeInput(string pipeName, Action<FFMpegArgumentOptions>? addArguments = null) => new FFMpegArguments().WithInput(new InputExistingPipeArgument(pipeName), addArguments);

public FFMpegArguments WithGlobalOptions(Action<FFMpegGlobalArguments> configureOptions)
{
Expand All @@ -39,6 +40,7 @@ public FFMpegArguments WithGlobalOptions(Action<FFMpegGlobalArguments> configure
public FFMpegArguments AddUrlInput(Uri uri, Action<FFMpegArgumentOptions>? addArguments = null) => WithInput(new InputArgument(uri.AbsoluteUri, false), addArguments);
public FFMpegArguments AddDeviceInput(string device, Action<FFMpegArgumentOptions>? addArguments = null) => WithInput(new InputDeviceArgument(device), addArguments);
public FFMpegArguments AddPipeInput(IPipeSource sourcePipe, Action<FFMpegArgumentOptions>? addArguments = null) => WithInput(new InputPipeArgument(sourcePipe), addArguments);
public FFMpegArguments AddPipeInput(string pipeName, Action<FFMpegArgumentOptions>? addArguments = null) => WithInput(new InputExistingPipeArgument(pipeName), addArguments);
public FFMpegArguments AddMetaData(string content, Action<FFMpegArgumentOptions>? addArguments = null) => WithInput(new MetaDataArgument(content), addArguments);
public FFMpegArguments AddMetaData(IReadOnlyMetaData metaData, Action<FFMpegArgumentOptions>? addArguments = null) => WithInput(new MetaDataArgument(MetaDataSerializer.Instance.Serialize(metaData)), addArguments);

Expand Down
2 changes: 1 addition & 1 deletion FFMpegCore/FFMpegCore.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<PropertyGroup>
<IsPackable>true</IsPackable>
<Description>A .NET Standard FFMpeg/FFProbe wrapper for easily integrating media analysis and conversion into your .NET applications</Description>
<PackageVersion>5.1.0</PackageVersion>
<PackageVersion>5.1.1</PackageVersion>
<PackageOutputPath>../nupkg</PackageOutputPath>
<PackageReleaseNotes>
</PackageReleaseNotes>
Expand Down

0 comments on commit 36d778a

Please sign in to comment.