From 9c02ae7e9510897826334ddf79fa3a0cf65a78a2 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 3 Aug 2012 12:24:55 +0200 Subject: demuxer: introduce a general stream struct There are different C types for each stream type: sh_video for video, sh_audio for audio, sh_sub for sub. There is no type that handles all stream types in a generic way. Instead, there's a macro SH_COMMON, that is used to define common fields for all 3 stream structs. Accessing the common fields is hard if you want to be independent from the stream type. Introduce an actual generic stream struct (struct sh_stream), which is supposed to unify all 3 stream types one day. Once all fields defined by SH_COMMON have been moved into sh_stream, the transition is complete. Move some fields into sh_stream, and rewrite osd_show_tracks to use them. --- libmpdemux/demux_mkv.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'libmpdemux/demux_mkv.c') diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index 49168e88e4..bf6a53a14f 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -1271,9 +1271,9 @@ static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track, } sh_v = new_sh_video(demuxer, vid); - sh_v->demuxer_id = track->tnum; + sh_v->gsh->demuxer_id = track->tnum; sh_v->demuxer_codecname = track->codec_id; - sh_v->title = talloc_strdup(sh_v, track->name); + sh_v->gsh->title = talloc_strdup(sh_v, track->name); sh_v->bih = bih; sh_v->format = sh_v->bih->biCompression; if (track->v_frate == 0.0) @@ -1344,10 +1344,10 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track, if (track->language && (strcmp(track->language, "und") != 0)) sh_a->lang = talloc_strdup(sh_a, track->language); - sh_a->demuxer_id = track->tnum; + sh_a->gsh->demuxer_id = track->tnum; sh_a->demuxer_codecname = track->codec_id; - sh_a->title = talloc_strdup(sh_a, track->name); - sh_a->default_track = track->default_track; + sh_a->gsh->title = talloc_strdup(sh_a, track->name); + sh_a->gsh->default_track = track->default_track; sh_a->ds = demuxer->audio; if (track->ms_compat) { if (track->private_size < sizeof(*sh_a->wf)) @@ -1583,7 +1583,7 @@ static int demux_mkv_open_sub(demuxer_t *demuxer, mkv_track_t *track, int size; uint8_t *buffer; sh_sub_t *sh = new_sh_sub(demuxer, sid); - sh->demuxer_id = track->tnum; + sh->gsh->demuxer_id = track->tnum; sh->demuxer_codecname = track->codec_id; track->sh_sub = sh; sh->type = track->subtitle_type; @@ -1600,8 +1600,8 @@ static int demux_mkv_open_sub(demuxer_t *demuxer, mkv_track_t *track, sh->extradata_len = track->private_size; if (track->language && (strcmp(track->language, "und") != 0)) sh->lang = talloc_strdup(sh, track->language); - sh->title = talloc_strdup(sh, track->name); - sh->default_track = track->default_track; + sh->gsh->title = talloc_strdup(sh, track->name); + sh->gsh->default_track = track->default_track; } else { mp_tmsg(MSGT_DEMUX, MSGL_ERR, "[mkv] Subtitle type '%s' is not supported.\n", -- cgit v1.2.3