1// Copyright 2017 The Fuchsia Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include <audio-proto/audio-proto.h> 6 7namespace audio { 8namespace audio_proto { 9 10#define WITH_FLAGS(_str) \ 11 ((sample_format & AUDIO_SAMPLE_FORMAT_FLAG_UNSIGNED) \ 12 ? ((sample_format & AUDIO_SAMPLE_FORMAT_FLAG_INVERT_ENDIAN) \ 13 ? _str "_UNSIGNED [InvEndian]" : _str "_UNSIGNED") \ 14 : ((sample_format & AUDIO_SAMPLE_FORMAT_FLAG_INVERT_ENDIAN) \ 15 ? _str " [InvEndian]" : _str)) 16 17const char* SampleFormatToString(SampleFormat sample_format) { 18 auto fmt = static_cast<SampleFormat>(sample_format & ~AUDIO_SAMPLE_FORMAT_FLAG_MASK); 19 switch (fmt) { 20 case AUDIO_SAMPLE_FORMAT_BITSTREAM: return WITH_FLAGS("BITSTREAM"); 21 case AUDIO_SAMPLE_FORMAT_8BIT: return WITH_FLAGS("8BIT"); 22 case AUDIO_SAMPLE_FORMAT_16BIT: return WITH_FLAGS("16BIT"); 23 case AUDIO_SAMPLE_FORMAT_20BIT_PACKED: return WITH_FLAGS("20BIT_PACKED"); 24 case AUDIO_SAMPLE_FORMAT_24BIT_PACKED: return WITH_FLAGS("24BIT_PACKED"); 25 case AUDIO_SAMPLE_FORMAT_20BIT_IN32: return WITH_FLAGS("20BIT_IN32"); 26 case AUDIO_SAMPLE_FORMAT_24BIT_IN32: return WITH_FLAGS("24BIT_IN32"); 27 case AUDIO_SAMPLE_FORMAT_32BIT_FLOAT: return WITH_FLAGS("32BIT_FLOAT"); 28 default: return WITH_FLAGS("<unknown>"); 29 } 30} 31#undef WITH_FLAGS 32 33} // namespace audio_proto 34} // namespace audio 35