public void Properties_ReturnsNativeValues() { var nativeCodecParameters = new NativeAVCodecParameters { codec_type = NativeAVMediaType.AVMEDIA_TYPE_VIDEO, codec_id = NativeAVCodecID.AV_CODEC_ID_4XM, format = 124, }; var codecParameters = new AVCodecParameters(&nativeCodecParameters); Assert.Equal(NativeAVMediaType.AVMEDIA_TYPE_VIDEO, codecParameters.Type); Assert.Equal(NativeAVCodecID.AV_CODEC_ID_4XM, codecParameters.Id); Assert.Equal(124, codecParameters.Format); }
public void Constructor_InitializesInstance() { var ffmpegMock = new Mock <FFmpegClient>(); var codecParameters = new NativeAVCodecParameters { codec_type = NativeAVMediaType.AVMEDIA_TYPE_VIDEO, }; var nativeStream = new NativeAVStream { codecpar = &codecParameters, }; var streamPtr = new IntPtr(&nativeStream); var nativeAVFormatContext = new NativeAVFormatContext { duration = 10, nb_streams = 1, event_flags = (int)AVFormatContextEventFlags.MetadataUpdated, ctx_flags = (int)AVFormatContextFlags.NoHeader, streams = (NativeAVStream **)streamPtr, }; var nativeIOContext = new NativeAVIOContext { }; ffmpegMock .Setup(c => c.FreeAVFormatContext(It.IsAny <IntPtr>())) .Verifiable(); var ffmpeg = ffmpegMock.Object; using (var handle = new AVFormatContextHandle(ffmpeg, &nativeAVFormatContext)) using (var ioContext = new AVIOContext(ffmpeg, new AVIOContextHandle(ffmpeg, &nativeIOContext))) using (var formatContext = new AVFormatContext(ffmpeg, ioContext, handle)) { Assert.Equal(handle, formatContext.Handle); Assert.Equal <uint>(1, formatContext.StreamCount); Assert.False(formatContext.IsClosed); Assert.False(handle.IsClosed); Assert.Equal((int)AVFormatContextEventFlags.MetadataUpdated, (int)formatContext.EventFlags); Assert.Equal((int)AVFormatContextFlags.NoHeader, (int)formatContext.Flags); } ffmpegMock.Verify(); }
public void CodecContext_ReturnsNativeCodecContext() { var codecParameters = new NativeAVCodecParameters { codec_type = NativeAVMediaType.AVMEDIA_TYPE_VIDEO, }; var nativeStream = new NativeAVStream { codecpar = &codecParameters, }; var stream = new AVStream(&nativeStream); Assert.Equal(NativeAVMediaType.AVMEDIA_TYPE_VIDEO, stream.CodecParameters.Type); }
public void GetVideoStream_ThrowsOnWrongType() { var ffmpegMock = new Mock <FFmpegClient>(); ffmpegMock .Setup(c => c.FreeAVFormatContext(It.IsAny <IntPtr>())) .Verifiable(); var ffmpeg = ffmpegMock.Object; var codecParameters = new NativeAVCodecParameters { format = 12346, codec_type = NativeAVMediaType.AVMEDIA_TYPE_AUDIO, }; var nativeStream = new NativeAVStream { codecpar = &codecParameters, }; var streamPtr = new IntPtr(&nativeStream); var nativeAVFormatContext = new NativeAVFormatContext { nb_streams = 1, streams = (NativeAVStream **)&streamPtr, }; var nativeIOContext = new NativeAVIOContext { }; using (var handle = new AVFormatContextHandle(ffmpeg, &nativeAVFormatContext)) using (var ioContext = new AVIOContext(ffmpeg, new AVIOContextHandle(ffmpeg, &nativeIOContext))) using (var formatContext = new AVFormatContext(ffmpeg, ioContext, handle)) { Assert.Throws <InvalidOperationException>(() => formatContext.GetVideoStream()); } ffmpegMock.Verify(); }
public void GetStream_ReturnsStream() { var ffmpegMock = new Mock <FFmpegClient>(); ffmpegMock .Setup(c => c.FreeAVFormatContext(It.IsAny <IntPtr>())) .Verifiable(); var ffmpeg = ffmpegMock.Object; var codecParameters = new NativeAVCodecParameters { format = 12346, }; var nativeStream = new NativeAVStream { codecpar = &codecParameters, }; var streamPtr = new IntPtr(&nativeStream); var nativeAVFormatContext = new NativeAVFormatContext { nb_streams = 1, streams = (NativeAVStream **)&streamPtr, }; var nativeIOContext = new NativeAVIOContext { }; using (var handle = new AVFormatContextHandle(ffmpeg, &nativeAVFormatContext)) using (var ioContext = new AVIOContext(ffmpeg, new AVIOContextHandle(ffmpeg, &nativeIOContext))) using (var formatContext = new AVFormatContext(ffmpeg, ioContext, handle)) { var stream = formatContext.GetStream(0); Assert.Equal(12346, stream.CodecParameters.Format); } ffmpegMock.Verify(); }
public void AVCodec_InitializesInstance() { var nativeCodec = new NativeAVCodec() { capabilities = (int)AVCodecCapabilities.Truncated, }; var ffmpegMock = new Mock <FFmpegClient>(); ffmpegMock .Setup(c => c.FindDecoder(AVCodecID.AV_CODEC_ID_H264)) .Returns((IntPtr)(&nativeCodec)) .Verifiable(); var codecParameters = new NativeAVCodecParameters { codec_type = NativeAVMediaType.AVMEDIA_TYPE_VIDEO, codec_id = AVCodecID.AV_CODEC_ID_H264, }; var nativeCodecContext = new NativeAVCodecContext() { codec_id = AVCodecID.AV_CODEC_ID_H264, }; #pragma warning disable CS0618 // Type or member is obsolete var nativeStream = new NativeAVStream { codecpar = &codecParameters, codec = &nativeCodecContext, }; var stream = new AVStream(&nativeStream); var ffmpeg = ffmpegMock.Object; var codec = new AVCodec(ffmpeg, stream); Assert.Equal((int)AVCodecCapabilities.Truncated, stream.CodecContext->flags); #pragma warning restore CS0618 // Type or member is obsolete }