summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJulian Scheel <julian@jusst.de>2010-01-12 22:23:19 +0100
committerJulian Scheel <julian@jusst.de>2010-01-12 22:23:19 +0100
commitd431fcea12f5ea22f9db41b7a70ba7eaf03521e5 (patch)
treeb4a42008b785336da43248bbebd2604c072ea021 /src
parent3826d6f0d8c532c9da7613fe51223f580ece917c (diff)
parent537599eb87073993d3d5a931b0973cf56c107ab6 (diff)
downloadxine-lib-d431fcea12f5ea22f9db41b7a70ba7eaf03521e5.tar.gz
xine-lib-d431fcea12f5ea22f9db41b7a70ba7eaf03521e5.tar.bz2
Merge from 1.2 main
Diffstat (limited to 'src')
-rw-r--r--src/demuxers/demux_ts.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c
index 9053db60d..8c8250cf4 100644
--- a/src/demuxers/demux_ts.c
+++ b/src/demuxers/demux_ts.c
@@ -233,7 +233,6 @@
ISO_14496_PART10_VIDEO = 0x1b, /* ISO/IEC 14496-10 Video (MPEG-4 part 10/AVC, aka H.264) */
STREAM_VIDEO_MPEG = 0x80,
STREAM_AUDIO_AC3 = 0x81,
- STREAM_SPU_BITMAP_HDMV = 0x90,
STREAM_VIDEO_VC1 = 0xea, /* VC-1 Video */
@@ -244,6 +243,10 @@
HDMV_AUDIO_85_DTS_HRA = 0x85, /* DTS-HRA */
HDMV_AUDIO_86_DTS_HD_MA = 0x86, /* DTS-HD Master audio */
+ HDMV_SPU_BITMAP = 0x90,
+ HDMV_SPU_INTERACTIVE = 0x91,
+ HDMV_SPU_TEXT = 0x92,
+
} streamType;
#define WRAP_THRESHOLD 270000
@@ -763,7 +766,7 @@ static int demux_ts_parse_pes_header (xine_t *xine, demux_ts_media *m,
return 1;
}
- if (m->descriptor_tag == STREAM_SPU_BITMAP_HDMV) {
+ if (m->descriptor_tag == HDMV_SPU_BITMAP) {
long payload_len = ((buf[4] << 8) | buf[5]) - header_len - 3;
m->content = p;
@@ -801,7 +804,8 @@ static int demux_ts_parse_pes_header (xine_t *xine, demux_ts_media *m,
m->type |= BUF_AUDIO_A52;
return 1;
- } else if (m->descriptor_tag == HDMV_AUDIO_86_DTS_HD_MA ) {
+ } else if (m->descriptor_tag == HDMV_AUDIO_82_DTS ||
+ m->descriptor_tag == HDMV_AUDIO_86_DTS_HD_MA ) {
m->content = p;
m->size = packet_len;
m->type |= BUF_AUDIO_DTS;
@@ -966,7 +970,7 @@ static void demux_ts_buffer_pes(demux_ts_t*this, unsigned char *ts,
else if ( this->numPreview<5 )
m->buf->decoder_flags=BUF_FLAG_PREVIEW;
else
- m->buf->decoder_flags=BUF_FLAG_FRAME_END;
+ m->buf->decoder_flags |= BUF_FLAG_FRAME_END;
}
m->buf->pts = m->pts;
m->buf->decoder_info[0] = 1;
@@ -1014,7 +1018,7 @@ static void demux_ts_buffer_pes(demux_ts_t*this, unsigned char *ts,
m->buf->content = m->buf->mem;
m->buf->size = m->buffered_bytes;
m->buf->type = m->type;
- m->buf->pts = 0; /* m->pts */
+ m->buf->pts = m->pts;
m->buf->decoder_info[0] = 1;
if( this->input->get_length (this->input) )
m->buf->extra_info->input_normpos = (int)( (double) this->input->get_current_pos (this->input) *
@@ -1485,7 +1489,16 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num
}
break;
- case STREAM_SPU_BITMAP_HDMV:
+ case HDMV_SPU_INTERACTIVE:
+ case HDMV_SPU_TEXT:
+ if (this->hdmv > 0) {
+ printf("demux_ts: Skipping unsupported HDMV subtitle stream_type: 0x%.2x pid: 0x%.4x\n",
+ stream[0], pid);
+ break;
+ }
+ /* fall thru */
+
+ case HDMV_SPU_BITMAP:
if (this->hdmv > 0) {
if (pid >= 0x1200 && pid < 0x1300) {
/* HDMV Presentation Graphics / SPU */