summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demuxer.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-09-07 14:42:25 +0200
committerwm4 <wm4@nowhere>2012-09-18 21:07:30 +0200
commitae9c3d530c55e86eb54d8cf23a23c5ce6301ec6e (patch)
tree20f50ce7713ffa7d671a86fc43b709354ae8991a /libmpdemux/demuxer.c
parentc323592c3ac8557e09b8235bd43196f968e91168 (diff)
downloadmpv-ae9c3d530c55e86eb54d8cf23a23c5ce6301ec6e.tar.bz2
mpv-ae9c3d530c55e86eb54d8cf23a23c5ce6301ec6e.tar.xz
libmpdemux: add back demux_ts
Someone wanted this. Apparently both libavformat's TS demuxer and demux_ts are crap, and work/fail in different cases. This demuxer has been removed in 1fde09db6f4ce. All code added comes from the revision before that. Some required bits have been added in the commit before this one (re-adding demux_mpg), in particular the changes to video.c. stream_dvb will use this demuxer by default, otherwise demux_lavf is preferred (as it has been before). Some TS related command line options are not re-added. Closed captions might not work.
Diffstat (limited to 'libmpdemux/demuxer.c')
-rw-r--r--libmpdemux/demuxer.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index 2372e10843..2706f3a9ea 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -69,6 +69,7 @@ extern const demuxer_desc_t demuxer_desc_mpeg_gxf;
extern const demuxer_desc_t demuxer_desc_mpeg_es;
extern const demuxer_desc_t demuxer_desc_mpeg4_es;
extern const demuxer_desc_t demuxer_desc_h264_es;
+extern const demuxer_desc_t demuxer_desc_mpeg_ts;
/* Please do not add any new demuxers here. If you want to implement a new
* demuxer, add it to libavformat, except for wrappers around external
@@ -100,6 +101,7 @@ const demuxer_desc_t *const demuxer_list[] = {
&demuxer_desc_mpeg_es,
&demuxer_desc_mpeg4_es,
&demuxer_desc_h264_es,
+ &demuxer_desc_mpeg_ts,
/* Please do not add any new demuxers here. If you want to implement a new
* demuxer, add it to libavformat, except for wrappers around external
* libraries and demuxers requiring binary support. */
@@ -361,6 +363,17 @@ sh_sub_t *new_sh_sub_sid(demuxer_t *demuxer, int id, int sid)
return demuxer->s_streams[id];
}
+struct sh_sub *new_sh_sub_sid_lang(struct demuxer *demuxer, int id, int sid,
+ const char *lang)
+{
+ struct sh_sub *sh = new_sh_sub_sid(demuxer, id, sid);
+ if (lang && lang[0] && strcmp(lang, "und")) {
+ sh->lang = talloc_strdup(sh, lang);
+ mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_SID_%d_LANG=%s\n", sid, lang);
+ }
+ return sh;
+}
+
static void free_sh_sub(sh_sub_t *sh)
{
mp_msg(MSGT_DEMUXER, MSGL_DBG2, "DEMUXER: freeing sh_sub at %p\n", sh);
@@ -988,7 +1001,7 @@ struct demuxer *demux_open_withparams(struct MPOpts *opts,
// correctly.
switch (file_format) {
//case DEMUXER_TYPE_MPEG_PS:
- case DEMUXER_TYPE_MPEG_TS:
+ //case DEMUXER_TYPE_MPEG_TS:
case DEMUXER_TYPE_Y4M:
case DEMUXER_TYPE_NSV:
case DEMUXER_TYPE_AAC: