Skip to content

Commit

Permalink
#511 faster and prettier error message lookup
Browse files Browse the repository at this point in the history
  • Loading branch information
totaam committed Jan 21, 2025
1 parent 875ce89 commit 616a193
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 0 deletions.
51 changes: 51 additions & 0 deletions xpra/codecs/amf/amf.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,57 @@ cdef extern from "core/Result.h":
AMF_VULKAN_FAILED


cdef inline RESULT_STR(AMF_RESULT res):
return {
AMF_OK: "OK",
AMF_FAIL: "FAIL",
AMF_UNEXPECTED: "UNEXPECTED",
AMF_ACCESS_DENIED: "ACCESS_DENIED",
AMF_INVALID_ARG: "INVALID_ARG",
AMF_OUT_OF_RANGE: "OUT_OF_RANGE",
AMF_OUT_OF_MEMORY: "OUT_OF_MEMORY",
AMF_INVALID_POINTER: "INVALID_POINTER",
AMF_NO_INTERFACE: "NO_INTERFACE",
AMF_NOT_IMPLEMENTED: "NOT_IMPLEMENTED",
AMF_NOT_SUPPORTED: "NOT_SUPPORTED",
AMF_NOT_FOUND: "NOT_FOUND",
AMF_ALREADY_INITIALIZED: "ALREADY_INITIALIZED",
AMF_NOT_INITIALIZED: "NOT_INITIALIZED",
AMF_INVALID_FORMAT: "INVALID_FORMAT",
AMF_WRONG_STATE: "WRONG_STATE",
AMF_FILE_NOT_OPEN: "FILE_NOT_OPEN",
AMF_NO_DEVICE: "NO_DEVICE",
AMF_DIRECTX_FAILED: "DIRECTX_FAILED",
AMF_OPENCL_FAILED: "OPENCL_FAILED",
AMF_GLX_FAILED: "GLX_FAILED",
AMF_XV_FAILED: "XV_FAILED",
AMF_ALSA_FAILED: "ALSA_FAILED",
AMF_EOF: "EOF",
AMF_REPEAT: "REPEAT",
AMF_INPUT_FULL: "INPUT_FULL",
AMF_RESOLUTION_CHANGED: "RESOLUTION_CHANGED",
AMF_RESOLUTION_UPDATED: "RESOLUTION_UPDATED",
AMF_INVALID_DATA_TYPE: "INVALID_DATA_TYPE",
AMF_INVALID_RESOLUTION: "INVALID_RESOLUTION",
AMF_CODEC_NOT_SUPPORTED: "CODEC_NOT_SUPPORTED",
AMF_SURFACE_FORMAT_NOT_SUPPORTED: "SURFACE_FORMAT_NOT_SUPPORTED",
AMF_SURFACE_MUST_BE_SHARED: "SURFACE_MUST_BE_SHARED",
AMF_DECODER_NOT_PRESENT: "DECODER_NOT_PRESENT",
AMF_DECODER_SURFACE_ALLOCATION_FAILED: "DECODER_SURFACE_ALLOCATION_FAILED",
AMF_DECODER_NO_FREE_SURFACES: "DECODER_NO_FREE_SURFACES",
AMF_ENCODER_NOT_PRESENT: "ENCODER_NOT_PRESENT",
AMF_DEM_ERROR: "DEM_ERROR",
AMF_DEM_PROPERTY_READONLY: "DEM_PROPERTY_READONLY",
AMF_DEM_REMOTE_DISPLAY_CREATE_FAILED: "DEM_REMOTE_DISPLAY_CREATE_FAILED",
AMF_DEM_START_ENCODING_FAILED: "DEM_START_ENCODING_FAILED",
AMF_DEM_QUERY_OUTPUT_FAILED: "DEM_QUERY_OUTPUT_FAILED",
AMF_TAN_CLIPPING_WAS_REQUIRED: "TAN_CLIPPING_WAS_REQUIRED",
AMF_TAN_UNSUPPORTED_VERSION: "TAN_UNSUPPORTED_VERSION",
AMF_NEED_MORE_INPUT: "NEED_MORE_INPUT",
AMF_VULKAN_FAILED: "VULKAN_FAILED",
}.get(res, "")


cdef extern from "core/Variant.h":
ctypedef enum AMF_VARIANT_TYPE:
AMF_VARIANT_EMPTY # 0
Expand Down
6 changes: 6 additions & 0 deletions xpra/codecs/amf/encoder.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ from libc.string cimport memset

from xpra.codecs.amf.amf cimport (
set_guid,
RESULT_STR,
AMF_PLANE_TYPE_STR, AMF_SURFACE_FORMAT_STR, AMF_FRAME_TYPE_STR,
AMF_RESULT, AMF_EOF, AMF_REPEAT,
AMF_DX11_0,
Expand Down Expand Up @@ -149,6 +150,11 @@ def check(res: AMF_RESULT, message: str):
def error_str(AMF_RESULT result) -> str:
if result == 0:
return ""
# try direct code lookup:
err = RESULT_STR(result)
if err:
return err
# fallback to API call:
cdef AMFTrace *trace = NULL
cdef AMF_RESULT res = factory.pVtbl.GetTrace(factory, &trace)
if res != 0:
Expand Down

0 comments on commit 616a193

Please sign in to comment.