| // 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 |