diff options
author | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2009-12-12 03:05:33 +0000 |
---|---|---|
committer | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2009-12-12 03:05:33 +0000 |
commit | 8bd8e600bf475426cbcd5b8f8f89fb2d6e53ec29 (patch) | |
tree | 96f97a7a8bc898ff7036c3a0c8ec366530c059b2 /src | |
parent | 258ff7f5eef3a0813f04c4c78f28f50fb601bef7 (diff) | |
parent | d6e3f2809541eb3b0753222a582d30bc13c31b55 (diff) | |
download | xine-lib-8bd8e600bf475426cbcd5b8f8f89fb2d6e53ec29.tar.gz xine-lib-8bd8e600bf475426cbcd5b8f8f89fb2d6e53ec29.tar.bz2 |
Merge from 1.1.
--HG--
rename : include/xine.h.in => include/xine.h
rename : src/combined/decoder_flac.c => src/combined/flac_decoder.c
rename : src/libspuhdmv/xine_hdmv_decoder.c => src/spu_dec/spuhdmv_decoder.c
Diffstat (limited to 'src')
-rw-r--r-- | src/combined/flac_decoder.c | 2 | ||||
-rw-r--r-- | src/demuxers/Makefile.am | 2 | ||||
-rw-r--r-- | src/demuxers/demux_flac.c | 9 | ||||
-rw-r--r-- | src/demuxers/demux_tta.c | 53 | ||||
-rw-r--r-- | src/input/input_pvr.c | 2 | ||||
-rw-r--r-- | src/spu_dec/spuhdmv_decoder.c | 78 | ||||
-rw-r--r-- | src/xine-engine/audio_out.c | 2 | ||||
-rw-r--r-- | src/xine-engine/broadcaster.c | 2 | ||||
-rw-r--r-- | src/xine-engine/events.c | 2 | ||||
-rw-r--r-- | src/xine-engine/video_out.c | 2 |
10 files changed, 101 insertions, 53 deletions
diff --git a/src/combined/flac_decoder.c b/src/combined/flac_decoder.c index 94c0d30f2..312749c7b 100644 --- a/src/combined/flac_decoder.c +++ b/src/combined/flac_decoder.c @@ -404,7 +404,7 @@ static const uint32_t audio_types[] = { static const decoder_info_t dec_info_audio = { audio_types, /* supported types */ - 5 /* priority */ + 8 /* priority */ }; const plugin_info_t xine_plugin_info[] EXPORTED = { diff --git a/src/demuxers/Makefile.am b/src/demuxers/Makefile.am index 95d143095..39ce2ebb3 100644 --- a/src/demuxers/Makefile.am +++ b/src/demuxers/Makefile.am @@ -62,7 +62,7 @@ xineplug_dmx_mpeg_block_la_CFLAGS = $(AM_CFLAGS) $(AVUTIL_CFLAGS) xineplug_dmx_mpeg_block_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) $(AVUTIL_LIBS) xineplug_dmx_mpeg_la_SOURCES = demux_mpeg.c -xineplug_dmx_mpeg_la_LIBADD = $(XINE_LIB) +xineplug_dmx_mpeg_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) xineplug_dmx_mpeg_elem_la_SOURCES = demux_elem.c xineplug_dmx_mpeg_elem_la_LIBADD = $(XINE_LIB) diff --git a/src/demuxers/demux_flac.c b/src/demuxers/demux_flac.c index 508a8264b..0c2545441 100644 --- a/src/demuxers/demux_flac.c +++ b/src/demuxers/demux_flac.c @@ -466,6 +466,13 @@ static int demux_flac_seek (demux_plugin_t *this_gen, return this->status; } +static void demux_flac_dispose (demux_plugin_t *this_gen) { + demux_flac_t *this = (demux_flac_t *) this_gen; + + free(this->seekpoints); + free(this); +} + static int demux_flac_get_status (demux_plugin_t *this_gen) { demux_flac_t *this = (demux_flac_t *) this_gen; @@ -509,7 +516,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str this->demux_plugin.send_headers = demux_flac_send_headers; this->demux_plugin.send_chunk = demux_flac_send_chunk; this->demux_plugin.seek = demux_flac_seek; - this->demux_plugin.dispose = default_demux_plugin_dispose; + this->demux_plugin.dispose = demux_flac_dispose; this->demux_plugin.get_status = demux_flac_get_status; this->demux_plugin.get_stream_length = demux_flac_get_stream_length; this->demux_plugin.get_capabilities = demux_flac_get_capabilities; diff --git a/src/demuxers/demux_tta.c b/src/demuxers/demux_tta.c index 8e7462d66..8f8f954d5 100644 --- a/src/demuxers/demux_tta.c +++ b/src/demuxers/demux_tta.c @@ -19,6 +19,8 @@ * * True Audio demuxer by Diego Pettenò <flameeyes@gentoo.org> * Inspired by tta libavformat demuxer by Alex Beregszaszi + * + * Seek + time support added by Kelvie Wong <kelvie@ieee.org> */ #ifdef HAVE_CONFIG_H @@ -28,6 +30,10 @@ #define LOG_MODULE "demux_tta" #define LOG_VERBOSE +// This is from the TTA spec, the length (in seconds) of a frame +// http://www.true-audio.com/TTA_Lossless_Audio_Codec_-_Format_Description +#define FRAME_TIME 1.04489795918367346939 + #include <xine/xine_internal.h> #include <xine/xineutils.h> #include <xine/demux.h> @@ -48,6 +54,8 @@ typedef struct { uint32_t totalframes; uint32_t currentframe; + off_t datastart; + int status; union { @@ -81,7 +89,7 @@ static int open_tta_file(demux_tta_t *this) { if ( this->input->read(this->input, this->header.buffer, sizeof(this->header)) != sizeof(this->header) ) return 0; - framelen = 1.04489795918367346939 * le2me_32(this->header.tta.samplerate); + framelen = (uint32_t)(FRAME_TIME * le2me_32(this->header.tta.samplerate)); this->totalframes = le2me_32(this->header.tta.data_length) / framelen + ((le2me_32(this->header.tta.data_length) % framelen) ? 1 : 0); this->currentframe = 0; @@ -96,6 +104,9 @@ static int open_tta_file(demux_tta_t *this) { /* Skip the CRC32 */ this->input->seek(this->input, 4, SEEK_CUR); + /* Store the offset after the header for seeking */ + this->datastart = this->input->get_current_pos(this->input); + return 1; } @@ -126,7 +137,7 @@ static int demux_tta_send_chunk(demux_plugin_t *this_gen) { (int) ((double) this->currentframe * 65535 / this->totalframes); /* Set time */ - /* buf->extra_info->input_time = this->current_sample / this->samplerate; */ + buf->extra_info->input_time = (int)(FRAME_TIME * this->currentframe)*1000; bytes_read = this->input->read(this->input, buf->content, ( bytes_to_read > buf->max_size ) ? buf->max_size : bytes_to_read); if (bytes_read < 0) { @@ -195,6 +206,9 @@ static void demux_tta_send_headers(demux_plugin_t *this_gen) { static int demux_tta_seek (demux_plugin_t *this_gen, off_t start_pos, int start_time, int playing) { demux_tta_t *this = (demux_tta_t *) this_gen; + uint32_t start_frame; + uint32_t frame_index; + off_t start_off = this->datastart; /* if thread is not running, initialize demuxer */ if( !playing ) { @@ -203,11 +217,39 @@ static int demux_tta_seek (demux_plugin_t *this_gen, _x_demux_control_newpts(this->stream, 0, 0); this->status = DEMUX_OK; + + } else { + + /* Get the starting frame */ + if( start_pos ) + start_frame = start_pos * this->totalframes / 65535; + else + start_frame = (uint32_t)((double)start_time/ 1000.0 / FRAME_TIME); + + /* Now we find the offset */ + for( frame_index = 0; frame_index < start_frame; frame_index++ ) + start_off += le2me_32(this->seektable[frame_index]); + + /* Let's seek! We store the current frame internally, so let's update that + * as well */ + _x_demux_flush_engine(this->stream); + this->input->seek(this->input, start_off, SEEK_SET); + this->currentframe = start_frame; + _x_demux_control_newpts(this->stream, (int)(FRAME_TIME * start_frame) * 90000, BUF_FLAG_SEEK); + + this->status = DEMUX_OK; } return this->status; } +static void demux_tta_dispose (demux_plugin_t *this_gen) { + demux_tta_t *this = (demux_tta_t *) this_gen; + + free(this->seektable); + free(this); +} + static int demux_tta_get_status (demux_plugin_t *this_gen) { demux_tta_t *this = (demux_tta_t *) this_gen; @@ -215,9 +257,8 @@ static int demux_tta_get_status (demux_plugin_t *this_gen) { } static int demux_tta_get_stream_length (demux_plugin_t *this_gen) { -// demux_tta_t *this = (demux_tta_t *) this_gen; - - return 0; + demux_tta_t *this = (demux_tta_t *) this_gen; + return (int)(FRAME_TIME * this->totalframes * 1000); } static uint32_t demux_tta_get_capabilities(demux_plugin_t *this_gen) { @@ -241,7 +282,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *str this->demux_plugin.send_headers = demux_tta_send_headers; this->demux_plugin.send_chunk = demux_tta_send_chunk; this->demux_plugin.seek = demux_tta_seek; - this->demux_plugin.dispose = default_demux_plugin_dispose; + this->demux_plugin.dispose = demux_tta_dispose; this->demux_plugin.get_status = demux_tta_get_status; this->demux_plugin.get_stream_length = demux_tta_get_stream_length; this->demux_plugin.get_capabilities = demux_tta_get_capabilities; diff --git a/src/input/input_pvr.c b/src/input/input_pvr.c index 813ec4c1e..288434c47 100644 --- a/src/input/input_pvr.c +++ b/src/input/input_pvr.c @@ -1454,7 +1454,7 @@ static int pvr_plugin_open (input_plugin_t *this_gen ) { if ((err = pthread_create (&this->pvr_thread, NULL, pvr_loop, this)) != 0) { - xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, + xprintf (this->stream->xine, XINE_VERBOSITY_NONE, "input_pvr: can't create new thread (%s)\n", strerror(err)); _x_abort(); } diff --git a/src/spu_dec/spuhdmv_decoder.c b/src/spu_dec/spuhdmv_decoder.c index bcd52ee3f..93e232678 100644 --- a/src/spu_dec/spuhdmv_decoder.c +++ b/src/spu_dec/spuhdmv_decoder.c @@ -37,9 +37,9 @@ #include <xine/video_out.h> #include <xine/video_overlay.h> -#define TRACE(x...) printf(x) +#define XINE_HDMV_TRACE(x...) printf(x) /*#define TRACE(x...) */ -#define ERROR(x...) fprintf(stderr, "spuhdmv: " x) +#define XINE_HDMV_ERROR(x...) fprintf(stderr, "spuhdmv: " x) /*#define ERROR(x...) lprintf(x) */ /* @@ -65,7 +65,7 @@ struct subtitle_object_s { uint16_t width, height; rle_elem_t *rle; - uint num_rle; + unsigned int num_rle; size_t data_size; #if 0 @@ -142,7 +142,7 @@ struct presentation_segment_s { #define LIST_REPLACE(list, obj, FREE_FUNC) \ do { \ - uint id = obj->id; \ + unsigned int id = obj->id; \ \ /* insert to list */ \ obj->next = list; \ @@ -244,7 +244,7 @@ static void segbuf_parse_segment_header(segment_buffer_t *buf) if ( buf->segment_type < 0x14 || ( buf->segment_type > 0x18 && buf->segment_type != 0x80)) { - ERROR("unknown segment type, resetting\n"); + XINE_HDMV_ERROR("unknown segment type, resetting\n"); segbuf_reset(buf); } } else { @@ -283,10 +283,10 @@ static void segbuf_skip_segment(segment_buffer_t *buf) segbuf_parse_segment_header(buf); - TRACE(" skip_segment: %d bytes left\n", (uint)buf->len); + XINE_HDMV_TRACE(" skip_segment: %zd bytes left\n", buf->len); } else { - ERROR(" skip_segment: ERROR - %d bytes queued, %d required\n", - (uint)buf->len, buf->segment_len); + XINE_HDMV_ERROR(" skip_segment: ERROR - %zd bytes queued, %d required\n", + buf->len, buf->segment_len); segbuf_reset (buf); } } @@ -311,7 +311,7 @@ static uint8_t segbuf_get_u8(segment_buffer_t *buf) { if (!(buf->error = ++buf->segment_data > buf->segment_end)) return buf->segment_data[-1]; - ERROR("segbuf_get_u8: read failed (end of segment reached) !"); + XINE_HDMV_ERROR("segbuf_get_u8: read failed (end of segment reached) !"); return 0; } @@ -333,7 +333,7 @@ static uint8_t *segbuf_get_string(segment_buffer_t *buf, size_t len) if (buf->segment_data <= buf->segment_end) return val; } - ERROR("segbuf_get_string(%d): read failed (end of segment reached) !", (int)len); + XINE_HDMV_ERROR("segbuf_get_string(%zd): read failed (end of segment reached) !", len); buf->error = 1; return NULL; } @@ -355,12 +355,12 @@ static subtitle_clut_t *segbuf_decode_palette(segment_buffer_t *buf) return NULL; if (len % 5) { - ERROR(" decode_palette: segment size error (%d ; expected %d for %d entries)\n", - (uint)len, (uint)(5 * entries), (uint)entries); + XINE_HDMV_ERROR(" decode_palette: segment size error (%zd ; expected %zd for %zd entries)\n", + len, (5 * entries), entries); return NULL; } - TRACE("decode_palette: %d items (id %d, version %d)\n", - (uint)entries, palette_id, palette_version_number); + XINE_HDMV_TRACE("decode_palette: %zd items (id %d, version %d)\n", + entries, palette_id, palette_version_number); /* convert to xine-lib clut */ subtitle_clut_t *clut = calloc(1, sizeof(subtitle_clut_t)); @@ -449,7 +449,7 @@ static subtitle_object_t *segbuf_decode_object(segment_buffer_t *buf) uint8_t version = segbuf_get_u8 (buf); uint8_t seq_desc = segbuf_get_u8 (buf); - TRACE(" decode_object: object_id %d, version %d, seq 0x%x\n", + XINE_HDMV_TRACE(" decode_object: object_id %d, version %d, seq 0x%x\n", object_id, version, seq_desc); //LIST_FIND(); @@ -462,7 +462,7 @@ static subtitle_object_t *segbuf_decode_object(segment_buffer_t *buf) obj->width = segbuf_get_u16(buf); obj->height = segbuf_get_u16(buf); - TRACE(" object length %d bytes, size %dx%d\n", data_len, obj->width, obj->height); + XINE_HDMV_TRACE(" object length %d bytes, size %dx%d\n", data_len, obj->width, obj->height); segbuf_decode_rle (buf, obj); @@ -472,7 +472,7 @@ static subtitle_object_t *segbuf_decode_object(segment_buffer_t *buf) } } else { - ERROR(" TODO: APPEND RLE, length %d bytes\n", buf->segment_len - 4); + XINE_HDMV_ERROR(" TODO: APPEND RLE, length %d bytes\n", buf->segment_len - 4); /* TODO */ free_subtitle_object(obj); return NULL; @@ -492,7 +492,7 @@ static window_def_t *segbuf_decode_window_definition(segment_buffer_t *buf) wnd->width = segbuf_get_u16 (buf); wnd->height = segbuf_get_u16 (buf); - TRACE(" window: [%02x %d] %d,%d %dx%d\n", a, + XINE_HDMV_TRACE(" window: [%02x %d] %d,%d %dx%d\n", a, wnd->id, wnd->xpos, wnd->ypos, wnd->width, wnd->height); if (buf->error) { @@ -509,7 +509,7 @@ static int segbuf_decode_video_descriptor(segment_buffer_t *buf) uint16_t height = segbuf_get_u16(buf); uint8_t frame_rate = segbuf_get_u8 (buf); - TRACE(" video_descriptor: %dx%d fps %d\n", width, height, frame_rate); + XINE_HDMV_TRACE(" video_descriptor: %dx%d fps %d\n", width, height, frame_rate); return buf->error; } @@ -518,7 +518,7 @@ static int segbuf_decode_composition_descriptor(segment_buffer_t *buf, compositi descr->number = segbuf_get_u16(buf); descr->state = segbuf_get_u8 (buf); - TRACE(" composition_descriptor: number %d, state %d\n", descr->number, descr->state); + XINE_HDMV_TRACE(" composition_descriptor: number %d, state %d\n", descr->number, descr->state); return buf->error; } @@ -547,7 +547,7 @@ static composition_object_t *segbuf_decode_composition_object(segment_buffer_t * return NULL; } - TRACE(" composition_object: id: %d, win: %d, position %d,%d crop %d forced %d\n", + XINE_HDMV_TRACE(" composition_object: id: %d, win: %d, position %d,%d crop %d forced %d\n", cobj->object_id_ref, cobj->window_id_ref, cobj->xpos, cobj->ypos, cobj->cropped_flag, cobj->forced_flag); @@ -566,7 +566,7 @@ static presentation_segment_t *segbuf_decode_presentation_segment(segment_buffer seg->palette_id_ref = segbuf_get_u8 (buf); seg->object_number = segbuf_get_u8 (buf); - TRACE(" presentation_segment: object_number %d, palette %d\n", + XINE_HDMV_TRACE(" presentation_segment: object_number %d, palette %d\n", seg->object_number, seg->palette_id_ref); for (index = 0; index < seg->object_number; index++) { @@ -673,7 +673,7 @@ static int decode_presentation_segment(spuhdmv_decoder_t *this) return 0; } -static int show_overlay(spuhdmv_decoder_t *this, composition_object_t *cobj, uint palette_id_ref, +static int show_overlay(spuhdmv_decoder_t *this, composition_object_t *cobj, unsigned int palette_id_ref, int overlay_index, int64_t pts, int force_update) { video_overlay_manager_t *ovl_manager = this->stream->video_out->get_overlay_manager(this->stream->video_out); @@ -686,7 +686,7 @@ static int show_overlay(spuhdmv_decoder_t *this, composition_object_t *cobj, uin while (clut && clut->id != palette_id_ref) clut = clut->next; if (!clut) { - TRACE(" show_overlay: clut %d not found !\n", palette_id_ref); + XINE_HDMV_TRACE(" show_overlay: clut %d not found !\n", palette_id_ref); return -1; } @@ -695,7 +695,7 @@ static int show_overlay(spuhdmv_decoder_t *this, composition_object_t *cobj, uin while (obj && obj->id != cobj->object_id_ref) obj = obj->next; if (!obj) { - TRACE(" show_overlay: object %d not found !\n", cobj->object_id_ref); + XINE_HDMV_TRACE(" show_overlay: object %d not found !\n", cobj->object_id_ref); return -1; } @@ -704,7 +704,7 @@ static int show_overlay(spuhdmv_decoder_t *this, composition_object_t *cobj, uin while (wnd && wnd->id != cobj->window_id_ref) wnd = wnd->next; if (!wnd) { - TRACE(" show_overlay: window %d not found !\n", cobj->window_id_ref); + XINE_HDMV_TRACE(" show_overlay: window %d not found !\n", cobj->window_id_ref); return -1; } @@ -737,7 +737,7 @@ static int show_overlay(spuhdmv_decoder_t *this, composition_object_t *cobj, uin overlay.hili_left = -1; overlay.hili_right = -1; - TRACE(" -> overlay: %d,%d %dx%d\n", + XINE_HDMV_TRACE(" -> overlay: %d,%d %dx%d\n", overlay.x, overlay.y, overlay.width, overlay.height); @@ -772,7 +772,7 @@ static void hide_overlays(spuhdmv_decoder_t *this, int64_t pts) int i = 0; while (this->overlay_handles[i] >= 0) { - TRACE(" -> HIDE %d\n", i); + XINE_HDMV_TRACE(" -> HIDE %d\n", i); video_overlay_manager_t *ovl_manager = this->stream->video_out->get_overlay_manager(this->stream->video_out); metronom_t *metronom = this->stream->metronom; @@ -811,7 +811,7 @@ static void update_overlays(spuhdmv_decoder_t *this) for (i = 0; i < pseg->object_number; i++) { if (!cobj) { - ERROR("show_overlays: composition object %d missing !\n", i); + XINE_HDMV_ERROR("show_overlays: composition object %d missing !\n", i); } else { show_overlay(this, cobj, pseg->palette_id_ref, i, pseg->pts, !pseg->shown); cobj = cobj->next; @@ -835,40 +835,40 @@ static void free_objs(spuhdmv_decoder_t *this) static void decode_segment(spuhdmv_decoder_t *this) { - TRACE("*** new segment, pts %010ld: 0x%02x (%8d bytes)", - this->pts, (uint)this->buf->segment_type, (uint)this->buf->segment_len); + XINE_HDMV_TRACE("*** new segment, pts %010ld: 0x%02x (%8d bytes)", + this->pts, this->buf->segment_type, this->buf->segment_len); switch (this->buf->segment_type) { case 0x14: - TRACE(" segment: PALETTE\n"); + XINE_HDMV_TRACE(" segment: PALETTE\n"); decode_palette(this); break; case 0x15: - TRACE(" segment: OBJECT\n"); + XINE_HDMV_TRACE(" segment: OBJECT\n"); decode_object(this); break; case 0x16: - TRACE(" segment: PRESENTATION SEGMENT\n"); + XINE_HDMV_TRACE(" segment: PRESENTATION SEGMENT\n"); decode_presentation_segment(this); break; case 0x17: - TRACE(" segment: WINDOW DEFINITION\n"); + XINE_HDMV_TRACE(" segment: WINDOW DEFINITION\n"); decode_window_definition(this); break; case 0x18: - TRACE(" segment: INTERACTIVE\n"); + XINE_HDMV_TRACE(" segment: INTERACTIVE\n"); break; case 0x80: - TRACE(" segment: END OF DISPLAY\n"); + XINE_HDMV_TRACE(" segment: END OF DISPLAY\n"); /* drop all cached objects */ free_objs(this); break; default: - ERROR(" segment type 0x%x unknown, skipping\n", this->buf->segment_type); + XINE_HDMV_ERROR(" segment type 0x%x unknown, skipping\n", this->buf->segment_type); break; } if (this->buf->error) { - ERROR("*** DECODE ERROR ***\n"); + XINE_HDMV_ERROR("*** DECODE ERROR ***\n"); } update_overlays (this); diff --git a/src/xine-engine/audio_out.c b/src/xine-engine/audio_out.c index c9daa4e4e..3a11aa238 100644 --- a/src/xine-engine/audio_out.c +++ b/src/xine-engine/audio_out.c @@ -2287,7 +2287,7 @@ xine_audio_port_t *_x_ao_new_port (xine_t *xine, ao_driver_t *driver, if ((err = pthread_create (&this->audio_thread, &pth_attrs, ao_loop, this)) != 0) { - xprintf (this->xine, XINE_VERBOSITY_DEBUG, + xprintf (this->xine, XINE_VERBOSITY_NONE, "audio_out: can't create thread (%s)\n", strerror(err)); xprintf (this->xine, XINE_VERBOSITY_LOG, _("audio_out: sorry, this should not happen. please restart xine.\n")); diff --git a/src/xine-engine/broadcaster.c b/src/xine-engine/broadcaster.c index 24f2ef636..f5ac0156f 100644 --- a/src/xine-engine/broadcaster.c +++ b/src/xine-engine/broadcaster.c @@ -344,7 +344,7 @@ broadcaster_t *_x_init_broadcaster(xine_stream_t *stream, int port) this->running = 1; if ((err = pthread_create (&this->manager_thread, NULL, manager_loop, (void *)this)) != 0) { - xprintf (stream->xine, XINE_VERBOSITY_DEBUG, + xprintf (stream->xine, XINE_VERBOSITY_NONE, "broadcaster: can't create new thread (%s)\n", strerror(err)); _x_abort(); } diff --git a/src/xine-engine/events.c b/src/xine-engine/events.c index 3c2c28f6d..33d9988be 100644 --- a/src/xine-engine/events.c +++ b/src/xine-engine/events.c @@ -244,7 +244,7 @@ void xine_event_create_listener_thread (xine_event_queue_t *queue, if ((err = pthread_create (queue->listener_thread, NULL, listener_loop, queue)) != 0) { - xprintf (queue->stream->xine, XINE_VERBOSITY_DEBUG, + xprintf (queue->stream->xine, XINE_VERBOSITY_NONE, "events: can't create new thread (%s)\n", strerror(err)); _x_abort(); } diff --git a/src/xine-engine/video_out.c b/src/xine-engine/video_out.c index 59975bab0..0c593b9d9 100644 --- a/src/xine-engine/video_out.c +++ b/src/xine-engine/video_out.c @@ -1958,7 +1958,7 @@ xine_video_port_t *_x_vo_new_port (xine_t *xine, vo_driver_t *driver, int grabon if ((err = pthread_create (&this->video_thread, &pth_attrs, video_out_loop, this)) != 0) { - xprintf (this->xine, XINE_VERBOSITY_DEBUG, "video_out: can't create thread (%s)\n", strerror(err)); + xprintf (this->xine, XINE_VERBOSITY_NONE, "video_out: can't create thread (%s)\n", strerror(err)); /* FIXME: how does this happen ? */ xprintf (this->xine, XINE_VERBOSITY_LOG, _("video_out: sorry, this should not happen. please restart xine.\n")); |