X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=video_widget.cpp;h=f8db9002b7ba91d2d32cf3ecdd0fcdeaea09e702;hb=6f24464b7ed7f1bdf3aeb7840a53ecdee7f5c819;hp=b783b00651e2652608ba72b1a649c9160ee7ddaf;hpb=d4c0ea6e97e0b0edd354ef8233f75938ea5dc08a;p=pkanalytics diff --git a/video_widget.cpp b/video_widget.cpp index b783b00..f8db900 100644 --- a/video_widget.cpp +++ b/video_widget.cpp @@ -740,15 +740,14 @@ AVFrameWithDeleter VideoWidget::decode_frame(AVFormatContext *format_ctx, AVCode AVFrameWithDeleter video_avframe = av_frame_alloc_unique(); bool eof = false; do { - AVPacket pkt; + AVPacket *pkt = av_packet_alloc(); unique_ptr pkt_cleanup( - &pkt, av_packet_unref); - av_init_packet(&pkt); - pkt.data = nullptr; - pkt.size = 0; - if (av_read_frame(format_ctx, &pkt) == 0) { - if (pkt.stream_index == video_stream_index) { - if (avcodec_send_packet(video_codec_ctx, &pkt) < 0) { + pkt, av_packet_unref); + pkt->data = nullptr; + pkt->size = 0; + if (av_read_frame(format_ctx, pkt) == 0) { + if (pkt->stream_index == video_stream_index) { + if (avcodec_send_packet(video_codec_ctx, pkt) < 0) { fprintf(stderr, "%s: Cannot send packet to video codec.\n", pathname.c_str()); *error = true; return AVFrameWithDeleter(nullptr);