ret = av_read_frame( context, &pkt );
// We only deal with audio from the selected audio index
- if ( ret >= 0 && pkt.data && pkt.size > 0 && ( pkt.stream_index == self->audio_index ||
- ( self->audio_index == INT_MAX && context->streams[ pkt.stream_index ]->codec->codec_type == CODEC_TYPE_AUDIO ) ) )
+ index = pkt.stream_index;
+ if ( ret >= 0 && pkt.data && pkt.size > 0 && ( index == self->audio_index ||
+ ( self->audio_index == INT_MAX && context->streams[ index ]->codec->codec_type == CODEC_TYPE_AUDIO ) ) )
{
- int channels2 = self->audio_index == INT_MAX ? self->audio_codec[pkt.stream_index]->channels : *channels;
+ int channels2 = ( self->audio_index == INT_MAX || !self->audio_resample[index] ) ?
+ self->audio_codec[index]->channels : *channels;
ret = decode_audio( self, &ignore, pkt, channels2, *samples, real_timecode, fps );
}
av_free_packet( &pkt );