return codec_find_profile(name);
}
+static TVHAudioCodecProfile *
+_audio_profile(TVHCodecProfile *profile)
+{
+ if (profile &&
+ idnode_is_instance(&profile->idnode,
+ (idclass_t *)&codec_profile_audio_class)) {
+ return (TVHAudioCodecProfile *)profile;
+ }
+ return NULL;
+}
+
static int
lang_match(const char *lang, tvh_ssc_t *ssc, int *index, int value)
int subtitle_index = -1;
enum AVMediaType media_type;
+ aprofile = _audio_profile(self->profiles[AVMEDIA_TYPE_AUDIO]);
+
for (i = 0; i < ss_src->ss_num_components; i++) {
if ((ssc = &ss_src->ss_components[i]) == NULL)
continue;
video_index = i;
break;
case AVMEDIA_TYPE_AUDIO:
- profile = self->profiles[media_type];
- if (profile &&
- idnode_is_instance(&profile->idnode,
- (idclass_t *)&codec_profile_audio_class)) {
- aprofile = (TVHAudioCodecProfile *)profile;
+ if (aprofile) {
if (lang_match(aprofile->language1, ssc, &audio_pindex[0], i) == 0 &&
lang_match(aprofile->language2, ssc, &audio_pindex[1], i) == 0)
lang_match(aprofile->language3, ssc, &audio_pindex[2], i);
media_type = ssc_get_media_type(ssc);
if (media_type != AVMEDIA_TYPE_AUDIO)
continue;
- aprofile = (TVHAudioCodecProfile *)self->profiles[media_type];
- if (++j >= aprofile->tracks)
+ j++;
+ if (aprofile && j >= aprofile->tracks)
break;
}
}
if (media_type != AVMEDIA_TYPE_AUDIO)
continue;
indexes[count++] = i;
- aprofile = (TVHAudioCodecProfile *)self->profiles[media_type];
- if (++j >= aprofile->tracks)
+ j++;
+ if (aprofile && j >= aprofile->tracks)
break;
}
}