decoder/ffmpeg: move code to copy_interleave_frame2()
This commit is contained in:
parent
e39382dedd
commit
230a3eb400
@ -234,6 +234,17 @@ time_to_ffmpeg(double t, const AVRational time_base)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53,25,0)
|
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53,25,0)
|
||||||
|
|
||||||
|
static void
|
||||||
|
copy_interleave_frame2(uint8_t *dest, const uint8_t *const*src,
|
||||||
|
unsigned nchannels, size_t plane_size)
|
||||||
|
{
|
||||||
|
for (unsigned channel = 0; channel < nchannels; ++channel) {
|
||||||
|
memcpy(dest, src[channel], plane_size);
|
||||||
|
dest += plane_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy PCM data from a AVFrame to an interleaved buffer.
|
* Copy PCM data from a AVFrame to an interleaved buffer.
|
||||||
*/
|
*/
|
||||||
@ -254,11 +265,9 @@ copy_interleave_frame(const AVCodecContext *codec_context,
|
|||||||
|
|
||||||
if (av_sample_fmt_is_planar(codec_context->sample_fmt) &&
|
if (av_sample_fmt_is_planar(codec_context->sample_fmt) &&
|
||||||
codec_context->channels > 1) {
|
codec_context->channels > 1) {
|
||||||
for (int i = 0, channels = codec_context->channels;
|
copy_interleave_frame2(buffer,
|
||||||
i < channels; i++) {
|
(const uint8_t *const*)frame->extended_data,
|
||||||
memcpy(buffer, frame->extended_data[i], plane_size);
|
codec_context->channels, plane_size);
|
||||||
buffer += plane_size;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
memcpy(buffer, frame->extended_data[0], data_size);
|
memcpy(buffer, frame->extended_data[0], data_size);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user