diff libao2/ao_mpegpes.c @ 30241:02b9c1a452e1

Add support for distinguishing between little- and big-endian SPDIF AC3 and converting between both.
author reimar
date Mon, 11 Jan 2010 20:27:52 +0000
parents 2eff450157cd
children ce6171e05d55
line wrap: on
line diff
--- a/libao2/ao_mpegpes.c	Mon Jan 11 20:02:46 2010 +0000
+++ b/libao2/ao_mpegpes.c	Mon Jan 11 20:27:52 2010 +0000
@@ -250,9 +250,12 @@
     switch(format){
 	case AF_FORMAT_S16_BE:
 	case AF_FORMAT_MPEG2:
-	case AF_FORMAT_AC3:
+	case AF_FORMAT_AC3_BE:
 	    ao_data.format=format;
 	    break;
+	case AF_FORMAT_AC3_LE:
+	    ao_data.format=AF_FORMAT_AC3_BE;
+	    break;
 	default:
 	    ao_data.format=AF_FORMAT_S16_BE;
     }
@@ -333,8 +336,6 @@
 	unsigned short *s=data;
 //	if(len>2000) len=2000;
 //	printf("ao_mpegpes: len=%d  \n",len);
-	if(ao_data.format==AF_FORMAT_AC3)
-	    for(i=0;i<len/2;i++) s[i]=(s[i]>>8)|(s[i]<<8); // le<->be
 	send_mpeg_lpcm_packet(data, len, 0xA0, ao_data.pts, freq_id, my_ao_write);
     }
     return len;