summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDarren Salt <linux@youmustbejoking.demon.co.uk>2012-02-01 20:23:46 +0000
committerDarren Salt <linux@youmustbejoking.demon.co.uk>2012-02-01 20:23:46 +0000
commit394844752785840a9a2f50febcaf58f9b8cbc0a7 (patch)
tree17043c162190989571f15f7e7c4c5461b674a0b5 /src
parent24336d54166a06db00d5e9b24a4039a1760e9d1d (diff)
parent15029f2439781c5da7ffcdf18e39ea8ea92b17e9 (diff)
downloadxine-lib-394844752785840a9a2f50febcaf58f9b8cbc0a7.tar.gz
xine-lib-394844752785840a9a2f50febcaf58f9b8cbc0a7.tar.bz2
Merge from 1.1.
Diffstat (limited to 'src')
-rw-r--r--src/audio_out/audio_alsa_out.c2
-rw-r--r--src/combined/ffmpeg/ff_video_decoder.c14
-rw-r--r--src/xine-engine/osd.c4
3 files changed, 17 insertions, 3 deletions
diff --git a/src/audio_out/audio_alsa_out.c b/src/audio_out/audio_alsa_out.c
index 1eaa5d0d0..abf37f1b3 100644
--- a/src/audio_out/audio_alsa_out.c
+++ b/src/audio_out/audio_alsa_out.c
@@ -458,7 +458,7 @@ static int ao_alsa_open(ao_driver_t *this_gen, uint32_t bits, uint32_t rate, int
this->num_channels, err, snd_strerror(err));
goto close;
}
-#if SND_LIB_VERSION >= 0x010009
+#if 0
/* Restrict a configuration space to contain only real hardware rates */
err = snd_pcm_hw_params_set_rate_resample(this->audio_fd, params, 0);
#endif
diff --git a/src/combined/ffmpeg/ff_video_decoder.c b/src/combined/ffmpeg/ff_video_decoder.c
index 6d972fdc7..92bdee95a 100644
--- a/src/combined/ffmpeg/ff_video_decoder.c
+++ b/src/combined/ffmpeg/ff_video_decoder.c
@@ -1615,8 +1615,22 @@ static void ff_reset (video_decoder_t *this_gen) {
this->size = 0;
if(this->context && this->decoder_ok)
+ {
+ xine_list_iterator_t it;
+ AVFrame *av_frame;
+
avcodec_flush_buffers(this->context);
+ /* frame garbage collector here - workaround for buggy ffmpeg codecs that
+ * don't release their DR1 frames */
+ while( (it = xine_list_front(this->dr1_frames)) != NULL )
+ {
+ av_frame = (AVFrame *)xine_list_get_value(this->dr1_frames, it);
+ release_buffer(this->context, av_frame);
+ }
+ xine_list_clear(this->dr1_frames);
+ }
+
if (this->is_mpeg12)
mpeg_parser_reset(this->mpeg_parser);
diff --git a/src/xine-engine/osd.c b/src/xine-engine/osd.c
index 423d72eb6..cf54cac84 100644
--- a/src/xine-engine/osd.c
+++ b/src/xine-engine/osd.c
@@ -846,7 +846,7 @@ static void osd_set_position (osd_object_t *osd, int x, int y) {
osd->display_y = y;
}
-static uint16_t gzread_i16(gzFile *fp) {
+static uint16_t gzread_i16(gzFile fp) {
uint16_t ret;
ret = gzgetc(fp);
ret |= (gzgetc(fp)<<8);
@@ -859,7 +859,7 @@ static uint16_t gzread_i16(gzFile *fp) {
static int osd_renderer_load_font(osd_renderer_t *this, char *filename) {
- gzFile *fp;
+ gzFile fp;
osd_font_t *font = NULL;
int i, ret = 0;