#include "iamf/cli/codec/opus_utils.h" #include "absl/status/status.h" #include "absl/strings/str_cat.h" #include "absl/strings/string_view.h" #include "include/opus_defines.h" namespace iamf_tools { absl::Status OpusErrorCodeToAbslStatus(int opus_error_code, absl::string_view error_message) { absl::StatusCode status_code; switch (opus_error_code) { case OPUS_OK: return absl::OkStatus(); case OPUS_BAD_ARG: status_code = absl::StatusCode::kInvalidArgument; break; case OPUS_BUFFER_TOO_SMALL: case OPUS_INVALID_STATE: status_code = absl::StatusCode::kFailedPrecondition; break; case OPUS_INTERNAL_ERROR: status_code = absl::StatusCode::kInternal; break; case OPUS_INVALID_PACKET: status_code = absl::StatusCode::kDataLoss; break; case OPUS_UNIMPLEMENTED: status_code = absl::StatusCode::kUnimplemented; break; case OPUS_ALLOC_FAIL: status_code = absl::StatusCode::kResourceExhausted; break; default: status_code = absl::StatusCode::kUnknown; break; } return absl::Status( status_code, absl::StrCat(error_message, " opus_error_code= ", opus_error_code)); } } // namespace iamf_tools