1 #include "iamf/cli/codec/opus_utils.h" 2 3 #include "absl/status/status.h" 4 #include "absl/strings/str_cat.h" 5 #include "absl/strings/string_view.h" 6 #include "include/opus_defines.h" 7 8 namespace iamf_tools { 9 OpusErrorCodeToAbslStatus(int opus_error_code,absl::string_view error_message)10absl::Status OpusErrorCodeToAbslStatus(int opus_error_code, 11 absl::string_view error_message) { 12 absl::StatusCode status_code; 13 switch (opus_error_code) { 14 case OPUS_OK: 15 return absl::OkStatus(); 16 case OPUS_BAD_ARG: 17 status_code = absl::StatusCode::kInvalidArgument; 18 break; 19 case OPUS_BUFFER_TOO_SMALL: 20 case OPUS_INVALID_STATE: 21 status_code = absl::StatusCode::kFailedPrecondition; 22 break; 23 case OPUS_INTERNAL_ERROR: 24 status_code = absl::StatusCode::kInternal; 25 break; 26 case OPUS_INVALID_PACKET: 27 status_code = absl::StatusCode::kDataLoss; 28 break; 29 case OPUS_UNIMPLEMENTED: 30 status_code = absl::StatusCode::kUnimplemented; 31 break; 32 case OPUS_ALLOC_FAIL: 33 status_code = absl::StatusCode::kResourceExhausted; 34 break; 35 default: 36 status_code = absl::StatusCode::kUnknown; 37 break; 38 } 39 return absl::Status( 40 status_code, 41 absl::StrCat(error_message, " opus_error_code= ", opus_error_code)); 42 } 43 44 } // namespace iamf_tools 45