From e9022ec470e9334a6d0f3cb044027964ac4f63f6 Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Wed, 12 Jan 2011 15:29:31 +0200 Subject: cleanup: move MP_NOPTS_VALUE definition to mpcommon.h --- libmpdemux/demuxer.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'libmpdemux') diff --git a/libmpdemux/demuxer.h b/libmpdemux/demuxer.h index 9b66e27910..df0fdaa9bb 100644 --- a/libmpdemux/demuxer.h +++ b/libmpdemux/demuxer.h @@ -27,6 +27,7 @@ #include "stream/stream.h" #include "bstr.h" +#include "mpcommon.h" struct MPOpts; @@ -96,9 +97,6 @@ struct MPOpts; // A virtual demuxer type for the network code #define DEMUXER_TYPE_PLAYLIST (2<<16) - -#define MP_NOPTS_VALUE (-1LL<<63) //both int64_t and double should be able to represent this exactly - enum timestamp_type { TIMESTAMP_TYPE_PTS, TIMESTAMP_TYPE_SORT, -- cgit v1.2.3 From e990fb2ffeaa786339895c8f3b3f104ef536bf39 Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Sun, 16 Jan 2011 20:03:08 +0200 Subject: subtitles: add framework for subtitle decoders Add a framework for subtitle decoder modules that work more like audio/video decoders do, and change libass rendering of demuxed subtitles to use the new framework. The old subtitle code is messy, with details specific to handling particular subtitle types spread over high-level code. This should make it easier to clean things up and fix some bugs/limitations. --- libmpdemux/demuxer.c | 20 -------------------- libmpdemux/stheader.h | 5 ++++- 2 files changed, 4 insertions(+), 21 deletions(-) (limited to 'libmpdemux') diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index dc5d8858bc..c45cb18729 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 @@ -295,10 +293,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); @@ -998,20 +992,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; } diff --git a/libmpdemux/stheader.h b/libmpdemux/stheader.h index 4bb2da3ac7..dc84518abc 100644 --- a/libmpdemux/stheader.h +++ b/libmpdemux/stheader.h @@ -19,6 +19,8 @@ #ifndef MPLAYER_STHEADER_H #define MPLAYER_STHEADER_H +#include + #include "aviheader.h" #include "ms_hdr.h" struct MPOpts; @@ -135,9 +137,10 @@ typedef struct sh_sub { SH_COMMON int sid; char type; // t = text, v = VobSub, a = SSA/ASS + bool active; // after track switch decoder may stay initialized, not active unsigned char* extradata; // extra header data passed from demuxer int extradata_len; - struct ass_track *ass_track; // for SSA/ASS streams (type == 'a') + const struct sd_functions *sd_driver; } sh_sub_t; // demuxer.c: -- cgit v1.2.3 From 8e7dae173d07533e1de46fad7bb2f834febe27cf Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Sun, 16 Jan 2011 20:51:48 +0200 Subject: subtitles/demux: store duration instead of endpts in demux packets --- libmpdemux/demux_lavf.c | 4 ++-- libmpdemux/demux_mkv.c | 2 +- libmpdemux/demuxer.h | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'libmpdemux') diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 96f83407b0..03ffa17c43 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -756,11 +756,11 @@ static int demux_lavf_fill_buffer(demuxer_t *demux, demux_stream_t *dsds){ if(ts != AV_NOPTS_VALUE){ dp->pts = ts * av_q2d(priv->avfc->streams[id]->time_base); priv->last_pts= dp->pts * AV_TIME_BASE; - // always set endpts for subtitles, even if PKT_FLAG_KEY is not set, + // always set duration for subtitles, even if PKT_FLAG_KEY is not set, // otherwise they will stay on screen to long if e.g. ASS is demuxed from mkv if((ds == demux->sub || (pkt.flags & PKT_FLAG_KEY)) && pkt.convergence_duration > 0) - dp->endpts = dp->pts + pkt.convergence_duration * av_q2d(priv->avfc->streams[id]->time_base); + dp->duration = pkt.convergence_duration * av_q2d(priv->avfc->streams[id]->time_base); } dp->pos=demux->filepos; dp->flags= !!(pkt.flags&PKT_FLAG_KEY); diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index 2414b01b4b..b75f07fd67 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -1884,7 +1884,7 @@ static void handle_subtitles(demuxer_t *demuxer, mkv_track_t *track, dp = new_demux_packet(size); memcpy(dp->buffer, block, size); dp->pts = timecode / 1000.0; - dp->endpts = (timecode + block_duration) / 1000.0; + dp->duration = block_duration / 1000.0; ds_add_packet(demuxer->sub, dp); } diff --git a/libmpdemux/demuxer.h b/libmpdemux/demuxer.h index df0fdaa9bb..ece4b74af8 100644 --- a/libmpdemux/demuxer.h +++ b/libmpdemux/demuxer.h @@ -127,7 +127,7 @@ enum timestamp_type { typedef struct demux_packet { int len; double pts; - double endpts; + double duration; double stream_pts; off_t pos; // position in index (AVI) or file (MPG) unsigned char* buffer; @@ -289,7 +289,7 @@ static inline demux_packet_t* new_demux_packet(int 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; -- cgit v1.2.3 From b86c9e59228c35c955d6758269755720cef78b50 Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Sun, 16 Jan 2011 20:59:11 +0200 Subject: subs/demux: don't try to enable sub track when creating it demuxer.c new_sh_sub_sid() tried to immediately select the created sub track for playback if its id matched the "-sid" option value. This was buggy, as more initialization is needed to properly enable subtitles. Normally the correct track to play is selected after the demuxer has been created. It's possible that some DVD use case or such depended on the removed code to make -sid work with a subtitle track that's not found at start and only added later (vobsubs probably would start playing without separate initialization); if so then that needs to be fixed later in a different way. --- libmpdemux/demuxer.c | 4 ---- 1 file changed, 4 deletions(-) (limited to 'libmpdemux') diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index c45cb18729..eb548d4614 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -271,10 +271,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]; } -- cgit v1.2.3 From 304cafd31dfaeee853e138a460b7ba82e65ed420 Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Mon, 24 Jan 2011 00:29:01 +0200 Subject: demux_mkv, chapters: change millisecond arithmetic to ns demux_mkv kept various integer timestamps in millisecond units. Matroska timestamp arithmetic is however specified in nanoseconds (even though files typically use 1 ms precision), and using ms units instead of that only made things more complex. Based on the demux_mkv example the general demuxer-level chapter structure also used ms units. Change the demux_mkv arithmetic and demuxer chapter structures to use nanoseconds instead. This also fixes a seeking problem in demux_mkv with files using a TimecodeScale other than the usual 1000000 (confusion between ms and TimecodeScale*ns units). --- libmpdemux/demux_lavf.c | 4 ++-- libmpdemux/demux_mkv.c | 58 +++++++++++++++++++++++-------------------------- libmpdemux/demuxer.c | 12 +++++----- 3 files changed, 35 insertions(+), 39 deletions(-) (limited to 'libmpdemux') diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 03ffa17c43..c84a17e4e3 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -588,8 +588,8 @@ static demuxer_t* demux_open_lavf(demuxer_t *demuxer){ for(i=0; i < avfc->nb_chapters; i++) { AVChapter *c = avfc->chapters[i]; - uint64_t start = av_rescale_q(c->start, c->time_base, (AVRational){1,1000}); - uint64_t end = av_rescale_q(c->end, c->time_base, (AVRational){1,1000}); + uint64_t start = av_rescale_q(c->start, c->time_base, (AVRational){1,1000000000}); + uint64_t end = av_rescale_q(c->end, c->time_base, (AVRational){1,1000000000}); t = av_metadata_get(c->metadata, "title", NULL, 0); demuxer_add_chapter(demuxer, t ? BSTR(t->value) : BSTR(NULL), start, end); } diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index b75f07fd67..499c664360 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -184,7 +184,7 @@ typedef struct mkv_demuxer { } *cluster_positions; int num_cluster_pos; - int64_t skip_to_timecode; + uint64_t skip_to_timecode; int v_skip_to_keyframe, a_skip_to_keyframe; int num_audio_tracks; @@ -786,8 +786,8 @@ static int demux_mkv_read_chapters(struct demuxer *demuxer) if (!ca->n_chapter_time_start) mp_msg(MSGT_DEMUX, warn_level, "[mkv] Chapter lacks start time\n"); - chapter.start = ca->chapter_time_start / 1000000; - chapter.end = ca->chapter_time_end / 1000000; + chapter.start = ca->chapter_time_start; + chapter.end = ca->chapter_time_end; if (ca->n_chapter_display) { if (ca->n_chapter_display > 1) @@ -824,14 +824,14 @@ static int demux_mkv_read_chapters(struct demuxer *demuxer) mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] Chapter %u from %02d:%02d:%02d.%03d " "to %02d:%02d:%02d.%03d, %.*s\n", i, - (int) (chapter.start / 60 / 60 / 1000), - (int) ((chapter.start / 60 / 1000) % 60), - (int) ((chapter.start / 1000) % 60), - (int) (chapter.start % 1000), - (int) (chapter.end / 60 / 60 / 1000), - (int) ((chapter.end / 60 / 1000) % 60), - (int) ((chapter.end / 1000) % 60), - (int) (chapter.end % 1000), + (int) (chapter.start / 60 / 60 / 1000000000), + (int) ((chapter.start / 60 / 1000000000) % 60), + (int) ((chapter.start / 1000000000) % 60), + (int) (chapter.start % 1000000000), + (int) (chapter.end / 60 / 60 / 1000000000), + (int) ((chapter.end / 60 / 1000000000) % 60), + (int) ((chapter.end / 1000000000) % 60), + (int) (chapter.end % 1000000000), BSTR_P(name)); if (idx == selected_edition){ @@ -1883,13 +1883,13 @@ static void handle_subtitles(demuxer_t *demuxer, mkv_track_t *track, sub_utf8 = 1; dp = new_demux_packet(size); memcpy(dp->buffer, block, size); - dp->pts = timecode / 1000.0; - dp->duration = block_duration / 1000.0; + dp->pts = timecode / 1e9; + dp->duration = block_duration / 1e9; ds_add_packet(demuxer->sub, dp); } static void handle_realvideo(demuxer_t *demuxer, mkv_track_t *track, - uint8_t *buffer, uint32_t size, int block_bref) + uint8_t *buffer, uint32_t size, int64_t block_bref) { mkv_demuxer_t *mkv_d = (mkv_demuxer_t *) demuxer->priv; demux_packet_t *dp; @@ -1915,7 +1915,7 @@ static void handle_realvideo(demuxer_t *demuxer, mkv_track_t *track, } static void handle_realaudio(demuxer_t *demuxer, mkv_track_t *track, - uint8_t *buffer, uint32_t size, int block_bref) + uint8_t *buffer, uint32_t size, int64_t block_bref) { mkv_demuxer_t *mkv_d = (mkv_demuxer_t *) demuxer->priv; int sps = track->sub_packet_size; @@ -2028,7 +2028,7 @@ static int handle_block(demuxer_t *demuxer, uint8_t *block, uint64_t length, mkv_track_t *track = NULL; demux_stream_t *ds = NULL; uint64_t old_length; - int64_t tc; + uint64_t tc; uint32_t *lace_size; uint8_t laces, flags; int i, num, tmp, use_this_block = 1; @@ -2048,10 +2048,8 @@ static int handle_block(demuxer_t *demuxer, uint8_t *block, uint64_t length, return 0; block += old_length - length; - tc = (time * mkv_d->tc_scale + mkv_d->cluster_tc) / 1000000.0 + 0.5; - if (tc < 0) - tc = 0; - current_pts = tc / 1000.0; + tc = time * mkv_d->tc_scale + mkv_d->cluster_tc; + current_pts = tc / 1e9; for (i = 0; i < mkv_d->num_tracks; i++) if (mkv_d->tracks[i]->tnum == num) { @@ -2080,7 +2078,7 @@ static int handle_block(demuxer_t *demuxer, uint8_t *block, uint64_t length, sh_audio_t *sh = (sh_audio_t *) ds->sh; if (block_duration != 0) { - sh->i_bps = length * 1000 / block_duration; + sh->i_bps = length * 1e9 / block_duration; track->fix_i_bps = 0; } else if (track->qt_last_a_pts == 0.0) track->qt_last_a_pts = current_pts; @@ -2186,8 +2184,7 @@ static int demux_mkv_fill_buffer(demuxer_t *demuxer, demux_stream_t *ds) free(block); return 0; } - block_duration = - block_duration * mkv_d->tc_scale / 1000000.0 + 0.5; + block_duration *= mkv_d->tc_scale; break; case MATROSKA_ID_BLOCK: @@ -2387,7 +2384,7 @@ static struct mkv_index *seek_with_cues(struct demuxer *demuxer, int seek_id, * target time after the last entry - then still seek to the first/last * entry if that's further in the direction wanted than mkv_d->last_pts. */ - int64_t min_diff = target_timecode - mkv_d->last_pts * 1000; + int64_t min_diff = target_timecode - (int64_t)(mkv_d->last_pts * 1e9 + 0.5); if (flags & SEEK_BACKWARD) min_diff = -min_diff; min_diff = FFMAX(min_diff, 1); @@ -2395,8 +2392,7 @@ static struct mkv_index *seek_with_cues(struct demuxer *demuxer, int seek_id, if (seek_id < 0 || mkv_d->indexes[i].tnum == seek_id) { int64_t diff = target_timecode - - (int64_t) (mkv_d->indexes[i].timecode * - mkv_d->tc_scale / 1000000.0 + 0.5); + (int64_t) (mkv_d->indexes[i].timecode * mkv_d->tc_scale); if (flags & SEEK_BACKWARD) diff = -diff; if (diff <= 0) { @@ -2442,9 +2438,8 @@ static void demux_mkv_seek(demuxer_t *demuxer, float rel_seek_secs, if (!(flags & SEEK_ABSOLUTE)) /* relative seek */ rel_seek_secs += mkv_d->last_pts; - int64_t target_timecode = rel_seek_secs * 1000.0; - if (target_timecode < 0) - target_timecode = 0; + rel_seek_secs = FFMAX(rel_seek_secs, 0); + int64_t target_timecode = rel_seek_secs * 1e9 + 0.5; if (mkv_d->indexes == NULL) { /* no index was found */ if (seek_creating_index(demuxer, rel_seek_secs, flags) < 0) @@ -2462,7 +2457,8 @@ static void demux_mkv_seek(demuxer_t *demuxer, float rel_seek_secs, if (flags & SEEK_FORWARD) mkv_d->skip_to_timecode = target_timecode; else - mkv_d->skip_to_timecode = index ? index->timecode : 0; + mkv_d->skip_to_timecode = index ? index->timecode * mkv_d->tc_scale + : 0; mkv_d->a_skip_to_keyframe = 1; demux_mkv_fill_buffer(demuxer, NULL); @@ -2496,7 +2492,7 @@ static void demux_mkv_seek(demuxer_t *demuxer, float rel_seek_secs, if (demuxer->video->id >= 0) mkv_d->v_skip_to_keyframe = 1; - mkv_d->skip_to_timecode = index->timecode; + mkv_d->skip_to_timecode = index->timecode * mkv_d->tc_scale; mkv_d->a_skip_to_keyframe = 1; demux_mkv_fill_buffer(demuxer, NULL); diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index eb548d4614..098c631631 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -1316,9 +1316,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)); @@ -1371,7 +1371,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); @@ -1388,7 +1388,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; @@ -1431,8 +1431,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; } -- cgit v1.2.3 From c9026cb3210205b07e2e068467a18ee40f9259a3 Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Wed, 26 Jan 2011 19:40:52 +0200 Subject: sub/OSD: move some related files to sub/ --- libmpdemux/demux_lavf.c | 2 +- libmpdemux/demux_mkv.c | 6 +----- libmpdemux/demux_mov.c | 2 +- libmpdemux/demux_ogg.c | 4 ++-- libmpdemux/demux_ty.c | 2 +- libmpdemux/demux_ty_osd.c | 4 ++-- libmpdemux/video.c | 2 +- 7 files changed, 9 insertions(+), 13 deletions(-) (limited to 'libmpdemux') diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index c84a17e4e3..904cd1434b 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -36,7 +36,7 @@ #include "demuxer.h" #include "stheader.h" #include "m_option.h" -#include "libvo/sub.h" +#include "sub/sub.h" #include "libavformat/avformat.h" #include "libavformat/avio.h" diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index 499c664360..7432b59d46 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -41,11 +41,7 @@ #include "mp_msg.h" -#include "vobsub.h" -#include "subreader.h" -#include "libvo/sub.h" - -#include "ass_mp.h" +#include "sub/sub.h" #include "libavutil/common.h" diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c index 3175ae34bd..5ecb076698 100644 --- a/libmpdemux/demux_mov.c +++ b/libmpdemux/demux_mov.c @@ -64,7 +64,7 @@ #include "libavutil/common.h" #include "ffmpeg_files/intreadwrite.h" -#include "libvo/sub.h" +#include "sub/sub.h" #include "demux_mov.h" #include "qtpalette.h" diff --git a/libmpdemux/demux_ogg.c b/libmpdemux/demux_ogg.c index 1883c36cd1..3ba2627414 100644 --- a/libmpdemux/demux_ogg.c +++ b/libmpdemux/demux_ogg.c @@ -166,8 +166,8 @@ typedef struct ogg_demuxer { //-------- subtitle support - should be moved to decoder layer, and queue // - subtitles up in demuxer buffer... -#include "subreader.h" -#include "libvo/sub.h" +#include "sub/subreader.h" +#include "sub/sub.h" #define OGG_SUB_MAX_LINE 128 static subtitle ogg_sub; diff --git a/libmpdemux/demux_ty.c b/libmpdemux/demux_ty.c index 3120404d49..df4c6c34fd 100644 --- a/libmpdemux/demux_ty.c +++ b/libmpdemux/demux_ty.c @@ -44,7 +44,7 @@ #include "demux_ty_osd.h" #include "parse_es.h" #include "stheader.h" -#include "sub_cc.h" +#include "sub/sub_cc.h" #include "libavutil/avstring.h" #include "ffmpeg_files/intreadwrite.h" diff --git a/libmpdemux/demux_ty_osd.c b/libmpdemux/demux_ty_osd.c index 0d419b0813..983c243f98 100644 --- a/libmpdemux/demux_ty_osd.c +++ b/libmpdemux/demux_ty_osd.c @@ -23,8 +23,8 @@ //#include "stheader.h" //#include "mp3_hdr.h" //#include "subreader.h" -#include "sub_cc.h" -#include "libvo/sub.h" +#include "sub/sub_cc.h" +#include "sub/sub.h" #include "demux_ty_osd.h" //#include "dvdauth.h" diff --git a/libmpdemux/video.c b/libmpdemux/video.c index bda6e661ae..400a995d57 100644 --- a/libmpdemux/video.c +++ b/libmpdemux/video.c @@ -38,7 +38,7 @@ #include "mpeg_hdr.h" /* sub_cc (closed captions)*/ -#include "sub_cc.h" +#include "sub/sub_cc.h" /* biCompression constant */ #define BI_RGB 0L -- cgit v1.2.3