From d9b19390ad75bcf5f2b0d5ce5d1f034bd9b6ae15 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 26 Jun 2015 23:16:25 +0200 Subject: demux_mkv: use arrays for codec lookup tables No need to define extra types. --- demux/demux_mkv.c | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) (limited to 'demux') diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index 0f355ddb66..d8e93ef473 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -1204,12 +1204,7 @@ static void display_create_tracks(demuxer_t *demuxer) } } -typedef struct { - char *id; - const char *codec; -} videocodec_info_t; - -static const videocodec_info_t vinfo[] = { +static const char *const mkv_video_tags[][2] = { {"V_MJPEG", "mjpeg"}, {"V_MPEG1", "mpeg1video"}, {"V_MPEG2", "mpeg2video"}, @@ -1297,11 +1292,12 @@ static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track) extradata_size = track->private_size; } } else { - const videocodec_info_t *vi = vinfo; - while (vi->id && strcmp(vi->id, track->codec_id)) - vi++; - if (vi->codec) - sh->codec = vi->codec; + for (int i = 0; mkv_video_tags[i][0]; i++) { + if (!strcmp(mkv_video_tags[i][0], track->codec_id)) { + sh->codec = mkv_video_tags[i][1]; + break; + } + } if (track->private_data && track->private_size > 0) { extradata = track->private_data; extradata_size = track->private_size; @@ -1342,10 +1338,7 @@ static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track) return 0; } -static const struct mkv_audio_tag { - const char *id; - const char *codec; -} mkv_audio_tags[] = { +static const char *const mkv_audio_tags[][2] = { { "A_MPEG/L2", "mp3" }, { "A_MPEG/L3", "mp3" }, { "A_AC3", "ac3" }, @@ -1384,9 +1377,9 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track) sh_a->bits_per_coded_sample = track->a_bps ? track->a_bps : 16; sh_a->samplerate = (uint32_t) track->a_osfreq; - for (int i = 0; mkv_audio_tags[i].id; i++) { - if (!strcmp(track->codec_id, mkv_audio_tags[i].id)) { - sh->codec = mkv_audio_tags[i].codec; + for (int i = 0; mkv_audio_tags[i][0]; i++) { + if (!strcmp(mkv_audio_tags[i][0], track->codec_id)) { + sh->codec = mkv_audio_tags[i][1]; break; } } -- cgit v1.2.3