fix: Replace av_init_packet with av_packet_alloc/free
This commit is contained in:
1
src/gsplash
Submodule
1
src/gsplash
Submodule
Submodule src/gsplash added at 8d5a106ab3
@@ -343,7 +343,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
log_info("Splash window hidden (focus lost), scheduling hide");
|
||||
hide_scheduled = true;
|
||||
hide_time = SDL_GetTicks() + 250; // 250ms delay to prevent desktop flash
|
||||
hide_time = SDL_GetTicks() + 100; // 100ms delay to prevent desktop flash
|
||||
}
|
||||
// Re-render static image when compositor requests a redraw
|
||||
if (event.window.event == SDL_WINDOWEVENT_EXPOSED && texture && !video_active)
|
||||
|
||||
24
src/video.c
24
src/video.c
@@ -159,23 +159,26 @@ void cleanup_video_player(VideoPlayer *player)
|
||||
|
||||
bool decode_next_frame(VideoPlayer *player)
|
||||
{
|
||||
AVPacket packet;
|
||||
av_init_packet(&packet);
|
||||
|
||||
while (av_read_frame(player->format_ctx, &packet) >= 0)
|
||||
AVPacket *packet = av_packet_alloc();
|
||||
if (!packet)
|
||||
{
|
||||
if (packet.stream_index != player->stream_index)
|
||||
return false;
|
||||
}
|
||||
|
||||
while (av_read_frame(player->format_ctx, packet) >= 0)
|
||||
{
|
||||
if (packet->stream_index != player->stream_index)
|
||||
{
|
||||
av_packet_unref(&packet);
|
||||
av_packet_unref(packet);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (avcodec_send_packet(player->codec_ctx, &packet) < 0)
|
||||
if (avcodec_send_packet(player->codec_ctx, packet) < 0)
|
||||
{
|
||||
av_packet_unref(&packet);
|
||||
av_packet_unref(packet);
|
||||
continue;
|
||||
}
|
||||
av_packet_unref(&packet);
|
||||
av_packet_unref(packet);
|
||||
|
||||
while (true)
|
||||
{
|
||||
@@ -186,6 +189,7 @@ bool decode_next_frame(VideoPlayer *player)
|
||||
}
|
||||
if (ret < 0)
|
||||
{
|
||||
av_packet_free(&packet);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -195,11 +199,13 @@ bool decode_next_frame(VideoPlayer *player)
|
||||
|
||||
SDL_UpdateTexture(player->texture, NULL, player->rgba_frame->data[0],
|
||||
player->rgba_frame->linesize[0]);
|
||||
av_packet_free(&packet);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
av_seek_frame(player->format_ctx, player->stream_index, 0, AVSEEK_FLAG_BACKWARD);
|
||||
avcodec_flush_buffers(player->codec_ctx);
|
||||
av_packet_free(&packet);
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user