commit 0b6a0dc5f2a9984640ea42b91788c4a550ca065e Author: CentOS Sources Date: Tue Jul 27 17:07:35 2021 +0000 import libucil-0.9.10-16.el8 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a063fe4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libucil-0.9.10.tar.gz diff --git a/.libucil.metadata b/.libucil.metadata new file mode 100644 index 0000000..9b9e009 --- /dev/null +++ b/.libucil.metadata @@ -0,0 +1 @@ +91a857e9888608efbbeec3b54e60e1039eea1bfe SOURCES/libucil-0.9.10.tar.gz diff --git a/SOURCES/libucil-0.9.10-leaks.patch b/SOURCES/libucil-0.9.10-leaks.patch new file mode 100644 index 0000000..8fe7ebf --- /dev/null +++ b/SOURCES/libucil-0.9.10-leaks.patch @@ -0,0 +1,47 @@ + src/ucil_png.c | 1 + + src/ucil_rawavi.c | 6 +++++- + 2 files changed, 6 insertions(+), 1 deletions(-) + +diff --git a/src/ucil_png.c b/src/ucil_png.c +index 9fd9de3..2406ce7 100644 +--- a/src/ucil_png.c ++++ b/src/ucil_png.c +@@ -286,6 +286,7 @@ unicap_status_t ucil_load_png( char *filename, unicap_data_buffer_t *buffer ) + if( !check_if_png( filename, &f ) ) + { + TRACE( "File '%s' is not a valid PNG image\n", filename ); ++ fclose( f ); + return STATUS_FAILURE; + } + +diff --git a/src/ucil_rawavi.c b/src/ucil_rawavi.c +index d578922..8b6f7b4 100644 +--- a/src/ucil_rawavi.c ++++ b/src/ucil_rawavi.c +@@ -225,6 +225,7 @@ static void avi_list_pad( avi_buffer_t *list, int offset, int padding ) + padsize = padding - ( ( offset + list->dwPtr + sizeof( avi_list_t ) - 4 ) % padding ); + + avi_add_chunk( list, UCIL_FOURCC( 'J', 'U', 'N', 'K' ), padsize, chunk_buffer ); ++ free( chunk_buffer ); + } + + +@@ -573,6 +574,7 @@ static avi_buffer_t *ucil_rawavi_create_index( ucil_rawavi_video_file_object_t * + avi_index_entry_t *idx; + int i; + int offset = 4; ++ avi_buffer_t *buf; + + idx = malloc( vobj->movi_frames * sizeof( avi_index_entry_t ) ); + +@@ -586,7 +588,9 @@ static avi_buffer_t *ucil_rawavi_create_index( ucil_rawavi_video_file_object_t * + offset += vobj->format.buffer_size + 8; + } + +- return avi_create_chunk( UCIL_FOURCC( 'i', 'd', 'x', '1' ), idx, vobj->movi_frames * sizeof( avi_index_entry_t ) ); ++ buf = avi_create_chunk( UCIL_FOURCC( 'i', 'd', 'x', '1' ), idx, vobj->movi_frames * sizeof( avi_index_entry_t ) ); ++ free( idx ); ++ return buf; + } + + unicap_status_t ucil_rawavi_close_video_file( ucil_rawavi_video_file_object_t *vobj ) diff --git a/SOURCES/libucil-0.9.10-warnings.patch b/SOURCES/libucil-0.9.10-warnings.patch new file mode 100644 index 0000000..b3b678c --- /dev/null +++ b/SOURCES/libucil-0.9.10-warnings.patch @@ -0,0 +1,454 @@ + src/colorspace.c | 15 --- + src/ucil_gstreamer.c | 12 -- + src/ucil_ppm.c | 1 + + src/ucil_rawavi.c | 29 ----- + src/ucil_theora.c | 280 -------------------------------------------------- + src/video_file.c | 8 -- + 6 files changed, 1 insertions(+), 344 deletions(-) + +diff --git a/src/colorspace.c b/src/colorspace.c +index 01ec086..2345270 100644 +--- a/src/colorspace.c ++++ b/src/colorspace.c +@@ -108,7 +108,6 @@ static void y4202rgb32( __u8 *dest, __u8 *source, int width, int height ); + static void y8002rgb24( __u8 *dest, __u8 *source, int width, int height ); + static void y8002rgb32( __u8 *dest, __u8 *source, int width, int height ); + static void rgb242y800( __u8 *dest, __u8 *source, int width, int height ); +-static void rgb322y800( __u8 *dest, __u8 *source, int width, int height ); + static void uyvytoyuv422p( __u8 *dest, __u8 *src, int width, int height ); + static void uyvytoyuv420p( __u8 *dest, __u8 *src, int width, int height ); + static void yuv420ptouyvy( __u8 *dest, __u8 *src, int width, int height ); +@@ -2832,20 +2831,6 @@ static void rgb242y800( __u8 *dest, __u8 *source, int width, int height ) + } + } + +-static void rgb322y800( __u8 *dest, __u8 *source, int width, int height ) +-{ +- int i; +- int dest_offset = 0; +- int source_size = width * height * 4; +- +- for( i = 1; i < source_size; i += 4 ){ +- __u8 y; +- y = source[i]; +- dest[dest_offset++] = y; +- } +-} +- +- + static void y8002rgb32( __u8 *dest, __u8 *source, int width, int height ) + { + int i; +diff --git a/src/ucil_gstreamer.c b/src/ucil_gstreamer.c +index 1c707fe..eaf025f 100644 +--- a/src/ucil_gstreamer.c ++++ b/src/ucil_gstreamer.c +@@ -269,18 +269,6 @@ static void destroy_vobj( ucil_gstreamer_video_file_object_t *vobj ) + g_free( vobj ); + } + +-static void parse_ogg_theora_parameters( GstElement *encoder, ucil_gstreamer_video_file_object_t *vobj, guint n_parameters, GParameter *parameters ) +-{ +- int i; +- for( i = 0; i < n_parameters; i++ ){ +- if( !strcmp( parameters[i].name, "quality" ) ){ +- g_object_set( encoder, "quality", g_value_get_int( ¶meters[i].value ), NULL ); +- } else if ( !strcmp( parameters[i].name, "bitrate" ) ){ +- g_object_set( encoder, "bitrate", g_value_get_int( ¶meters[i].value ), NULL ); +- } +- } +-} +- + static void parse_parameters( ucil_gstreamer_video_file_object_t *vobj, guint n_parameters, GParameter *parameters ) + { + int i; +diff --git a/src/ucil_ppm.c b/src/ucil_ppm.c +index f02240a..c536d3e 100644 +--- a/src/ucil_ppm.c ++++ b/src/ucil_ppm.c +@@ -1,6 +1,7 @@ + #include "ucil.h" + #include "ucil_private.h" + ++#include + #include + #include + #include +diff --git a/src/ucil_rawavi.c b/src/ucil_rawavi.c +index 8b6f7b4..de25da5 100644 +--- a/src/ucil_rawavi.c ++++ b/src/ucil_rawavi.c +@@ -77,7 +77,6 @@ struct _ucil_rawavi_video_file_object + #define AVI_PAD_SIZE 4096 + + static void avi_add_chunk( avi_buffer_t *buffer, __u32 fourcc, __u32 size, __u8 *data ); +-static __u32 avi_add_list_hdr( avi_buffer_t *buffer, __u32 fourcc, __u32 size ); + static __u32 avi_add_chunk_hdr( avi_buffer_t *buffer, __u32 fourcc, __u32 size ); + static void avi_list_pad( avi_buffer_t *list, int offset, int padding ); + static int avi_write_buffer( FILE *f, avi_buffer_t *buffer ); +@@ -137,7 +136,6 @@ static void *ucil_rawavi_encode_thread( ucil_rawavi_video_file_object_t *vobj ) + static int write_avi_header( FILE *f ) + { + __u32 hdr[3]; +- int res = 0; + + hdr[0] = UCIL_FOURCC( 'R', 'I', 'F', 'F'); + hdr[1] = 0; +@@ -229,33 +227,6 @@ static void avi_list_pad( avi_buffer_t *list, int offset, int padding ) + } + + +-static __u32 avi_add_list_hdr( avi_buffer_t *buffer, __u32 fourcc, __u32 size ) +-{ +- avi_list_t list; +- __u32 ret; +- +- list.dwList = UCIL_FOURCC( 'L', 'I', 'S', 'T' ); +- list.dwSize = size + 4; +- list.dwFourCC = fourcc; +- +- if( buffer->dwBufferSize < ( buffer->dwPtr + sizeof( list ) ) ) +- { +- __u8 *tmp; +- +- tmp = malloc( buffer->dwPtr + sizeof( list ) ); +- memcpy( tmp, buffer->bData, buffer->dwPtr ); +- free( buffer->bData ); +- buffer->bData = tmp; +- buffer->dwBufferSize = buffer->dwPtr + sizeof( list ); +- } +- +- memcpy( buffer->bData + buffer->dwPtr, &list, sizeof( list ) ); +- ret = buffer->dwPtr; +- buffer->dwPtr += sizeof( list ); +- +- return ret; +-} +- + static int avi_write_list_hdr( FILE *f, __u32 fourcc, __u32 size ) + { + avi_list_t list; +diff --git a/src/ucil_theora.c b/src/ucil_theora.c +index e2d00ef..bf95004 100644 +--- a/src/ucil_theora.c ++++ b/src/ucil_theora.c +@@ -947,286 +947,6 @@ static void *ucil_theora_encode_thread( ucil_theora_video_file_object_t *vobj ) + return NULL; + } + +-static void copy_yuv( unsigned char *dst, yuv_buffer *yuv, theora_info *ti ) +-{ +- int y; +- unsigned char *yoff; +- unsigned char *uvoff; +- unsigned char *dstoff; +- int crop_offset; +- +- dstoff = dst; +- crop_offset = ti->offset_x + yuv->y_stride * ti->offset_y; +- yoff = yuv->y + crop_offset; +- +- for( y = 0; y < yuv->y_height; y++ ) +- { +- memcpy( dstoff, yoff, yuv->y_width ); +- dstoff += yuv->y_width; +- yoff += yuv->y_stride; +- } +- +- crop_offset = ( ti->offset_x / 2 ) + ( yuv->uv_stride ) * ( ti->offset_y / 2 ); +- uvoff = yuv->u + crop_offset; +- +- for( y = 0; y < yuv->uv_height; y++ ) +- { +- memcpy( dstoff, uvoff, yuv->uv_width ); +- dstoff += yuv->uv_width; +- uvoff += yuv->uv_stride; +- } +- +- uvoff = yuv->v; +- +- for( y = 0; y < yuv->uv_height; y++ ) +- { +- memcpy( dstoff, uvoff, yuv->uv_width ); +- dstoff += yuv->uv_width; +- uvoff += yuv->uv_stride; +- } +-} +- +-// Video Playback disabled - see ucview_videoplay_plugin on how to play back video files +-#if 0 +- +-static void *ucil_theora_worker_thread( ucil_theora_input_file_object_t *vobj ) +-{ +- unicap_data_buffer_t new_frame_buffer; +- +- struct timeval ltime; +- int eos = 0; +- +- unicap_copy_format( &new_frame_buffer.format, &vobj->format ); +- new_frame_buffer.type = UNICAP_BUFFER_TYPE_SYSTEM; +- new_frame_buffer.buffer_size = new_frame_buffer.format.buffer_size; +- new_frame_buffer.data = malloc( new_frame_buffer.format.buffer_size ); +- +- gettimeofday( <ime, NULL ); +- +- while( !vobj->quit_capture_thread ) +- { +- struct timespec abs_timeout; +- struct timeval ctime; +- GList *entry; +- ogg_page og; +- ogg_packet op; +- size_t bytes; +- +- int buffer_ready = 0; +- +- +- +- if( !eos && ( ogg_stream_packetout( &vobj->os, &op ) > 0 ) ) +- { +- yuv_buffer yuv; +- +- theora_decode_packetin( &vobj->th, &op ); +- theora_decode_YUVout( &vobj->th, &yuv ); +- copy_yuv( new_frame_buffer.data, &yuv, &vobj->ti ); +- +- buffer_ready = 1; +- } +- else if( !eos ) +- { +- bytes = buffer_data( vobj->f, &vobj->oy ); +- if( !bytes ) +- { +- TRACE( "End of stream\n" ); +- eos = 1; +- +- } +- +- while( ogg_sync_pageout( &vobj->oy, &og ) > 0 ) +- { +- ogg_stream_pagein( &vobj->os, &og ); +- } +- continue; +- } +- else +- { +- buffer_ready = 1; +- } +- +- gettimeofday( &ctime, NULL ); +- abs_timeout.tv_sec = ctime.tv_sec + 1; +- abs_timeout.tv_nsec = ctime.tv_usec * 1000; +- if( sem_timedwait( &vobj->sema, &abs_timeout ) ) +- { +- TRACE( "SEM_WAIT FAILED\n" ); +- continue; +- } +- +- if( buffer_ready && vobj->event_callback ) +- { +- vobj->event_callback( vobj->event_unicap_handle, UNICAP_EVENT_NEW_FRAME, &new_frame_buffer ); +- TRACE( "New frame\n" ); +- } +- +- unicap_data_buffer_t *data_buffer = g_queue_pop_head( vobj->in_queue ); +- if( data_buffer ) +- { +- unicap_copy_format( &data_buffer->format, &vobj->format ); +- memcpy( data_buffer->data, new_frame_buffer.data, vobj->format.buffer_size ); +- +- g_queue_push_tail( vobj->out_queue, data_buffer ); +- } +- +- sem_post( &vobj->sema ); +- +- if( buffer_ready ) +- { +- gettimeofday( &ctime, NULL ); +- if( ctime.tv_usec < ltime.tv_usec ) +- { +- ctime.tv_usec += 1000000; +- ctime.tv_sec -= 1; +- } +- +- ctime.tv_usec -= ltime.tv_usec; +- ctime.tv_sec -= ltime.tv_sec; +- +- if( ( ctime.tv_sec == 0 ) && +- ( ctime.tv_usec < vobj->frame_intervall ) ) +- { +- usleep( vobj->frame_intervall - ctime.tv_usec ); +- } +- +- gettimeofday( <ime, NULL ); +- } +- } +- +- free( new_frame_buffer.data ); +- return NULL; +-} +- +- +-static unicap_status_t theoracpi_reenumerate_formats( ucil_theora_input_file_object_t vobj, int *count ) +-{ +- *count = 1; +- +- return STATUS_SUCCESS; +-} +- +-static unicap_status_t theoracpi_enumerate_formats( ucil_theora_input_file_object_t *vobj, unicap_format_t *format, int index ) +-{ +- unicap_status_t status = STATUS_NO_MATCH; +- if( index == 0 ) +- { +- unicap_copy_format( format, &vobj->format ); +- status = STATUS_SUCCESS; +- } +- +- return status; +-} +- +-static unicap_status_t theoracpi_set_format( ucil_theora_input_file_object_t *vobj, unicap_format_t *format ) +-{ +- unicap_status_t status = STATUS_SUCCESS; +- if( ( format->size.width != vobj->format.size.width ) || +- ( format->size.height != vobj->format.size.height ) || +- ( format->bpp != vobj->format.bpp ) ) +- { +- char buffer[1024]; +- size_t size = 1024; +- +- unicap_describe_format( format, buffer, &size ); +- TRACE( "Could not set format: %s\n", buffer ); +- size = 1024; +- unicap_describe_format( &vobj->format, buffer, &size ); +- TRACE( "Stored: %s\n" ); +- status = STATUS_FAILURE; +- } +- +- return status; +-} +- +-static unicap_status_t theoracpi_get_format( ucil_theora_input_file_object_t *vobj, unicap_format_t *format ) +-{ +- unicap_copy_format( format, &vobj->format ); +- return STATUS_SUCCESS; +-} +- +-static unicap_status_t theoracpi_reenumerate_properties( ucil_theora_input_file_object_t *vobj, int *count ) +-{ +- *count = 0; +- return STATUS_SUCCESS; +-} +- +-static unicap_status_t theoracpi_enumerate_properties( ucil_theora_input_file_object_t *vobj, unicap_property_t *property, int index ) +-{ +- return STATUS_NO_MATCH; +-} +- +-static unicap_status_t theoracpi_set_property( ucil_theora_input_file_object_t *vobj, unicap_property_t *property ) +-{ +- return STATUS_FAILURE; +-} +- +-static unicap_status_t theoracpi_get_property( ucil_theora_input_file_object_t *vobj, unicap_property_t *property ) +-{ +- return STATUS_FAILURE; +-} +- +-static unicap_status_t theoracpi_capture_start( ucil_theora_input_file_object_t *vobj ) +-{ +- unicap_status_t status = STATUS_SUCCESS; +- +- if( pthread_create( &vobj->worker_thread, NULL, (void*(*)(void*))ucil_theora_worker_thread, vobj ) ) +- { +- TRACE( "Failed to create worker thread!\n" ); +- return STATUS_FAILURE; +- } +- +- return status; +-} +- +-static unicap_status_t theoracpi_capture_stop( ucil_theora_input_file_object_t *vobj ) +-{ +- int res; +- +- vobj->quit_capture_thread = 1; +- res = pthread_join( vobj->worker_thread, NULL ); +- +- return ( res == 0 ) ? STATUS_SUCCESS : STATUS_FAILURE; +-} +- +-static unicap_status_t theoracpi_queue_buffer( ucil_theora_input_file_object_t *vobj, unicap_data_buffer_t *buffer ) +-{ +- unicap_status_t status = STATUS_SUCCESS; +- +- g_queue_push_tail( vobj->in_queue, buffer ); +- +- return status; +-} +- +-static unicap_status_t theoracpi_dequeue_buffer( ucil_theora_input_file_object_t *vobj, unicap_data_buffer_t **buffer ) +-{ +- unicap_status_t status = STATUS_SUCCESS; +- return status; +-} +- +-static unicap_status_t theoracpi_wait_buffer( ucil_theora_input_file_object_t *vobj, unicap_data_buffer_t **buffer ) +-{ +- unicap_status_t status = STATUS_SUCCESS; +- return status; +-} +- +-static unicap_status_t theoracpi_poll_buffer( ucil_theora_input_file_object_t *vobj, int *count ) +-{ +- *count = 1; +- return STATUS_SUCCESS; +-} +- +-static unicap_status_t theoracpi_set_event_notify( ucil_theora_input_file_object_t *vobj, unicap_event_callback_t func, unicap_handle_t handle ) +-{ +- vobj->event_callback = func; +- vobj->event_unicap_handle = handle; +- +- return STATUS_SUCCESS; +-} +- +-#endif +- + static void encode_parse_parameters( ucil_theora_video_file_object_t *vobj, guint n_parameters, GParameter *parameters ) + { + int i; +diff --git a/src/video_file.c b/src/video_file.c +index 9c9a3f1..547a3dc 100644 +--- a/src/video_file.c ++++ b/src/video_file.c +@@ -38,7 +38,6 @@ + + + #define MAX_CODECS 8 +-static gboolean ucil_video_is_initialized = FALSE; + + struct video_codec_cpi { + const gchar ** codec_names; +@@ -158,7 +157,6 @@ static enum ucil_codec_id get_codec_id( const char *codec ) + + for (id = 0; id < sizeof(codecs) / sizeof(video_codec_cpi); id ++) + { +- gboolean found = FALSE; + int i; + + for( i = 0; codecs[id].codec_names[i] != NULL; i++ ){ +@@ -171,12 +169,6 @@ static enum ucil_codec_id get_codec_id( const char *codec ) + } + + +-static void ucil_video_initialize( void ) +-{ +-/* load_vcp_modules(); */ +-} +- +- + ucil_video_file_object_t *ucil_create_video_filev( const char *path, unicap_format_t *format, const char *codec, + guint n_parameters, GParameter *parameters ) + { diff --git a/SOURCES/libucil-0.9.8-bz627890.patch b/SOURCES/libucil-0.9.8-bz627890.patch new file mode 100644 index 0000000..f3e2853 --- /dev/null +++ b/SOURCES/libucil-0.9.8-bz627890.patch @@ -0,0 +1,17 @@ +diff --git a/src/ucil_theora.c b/src/ucil_theora.c +index 0919a97..e2d00ef 100644 +--- a/src/ucil_theora.c ++++ b/src/ucil_theora.c +@@ -1556,7 +1556,11 @@ ucil_theora_video_file_object_t *ucil_theora_create_video_filev( const char *pat + + #endif + +- theora_encode_init( &vobj->th, &vobj->ti ); ++ if( theora_encode_init( &vobj->th, &vobj->ti ) != 0) ++ { ++ free( vobj ); ++ return NULL; ++ } + + vobj->full_queue = g_queue_new(); + vobj->empty_queue = g_queue_new(); diff --git a/SPECS/libucil.spec b/SPECS/libucil.spec new file mode 100644 index 0000000..249be44 --- /dev/null +++ b/SPECS/libucil.spec @@ -0,0 +1,197 @@ +Summary: Library to render text and graphic overlays onto video images +Name: libucil +Version: 0.9.10 +Release: 16%{?dist} +License: GPLv2+ +Group: System Environment/Libraries +URL: http://www.unicap-imaging.org/ +Source0: http://www.unicap-imaging.org/downloads/%{name}-%{version}.tar.gz + +# check return value of theora_encode_init() (#627890) +Patch0: libucil-0.9.8-bz627890.patch + +# fix some memory leaks +Patch1: libucil-0.9.10-leaks.patch + +# fix some compile-time warnings +Patch2: libucil-0.9.10-warnings.patch + +BuildRequires: autoconf, automake, gettext-devel, libtool +BuildRequires: intltool, /usr/bin/perl, perl(XML::Parser), gettext, gtk-doc >= 1.4 +BuildRequires: libunicap-devel, glib2-devel, pango-devel, alsa-lib-devel +BuildRequires: libtheora-devel, libogg-devel, libvorbis-devel, libpng-devel +Obsoletes: unicap <= 0.9.7-1 +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +%description +Unicap provides a uniform interface to video capture devices. It allows +applications to use any supported video capture device via a single API. +The related ucil library provides easy to use functions to render text +and graphic overlays onto video images. + +%package devel +Summary: Development files for the ucil library +Group: Development/Libraries +Requires: %{name} = %{version}-%{release}, pkgconfig, libunicap-devel +Obsoletes: unicap-devel <= 0.9.7-1 + +%description devel +The libucil-devel package includes header files and libraries necessary +for developing programs which use the ucil library. It contains the API +documentation of the library, too. + +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +# fixes for gtk-doc 1.26 +sed -i -e '/^DOC_SOURCE_DIR/s/--source-dir=//g' doc/libucil/Makefile.am +mkdir -p m4 +gtkdocize --copy +autoreconf -fiv + +%build +%configure --disable-rpath --enable-gtk-doc +make %{?_smp_mflags} + +%install +rm -rf $RPM_BUILD_ROOT +make DESTDIR=$RPM_BUILD_ROOT install + +# Don't install any static .a and libtool .la files +rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}.{a,la} + +%clean +rm -rf $RPM_BUILD_ROOT + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%doc AUTHORS ChangeLog COPYING README +%{_libdir}/%{name}.so.* + +%files devel +%defattr(-,root,root,-) +%{_libdir}/%{name}.so +%{_libdir}/pkgconfig/%{name}.pc +%{_includedir}/unicap/*.h +%{_datadir}/gtk-doc/html/%{name} + +%changelog +* Wed Feb 07 2018 Fedora Release Engineering - 0.9.10-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 0.9.10-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.9.10-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 0.9.10-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 0.9.10-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jun 17 2015 Fedora Release Engineering - 0.9.10-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun Aug 17 2014 Fedora Release Engineering - 0.9.10-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 0.9.10-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat Aug 03 2013 Fedora Release Engineering - 0.9.10-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Thu Feb 14 2013 Fedora Release Engineering - 0.9.10-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Jul 19 2012 Fedora Release Engineering - 0.9.10-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jan 13 2012 Fedora Release Engineering - 0.9.10-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Dec 06 2011 Adam Jackson - 0.9.10-4 +- Rebuild for new libpng + +* Wed Feb 09 2011 Fedora Release Engineering - 0.9.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Oct 06 2010 Kamil Dudka 0.9.10-2 +- fix some memory leaks and compile-time warnings + +* Mon Oct 04 2010 Robert Scheck 0.9.10-1 +- Upgrade to 0.9.10 + +* Wed Sep 29 2010 Jesse Keating 0.9.8-6 +- Rebuilt for gcc bug 634757 + +* Wed Sep 15 2010 Kamil Dudka 0.9.8-5 +- upstream patch for #632439 +- check return value of theora_encode_init() (#627890) + +* Wed Aug 25 2010 Kamil Dudka 0.9.8-4 +- fix SIGSEGV in ucil_theora_encode_thread (#627161) + +* Wed Jun 02 2010 Kamil Dudka 0.9.8-3 +- fix SIGSEGV in ucil_alsa_fill_audio_buffer (#572966) +- fix SIGSEGV in ucil_theora_encode_thread (#595863) + +* Fri Mar 12 2010 Kamil Dudka 0.9.8-2 +- build the package in %%build + +* Sun Feb 21 2010 Robert Scheck 0.9.8-1 +- Upgrade to 0.9.8 (#530702, #567109, #567110, #567111) +- Splitting of unicap into libunicap, libucil and libunicapgtk + +* Sat Oct 24 2009 Robert Scheck 0.9.7-1 +- Upgrade to 0.9.7 (#530702) + +* Sun Jul 26 2009 Fedora Release Engineering - 0.9.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Thu Jun 18 2009 Dan Horak 0.9.5-2 +- don't require libraw1394 on s390/s390x + +* Sun May 03 2009 Robert Scheck 0.9.5-1 +- Upgrade to 0.9.5 + +* Mon Feb 23 2009 Robert Scheck 0.9.3-2 +- Rebuild against gcc 4.4 and rpm 4.6 + +* Mon Oct 13 2008 Robert Scheck 0.9.3-1 +- Upgrade to 0.9.3 (#466825, thanks to Hans de Goede) +- Enabled libv4l support for the new gspca kernel driver + +* Sat Aug 09 2008 Robert Scheck 0.2.23-4 +- Rebuild to get missing dependencies back (#443015, #458527) + +* Tue Aug 05 2008 Robert Scheck 0.2.23-3 +- Filter the unicap plugins which overlap with libv4l libraries + +* Wed Jul 22 2008 Robert Scheck 0.2.23-2 +- Rebuild for libraw1394 2.0.0 + +* Mon May 19 2008 Robert Scheck 0.2.23-1 +- Upgrade to 0.2.23 +- Corrected packaging of cpi/*.so files (thanks to Arne Caspari) + +* Sat May 17 2008 Robert Scheck 0.2.22-1 +- Upgrade to 0.2.22 (#446021) + +* Sat Feb 16 2008 Robert Scheck 0.2.19-3 +- Added patch to correct libdir paths (thanks to Ralf Corsepius) + +* Mon Feb 04 2008 Robert Scheck 0.2.19-2 +- Changes to match with Fedora Packaging Guidelines (#431381) + +* Mon Feb 04 2008 Robert Scheck 0.2.19-1 +- Upgrade to 0.2.19 +- Initial spec file for Fedora and Red Hat Enterprise Linux