> > I suspect kino declares BE audio data to be LE in the DV export (or indeed
> > any) pipe. No idea what's the cause of the XV and mpeg2enc endianness
> > problems though.
>
> The audio problems seem to be caused (at least) by big-endian length
> fields in an otherwise little-endian WAV file. I'm not too familiar with
> the various video encodings. I'll have another close look on it over the
> week-end, but might have to pass on the problem to upstream for a fix.

I can confirm the XV problem is the same old problem that a patch had
been posted for in http://jira.schirmacher.de/jira-kino/browse/KINO-76.
I've added some #ifdef __BIG_ENDIAN__ around that, the following patch
should finally fix the display issue:

--- src/frame.cc.org    2005-02-14 16:59:13.798585200 +0100
+++ src/frame.cc        2005-02-14 17:14:01.196680184 +0100
@@ -1052,7 +1052,11 @@

                        for ( int x = 0; x < width; x += 2 )
                        {
+#if defined __BIG_ENDIAN__ || defined _BIG_ENDIAN
+                               *reinterpret_cast<uint32_t*>( dest ) = Cr[ 0 ] 
+ ( Y[ 0 ] << 8 ) + ( Cb[ 1 ] << 16 ) + ( Y[ 0 ] << 24 );
+#else
                                *reinterpret_cast<uint32_t*>( dest ) = Y[ 0 ] + 
( Cb[ 0 ] << 8 ) + ( Y[ 1 ] << 16 ) + ( Cr[ 0 ] << 24 );
+#endif

                                dest += 4;
                                Y += 2;
@@ -1071,8 +1075,13 @@

                        for ( int x = 0; x < width; x += 4 )
                        {
+#if defined __BIG_ENDIAN__ || defined _BIG_ENDIAN
+                               *reinterpret_cast<uint32_t*>( dest ) = Cr[ 0 ] 
+ ( Y[ 0 ] << 8 ) + ( Cb[ 1 ] << 16 ) + ( Y[ 0 ] << 24 );
+                               *reinterpret_cast<uint32_t*>( dest + 4 ) = Cr[ 
2 ] + ( Y[ 0 ] << 8 ) + ( Cb[ 3 ] << 16 ) + ( Y[ 0 ] << 24 );
+#else
                                *reinterpret_cast<uint32_t*>( dest ) = Y[ 0 ] + 
( Cb[ 0 ] << 8 ) + ( Y[ 1 ] << 16 ) + ( Cr[ 0 ] << 24 );
                                *reinterpret_cast<uint32_t*>( dest + 4 ) = Y[ 2 
] + ( Cb[ 0 ] << 8 ) + ( Y[ 3 ] << 16 ) + ( Cr[ 0 ] << 24 );
+#endif

                                dest += 8;
                                Y += 4;

Waiting for your audio export fix now :-)

        Michael



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to