diff --git a/mythtv/libs/libmyth/audio/spdifencoder.cpp b/mythtv/libs/libmyth/audio/spdifencoder.cpp index 3310efa2fc7..cca24194b88 100644 --- a/mythtv/libs/libmyth/audio/spdifencoder.cpp +++ b/mythtv/libs/libmyth/audio/spdifencoder.cpp @@ -99,17 +99,24 @@ SPDIFEncoder::~SPDIFEncoder(void) */ void SPDIFEncoder::WriteFrame(unsigned char *data, int size) { - AVPacket packet; - av_init_packet(&packet); + AVPacket *packet = av_packet_alloc(); + if (packet == nullptr) + { + LOG(VB_GENERAL, LOG_ERR, "packet allocation failed"); + return; + } + static int s_pts = 1; // to avoid warning "Encoder did not produce proper pts" - packet.pts = s_pts++; - packet.data = data; - packet.size = size; + packet->pts = s_pts++; + packet->data = data; + packet->size = size; - if (av_write_frame(m_oc, &packet) < 0) + if (av_write_frame(m_oc, packet) < 0) { LOG(VB_AUDIO, LOG_ERR, LOC + "av_write_frame"); } + + av_packet_free(&packet); } /**