summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demuxer.c
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2011-01-26 20:42:15 +0200
committerUoti Urpala <uau@glyph.nonexistent.invalid>2011-01-26 20:42:15 +0200
commitf50f34245efa1012855a693558680bcfb7c348e5 (patch)
tree76e8fc186a96fdc1106b5c634d5937e514a06037 /libmpdemux/demuxer.c
parentec55a188e4d0232acd50fcabc0a3db3be2b9538e (diff)
parentc9026cb3210205b07e2e068467a18ee40f9259a3 (diff)
downloadmpv-f50f34245efa1012855a693558680bcfb7c348e5.tar.bz2
mpv-f50f34245efa1012855a693558680bcfb7c348e5.tar.xz
Merge branch 'sub'
* sub: sub/OSD: move some related files to sub/ subtitles: options: enable -ass by default subtitles: change default libass rendering style demux_mkv, chapters: change millisecond arithmetic to ns cleanup: rename ass_* functions to mp_ass_* subs: use correct font aspect ratio for libass + converted subs cleanup: some random minor code simplification and cleanup vf_vo: fix EOSD change detection bug sd_ass: remove subreader use, support plaintext markup subtitles: style support for common SubRip tags and MicroDVD core: ordered chapters: fix bad subtitle parameter subs/demux: don't try to enable sub track when creating it subtitles/demux: store duration instead of endpts in demux packets subtitles: add framework for subtitle decoders options: add special -leak-report option subtitles: remove code trying to handle text subs with libavcodec cleanup: move MP_NOPTS_VALUE definition to mpcommon.h subtitles: move global ass_track to struct osd_state core: move most mpcommon.c contents to mplayer.c core: move global "subdata" and "vo_sub_last" to mpctx subtitles: remove sub_last_pts hack options: move -noconfig to option struct, simplify
Diffstat (limited to 'libmpdemux/demuxer.c')
-rw-r--r--libmpdemux/demuxer.c38
1 files changed, 7 insertions, 31 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index 056822e1ab..6607f2399f 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -43,8 +43,6 @@
#include "libmpcodecs/dec_teletext.h"
#include "libmpcodecs/vd_ffmpeg.h"
-#include "ass_mp.h"
-
#ifdef CONFIG_FFMPEG
#include "libavcodec/avcodec.h"
#if MP_INPUT_BUFFER_PADDING_SIZE < FF_INPUT_BUFFER_PADDING_SIZE
@@ -188,7 +186,7 @@ struct demux_packet *new_demux_packet(size_t len)
dp->len = len;
dp->next = NULL;
dp->pts = MP_NOPTS_VALUE;
- dp->endpts = MP_NOPTS_VALUE;
+ dp->duration = -1;
dp->stream_pts = MP_NOPTS_VALUE;
dp->pos = 0;
dp->flags = 0;
@@ -351,10 +349,6 @@ sh_sub_t *new_sh_sub_sid(demuxer_t *demuxer, int id, int sid)
sh->opts = demuxer->opts;
mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_SUBTITLE_ID=%d\n", sid);
}
- if (sid == demuxer->opts->sub_id) {
- demuxer->sub->id = id;
- demuxer->sub->sh = demuxer->s_streams[id];
- }
return demuxer->s_streams[id];
}
@@ -373,10 +367,6 @@ static void free_sh_sub(sh_sub_t *sh)
{
mp_msg(MSGT_DEMUXER, MSGL_DBG2, "DEMUXER: freeing sh_sub at %p\n", sh);
free(sh->extradata);
-#ifdef CONFIG_ASS
- if (sh->ass_track)
- ass_free_track(sh->ass_track);
-#endif
free(sh->lang);
#ifdef CONFIG_FFMPEG
clear_parser((sh_common_t *)sh);
@@ -1076,20 +1066,6 @@ static struct demuxer *demux_open_stream(struct MPOpts *opts,
sh_video->fps, sh_video->i_bps * 0.008f,
sh_video->i_bps / 1024.0f);
}
-#ifdef CONFIG_ASS
- if (opts->ass_enabled && ass_library) {
- for (int i = 0; i < MAX_S_STREAMS; ++i) {
- sh_sub_t *sh = demuxer->s_streams[i];
- if (sh && sh->type == 'a') {
- sh->ass_track = ass_new_track(ass_library);
- if (sh->ass_track && sh->extradata)
- ass_process_codec_private(sh->ass_track, sh->extradata,
- sh->extradata_len);
- } else if (sh && sh->type != 'v')
- sh->ass_track = ass_default_track(ass_library);
- }
- }
-#endif
return demuxer;
}
@@ -1418,9 +1394,9 @@ int demuxer_add_chapter(demuxer_t *demuxer, struct bstr name,
talloc_strdup(demuxer->chapters, mp_gtext("unknown"));
mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_CHAPTER_ID=%d\n", demuxer->num_chapters);
- mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_CHAPTER_%d_START=%"PRIu64"\n", demuxer->num_chapters, start);
+ mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_CHAPTER_%d_START=%"PRIu64"\n", demuxer->num_chapters, start / 1000000);
if (end)
- mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_CHAPTER_%d_END=%"PRIu64"\n", demuxer->num_chapters, end);
+ mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_CHAPTER_%d_END=%"PRIu64"\n", demuxer->num_chapters, end / 1000000);
if (name.start)
mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_CHAPTER_%d_NAME=%.*s\n", demuxer->num_chapters, BSTR_P(name));
@@ -1473,7 +1449,7 @@ int demuxer_seek_chapter(demuxer_t *demuxer, int chapter, double *seek_pts,
if (chapter < 0)
chapter = 0;
- *seek_pts = demuxer->chapters[chapter].start / 1000.0;
+ *seek_pts = demuxer->chapters[chapter].start / 1e9;
if (chapter_name)
*chapter_name = talloc_strdup(NULL, demuxer->chapters[chapter].name);
@@ -1490,7 +1466,7 @@ int demuxer_get_current_chapter(demuxer_t *demuxer, double time_now)
&chapter) == STREAM_UNSUPPORTED)
chapter = -2;
} else {
- uint64_t now = time_now * 1000 + 0.5;
+ uint64_t now = time_now * 1e9 + 0.5;
for (chapter = demuxer->num_chapters - 1; chapter >= 0; --chapter) {
if (demuxer->chapters[chapter].start <= now)
break;
@@ -1533,8 +1509,8 @@ float demuxer_chapter_time(demuxer_t *demuxer, int chapter, float *end)
if (demuxer->num_chapters && demuxer->chapters && chapter >= 0
&& chapter < demuxer->num_chapters) {
if (end)
- *end = demuxer->chapters[chapter].end / 1000.0;
- return demuxer->chapters[chapter].start / 1000.0;
+ *end = demuxer->chapters[chapter].end / 1e9;
+ return demuxer->chapters[chapter].start / 1e9;
}
return -1.0;
}