summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mkv.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-08-03 12:24:55 +0200
committerwm4 <wm4@nowhere>2012-08-03 13:25:41 +0200
commit9c02ae7e9510897826334ddf79fa3a0cf65a78a2 (patch)
tree813c9a2b757b2531d3fd29cf483ac1ba89093f7f /libmpdemux/demux_mkv.c
parentd722f8fe61296e5b277ed94be055bb9ef1c99e19 (diff)
downloadmpv-9c02ae7e9510897826334ddf79fa3a0cf65a78a2.tar.bz2
mpv-9c02ae7e9510897826334ddf79fa3a0cf65a78a2.tar.xz
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.
Diffstat (limited to 'libmpdemux/demux_mkv.c')
-rw-r--r--libmpdemux/demux_mkv.c16
1 files changed, 8 insertions, 8 deletions
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",