summaryrefslogtreecommitdiff
path: root/src/libmpeg2
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmpeg2')
-rw-r--r--src/libmpeg2/decode.c19
-rw-r--r--src/libmpeg2/mpeg2.h4
2 files changed, 9 insertions, 14 deletions
diff --git a/src/libmpeg2/decode.c b/src/libmpeg2/decode.c
index d7245afaa..b78b178d5 100644
--- a/src/libmpeg2/decode.c
+++ b/src/libmpeg2/decode.c
@@ -63,9 +63,11 @@ void mpeg2_init (mpeg2dec_t * mpeg2dec,
}
if( !mpeg2dec->chunk_buffer )
- mpeg2dec->chunk_buffer = xine_xmalloc_aligned (16, BUFFER_SIZE + 4);
+ mpeg2dec->chunk_buffer = xine_xmalloc_aligned (16, BUFFER_SIZE + 4,
+ (void**)&mpeg2dec->chunk_base);
if( !mpeg2dec->picture )
- mpeg2dec->picture = xine_xmalloc_aligned (16, sizeof (picture_t));
+ mpeg2dec->picture = xine_xmalloc_aligned (16, sizeof (picture_t),
+ (void**)&mpeg2dec->picture_base);
mpeg2dec->shift = 0xffffff00;
mpeg2dec->is_sequence_needed = 1;
@@ -511,18 +513,11 @@ void mpeg2_flush (mpeg2dec_t * mpeg2dec) {
img->scr = 0;
img->bad_frame = 0;
img->drawn = 1;
-
+
img->draw(img);
img->free(img);
-#ifdef LOG
- } else {
- printf ("libmpeg2: flush called, but I have no frame to flush\n");
-
- }
-#else
}
-#endif
}
@@ -572,12 +567,12 @@ void mpeg2_close (mpeg2dec_t * mpeg2dec)
}
if ( mpeg2dec->chunk_buffer ) {
- xine_free_aligned (mpeg2dec->chunk_buffer);
+ free (mpeg2dec->chunk_base);
mpeg2dec->chunk_buffer = NULL;
}
if ( mpeg2dec->picture ) {
- xine_free_aligned (mpeg2dec->picture);
+ free (mpeg2dec->picture_base);
mpeg2dec->picture = NULL;
}
}
diff --git a/src/libmpeg2/mpeg2.h b/src/libmpeg2/mpeg2.h
index a0efeaac5..6e70f4bd9 100644
--- a/src/libmpeg2/mpeg2.h
+++ b/src/libmpeg2/mpeg2.h
@@ -25,7 +25,7 @@ typedef struct mpeg2dec_s {
vo_instance_t * output;
/* this is where we keep the state of the decoder */
- struct picture_s * picture;
+ struct picture_s * picture, *picture_base;
uint32_t shift;
int is_sequence_needed;
@@ -37,7 +37,7 @@ typedef struct mpeg2dec_s {
/* which is 224K for MP@ML streams. */
/* (we make no pretenses of decoding anything more than that) */
/* allocated in init - gcc has problems allocating such big structures */
- uint8_t * chunk_buffer;
+ uint8_t * chunk_buffer, *chunk_base;
/* pointer to current position in chunk_buffer */
uint8_t * chunk_ptr;
/* last start code ? */