* Change log:
*
* $Log$
+* Revision 1.3 2005/07/25 14:41:29 lilo_booter
+* + Minor correction for entry length being less than the data length
+*
+* Revision 1.2 2005/07/25 07:21:39 lilo_booter
+* + fixes for opendml dv avi
+*
* Revision 1.1 2005/04/15 14:28:26 lilo_booter
* Initial version
*
//#include <stdio.h>
#include <iostream>
#include <iomanip>
+#ifndef __FreeBSD__
#include <byteswap.h>
+#endif /* __FreeBSD__ */
using std::cout;
using std::hex;
could not get it working on the gcc compiler so I had to use this
workaround. We can now use id = make_fourcc("ABCD") instead. */
-FOURCC make_fourcc( char *s )
+FOURCC make_fourcc( const char *s )
{
if ( s[ 0 ] == 0 )
return 0;
*/
-void RIFFFile::ReadChunk( int chunk_index, void *data )
+void RIFFFile::ReadChunk( int chunk_index, void *data, off_t data_len )
{
RIFFDirEntry entry;
entry = GetDirectoryEntry( chunk_index );
pthread_mutex_lock( &file_mutex );
fail_if( lseek( fd, entry.offset, SEEK_SET ) == ( off_t ) - 1 );
- fail_neg( read( fd, data, entry.length ) );
+ fail_neg( read( fd, data, entry.length > data_len ? data_len : entry.length ) );
pthread_mutex_unlock( &file_mutex );
}