blob: fa3ab3de2934e38a65682bccc26f6a00828b5204 [file]
#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