blob: 3750c9e93680672e051c2ec223169ee498201577 [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <audio-proto/audio-proto.h>
namespace audio {
namespace audio_proto {
#define WITH_FLAGS(_str) \
((sample_format & AUDIO_SAMPLE_FORMAT_FLAG_UNSIGNED) \
? ((sample_format & AUDIO_SAMPLE_FORMAT_FLAG_INVERT_ENDIAN) ? _str "_UNSIGNED [InvEndian]" \
: _str "_UNSIGNED") \
: ((sample_format & AUDIO_SAMPLE_FORMAT_FLAG_INVERT_ENDIAN) ? _str " [InvEndian]" : _str))
const char* SampleFormatToString(SampleFormat sample_format) {
auto fmt = static_cast<SampleFormat>(sample_format & ~AUDIO_SAMPLE_FORMAT_FLAG_MASK);
switch (fmt) {
case AUDIO_SAMPLE_FORMAT_BITSTREAM:
return WITH_FLAGS("BITSTREAM");
case AUDIO_SAMPLE_FORMAT_8BIT:
return WITH_FLAGS("8BIT");
case AUDIO_SAMPLE_FORMAT_16BIT:
return WITH_FLAGS("16BIT");
case AUDIO_SAMPLE_FORMAT_20BIT_PACKED:
return WITH_FLAGS("20BIT_PACKED");
case AUDIO_SAMPLE_FORMAT_24BIT_PACKED:
return WITH_FLAGS("24BIT_PACKED");
case AUDIO_SAMPLE_FORMAT_20BIT_IN32:
return WITH_FLAGS("20BIT_IN32");
case AUDIO_SAMPLE_FORMAT_24BIT_IN32:
return WITH_FLAGS("24BIT_IN32");
case AUDIO_SAMPLE_FORMAT_32BIT_FLOAT:
return WITH_FLAGS("32BIT_FLOAT");
default:
return WITH_FLAGS("<unknown>");
}
}
#undef WITH_FLAGS
} // namespace audio_proto
} // namespace audio