diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/demuxers/demux_matroska.c | 36 | ||||
-rw-r--r-- | src/demuxers/demux_matroska.h | 1 | ||||
-rw-r--r-- | src/demuxers/demux_qt.c | 2 | ||||
-rw-r--r-- | src/demuxers/demux_ts.c | 6 | ||||
-rw-r--r-- | src/demuxers/matroska.h | 2 | ||||
-rw-r--r-- | src/input/input_cdda.c | 2 | ||||
-rw-r--r-- | src/input/vcd/xineplug_inp_vcd.c | 4 | ||||
-rw-r--r-- | src/libreal/xine_real_video_decoder.c | 2 | ||||
-rw-r--r-- | src/post/planar/noise.c | 8 | ||||
-rw-r--r-- | src/spu_dec/sputext_demuxer.c | 5 | ||||
-rw-r--r-- | src/video_dec/image.c | 3 | ||||
-rw-r--r-- | src/video_out/video_out_directx.c | 29 | ||||
-rw-r--r-- | src/xine-engine/Makefile.am | 2 | ||||
-rw-r--r-- | src/xine-engine/configfile.c | 4 | ||||
-rw-r--r-- | src/xine-engine/events.c | 1 | ||||
-rw-r--r-- | src/xine-engine/info_helper.c | 5 | ||||
-rw-r--r-- | src/xine-engine/xine.c | 8 | ||||
-rw-r--r-- | src/xine-utils/mangle.h | 9 | ||||
-rw-r--r-- | src/xine-utils/memcpy.c | 22 | ||||
-rw-r--r-- | src/xine-utils/xmlparser.c | 2 |
20 files changed, 110 insertions, 43 deletions
diff --git a/src/demuxers/demux_matroska.c b/src/demuxers/demux_matroska.c index 2c0b7df4f..6392aaac0 100644 --- a/src/demuxers/demux_matroska.c +++ b/src/demuxers/demux_matroska.c @@ -304,8 +304,12 @@ static int parse_content_compression (demux_matroska_t *this, matroska_track_t * } break; case MATROSKA_ID_CE_COMPSETTINGS: - lprintf("ContentCompSettings (UNSUPPORTED)\n"); - if (!ebml_skip(ebml, &elem)) + lprintf("ContentCompSettings\n"); + track->compress_settings = calloc(1, elem.len); + track->compress_len = elem.len; + if (elem.len > this->compress_maxlen) + this->compress_maxlen = elem.len; + if(!ebml_read_binary(ebml, &elem, track->compress_settings)) return 0; break; default: @@ -1785,8 +1789,8 @@ static int find_track_by_id(demux_matroska_t *this, int track_num, } -static int read_block_data (demux_matroska_t *this, size_t len) { - alloc_block_data(this, len); +static int read_block_data (demux_matroska_t *this, size_t len, size_t offset) { + alloc_block_data(this, len + offset); /* block datas */ if (! this->block_data) { @@ -1794,7 +1798,7 @@ static int read_block_data (demux_matroska_t *this, size_t len) { "demux_matroska: memory allocation error\n"); return 0; } - if (this->input->read(this->input, this->block_data, len) != len) { + if (this->input->read(this->input, this->block_data + offset, len) != len) { off_t pos = this->input->get_current_pos(this->input); xprintf(this->stream->xine, XINE_VERBOSITY_LOG, "demux_matroska: read error at position %" PRIdMAX "\n", @@ -1824,8 +1828,9 @@ static int parse_block (demux_matroska_t *this, size_t block_size, int16_t timecode_diff; int64_t pts, xduration; int decoder_flags = 0; + size_t headers_len = 0; - data = this->block_data; + data = this->block_data + this->compress_maxlen; if (!(num_len = parse_ebml_uint(this, data, &track_num))) return 0; data += num_len; @@ -1878,12 +1883,21 @@ static int parse_block (demux_matroska_t *this, size_t block_size, decoder_flags |= BUF_FLAG_PREVIEW; } + if (track->compress_algo == MATROSKA_COMPRESS_HEADER_STRIP) + headers_len = track->compress_len; + if (lacing == MATROSKA_NO_LACING) { size_t block_size_left; lprintf("no lacing\n"); - block_size_left = (this->block_data + block_size) - data; - lprintf("size: %d, block_size: %u\n", block_size_left, block_size); + block_size_left = (this->block_data + block_size + this->compress_maxlen) - data; + lprintf("size: %d, block_size: %u, block_offset: %u\n", block_size_left, block_size, this->compress_maxlen); + + if (headers_len) { + data -= headers_len; + xine_fast_memcpy(data, track->compress_settings, headers_len); + block_size_left += headers_len; + } if (track->handle_content != NULL) { track->handle_content((demux_plugin_t *)this, track, @@ -1913,7 +1927,7 @@ static int parse_block (demux_matroska_t *this, size_t block_size, "demux_matroska: too many frames: %d\n", lace_num); return 0; } - block_size_left = this->block_data + block_size - data; + block_size_left = this->block_data + block_size + this->compress_maxlen - data; switch (lacing) { case MATROSKA_XIPH_LACING: { @@ -2046,7 +2060,7 @@ static int parse_simpleblock(demux_matroska_t *this, size_t block_len, uint64_t if( file_len ) normpos = (int) ( (double) block_pos * 65535 / file_len ); - if (!read_block_data(this, block_len)) + if (!read_block_data(this, block_len, this->compress_maxlen)) return 0; has_block = 1; @@ -2085,7 +2099,7 @@ static int parse_block_group(demux_matroska_t *this, if( file_len ) normpos = (int) ( (double) block_pos * 65535 / file_len ); - if (!read_block_data(this, elem.len)) + if (!read_block_data(this, elem.len, this->compress_maxlen)) return 0; has_block = 1; diff --git a/src/demuxers/demux_matroska.h b/src/demuxers/demux_matroska.h index fe1b7f6cf..670827598 100644 --- a/src/demuxers/demux_matroska.h +++ b/src/demuxers/demux_matroska.h @@ -96,6 +96,7 @@ typedef struct { int num_sub_tracks; matroska_track_t *tracks[MAX_STREAMS]; + size_t compress_maxlen; /* maintain editions, number and capacity */ int num_editions, cap_editions; diff --git a/src/demuxers/demux_qt.c b/src/demuxers/demux_qt.c index c944e3c9e..c342cc381 100644 --- a/src/demuxers/demux_qt.c +++ b/src/demuxers/demux_qt.c @@ -457,7 +457,7 @@ static inline void dump_moov_atom(unsigned char *moov_atom, int moov_atom_size) FILE *f; - f = fopen(RAW_MOOV_FILENAME, "w"); + f = fopen(RAW_MOOV_FILENAME, "wb"); if (!f) { perror(RAW_MOOV_FILENAME); return; diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c index b038e52ef..49880f9a2 100644 --- a/src/demuxers/demux_ts.c +++ b/src/demuxers/demux_ts.c @@ -2344,6 +2344,7 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, demux_ts_t *this; int i; int hdmv = -1; + int size; switch (stream->content_detection_method) { @@ -2352,12 +2353,13 @@ static demux_plugin_t *open_plugin (demux_class_t *class_gen, int i, j; int try_again, ts_detected; - if (!_x_demux_read_header(input, buf, sizeof(buf))) + size = _x_demux_read_header(input, buf, sizeof(buf)); + if (size < PKT_SIZE) return NULL; if (detect_ts(buf, sizeof(buf), PKT_SIZE)) hdmv = 0; - else if (detect_ts(buf, sizeof(buf), PKT_SIZE+4)) + else if (size >= PKT_SIZE + 4 && detect_ts(buf, sizeof(buf), PKT_SIZE+4)) hdmv = 1; else return NULL; diff --git a/src/demuxers/matroska.h b/src/demuxers/matroska.h index 23e115edc..2fad31ce4 100644 --- a/src/demuxers/matroska.h +++ b/src/demuxers/matroska.h @@ -272,6 +272,8 @@ struct matroska_track_s { uint32_t codec_private_len; int default_flag; uint32_t compress_algo; + uint32_t compress_len; + char *compress_settings; uint32_t buf_type; fifo_buffer_t *fifo; diff --git a/src/input/input_cdda.c b/src/input/input_cdda.c index 31bc51bc2..05250f51c 100644 --- a/src/input/input_cdda.c +++ b/src/input/input_cdda.c @@ -1280,7 +1280,7 @@ static void _cdda_mkdir_safe(xine_t *xine, char *path) { hList = FindFirstFile(szDir, &FileData); if (hList == INVALID_HANDLE_VALUE) { - if(_mkdir(path) != 0) { + if(mkdir(path, 0) != 0) { xprintf(xine, XINE_VERBOSITY_DEBUG, "input_cdda: mkdir(%s) failed.\n", path); return; } diff --git a/src/input/vcd/xineplug_inp_vcd.c b/src/input/vcd/xineplug_inp_vcd.c index acd4775f4..1f6a885db 100644 --- a/src/input/vcd/xineplug_inp_vcd.c +++ b/src/input/vcd/xineplug_inp_vcd.c @@ -1500,6 +1500,10 @@ vcd_class_dispose (input_class_t *this_gen) { dbg_print((INPUT_DBG_CALL|INPUT_DBG_EXT), "called\n"); vcd_close(class); + free(class->vcd_device); + free(my_vcd.v_config.title_format); + free(my_vcd.v_config.comment_format); + free(class); } /* Update the xine player title text. */ diff --git a/src/libreal/xine_real_video_decoder.c b/src/libreal/xine_real_video_decoder.c index a4c40668b..ce717fe81 100644 --- a/src/libreal/xine_real_video_decoder.c +++ b/src/libreal/xine_real_video_decoder.c @@ -380,7 +380,7 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf) xine_hexdump (this->chunk_buffer, this->chunk_buffer_size); printf ("libreal: transform_in:\n"); - xine_hexdump ((uint8_t *) &transform_in, sizeof(rv_xform_in_t)); + xine_hexdump ((uint8_t *) &transform_in, sizeof(transform_in_t)); printf ("libreal: chunk_table:\n"); xine_hexdump ((uint8_t *) buf->decoder_info_ptr[2], diff --git a/src/post/planar/noise.c b/src/post/planar/noise.c index 015925138..471670fb9 100644 --- a/src/post/planar/noise.c +++ b/src/post/planar/noise.c @@ -39,8 +39,10 @@ #ifdef ARCH_X86_64 # define REG_a "rax" +# define intarch_t int64_t #else # define REG_a "eax" +# define intarch_t int32_t #endif #define MAX_NOISE 4096 @@ -155,7 +157,7 @@ static inline void lineNoise_C(uint8_t *dst, uint8_t *src, int8_t *noise, int le #ifdef ARCH_X86 static inline void lineNoise_MMX(uint8_t *dst, uint8_t *src, int8_t *noise, int len, int shift){ - long mmx_len= len&(~7); + intarch_t mmx_len= len&(~7); noise+=shift; asm volatile( @@ -182,7 +184,7 @@ static inline void lineNoise_MMX(uint8_t *dst, uint8_t *src, int8_t *noise, int //duplicate of previous except movntq static inline void lineNoise_MMX2(uint8_t *dst, uint8_t *src, int8_t *noise, int len, int shift){ - long mmx_len= len&(~7); + intarch_t mmx_len= len&(~7); noise+=shift; asm volatile( @@ -225,7 +227,7 @@ static inline void lineNoiseAvg_C(uint8_t *dst, uint8_t *src, int len, int8_t ** #ifdef ARCH_X86 static inline void lineNoiseAvg_MMX(uint8_t *dst, uint8_t *src, int len, int8_t **shift){ - long mmx_len= len&(~7); + intarch_t mmx_len= len&(~7); asm volatile( "mov %5, %%"REG_a" \n\t" diff --git a/src/spu_dec/sputext_demuxer.c b/src/spu_dec/sputext_demuxer.c index 0b89d03c8..a8e252c30 100644 --- a/src/spu_dec/sputext_demuxer.c +++ b/src/spu_dec/sputext_demuxer.c @@ -1374,7 +1374,8 @@ static demux_plugin_t *open_demux_plugin (demux_class_t *class_gen, xine_stream_ (strncasecmp(ending, ".sub", 4) != 0) && (strncasecmp(ending, ".srt", 4) != 0) && (strncasecmp(ending, ".smi", 4) != 0) && - (strncasecmp(ending, ".ssa", 4) != 0))) { + (strncasecmp(ending, ".ssa", 4) != 0) && + (strncasecmp(ending, ".ass", 4) != 0))) { free (this); return NULL; } @@ -1431,7 +1432,7 @@ void *init_sputext_demux_class (xine_t *xine, void *data) { /* do not report this mimetype, it might confuse browsers. */ /* "text/plain: asc txt sub srt: VIDEO subtitles;" */ this->demux_class.mimetypes = NULL; - this->demux_class.extensions = "asc txt sub srt smi ssa"; + this->demux_class.extensions = "asc txt sub srt smi ssa ass"; this->demux_class.dispose = default_demux_class_dispose; /* diff --git a/src/video_dec/image.c b/src/video_dec/image.c index a4b6e43bd..cbbb9d722 100644 --- a/src/video_dec/image.c +++ b/src/video_dec/image.c @@ -101,12 +101,14 @@ static void image_decode_data (video_decoder_t *this_gen, buf_element_t *buf) { /* * this->image -> rgb data */ + InitializeMagick(NULL); wand = NewMagickWand(); status = MagickReadImageBlob(wand, this->image, this->index); this->index = 0; if (!status) { DestroyMagickWand(wand); + DestroyMagick(); lprintf("error loading image\n"); return; } @@ -116,6 +118,7 @@ static void image_decode_data (video_decoder_t *this_gen, buf_element_t *buf) { img_buf = malloc(width * height * 3); MagickGetImagePixels(wand, 0, 0, width, height, "RGB", CharPixel, img_buf); DestroyMagickWand(wand); + DestroyMagick(); _x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_WIDTH, width); _x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_HEIGHT, height); diff --git a/src/video_out/video_out_directx.c b/src/video_out/video_out_directx.c index 26f1c1178..f37c730b8 100644 --- a/src/video_out/video_out_directx.c +++ b/src/video_out/video_out_directx.c @@ -110,6 +110,12 @@ typedef struct { * * ----------------------------------------- */ +typedef enum { + VO_DIRECTX_HWACCEL_FULL = 0, + VO_DIRECTX_HWACCEL_SCALE = 1, + VO_DIRECTX_HWACCEL_NONE = 2 +} vo_directx_hwaccel_enum; + typedef struct { vo_driver_t vo_driver; win32_visual_t *win32_visual; @@ -128,6 +134,7 @@ typedef struct { uint32_t width; /* frame with */ uint32_t height; /* frame height */ double ratio; /* frame ratio */ + vo_directx_hwaccel_enum hwaccel; /* requested level of HW acceleration */ yuv2rgb_factory_t *yuv2rgb_factory; /* used for format conversion */ yuv2rgb_t *yuv2rgb; /* used for format conversion */ @@ -144,6 +151,8 @@ typedef struct { xine_t *xine; } directx_class_t; +char *config_hwaccel_values[] = {"full", "scale", "none", NULL }; + /* ----------------------------------------- * * BEGIN : Direct Draw and win32 handlers @@ -322,6 +331,8 @@ static boolean CreateSecondary( win32_driver_t * win32_driver, int width, int he ddsd.dwWidth = width; ddsd.dwHeight = height; + if (win32_driver->hwaccel <= VO_DIRECTX_HWACCEL_FULL) { + if( format == XINE_IMGFMT_YV12 ) { /* the requested format is XINE_IMGFMT_YV12 */ @@ -378,6 +389,10 @@ static boolean CreateSecondary( win32_driver_t * win32_driver, int width, int he if( IDirectDraw_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->secondary, 0 ) == DD_OK ) return TRUE; + } + + if (win32_driver->hwaccel <= VO_DIRECTX_HWACCEL_SCALE) { + /* Our fallback method is to create a back buffer * with the same image format as the primary surface */ @@ -392,10 +407,13 @@ static boolean CreateSecondary( win32_driver_t * win32_driver, int width, int he if( IDirectDraw_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->secondary, 0 ) == DD_OK ) return TRUE; + } + /* Our second fallback - all w/o HW acceleration */ lprintf("CreateSecondary() - Falling back, disabling HW acceleration \n"); ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT; ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; + win32_driver->act_format = IMGFMT_NATIVE; if( (result = IDirectDraw_CreateSurface( win32_driver->ddobj, &ddsd, &win32_driver->secondary, 0 )) == DD_OK ) return TRUE; @@ -625,7 +643,7 @@ static boolean Overlay( LPDIRECTDRAWSURFACE src_surface, RECT * src_rect, } else { - Error( 0, "IDirectDrawSurface_UpdateOverlay : error 0x%lx", result ); + Error( 0, "IDirectDrawSurface_UpdateOverlay : error 0x%lx. You can try disable hardware acceleration (option video.directx.hwaccel).", result ); return FALSE; } } @@ -1265,6 +1283,15 @@ static vo_driver_t *open_plugin (video_driver_class_t *class_gen, const void *wi win32_driver->vo_driver.dispose = win32_exit; win32_driver->vo_driver.redraw_needed = win32_redraw_needed; + win32_driver->hwaccel = class->config->register_enum(class->config, + "video.directx.hwaccel", 0, config_hwaccel_values, + _("HW acceleration level"), + _("Possible values (default full):\n\n" +"full: full acceleration\n" +"scale: disable colorspace conversion (HW scaling only)\n" +"none: disable all acceleration"), + 10, NULL, NULL); + if (!CreatePrimary( win32_driver )) { Destroy( win32_driver ); return NULL; diff --git a/src/xine-engine/Makefile.am b/src/xine-engine/Makefile.am index 64ba68a97..15553380a 100644 --- a/src/xine-engine/Makefile.am +++ b/src/xine-engine/Makefile.am @@ -12,7 +12,7 @@ EXTRA_DIST = lrb.c lrb.h accel_vdpau.h accel_xvmc.h if WIN32 DEF_FILE = libxine-$(XINE_MAJOR).def -def_ldflags="-Wl,--output-def,$(DEF_FILE)" +def_ldflags=-Wl,--output-def,$(DEF_FILE) $(LDFLAGS_NOUNDEFINED) else DEF_FILE = endif diff --git a/src/xine-engine/configfile.c b/src/xine-engine/configfile.c index e5c42f6ea..b82db8b77 100644 --- a/src/xine-engine/configfile.c +++ b/src/xine-engine/configfile.c @@ -1026,8 +1026,8 @@ void xine_config_save (xine_t *xine, const char *filename) { lprintf("backing up configfile to %s\n", temp); - f_backup = fopen(temp, "w"); - f_config = fopen(filename, "r"); + f_backup = fopen(temp, "wb"); + f_config = fopen(filename, "rb"); if (f_config && f_backup && (stat(filename, &config_stat) == 0)) { char *buf = NULL; diff --git a/src/xine-engine/events.c b/src/xine-engine/events.c index 33d9988be..11d6e8bd7 100644 --- a/src/xine-engine/events.c +++ b/src/xine-engine/events.c @@ -193,6 +193,7 @@ void xine_event_dispose_queue (xine_event_queue_t *queue) { while ( (event = xine_event_get (queue)) ) { xine_event_free (event); } + xine_list_delete(queue->events); pthread_mutex_destroy(&queue->lock); pthread_cond_destroy(&queue->new_event); diff --git a/src/xine-engine/info_helper.c b/src/xine-engine/info_helper.c index 93fc2173d..85f43b357 100644 --- a/src/xine-engine/info_helper.c +++ b/src/xine-engine/info_helper.c @@ -241,9 +241,6 @@ static void meta_info_set_unlocked_encoding(xine_stream_t *stream, int info, con xprintf(stream->xine, XINE_VERBOSITY_LOG, _("info_helper: unsupported conversion %s -> UTF-8, no conversion performed\n"), enc); - if (system_enc) - free(system_enc); - if (cd != (iconv_t)-1) { char *utf8_value; ICONV_CONST char *inbuf; @@ -273,6 +270,8 @@ static void meta_info_set_unlocked_encoding(xine_stream_t *stream, int info, con return; } } + + free(system_enc); } #endif diff --git a/src/xine-engine/xine.c b/src/xine-engine/xine.c index c2e6641ec..a03ac5686 100644 --- a/src/xine-engine/xine.c +++ b/src/xine-engine/xine.c @@ -696,6 +696,7 @@ xine_stream_t *xine_stream_new (xine_t *this, pthread_mutexattr_init(&attr); pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); pthread_mutex_init (&stream->frontend_lock, &attr); + pthread_mutexattr_destroy(&attr); /* * Clear meta/stream info @@ -1534,6 +1535,8 @@ static void xine_dispose_internal (xine_stream_t *stream) { stream->metronom->exit (stream->metronom); + xine_list_delete(stream->event_queues); + pthread_mutex_lock(&stream->xine->streams_lock); ite = xine_list_find(stream->xine->streams, stream); if (ite) { @@ -1578,7 +1581,6 @@ void xine_dispose (xine_stream_t *stream) { if (stream->osd_renderer) stream->osd_renderer->close( stream->osd_renderer ); - _x_refcounter_dec(stream->refcounter); } @@ -1607,6 +1609,8 @@ void xine_exit (xine_t *this) { if(this->port_ticket) this->port_ticket->dispose(this->port_ticket); + pthread_mutex_destroy(&this->log_lock); + #if defined(WIN32) WSACleanup(); #endif @@ -1652,6 +1656,7 @@ xine_t *xine_new (void) { * log buffers */ memset(this->log_buffers, 0, sizeof(this->log_buffers)); + pthread_mutex_init (&this->log_lock, NULL); #ifdef WIN32 @@ -1747,7 +1752,6 @@ void xine_init (xine_t *this) { * locks */ pthread_mutex_init (&this->streams_lock, NULL); - pthread_mutex_init (&this->log_lock, NULL); /* initialize color conversion tables and functions */ init_yuv_conversion(); diff --git a/src/xine-utils/mangle.h b/src/xine-utils/mangle.h index 4ca7db7a5..a897e9229 100644 --- a/src/xine-utils/mangle.h +++ b/src/xine-utils/mangle.h @@ -36,10 +36,15 @@ // Use rip-relative addressing if compiling PIC code on x86-64. #if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__DJGPP__) || \ defined(__OS2__) || (defined (__OpenBSD__) && !defined(__ELF__)) +# if defined(__MINGW64__) +# define EXTERN_PREFIX "" +# else +# define EXTERN_PREFIX "_" +# endif # if defined(__x86_64__) && defined(__PIC__) -# define MANGLE(a) "_" #a"(%%rip)" +# define MANGLE(a) EXTERN_PREFIX #a"(%%rip)" # else -# define MANGLE(a) "_" #a +# define MANGLE(a) EXTERN_PREFIX #a # endif #else # if defined(__x86_64__) && defined(__PIC__) diff --git a/src/xine-utils/memcpy.c b/src/xine-utils/memcpy.c index b7611ed86..cea2b5b0b 100644 --- a/src/xine-utils/memcpy.c +++ b/src/xine-utils/memcpy.c @@ -39,6 +39,8 @@ #ifdef HAVE_SYS_TIMES_H #include <sys/times.h> +#else +#include <time.h> #endif #include <stdlib.h> @@ -124,7 +126,7 @@ quote of the day: /* for small memory blocks (<256 bytes) this version is faster */ #define small_memcpy(to,from,n)\ {\ -register unsigned long int dummy;\ +register uintptr_t dummy;\ __asm__ __volatile__(\ "rep; movsb"\ :"=&D"(to), "=&S"(from), "=&c"(dummy)\ @@ -154,7 +156,7 @@ int d0, d1, d2; "movsb\n" "2:" : "=&c" (d0), "=&D" (d1), "=&S" (d2) - :"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from) + :"0" (n/4), "q" (n),"1" ((uintptr_t) to),"2" ((uintptr_t) from) : "memory"); return (to); @@ -191,9 +193,9 @@ static void * sse_memcpy(void * to, const void * from, size_t len) if(len >= MIN_LEN) { - register unsigned long int delta; + register uintptr_t delta; /* Align destinition to MMREG_SIZE -boundary */ - delta = ((unsigned long int)to)&(SSE_MMREG_SIZE-1); + delta = ((uintptr_t)to)&(SSE_MMREG_SIZE-1); if(delta) { delta=SSE_MMREG_SIZE-delta; @@ -202,7 +204,7 @@ static void * sse_memcpy(void * to, const void * from, size_t len) } i = len >> 6; /* len/64 */ len&=63; - if(((unsigned long)from) & 15) + if(((uintptr_t)from) & 15) /* if SRC is misaligned */ for(; i>0; i--) { @@ -263,9 +265,9 @@ static void * mmx_memcpy(void * to, const void * from, size_t len) if(len >= MMX1_MIN_LEN) { - register unsigned long int delta; + register uintptr_t delta; /* Align destinition to MMREG_SIZE -boundary */ - delta = ((unsigned long int)to)&(MMX_MMREG_SIZE-1); + delta = ((uintptr_t)to)&(MMX_MMREG_SIZE-1); if(delta) { delta=MMX_MMREG_SIZE-delta; @@ -328,9 +330,9 @@ static void * mmx2_memcpy(void * to, const void * from, size_t len) if(len >= MIN_LEN) { - register unsigned long int delta; + register uintptr_t delta; /* Align destinition to MMREG_SIZE -boundary */ - delta = ((unsigned long int)to)&(MMX_MMREG_SIZE-1); + delta = ((uintptr_t)to)&(MMX_MMREG_SIZE-1); if(delta) { delta=MMX_MMREG_SIZE-delta; @@ -428,7 +430,7 @@ static uint64_t rdtsc(int config_flags) struct tms tp; return times(&tp); #else - return ((uint64_t)0); + return clock(); #endif /* HAVE_SYS_TIMES_H */ } #endif diff --git a/src/xine-utils/xmlparser.c b/src/xine-utils/xmlparser.c index 320733ebf..ba0c51994 100644 --- a/src/xine-utils/xmlparser.c +++ b/src/xine-utils/xmlparser.c @@ -143,7 +143,7 @@ static void xml_parser_free_props(xml_property_t *current_property) { } static void xml_parser_free_tree_rec(xml_node_t *current_node, int free_next) { - lprintf("xml_parser_free_tree_rec: %s\n", current_node->name); + lprintf("xml_parser_free_tree_rec: %s\n", current_node ? current_node->name : NULL); if (current_node) { /* properties */ |