libbluray | branch: master | hpi1 <[email protected]> | Mon Aug 18 14:23:12 2014 +0300| [1e7837c1e29d7f58525cb51e601f0a52ee45f785] | committer: hpi1
defines for HDMV transport stream PIDs > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=1e7837c1e29d7f58525cb51e601f0a52ee45f785 --- src/Makefile.am | 1 + src/libbluray/decoders/graphics_controller.c | 6 +++--- src/libbluray/decoders/m2ts_filter.c | 17 +++++++++-------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 6fbec00..a51f41a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -51,6 +51,7 @@ libbluray_la_SOURCES = \ libbluray/decoders/ig.h \ libbluray/decoders/ig_decode.h \ libbluray/decoders/ig_decode.c \ + libbluray/decoders/hdmv_pids.h \ libbluray/decoders/rle.h \ libbluray/decoders/rle.c \ libbluray/decoders/textst.h \ diff --git a/src/libbluray/decoders/graphics_controller.c b/src/libbluray/decoders/graphics_controller.c index 8625f3a..18e14e6 100644 --- a/src/libbluray/decoders/graphics_controller.c +++ b/src/libbluray/decoders/graphics_controller.c @@ -831,7 +831,7 @@ int gc_decode_ts(GRAPHICS_CONTROLLER *gc, uint16_t pid, uint8_t *block, unsigned return -1; } - if (pid >= 0x1400 && pid < 0x1500) { + if (IS_HDMV_PID_IG(pid)) { /* IG stream */ if (!gc->igp) { @@ -875,7 +875,7 @@ int gc_decode_ts(GRAPHICS_CONTROLLER *gc, uint16_t pid, uint8_t *block, unsigned return 1; } - else if (pid >= 0x1200 && pid < 0x1300) { + else if (IS_HDMV_PID_PG(pid)) { /* PG stream */ if (!gc->pgp) { gc->pgp = graphics_processor_init(); @@ -894,7 +894,7 @@ int gc_decode_ts(GRAPHICS_CONTROLLER *gc, uint16_t pid, uint8_t *block, unsigned return 1; } - else if (pid == 0x1800) { + else if (IS_HDMV_PID_TEXTST(pid)) { /* TextST stream */ if (!gc->tgp) { gc->tgp = graphics_processor_init(); diff --git a/src/libbluray/decoders/m2ts_filter.c b/src/libbluray/decoders/m2ts_filter.c index dfc462e..052a07f 100644 --- a/src/libbluray/decoders/m2ts_filter.c +++ b/src/libbluray/decoders/m2ts_filter.c @@ -70,16 +70,16 @@ M2TS_FILTER *m2ts_filter_init(int64_t in_pts, int64_t out_pts, pid = (in_pts >= 0) ? p->wipe_pid : p->pass_pid; for (ii = 0, npid = 0; ii < num_video; ii++) { - pid[npid++] = 0x1011 + ii; + pid[npid++] = HDMV_PID_VIDEO + ii; } for (ii = 0; ii < num_audio; ii++) { - pid[npid++] = 0x1100 + ii; + pid[npid++] = HDMV_PID_AUDIO_FIRST + ii; } for (ii = 0; ii < num_ig; ii++) { - pid[npid++] = 0x1400 + ii; + pid[npid++] = HDMV_PID_IG_FIRST + ii; } for (ii = 0; ii < num_pg; ii++) { - pid[npid++] = 0x1200 + ii; + pid[npid++] = HDMV_PID_PG_FIRST + ii; } } @@ -238,8 +238,8 @@ static int _filter_es_pts(M2TS_FILTER *p, const uint8_t *buf, uint16_t pid) * PG/IG streams are cutted before out_time (unit with pts==out_time is dropped out). */ if (pts > p->out_pts || - (pid >= 0x1200 && pid < 0x1300 /* PG */) || - (pid >= 0x1400 && pid < 0x1500 /* IG */)) { + IS_HDMV_PID_PG(pid) || + IS_HDMV_PID_IG(pid)) { M2TS_TRACE("Pid 0x%04x passed OUT timestamp %"PRId64" (pts %"PRId64") -> start wiping\n", pid, p->out_pts, pts); _remove_pid(p->pass_pid, pid); _add_pid(p->wipe_pid, pid); @@ -266,7 +266,7 @@ int m2ts_filter(M2TS_FILTER *p, uint8_t *buf) for (; buf < end; buf += 192) { uint16_t pid = ((buf[4+1] & 0x1f) << 8) | buf[4+2]; - if (!pid) { + if (pid == HDMV_PID_PAT) { p->pat_seen = 1; p->pat_packets = 0; continue; @@ -280,7 +280,8 @@ int m2ts_filter(M2TS_FILTER *p, uint8_t *buf) } M2TS_TRACE("NOT Wiping pid 0x%04x (inside seek buffer, PAT seen)\n", pid); } - if (pid < 0x1011) { + if (pid < HDMV_PID_VIDEO) { + /* pass PMT, PCR, SIT */ /*M2TS_TRACE("NOT Wiping pid 0x%04x (< 0x1011)\n", pid);*/ continue; } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
