0
0
Fork 0

Update to FFmpeg 4.4.0 (#2259)

* Update to FFmpeg 4.4.0

As the title say

* Fix warning from 4.4.0
This commit is contained in:
Mary 2021-05-02 22:08:35 +02:00 committed by GitHub
parent 3443023a08
commit fcdfd8a482
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 8 deletions

View file

@ -6,6 +6,7 @@ namespace Ryujinx.Graphics.Nvdec.H264
unsafe class FFmpegContext : IDisposable unsafe class FFmpegContext : IDisposable
{ {
private readonly AVCodec* _codec; private readonly AVCodec* _codec;
private AVPacket* _packet;
private AVCodecContext* _context; private AVCodecContext* _context;
public FFmpegContext() public FFmpegContext()
@ -14,20 +15,21 @@ namespace Ryujinx.Graphics.Nvdec.H264
_context = ffmpeg.avcodec_alloc_context3(_codec); _context = ffmpeg.avcodec_alloc_context3(_codec);
ffmpeg.avcodec_open2(_context, _codec, null); ffmpeg.avcodec_open2(_context, _codec, null);
_packet = ffmpeg.av_packet_alloc();
} }
public int DecodeFrame(Surface output, ReadOnlySpan<byte> bitstream) public int DecodeFrame(Surface output, ReadOnlySpan<byte> bitstream)
{ {
AVPacket packet; // Ensure the packet is clean before proceeding
ffmpeg.av_packet_unref(_packet);
ffmpeg.av_init_packet(&packet);
fixed (byte* ptr = bitstream) fixed (byte* ptr = bitstream)
{ {
packet.data = ptr; _packet->data = ptr;
packet.size = bitstream.Length; _packet->size = bitstream.Length;
int rc = ffmpeg.avcodec_send_packet(_context, &packet); int rc = ffmpeg.avcodec_send_packet(_context, _packet);
if (rc != 0) if (rc != 0)
{ {
@ -40,6 +42,11 @@ namespace Ryujinx.Graphics.Nvdec.H264
public void Dispose() public void Dispose()
{ {
fixed (AVPacket** ppPacket = &_packet)
{
ffmpeg.av_packet_free(ppPacket);
}
ffmpeg.avcodec_close(_context); ffmpeg.avcodec_close(_context);
fixed (AVCodecContext** ppContext = &_context) fixed (AVCodecContext** ppContext = &_context)

View file

@ -6,7 +6,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="FFmpeg.AutoGen" Version="4.3.0" /> <PackageReference Include="FFmpeg.AutoGen" Version="4.4.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View file

@ -15,7 +15,7 @@
<PackageReference Include="DiscordRichPresence" Version="1.0.166" /> <PackageReference Include="DiscordRichPresence" Version="1.0.166" />
<PackageReference Include="GtkSharp" Version="3.22.25.128" /> <PackageReference Include="GtkSharp" Version="3.22.25.128" />
<PackageReference Include="GtkSharp.Dependencies" Version="1.1.0" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" /> <PackageReference Include="GtkSharp.Dependencies" Version="1.1.0" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
<PackageReference Include="Ryujinx.Graphics.Nvdec.Dependencies" Version="4.3.0" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" /> <PackageReference Include="Ryujinx.Graphics.Nvdec.Dependencies" Version="4.4.0-build7" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
<PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Version="1.21.0.1" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" /> <PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Version="1.21.0.1" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
<PackageReference Include="OpenTK.Graphics" Version="4.5.0" /> <PackageReference Include="OpenTK.Graphics" Version="4.5.0" />
<PackageReference Include="SPB" Version="0.0.2" /> <PackageReference Include="SPB" Version="0.0.2" />