changeset 35444:4644c320daf4

af_format: support endianness conversion also for iec61937 formats in general, not just AC3.
author reimar
date Fri, 30 Nov 2012 20:11:58 +0000
parents f045a1d92c06
children 19c56dc40a51
files libaf/af_format.c
diffstat 1 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libaf/af_format.c	Fri Nov 30 20:10:40 2012 +0000
+++ b/libaf/af_format.c	Fri Nov 30 20:11:58 2012 +0000
@@ -94,14 +94,23 @@
     char buf1[256];
     char buf2[256];
     af_data_t *data = arg;
+    int supported_ac3 = 0;
 
     // Make sure this filter isn't redundant
     if(af->data->format == data->format &&
        af->data->bps == data->bps)
       return AF_DETACH;
 
+    // A bit complex because we can convert AC3
+    // to generic iec61937 but not the other way
+    // round.
+    if (AF_FORMAT_IS_AC3(af->data->format))
+      supported_ac3 = AF_FORMAT_IS_AC3(data->format);
+    else if (AF_FORMAT_IS_IEC61937(af->data->format))
+      supported_ac3 = AF_FORMAT_IS_IEC61937(data->format);
+
     // Allow trivial AC3-endianness conversion
-    if (!AF_FORMAT_IS_AC3(af->data->format) || !AF_FORMAT_IS_AC3(data->format))
+    if (!supported_ac3)
     // Check for errors in configuration
     if((AF_OK != check_bps(data->bps)) ||
        (AF_OK != check_format(data->format)) ||