rendered paste body while (pkt.size > 0) { AVFrame* frame = av_frame_alloc(); int got_frame = 0; int bytes_used = avcodec_decode_audio4(input_codec_context, frame, &got_frame, &pkt); if (bytes_used < 0) { LOG4CXX_ERROR(logger, "Error decoding audio packet: " + std::to_string(bytes_used)); // Do not attempt to continue decoding the audio frame - decoder will crash pkt.size = 0; got_frame = 0; } else { pkt.size -= bytes_used; pkt.data += bytes_used; // Remove packet DTS/PTS settings to not confuse the decoder on next passes pkt.dts = pkt.pts = AV_NOPTS_VALUE; } if (got_frame) { frame->pts = av_frame_get_best_effort_timestamp(frame); LOG4CXX_TRACE(logger, "Frame [" + std::to_string(frame->nb_samples) + "] Timestamp " + std::to_string(frame->pts)); decoded_frames.push_back(std::make_shared<RawFrame>(frame, input_time_base)); } av_frame_free(&frame); if (bytes_used <= 0) break; }