pkgsrc/multimedia/xine-lib/patches/patch-ac
jmmv ce3be8b79d Update to 1rc3a. Summary of changes since rc0a:
- Fixed some bugs which caused xine to segfault under certain conditions,
  and a long-standing issue that would make xine hang with the NPTL
  implementation in Linux kernel 2.6.
- Stabilized core engine and much improved subtitles.
- Built-in VCD navigation, XvMC support and better handling of funny filenames.
- A security hole regarding the "#save" MRL option has been closed.
- Added a feature: append "#save:filename" to an MRL to save the stream during
  playback.
- Lots of bugfixes.
2004-03-11 17:26:02 +00:00

118 lines
2.7 KiB
Text

$NetBSD: patch-ac,v 1.2 2004/03/11 17:26:02 jmmv Exp $
--- src/audio_out/audio_sun_out.c.orig 2003-12-14 23:13:22.000000000 +0100
+++ src/audio_out/audio_sun_out.c
@@ -41,6 +41,11 @@
#ifdef __svr4__
#include <stropts.h>
#endif
+#include <sys/param.h>
+
+#if (defined(BSD) && BSD >= 199306)
+typedef unsigned uint_t;
+#endif
#include "xine_internal.h"
#include "xineutils.h"
@@ -89,7 +94,9 @@ typedef struct sun_driver_s {
uint32_t num_channels;
int bytes_per_frame;
+#ifndef __NetBSD__
uint32_t frames_in_buffer; /* number of frames writen to audio hardware */
+#endif
enum {
RTSC_UNKNOWN = 0,
@@ -113,12 +120,14 @@ typedef struct sun_driver_s {
unsigned buf_len;
#endif
+#ifndef __NetBSD__
#if SW_SAMPLE_COUNT
struct timeval tv0;
uint_t sample0;
#endif
uint_t last_samplecnt;
+#endif
} sun_driver_t;
@@ -128,6 +137,7 @@ typedef struct sun_driver_s {
*/
static int realtime_samplecounter_available(xine_t *xine, char *dev)
{
+#ifndef __NetBSD__
int fd = -1;
audio_info_t info;
int rtsc_ok = RTSC_DISABLED;
@@ -246,6 +256,9 @@ error:
}
return rtsc_ok;
+#else
+ return RTSC_ENABLED;
+#endif
}
@@ -429,7 +442,9 @@ static int ao_sun_open(ao_driver_t *this
this->mode = mode;
this->input_sample_rate = rate;
+#ifndef __NetBSD__
this->frames_in_buffer = 0;
+#endif
/*
* open audio device
@@ -461,6 +476,9 @@ static int ao_sun_open(ao_driver_t *this
info.play.sample_rate = this->input_sample_rate;
info.play.eof = 0;
info.play.samples = 0;
+#ifdef __NetBSD__
+ info.blocksize = 1024;
+#endif
this->convert_u8_s8 = 0;
@@ -522,7 +540,9 @@ static int ao_sun_open(ao_driver_t *this
return 0;
}
+#ifndef __NetBSD__
this->last_samplecnt = 0;
+#endif
this->output_sample_rate = info.play.sample_rate;
this->num_channels = info.play.channels;
@@ -563,6 +583,7 @@ static int ao_sun_delay(ao_driver_t *thi
sun_driver_t *this = (sun_driver_t *) this_gen;
audio_info_t info;
+#ifndef __NetBSD__
if (ioctl(this->audio_fd, AUDIO_GETINFO, &info) == 0 &&
(this->frames_in_buffer == 0 || info.play.samples > 0)) {
@@ -609,6 +630,10 @@ static int ao_sun_delay(ao_driver_t *thi
}
#endif
}
+#else
+ if (ioctl(this->audio_fd, AUDIO_GETINFO, &info) == 0)
+ return info.play.seek / this->bytes_per_frame;
+#endif
return NOT_REAL_TIME;
}
@@ -717,7 +742,9 @@ static int ao_sun_write(ao_driver_t *thi
if (num_written > 0) {
int buffered_samples;
+#ifndef __NetBSD__
this->frames_in_buffer += num_written / this->bytes_per_frame;
+#endif
/*
* Avoid storing too much data in the sound driver's buffers.