Edge API - Linux, Android

 

이 페이지는 LG AI Platform에서 제공하는 Edge API에 관해 설명합니다.

 

소개

Edge API는 LG AI Platform의 Edge/Device 영역에서 공통으로 지원하는 인터페이스입니다. Edge API가 지원하는 하나의 기능을 엔진이라고 하며, 아래 내용을 통해 엔진 구동 과정을 확인할 수 있습니다.

 

호출 순서

 

Edge API

Linux/Android SDK에서는 총 8개의 Edge API를 제공합니다. 각 API에 관한 설명과 호출 순서는 아래와 같습니다.

Engine API의 함수 호출 순서 이미지

Interface 설명
인터페이스 설명
create

엔진 생성 API

엔진을 생성하고 메모리를 할당합니다.
create() API는 중복으로 호출하지 못합니다. 만약 create() API 호출 이후, 다시 create() API를 호출하면 LGAI_INVALID_STATE 에러를 반환합니다. destroy() API를 호출한 후에만 다시 create() API를 호출할 수 있습니다. 

configure

엔진 설정 API

JSON 형태의 설정값과 제어 값을 엔진에 설정합니다.
configure() API는 create() API 호출 이후, start() API 호출 이전에 호출합니다.

setListener

엔진 리스너 등록 API

엔진이 처리한 결과 값을 수신하기 위한 콜백 리스너를 동록합니다.
콜백 리스너를 지원하지 않는 엔진의 경우 LGAI_NOT_SUPPORTED_API 에러를 반환합니다.

start

엔진을 동작시키는 API

엔진 설정이 완료되면 엔진을 동작시킵니다.
스레드를 사용하는 엔진의 경우, start() API를 통해 엔진 내부에 스레드를 생성하고 데이터가 전달되기를 기다립니다. start() API는 중복으로 호출하지 못하며 만약 start() API 호출 이후에 다시 start() API를 호출하면 LGAI_INVALID_STATE 에러를 반환합니다. stop() API를 호출한 후에만 다시 start() API를 호출할 수 있습니다.

process

/출력 데이터를 전달하는 API

입력 데이터를 엔진에 전달하고 엔진의 처리 결과를 수신합니다.
결과값은 result 인자 또는 setListener() API에 등록한 콜백 리스너를 통해 전달합니다.

control

엔진 동작 중 엔진의 설정 값을 변경하거나 제어 명령을 전달할 때 사용합니다.
control() API를 지원하지 않는 엔진의 경우 LGAI_NOT_SUPPORTED_API 에러를 반환합니다.

stop

엔진을 정지하는 API

엔진을 더 이상 사용하지 않는 경우 엔진을 정지합니다. 스레드를 사용하는 엔진의 경우, 스레드를 정지합니다.
엔진을 정지하면 이후에 입력되는 데이터들은 무시됩니다. 엔진은 결과값을 result 인자 또는 콜백 리스너로 전달하기 때문에 결과값이 애플리케이션에 전달되었을지라도 애플리케이션이 stop() API를 호출하지 않으면 엔진은 정지되지 않습니다. 엔진이 정지되지 않으면, 불필요한 메모리가 누수가 발생할 수 있으니 엔진 사용 후 반드시 stop() API를 호출하시기 바랍니다. stop() API는 중복으로 호출하지 못하며 만약 stop() API 호출 이후에 다시 stop() API를 호출하면 LGAI_INVALID_STATE 에러를 반환합니다. start() API를 호출한 후에만 다시 stop() API를 호출할 수 있습니다.

destroy

엔진을 종료하는 API

엔진을 종료하고 메모리에 할당된 엔진 객체를 해제합니다.
destroy() API는 중복으로 호출하지 못하며 만약 destroy() API 호출 이후에 다시 destroy() API를 호출하면 LGAI_INVALID_STATE 에러를 반환합니다. create() API를 호출한 후에만 다시 destroy() API를 호출할 수 있습니다.

 

엔진 상태

Edge API는 애플리케이션이 엔진 객체의 상태를 쉽게 확인할 수 있도록 getState() API를 제공합니다. 애플리케이션 개발자는 애플리케이션 동작 중 getState() API를 호출해서 엔진의 상태를 확인할 수 있으며 API 호출 시 변경되는 엔진의 상태는 아래 그림과 같습니다.

엔진의 상태를 설명하는 이미지

Linux, Android, CLIP 엔진의 상태를 설명하는 테이블
상태 설명
NONE

엔진의 초기 상태입니다.

CREATED

create() API가 정상적으로 처리된 경우 엔진의 상태가 CREATED로 변경됩니다.
CREATED 상태는 객체를 생성하고 설정 값의 초기화를 완료한 상태입니다. CREATED 상태에서는 setListener() API와 configure() API를 호출할 수 있으며 호출된 setListener() API가 정상적으로 처리된 경우에도 엔진은 CREATED 상태를 유지합니다. 또한, control() API를 호출하여 엔진 내부의 설정값을 동적으로 변경할 수 있습니다.

READY

configure() API가 정상적으로 처리된 경우 엔진의 상태가 READY로 변경됩니다.
READY 상태는 엔진 설정이 완료된 상태이며 configure(), setListener(), control() API를 호출할 수 있습니다. READY 상태에서는 configure()setListener() API를 여러번 호출할 수 있으며 마지막으로 호출된 값이 반영되고 이전 내용은 삭제됩니다. 호출된 configure(), setListener(), control() API가 정상적으로 처리된 경우에도 엔진은 READY 상태를 유지합니다. 또한, control() API를 호출하여 엔진 내부의 설정값을 동적으로 변경할 수 있습니다.

RUNNING

start() API가 정상적으로 처리된 경우 엔진의 상태가 RUNNING으로 변경됩니다.
RUNNING 상태는 엔진이 동작 중인 상태이며 process() API를 호출하여 엔진 동작에 필요한 데이터를 전달하고 결과 값을 수신합니다. 또한, control() API를 호출하여 엔진 내부의 설정 값을 동적으로 변경할 수 있습니다.

DESTROYED

destroy() API가 정상적으로 처리된 경우 엔진의 상태가 DESTROYED로 변경됩니다.
DESTROYED 상태는 엔진 객체가 소멸된 상태입니다.