Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:wolfi323:branches:home:wolfi323
xdtv
fix_synchro.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File fix_synchro.patch of Package xdtv
--- src/divx.c.old 2014-09-20 10:59:56.973793466 +0200 +++ src/divx.c 2014-09-20 11:32:34.651285105 +0200 @@ -416,6 +416,7 @@ static long long dropped_audio_samples; extern double videostampmin,videostampmax; double audiostamp=0.0; +clockid_t clock_id=CLOCK_REALTIME; // v4l2 uses CLOCK_MONOTONIC for timestamps starting with kernel 3.9 #endif // SYNCHRO #endif // NOAUDIO @@ -956,7 +957,7 @@ char *fourcc = NULL; char *filename = NULL; char *codec_name = NULL; - struct timeval tv; + struct timespec tv; strcpy(xawmessage,translate("Record Informations:\n\n")); @@ -2140,10 +2141,18 @@ dropped_audio_samples = 0; dropped_audio_buffers = 0; #endif - gettimeofday(&tv, NULL); - if(audiostamp==0.0) audiostamp=tv.tv_usec/1000000.0+tv.tv_sec; + clock_gettime(clock_id, &tv); + if(audiostamp==0.0) + { + audiostamp=tv.tv_nsec/1000000000.0+tv.tv_sec; + if(videostampmin!=0.0 && fabs(audiostamp-videostampmin)>10000) + { + clock_gettime(clock_id=CLOCK_MONOTONIC, &tv); + audiostamp=tv.tv_nsec/1000000000.0+tv.tv_sec; + } + } if(videostampmin==0.0) - videostampmin=videostampmax=tv.tv_usec/1000000.0+tv.tv_sec; + videostampmin=videostampmax=tv.tv_nsec/1000000000.0+tv.tv_sec; divx_audio_must_start=1; #endif @@ -2760,7 +2769,7 @@ { int error; short int *buffer; - struct timeval tv; + struct timespec tv; pthread_setcancelstate(PTHREAD_CANCEL_DISABLE,NULL); buffer = (short int *)malloc (/*BUFFER_SIZE*/divx.audio_buffer_size * sizeof (short int)); @@ -2783,8 +2792,8 @@ goto error; } r /= (divx.audio_fmt==AUDIO_U8 ? 1 : 2); - gettimeofday (&tv, NULL); - audiostamp=tv.tv_usec/1000000.0+tv.tv_sec; + clock_gettime (clock_id, &tv); + audiostamp=tv.tv_nsec/1000000000.0+tv.tv_sec; write_audio_to_avi(buffer, r); pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor