summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
eceaa40)
And make it more clear which conversion function is needed for which
version of libavcodec.
-static void planar_to_interleaved( uint8_t *dest, uint8_t *src, int samples, int channels, int bytes_per_sample )
+#if LIBAVCODEC_VERSION_MAJOR >= 55
+static void planar_to_interleaved( uint8_t *dest, AVFrame *src, int samples, int channels, int bytes_per_sample )
{
int s, c;
for ( s = 0; s < samples; s++ )
{
for ( c = 0; c < channels; c++ )
{
{
int s, c;
for ( s = 0; s < samples; s++ )
{
for ( c = 0; c < channels; c++ )
{
- memcpy( dest, src + ( c * samples + s ) * bytes_per_sample, bytes_per_sample );
+ memcpy( dest, &src->data[c][s * bytes_per_sample], bytes_per_sample );
dest += bytes_per_sample;
}
}
}
dest += bytes_per_sample;
}
}
}
-
-static void planar_to_interleaved2( uint8_t *dest, AVFrame *src, int samples, int channels, int bytes_per_sample )
+#else
+static void planar_to_interleaved( uint8_t *dest, uint8_t *src, int samples, int channels, int bytes_per_sample )
{
int s, c;
for ( s = 0; s < samples; s++ )
{
for ( c = 0; c < channels; c++ )
{
{
int s, c;
for ( s = 0; s < samples; s++ )
{
for ( c = 0; c < channels; c++ )
{
- memcpy( dest, &src->data[c][s * bytes_per_sample], bytes_per_sample );
+ memcpy( dest, src + ( c * samples + s ) * bytes_per_sample, bytes_per_sample );
dest += bytes_per_sample;
}
}
}
dest += bytes_per_sample;
}
}
}
static int decode_audio( producer_avformat self, int *ignore, AVPacket pkt, int channels, int samples, double timecode, double fps )
{
static int decode_audio( producer_avformat self, int *ignore, AVPacket pkt, int channels, int samples, double timecode, double fps )
{
case AV_SAMPLE_FMT_S32P:
case AV_SAMPLE_FMT_FLTP:
#if LIBAVCODEC_VERSION_MAJOR >= 55
case AV_SAMPLE_FMT_S32P:
case AV_SAMPLE_FMT_FLTP:
#if LIBAVCODEC_VERSION_MAJOR >= 55
- planar_to_interleaved2( dest, self->audio_frame, convert_samples, codec_context->channels, sizeof_sample );
+ planar_to_interleaved( dest, self->audio_frame, convert_samples, codec_context->channels, sizeof_sample );
#else
planar_to_interleaved( dest, decode_buffer, convert_samples, codec_context->channels, sizeof_sample );
#endif
#else
planar_to_interleaved( dest, decode_buffer, convert_samples, codec_context->channels, sizeof_sample );
#endif