Commit eb192137 authored by Max Kellermann's avatar Max Kellermann

decoder/ffmpeg: copy the AVPacket in ffmpeg_send_packet()

Revert commit 70495aad by rewriting it. Turns out, in old FFmpeg versions, copying the AVPacket is necessary.
parent c25b464f
ver 0.19.18 (not yet released) ver 0.19.18 (not yet released)
* decoder * decoder
- ffmpeg: fix crash with older FFmpeg versions (< 3.0)
- ffmpeg: log detailed error message - ffmpeg: log detailed error message
ver 0.19.17 (2016/07/09) ver 0.19.17 (2016/07/09)
......
...@@ -419,6 +419,24 @@ ffmpeg_send_packet(Decoder &decoder, InputStream &is, ...@@ -419,6 +419,24 @@ ffmpeg_send_packet(Decoder &decoder, InputStream &is,
return cmd; return cmd;
} }
static DecoderCommand
ffmpeg_send_packet(Decoder &decoder, InputStream &is,
const AVPacket &packet,
AVCodecContext &codec_context,
const AVStream &stream,
AVFrame *frame,
uint64_t min_frame, size_t pcm_frame_size,
FfmpegBuffer &buffer)
{
return ffmpeg_send_packet(decoder, is,
/* copy the AVPacket, because FFmpeg
< 3.0 requires this */
AVPacket(packet),
codec_context, stream,
frame, min_frame, pcm_frame_size,
buffer);
}
gcc_const gcc_const
static SampleFormat static SampleFormat
ffmpeg_sample_format(enum AVSampleFormat sample_fmt) ffmpeg_sample_format(enum AVSampleFormat sample_fmt)
...@@ -627,7 +645,7 @@ ffmpeg_decode(Decoder &decoder, InputStream &input) ...@@ -627,7 +645,7 @@ ffmpeg_decode(Decoder &decoder, InputStream &input)
if (packet.stream_index == audio_stream) { if (packet.stream_index == audio_stream) {
cmd = ffmpeg_send_packet(decoder, input, cmd = ffmpeg_send_packet(decoder, input,
std::move(packet), packet,
*codec_context, *codec_context,
*av_stream, *av_stream,
frame, frame,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment