summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/demuxers/demux_mpeg_block.c4
-rw-r--r--src/libspudec/spu.c4
-rw-r--r--src/libspudec/xine_decoder.c29
3 files changed, 24 insertions, 13 deletions
diff --git a/src/demuxers/demux_mpeg_block.c b/src/demuxers/demux_mpeg_block.c
index b49d5cec1..4d783924c 100644
--- a/src/demuxers/demux_mpeg_block.c
+++ b/src/demuxers/demux_mpeg_block.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_mpeg_block.c,v 1.56 2001/10/20 02:01:51 guenter Exp $
+ * $Id: demux_mpeg_block.c,v 1.57 2001/10/21 15:04:13 jcdutton Exp $
*
* demultiplexer for mpeg 1/2 program streams
*
@@ -362,7 +362,7 @@ static void demux_mpeg_block_parse_pack (demux_mpeg_block_t *this, int preview_m
buf->content = p+4;
buf->size = packet_len-4;
if (track & 0x8)
- buf->type = BUF_AUDIO_DTS + track;
+ buf->type = BUF_AUDIO_DTS + track & 0x07; /* DVDs only have 8 tracks */
else
buf->type = BUF_AUDIO_A52 + track;
buf->PTS = PTS;
diff --git a/src/libspudec/spu.c b/src/libspudec/spu.c
index 7338f2ae7..fa4c95085 100644
--- a/src/libspudec/spu.c
+++ b/src/libspudec/spu.c
@@ -35,7 +35,7 @@
* along with this program; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: spu.c,v 1.16 2001/10/20 17:51:58 jcdutton Exp $
+ * $Id: spu.c,v 1.17 2001/10/21 15:04:13 jcdutton Exp $
*
*/
@@ -297,7 +297,7 @@ static int spu_next_line (vo_overlay_t *spu)
field ^= 1; // Toggle fields
if (put_y >= spu->height) {
- LOG (LOG_DEBUG, ".");
+ LOG (LOG_DEBUG, "put_y >= spu->height\n");
return -1;
}
return 0;
diff --git a/src/libspudec/xine_decoder.c b/src/libspudec/xine_decoder.c
index 5741487fc..e86d13866 100644
--- a/src/libspudec/xine_decoder.c
+++ b/src/libspudec/xine_decoder.c
@@ -19,7 +19,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_decoder.c,v 1.19 2001/10/21 12:09:06 jcdutton Exp $
+ * $Id: xine_decoder.c,v 1.20 2001/10/21 15:04:13 jcdutton Exp $
*
* stuff needed to turn libspu into a xine decoder plugin
*/
@@ -308,8 +308,8 @@ int32_t spu_add_event(spudec_decoder_t *this, spu_overlay_event_t *event) {
this->spu_events[new_event].event->object.overlay = malloc (sizeof(vo_overlay_t));
memcpy(this->spu_events[new_event].event->object.overlay,
event->object.overlay, sizeof(vo_overlay_t));
- print_overlay( event->object.overlay );
- print_overlay( this->spu_events[new_event].event->object.overlay );
+// print_overlay( event->object.overlay );
+// print_overlay( this->spu_events[new_event].event->object.overlay );
pthread_mutex_unlock (&this->spu_events_mutex);
return new_event;
@@ -546,6 +546,11 @@ void spu_process_event( spudec_decoder_t *this, int vpts ) {
if (this->spu_events[this_event].event->object.overlay != NULL) {
vo_overlay_t *overlay = this->spu_objects[handle].overlay;
vo_overlay_t *event_overlay = this->spu_events[this_event].event->object.overlay;
+ LOG (LOG_DEBUG, "event_overlay\n");
+ print_overlay(event_overlay);
+ LOG (LOG_DEBUG, "overlay\n");
+ print_overlay(overlay);
+
this->spu_objects[handle].handle = handle; /* This should not change for menus */
overlay->rle = event_overlay->rle;
overlay->data_size = event_overlay->data_size;
@@ -555,9 +560,9 @@ void spu_process_event( spudec_decoder_t *this, int vpts ) {
overlay->width = event_overlay->width;
overlay->height = event_overlay->height;
overlay->rgb_clut = event_overlay->rgb_clut;
- if((event_overlay->color[0] |
- event_overlay->color[1] |
- event_overlay->color[2] |
+ if((event_overlay->color[0] +
+ event_overlay->color[1] +
+ event_overlay->color[2] +
event_overlay->color[3]) > 0 ) {
LOG (LOG_DEBUG, "mixing clut\n");
overlay->color[0] = event_overlay->color[0];
@@ -565,9 +570,9 @@ void spu_process_event( spudec_decoder_t *this, int vpts ) {
overlay->color[2] = event_overlay->color[2];
overlay->color[3] = event_overlay->color[3];
}
- if((event_overlay->trans[0] |
- event_overlay->trans[1] |
- event_overlay->trans[2] |
+ if((event_overlay->trans[0] +
+ event_overlay->trans[1] +
+ event_overlay->trans[2] +
event_overlay->trans[3]) > 0 ) {
LOG (LOG_DEBUG, "mixing trans\n");
overlay->trans[0] = event_overlay->trans[0];
@@ -576,6 +581,7 @@ void spu_process_event( spudec_decoder_t *this, int vpts ) {
overlay->trans[3] = event_overlay->trans[3];
}
this->spu_showing[1].handle = handle;
+ LOG (LOG_DEBUG, "overlay after\n");
print_overlay(overlay);
}
break;
@@ -585,6 +591,10 @@ void spu_process_event( spudec_decoder_t *this, int vpts ) {
if (this->spu_events[this_event].event->object.overlay != NULL) {
vo_overlay_t *overlay = this->spu_objects[handle].overlay;
vo_overlay_t *event_overlay = this->spu_events[this_event].event->object.overlay;
+ LOG (LOG_DEBUG, "event_overlay\n");
+ print_overlay(event_overlay);
+ LOG (LOG_DEBUG, "overlay\n");
+ print_overlay(overlay);
this->spu_objects[handle].handle = handle; /* This should not change for menus */
overlay->clip_top = event_overlay->clip_top;
overlay->clip_bottom = event_overlay->clip_bottom;
@@ -612,6 +622,7 @@ void spu_process_event( spudec_decoder_t *this, int vpts ) {
overlay->trans[3] = event_overlay->trans[3];
}
this->spu_showing[1].handle = handle;
+ LOG (LOG_DEBUG, "overlay after\n");
print_overlay(overlay);
}
break;