[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18857] trunk/blender/extern/libredcode: = = REDCODE ==

Peter Schlaile peter at schlaile.de
Sun Feb 8 10:07:40 CET 2009


Revision: 18857
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18857
Author:   schlaile
Date:     2009-02-08 10:07:36 +0100 (Sun, 08 Feb 2009)

Log Message:
-----------
== REDCODE ==

* Fixed ntohl dependency (and hopefully 64bit issues)
* Video length detection fixed (tests for picture presence)

Modified Paths:
--------------
    trunk/blender/extern/libredcode/codec.c
    trunk/blender/extern/libredcode/format.c

Modified: trunk/blender/extern/libredcode/codec.c
===================================================================
--- trunk/blender/extern/libredcode/codec.c	2009-02-08 08:52:25 UTC (rev 18856)
+++ trunk/blender/extern/libredcode/codec.c	2009-02-08 09:07:36 UTC (rev 18857)
@@ -64,7 +64,7 @@
 	/* setup the decoder decoding parameters using the current image 
 	   and user parameters */
 	opj_setup_decoder(dinfo, &parameters);
-			
+
 	/* open a byte stream */
 	cio = opj_cio_open((opj_common_ptr)dinfo, 
 			   frame->data + frame->offset, frame->length);

Modified: trunk/blender/extern/libredcode/format.c
===================================================================
--- trunk/blender/extern/libredcode/format.c	2009-02-08 08:52:25 UTC (rev 18856)
+++ trunk/blender/extern/libredcode/format.c	2009-02-08 09:07:36 UTC (rev 18857)
@@ -1,9 +1,3 @@
-#ifdef _WIN32
-#include <Winsock2.h>
-#else
-#include <netinet/in.h>
-#endif
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -11,7 +5,7 @@
 
 struct red_reob {
 	unsigned long len;
-	char head[4];
+	unsigned long head;
 
 	unsigned long rdvo;
 	unsigned long rdvs;
@@ -38,8 +32,15 @@
 	unsigned long * rdao;
 	unsigned long * rdas;
 	long cfra;
+	long length;
 };
 
+unsigned long read_be32(unsigned long val)
+{
+	unsigned char * v = (unsigned char*) & val;
+ 
+	return  (v[0] << 24) | (v[1] << 16) | (v[2] << 8) | v[3];
+}
 
 static unsigned char* read_packet(FILE * fp, char * expect)
 {
@@ -52,7 +53,7 @@
 
 	head[4] = 0;
 
-	len = ntohl(len);
+	len = read_be32(len);
 
 	if (strcmp(expect, head) != 0) {
 		fprintf(stderr, "Read: %s, expect: %s\n", head, expect);
@@ -79,7 +80,7 @@
 	}
 
 	for (i = 2; i < rv[0]/4; i++) {
-		rv[i] = ntohl(rv[i]);
+		rv[i] = read_be32(rv[i]);
 	}
 	return rv;
 }
@@ -109,6 +110,7 @@
 {
 	struct redcode_handle * rv = NULL;
 	struct red_reob * reob = NULL;
+	int i;
 
 	FILE * fp = fopen(fname, "rb");
 
@@ -136,6 +138,12 @@
 		return NULL;
 	}
 
+	for (i = 0; i < (rv->rdvo[0] - 8)/4; i++) {
+		if (rv->rdvo[i + 2]) {
+			rv->length = i;
+		}
+	}
+
 	return rv;
 }
 
@@ -162,7 +170,7 @@
 
 long redcode_get_length(struct redcode_handle * handle)
 {
-	return handle->rdvo[0]/4;
+	return handle->length;
 }
 
 struct redcode_frame * redcode_read_video_frame(





More information about the Bf-blender-cvs mailing list