New Upstream Snapshot - vdr-plugin-xineliboutput
Ready changes
Summary
Merged new upstream version: 2.2.0+git20220319 (was: 2.2.0+git20211212).
Resulting package
Built on 2022-10-21T06:20 (took 5m25s)
The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:
apt install -t fresh-snapshots libxine2-xvdr-dbgsymapt install -t fresh-snapshots libxine2-xvdrapt install -t fresh-snapshots libxineliboutput-fbfe-dbgsymapt install -t fresh-snapshots libxineliboutput-fbfeapt install -t fresh-snapshots libxineliboutput-sxfe-dbgsymapt install -t fresh-snapshots libxineliboutput-sxfeapt install -t fresh-snapshots libxineliboutput-wlfe-dbgsymapt install -t fresh-snapshots libxineliboutput-wlfeapt install -t fresh-snapshots vdr-plugin-xineliboutput-dbgsymapt install -t fresh-snapshots vdr-plugin-xineliboutputapt install -t fresh-snapshots xineliboutput-fbfe-dbgsymapt install -t fresh-snapshots xineliboutput-fbfeapt install -t fresh-snapshots xineliboutput-sxfe-dbgsymapt install -t fresh-snapshots xineliboutput-sxfeapt install -t fresh-snapshots xineliboutput-wlfe-dbgsymapt install -t fresh-snapshots xineliboutput-wlfe
Lintian Result
- libxine2-xvdr-dbgsym_2.2.0+git20220319-1~jan+nus1_amd64.deb
- libxine2-xvdr_2.2.0+git20220319-1~jan+nus1_amd64.deb
- libxineliboutput-fbfe-dbgsym_2.2.0+git20220319-1~jan+nus1_amd64.deb
- libxineliboutput-fbfe_2.2.0+git20220319-1~jan+nus1_amd64.deb
- libxineliboutput-sxfe-dbgsym_2.2.0+git20220319-1~jan+nus1_amd64.deb
- libxineliboutput-sxfe_2.2.0+git20220319-1~jan+nus1_amd64.deb
- libxineliboutput-wlfe-dbgsym_2.2.0+git20220319-1~jan+nus1_amd64.deb
- libxineliboutput-wlfe_2.2.0+git20220319-1~jan+nus1_amd64.deb
- vdr-plugin-xineliboutput-dbgsym_2.2.0+git20220319-1~jan+nus1_amd64.deb
- vdr-plugin-xineliboutput_2.2.0+git20220319-1~jan+nus1.dsc
- vdr-plugin-xineliboutput_2.2.0+git20220319-1~jan+nus1_amd64.buildinfo
- vdr-plugin-xineliboutput_2.2.0+git20220319-1~jan+nus1_amd64.changes
- vdr-plugin-xineliboutput_2.2.0+git20220319-1~jan+nus1_amd64.deb
- xineliboutput-fbfe-dbgsym_2.2.0+git20220319-1~jan+nus1_amd64.deb
- xineliboutput-fbfe_2.2.0+git20220319-1~jan+nus1_amd64.deb
- xineliboutput-sxfe-dbgsym_2.2.0+git20220319-1~jan+nus1_amd64.deb
- xineliboutput-sxfe_2.2.0+git20220319-1~jan+nus1_amd64.deb
- xineliboutput-wlfe-dbgsym_2.2.0+git20220319-1~jan+nus1_amd64.deb
- xineliboutput-wlfe_2.2.0+git20220319-1~jan+nus1_amd64.deb
Diff
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 01ca3ad..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,20 +0,0 @@
-.dependencies
-config.mak
-configure.log
-features.h
-
-black_720x576.c
-nosignal_720x576.c
-vdrlogo_720x576.c
-
-*.o
-*.so
-libvdr-*.so.*
-libxineliboutput-*.so.*
-mpg2c
-vdr-fbfe
-vdr-sxfe
-vdr-wlfe
-
-po/*.mo
-po/*.pot
diff --git a/debian/changelog b/debian/changelog
index ee4c24a..e802480 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+vdr-plugin-xineliboutput (2.2.0+git20220319-1) UNRELEASED; urgency=low
+
+ * New upstream snapshot.
+
+ -- Debian Janitor <janitor@jelmer.uk> Fri, 21 Oct 2022 06:17:38 -0000
+
vdr-plugin-xineliboutput (2.2.0+git20211212-2) unstable; urgency=medium
[ Tobias Grimm ]
diff --git a/debian/patches/cppflags.patch b/debian/patches/cppflags.patch
index f50f356..4cda742 100644
--- a/debian/patches/cppflags.patch
+++ b/debian/patches/cppflags.patch
@@ -1,6 +1,8 @@
---- a/Makefile
-+++ b/Makefile
-@@ -270,7 +270,7 @@
+Index: vdr-plugin-xineliboutput.git/Makefile
+===================================================================
+--- vdr-plugin-xineliboutput.git.orig/Makefile
++++ vdr-plugin-xineliboutput.git/Makefile
+@@ -270,7 +270,7 @@ OBJS_XINE = $(OBJS_XINEINPUTVDR) xine_po
%.o: %.c
@echo CXX $@
@@ -9,7 +11,7 @@
###
-@@ -282,7 +282,7 @@
+@@ -282,7 +282,7 @@ DEPFILE = .dependencies
$(DEPFILE): Makefile config.mak
@rm -f $@
@for i in $(OBJS:%.o=%.c) $(OBJS_SXFE:%.o=%.c) $(OBJS_FBFE:%.o=%.c) $(OBJS_WLFE:%.o=%.c) $(OBJS_XINE:%.o=%.c) ; do \
@@ -18,7 +20,7 @@
done
-include $(DEPFILE)
-@@ -296,7 +296,7 @@
+@@ -296,7 +296,7 @@ DEFINES += -Wall
mpg2c: mpg2c.c
@echo CCLD $@
@@ -27,7 +29,7 @@
# data
black_720x576.c: mpg2c black_720x576.mpg
-@@ -315,7 +315,7 @@
+@@ -315,7 +315,7 @@ xine_input_vdr.o: nosignal_720x576.c
$(sort $(OBJS_SXFE) $(OBJS_FBFE) $(OBJS_WLFE) $(OBJS_XINE)): %.o: %.c
@echo CC $@
diff --git a/debian/patches/disable-po-update.patch b/debian/patches/disable-po-update.patch
index edf34d3..24d82be 100644
--- a/debian/patches/disable-po-update.patch
+++ b/debian/patches/disable-po-update.patch
@@ -1,6 +1,8 @@
---- a/Makefile
-+++ b/Makefile
-@@ -333,10 +333,10 @@
+Index: vdr-plugin-xineliboutput.git/Makefile
+===================================================================
+--- vdr-plugin-xineliboutput.git.orig/Makefile
++++ vdr-plugin-xineliboutput.git/Makefile
+@@ -333,10 +333,10 @@ $(I18Npot): $(wildcard *.c)
@echo GT $@
$(Q)xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='<phintuka@users.sourceforge.net>' -o $@ `ls $^`
diff --git a/tools/atomic.h b/tools/atomic.h
index 38a1416..a67156b 100644
--- a/tools/atomic.h
+++ b/tools/atomic.h
@@ -28,48 +28,47 @@ typedef struct {
#endif
} xl_atomic_int;
-static inline void _xl_atomic_init(xl_atomic_int *a, int value)
+static inline int _xl_atomic_load(xl_atomic_int *a)
{
#ifdef HAVE_STDATOMIC_H
- atomic_init(&a->value, value);
+ return atomic_load(&a->value);
#else
- pthread_mutex_init (&a->lock, NULL);
- _xl_atomic_store(a, value);
+ int result;
+ pthread_mutex_lock(&a->lock);
+ result = a->value;
+ pthread_mutex_unlock(&a->lock);
+ return result;
#endif
}
-static inline void _xl_atomic_destroy(xl_atomic_int *a)
+static void _xl_atomic_store(xl_atomic_int *a, int value)
{
#ifdef HAVE_STDATOMIC_H
- (void)a;
+ atomic_store(&a->value, value);
#else
- pthread_mutex_destroy(&a->lock);
+ pthread_mutex_lock(&a->lock);
+ a->value = value;
+ pthread_mutex_unlock(&a->lock);
#endif
}
-static inline int _xl_atomic_load(xl_atomic_int *a)
+static inline void _xl_atomic_init(xl_atomic_int *a, int value)
{
#ifdef HAVE_STDATOMIC_H
- return atomic_load(&a->value);
+ atomic_init(&a->value, value);
#else
- int result;
- pthread_mutex_lock(&a->control_running_lock);
- result = a->value;
- pthread_mutex_unlock(&a->control_running_lock);
- return result;
+ pthread_mutex_init (&a->lock, NULL);
+ _xl_atomic_store(a, value);
#endif
}
-static void _xl_atomic_store(xl_atomic_int *a, int value)
+static inline void _xl_atomic_destroy(xl_atomic_int *a)
{
#ifdef HAVE_STDATOMIC_H
- atomic_store(&a->value, value);
+ (void)a;
#else
- pthread_mutex_lock(&a->lock);
- a->value = value;
- pthread_mutex_unlock(&a->lock);
+ pthread_mutex_destroy(&a->lock);
#endif
}
-
#endif /* _XINELIBOUTPUT_ATOMIC_H_ */
diff --git a/xine/demux_xvdr.c b/xine/demux_xvdr.c
index a7e686f..c206c11 100644
--- a/xine/demux_xvdr.c
+++ b/xine/demux_xvdr.c
@@ -329,6 +329,7 @@ static void track_audio_stream_change(demux_xvdr_t *this, buf_element_t *buf)
b->type = BUF_CONTROL_START;
b->decoder_flags = BUF_FLAG_GAPLESS_SW;
this->audio_fifo->put(this->audio_fifo, b);
+ LOGVERBOSE("posted BUF_CONTROL_START to audio fifo");
}
}
@@ -1347,7 +1348,20 @@ static int demux_xvdr_seek (demux_plugin_t *this_gen,
} else {
this->buf_flag_seek = 1;
this->last_vpts = INT64_C(-1);
+
+ LOGVERBOSE("demux_xvdr_seek: flushing engine...");
+
+ /* Make sure this sends DISC_STREAMSTART. */
+ int gs = xine_get_param (this->stream, XINE_PARAM_GAPLESS_SWITCH);
+ if (gs)
+ xine_set_param (this->stream, XINE_PARAM_GAPLESS_SWITCH, 0);
+ _x_demux_control_start (this->stream);
+ if (gs)
+ xine_set_param (this->stream, XINE_PARAM_GAPLESS_SWITCH, gs);
+
_x_demux_flush_engine(this->stream);
+
+ LOGVERBOSE("demux_xvdr_seek: engine flushed");
}
return this->status;
diff --git a/xine_frontend_main.c b/xine_frontend_main.c
index 99e8076..997922c 100644
--- a/xine_frontend_main.c
+++ b/xine_frontend_main.c
@@ -291,6 +291,14 @@ int main(int argc, char *argv[])
LogToSysLog = 0;
+ const char *lib_verbosity = getenv("LIBXINE_VERBOSITY");
+ if (lib_verbosity) {
+ int lib_loglevel = atoi(lib_verbosity);
+ if (lib_loglevel > 0 && SysLogLevel <= lib_loglevel) {
+ SysLogLevel = lib_loglevel + 1;
+ }
+ }
+
if (strrchr(argv[0],'/'))
exec_name = strrchr(argv[0],'/')+1;
diff --git a/xine_input_vdr.c b/xine_input_vdr.c
index ca22987..8d56dce 100644
--- a/xine_input_vdr.c
+++ b/xine_input_vdr.c
@@ -331,6 +331,7 @@ typedef struct vdr_input_plugin_s {
pthread_mutex_t lock;
pthread_mutex_t vdr_entry_lock;
pthread_cond_t engine_flushed;
+ int engine_flushing;
/* Playback */
uint8_t read_timeouts; /* number of timeouts in read_block */
@@ -715,6 +716,22 @@ static void vdr_adjust_realtime_speed(vdr_input_plugin_t *this)
*/
if (scr_tuning == SCR_TUNING_PAUSED) {
+
+ /* avoid freezing if audio fifo is filling up */
+ if (this->stream->audio_fifo) {
+ int audio_free = this->stream->audio_fifo->num_free(this->stream->audio_fifo);
+ if (audio_free < 20) {
+ LOGMSG("Audio fifo almost full (%d free buffers). Starting playback.", audio_free);
+ reset_scr_tuning(this);
+ return;
+ }
+ }
+ if (!this->no_video && num_free < 10) {
+ LOGMSG("fifo almost full (%d free buffers). Starting playback.", num_free);
+ reset_scr_tuning(this);
+ return;
+ }
+
unsigned audio_size = this->stream->audio_fifo ? this->stream->audio_fifo->size(this->stream->audio_fifo) : 0;
unsigned scr_treshold = 100 * num_used / (num_used + num_free);
unsigned audio_treshold = 100 * audio_size / (audio_size + 500);
@@ -1507,15 +1524,23 @@ static buf_element_t *get_buf_element(vdr_input_plugin_t *this, int size)
buf_element_t *buf = NULL;
/* limit max. buffered data */
+ if (this->no_video) {
+ fifo_buffer_t *f = this->stream->audio_fifo;
+ if (f->buffer_pool_num_free < f->buffer_pool_capacity - 2*RADIO_MAX_BUFFERS)
+ return NULL;
+ if (this->buffer_pool->buffer_pool_num_free < 20)
+ return NULL;
+ } else {
if (this->buffer_pool->buffer_pool_num_free < (int)this->reserved_buffers)
return NULL;
+ }
/* get smallest possible buffer */
if (this->input_buffer && this->mpeg_ts &&
NULL != (buf = this->input_buffer->buffer_pool_try_alloc(this->input_buffer))) {
- ASSERT(size < 2048+64, 0);
- } else if (size < 8000) {
+ ASSERT(size < this->input_buffer->buffer_pool_buf_size, 0);
+ } else if (size < this->buffer_pool->buffer_pool_buf_size) {
buf = this->buffer_pool->buffer_pool_try_alloc(this->buffer_pool);
}
else if(size < 0xffff) {
@@ -2103,16 +2128,22 @@ static void vdr_flush_engine(vdr_input_plugin_t *this, uint64_t discard_index)
_x_set_fine_speed(this->stream, XINE_FINE_SPEED_NORMAL);
}
+ this->engine_flushing = 1;
pthread_mutex_unlock(&this->lock);
+ LOGVERBOSE("flushing engine ...");
+
_x_demux_seek(this->stream, 0, 0, 1);
pthread_mutex_lock(&this->lock);
+ this->engine_flushing = 0;
reset_scr_tuning(this);
this->stream_start = 1;
this->mpeg_ts = 0;
this->I_frames = this->B_frames = this->P_frames = 0;
+
+ LOGVERBOSE("engine flushed.");
}
static int set_deinterlace_method(vdr_input_plugin_t *this, const char *method_name)
@@ -4070,6 +4101,14 @@ static void data_stream_parse_control(vdr_input_plugin_t *this, char *cmd)
vdr_plugin_parse_control(&this->iface, cmd);
}
+static void _log_fifo(const char *name, fifo_buffer_t *fifo)
+{
+ int cap = fifo->buffer_pool_capacity;
+ int used = fifo->size(fifo);
+ int free = fifo->num_free(fifo);
+ LOGDBG("%s: max %d, used %d, free %d, in-flight %d", name, cap, used, free, cap - used - free);
+}
+
/*
* vdr_plugin_read_block_tcp()
*
@@ -4111,8 +4150,15 @@ static buf_element_t *vdr_plugin_read_block_tcp(vdr_input_plugin_t *this)
this->read_buffer = read_buffer = get_buf_element_timed(this, 2048+sizeof(stream_tcp_header_t), 100);
if (!read_buffer) {
/* do not drop any data here ; dropping is done only at server side. */
- if (!this->is_paused && !warnings)
- LOGDBG("TCP: fifo buffer full");
+ if (!this->is_paused && !warnings) {
+ LOGDBG("TCP: fifo buffer full (reserved_buffers %d)", this->reserved_buffers);
+ LOGDBG("block-buffer: used %d", this->block_buffer->size(this->block_buffer));
+ _log_fifo("audio-fifo", this->stream->audio_fifo);
+ _log_fifo("video-fifo", this->stream->video_fifo);
+ pthread_mutex_lock(&this->lock);
+ reset_scr_tuning(this);
+ pthread_mutex_unlock(&this->lock);
+ }
warnings++;
continue; /* must call select to check fd for errors / closing */
}
@@ -4901,7 +4947,20 @@ static int adjust_scr_speed(vdr_input_plugin_t *this)
if(this->stream_start) {
reset_scr_tuning(this);
need_pause = 1;
+ if (this->engine_flushing) {
+ // XXXX this should not be possible ; stream_start skips flush engine.
+ pthread_mutex_unlock(&this->lock);
+ LOGMSG("adjust_scr_speed() aborted: stream start and engine flushing ?!?!");
+ return 0;
+ }
} else {
+
+ if (this->engine_flushing) {
+ pthread_mutex_unlock(&this->lock);
+ LOGVERBOSE("adjust_scr_speed() aborted: engine flushing");
+ return 0;
+ }
+
vdr_adjust_realtime_speed(this);
}
}
Debdiff
[The following lists of changes regard files as different if they have different names, permissions or owners.]
Files in second set of .debs but not in first
-rw-r--r-- root/root /usr/lib/debug/.build-id/0b/36a0431ff293e682a6b244b27a5e6593fd7b9b.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/4e/3a9e6e906d62bd6f59e0a88b4260afd0f1b432.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/51/b322c159f1787c8516c1e562379594dc9a9381.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/5d/2a696270b3b9a880154fb9bb430f2deffecaa9.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/69/afd19ae51a7e6a1b7bebc4969b585e6c357c80.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/6a/0a11950d1b9fb9eabe3c48cc462094750612c8.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/84/94cd9ef3106a6a29f26416c49c65d08c56eedb.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/84/e8ebbf5bed0f7b07d5af2ba670514e39974f05.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/8b/186c73ebfbf243d0530edd2d44daa1c0051977.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/ce/b2c487bf1a0ff9915c84ef4e0d779f437239fb.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/eb/014b0f855b7f255cdcbe1e492dcc5f44bf40c2.debug
Files in first set of .debs but not in second
-rw-r--r-- root/root /usr/lib/debug/.build-id/07/12dfd9956f4a40daa30ce1b2624f95cda9f370.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/1b/33a58a7c80c79961e61b9b95f7264a65e6ab3c.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/34/9d93661d9b3a0bb3bca9dc0d290df5583ca7a3.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/3b/8b0b267d8bfbb53f69d6bbf361a4c83d19183a.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/4e/2119bf417f10f2d7f9e7ba7d37b7d2c4a491ef.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/53/b442edfdd0826f189656ecf4bde79edbe919ea.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/65/fd72737f762df9c1e310a0c5dc854e1900c4c6.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/6f/2775e5fbcf89c9b6fccac5ff4f101a746e0e54.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/bd/a4b0f9b6e613bc479216c5457caed2fcd5a851.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/d2/b5996fbc46ac367f8d31a6de051a4b788096a2.debug -rw-r--r-- root/root /usr/lib/debug/.build-id/e3/da7057c7e7cc3ce9073087c5e743a6022f3b70.debug
No differences were encountered between the control files of package libxine2-xvdr
Control files of package libxine2-xvdr-dbgsym: lines which differ (wdiff format)
Build-Ids: 0712dfd9956f4a40daa30ce1b2624f95cda9f370 3b8b0b267d8bfbb53f69d6bbf361a4c83d19183a 4e2119bf417f10f2d7f9e7ba7d37b7d2c4a491ef 6f2775e5fbcf89c9b6fccac5ff4f101a746e0e54 4e3a9e6e906d62bd6f59e0a88b4260afd0f1b432 69afd19ae51a7e6a1b7bebc4969b585e6c357c80 6a0a11950d1b9fb9eabe3c48cc462094750612c8 84e8ebbf5bed0f7b07d5af2ba670514e39974f05
No differences were encountered between the control files of package libxineliboutput-fbfe
Control files of package libxineliboutput-fbfe-dbgsym: lines which differ (wdiff format)
Build-Ids: 65fd72737f762df9c1e310a0c5dc854e1900c4c6 5d2a696270b3b9a880154fb9bb430f2deffecaa9
No differences were encountered between the control files of package libxineliboutput-sxfe
Control files of package libxineliboutput-sxfe-dbgsym: lines which differ (wdiff format)
Build-Ids: e3da7057c7e7cc3ce9073087c5e743a6022f3b70 8494cd9ef3106a6a29f26416c49c65d08c56eedb
No differences were encountered between the control files of package libxineliboutput-wlfe
Control files of package libxineliboutput-wlfe-dbgsym: lines which differ (wdiff format)
Build-Ids: 53b442edfdd0826f189656ecf4bde79edbe919ea 8b186c73ebfbf243d0530edd2d44daa1c0051977
No differences were encountered between the control files of package vdr-plugin-xineliboutput
Control files of package vdr-plugin-xineliboutput-dbgsym: lines which differ (wdiff format)
Build-Ids: 1b33a58a7c80c79961e61b9b95f7264a65e6ab3c 0b36a0431ff293e682a6b244b27a5e6593fd7b9b
No differences were encountered between the control files of package xineliboutput-fbfe
Control files of package xineliboutput-fbfe-dbgsym: lines which differ (wdiff format)
Build-Ids: bda4b0f9b6e613bc479216c5457caed2fcd5a851 ceb2c487bf1a0ff9915c84ef4e0d779f437239fb
No differences were encountered between the control files of package xineliboutput-sxfe
Control files of package xineliboutput-sxfe-dbgsym: lines which differ (wdiff format)
Build-Ids: 349d93661d9b3a0bb3bca9dc0d290df5583ca7a3 51b322c159f1787c8516c1e562379594dc9a9381
No differences were encountered between the control files of package xineliboutput-wlfe
Control files of package xineliboutput-wlfe-dbgsym: lines which differ (wdiff format)
Build-Ids: d2b5996fbc46ac367f8d31a6de051a4b788096a2 eb014b0f855b7f255cdcbe1e492dcc5f44bf40c2