diff libao2/ao_oss.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 7227245da803
children 9d4720deada1
line wrap: on
line diff
--- a/libao2/ao_oss.c	Mon Jan 11 20:02:46 2010 +0000
+++ b/libao2/ao_oss.c	Mon Jan 11 20:27:52 2010 +0000
@@ -96,7 +96,7 @@
     case AF_FORMAT_MPEG2: return AFMT_MPEG;
 #endif
 #ifdef AFMT_AC3
-    case AF_FORMAT_AC3: return AFMT_AC3;
+    case AF_FORMAT_AC3_NE: return AFMT_AC3;
 #endif
     }
     mp_msg(MSGT_AO, MSGL_V, "OSS: Unknown/not supported internal format: %s\n", af_fmt2str_short(format));
@@ -139,7 +139,7 @@
     case AFMT_MPEG: return AF_FORMAT_MPEG2;
 #endif
 #ifdef AFMT_AC3
-    case AFMT_AC3: return AF_FORMAT_AC3;
+    case AFMT_AC3: return AF_FORMAT_AC3_NE;
 #endif
     }
     mp_msg(MSGT_GLOBAL,MSGL_ERR,MSGTR_AO_OSS_UnknownUnsupportedFormat, format);
@@ -303,6 +303,8 @@
   }
 
 ac3_retry:
+  if (AF_FORMAT_IS_AC3(format))
+    format = AF_FORMAT_AC3_NE;
   ao_data.format=format;
   oss_format=format2oss(format);
   if (oss_format == -1) {