From: Rémi Bernon <rbernon(a)codeweavers.com> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57204 --- dlls/winedmo/unix_demuxer.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/dlls/winedmo/unix_demuxer.c b/dlls/winedmo/unix_demuxer.c index d40b80da326..23fc9f7993b 100644 --- a/dlls/winedmo/unix_demuxer.c +++ b/dlls/winedmo/unix_demuxer.c @@ -37,6 +37,8 @@ static inline const char *debugstr_averr( int err ) struct demuxer { AVFormatContext *ctx; + + AVPacket *last_packet; /* last read packet */ }; static struct demuxer *get_demuxer( struct winedmo_demuxer demuxer ) @@ -181,7 +183,7 @@ NTSTATUS demuxer_read( void *arg ) TRACE( "demuxer %p, capacity %#x\n", demuxer, capacity ); - if (!(packet = demuxer->ctx->opaque)) + if (!(packet = demuxer->last_packet)) { if (!(packet = av_packet_alloc())) return STATUS_NO_MEMORY; if ((ret = av_read_frame( demuxer->ctx, packet )) < 0) @@ -196,7 +198,7 @@ NTSTATUS demuxer_read( void *arg ) params->sample.size = packet->size; if ((capacity < packet->size)) { - demuxer->ctx->opaque = packet; + demuxer->last_packet = packet; return STATUS_BUFFER_TOO_SMALL; } @@ -208,7 +210,7 @@ NTSTATUS demuxer_read( void *arg ) memcpy( (void *)(UINT_PTR)sample->data, packet->data, packet->size ); params->stream = packet->stream_index; av_packet_free( &packet ); - demuxer->ctx->opaque = NULL; + demuxer->last_packet = NULL; return STATUS_SUCCESS; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6551