KR20240057844A - 전자 장치, 서버 장치 및 그 제어 방법 - Google Patents

전자 장치, 서버 장치 및 그 제어 방법 Download PDF

Info

Publication number
KR20240057844A
KR20240057844A KR1020220138550A KR20220138550A KR20240057844A KR 20240057844 A KR20240057844 A KR 20240057844A KR 1020220138550 A KR1020220138550 A KR 1020220138550A KR 20220138550 A KR20220138550 A KR 20220138550A KR 20240057844 A KR20240057844 A KR 20240057844A
Authority
KR
South Korea
Prior art keywords
output
frame
content
display
mode
Prior art date
Application number
KR1020220138550A
Other languages
English (en)
Inventor
강우석
김두현
김민호
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020220138550A priority Critical patent/KR20240057844A/ko
Priority to PCT/KR2023/009430 priority patent/WO2024090710A1/ko
Priority to US18/449,993 priority patent/US20240137606A1/en
Publication of KR20240057844A publication Critical patent/KR20240057844A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234381Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the temporal resolution, e.g. decreasing the frame rate by frame skipping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2401Monitoring of the client buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44209Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/4424Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6373Control signals issued by the client directed to the server or network components for rate control, e.g. request to the server to modify its transmission rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6408Unicasting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Computer And Data Communications (AREA)

Abstract

전자 장치가 개시된다. 전자 장치는, 통신 인터페이스, 디스플레이, 적어도 하나의 명령어를 저장하는 메모리 및, 통신 인터페이스, 디스플레이 및 메모리와 연결되어 전자 장치를 제어하는 하나 이상의 프로세서를 포함하며, 하나 이상의 프로세서는, 적어도 하나의 명령어를 실행함으로써, 통신 인터페이스를 통해 외부 서버로부터 스트리밍되는 컨텐츠를 표시하도록 디스플레이를 제어하고, 외부 서버로부터 스트리밍되는 컨텐츠에 대응되는 지연 특성 정보가 수신되면, 지연 특성 정보에 기초하여 스트리밍되는 컨텐츠가 저장되는 스트림 버퍼의 임계 값을 식별하고, 스트림 버퍼의 임계 값 및 스트림 버퍼의 상태에 기초하여 컨텐츠의 디코딩 속도 또는 디스플레이의 출력 속도 중 적어도 하나를 제어할 수 있다.

Description

전자 장치, 서버 장치 및 그 제어 방법 { Electronic apparatus, server apparatus and control method thereof }
본 개시는 전자 장치 및 그 제어 방법에 관한 것으로, 더욱 상세하게는 스트리밍 컨텐츠를 수신하는 전자 장치, 컨텐츠를 스트리밍하는 서버 장치 및 그 제어 방법에 관한 것이다.
방송 및 OTT, 클라우드 게임, 미러링 서비스 등은 서버 역할을 수행하는 시스템에서 클라이언트 시스템으로 압축된 영상 스트림을 전달하여 사용자에게 디스플레이하는 형태의 서비스이다. 클라이언트에서는 사용자로부터 데이터와 요구사항들을 입력받아 이를 서버측에 전송할 수 있고, 서버에서는 전달받은 사용자 데이터에 맞추어 서비스를 제공해 줄 수 있다.
일 실시 예에 따른 전자 장치는, 통신 인터페이스, 디스플레이, 적어도 하나의 명령어를 저장하는 메모리 및, 상기 통신 인터페이스, 상기 디스플레이 및 상기 메모리와 연결되어 상기 전자 장치를 제어하는 하나 이상의 프로세서를 포함하며, 상기 하나 이상의 프로세서는, 상기 적어도 하나의 명령어를 실행함으로써, 상기 통신 인터페이스를 통해 외부 서버로부터 스트리밍되는 컨텐츠를 표시하도록 상기 디스플레이를 제어하고, 상기 외부 서버로부터 상기 스트리밍되는 컨텐츠에 대응되는 지연 특성 정보가 수신되면, 상기 지연 특성 정보에 기초하여 상기 스트리밍되는 컨텐츠가 저장되는 스트림 버퍼의 임계 값을 식별하고, 상기 스트림 버퍼의 임계 값 및 상기 스트림 버퍼의 상태에 기초하여 상기 컨텐츠의 디코딩 속도 또는 상기 디스플레이의 출력 속도 중 적어도 하나를 제어할 수 있다.
일 예에 따라 상기 하나 이상의 프로세서는, 상기 수신된 지연 특성 정보에 기초하여 상기 스트림 버퍼의 최소 임계 값 또는 최대 임계 값 중 적어도 하나를 식별하고, 상기 스트림 버퍼에 저장된 스트림이 상기 최소 임계 값 미만으로 식별되면, 출력 버퍼 상태 및 출력 모드에 기초하여 프레임 출력 속도, 프레임 보간 또는 프레임 반복 출력 중 적어도 하나를 제어할 수 있다. 또한, 상기 하나 이상의 프로세서는, 상기 스트림 버퍼에 저장된 스트림이 상기 최대 임계 값을 초과한 것으로 식별되면, 출력 버퍼 상태 및 출력 모드에 기초하여 프레임 출력 속도, 프레임 출력 스킵, 또는 프레임 보간 스킵 중 적어도 하나를 제어할 수 있다. 여기서, 상기 출력 모드는, VRR(Variable Refresh Rate) 모드, FRC(Frame Rate Control) 모드 및 Nomal 모드 중 적어도 하나를 포함할 수 있다. \
일 예에 따라 상기 하나 이상의 프로세서는, 상기 스트림 버퍼에 저장된 스트림이 상기 최소 임계 값 미만으로 식별되면, 상기 출력 버퍼의 남은 공간 사이즈를 식별하고, 상기 식별된 공간 사이즈에 기초하여 상기 출력 버퍼에 추가할 프레임의 개수 및 위치를 식별하고, 상기 출력 모드 및 상기 식별된 프레임의 개수 및 위치에 기초하여 프레임 출력 속도, 프레임 보간 또는 프레임 반복 출력 중 적어도 하나를 제어할 수 있다.
일 예에 따라 상기 하나 이상의 프로세서는, 상기 스트림 버퍼에 저장된 스트림이 상기 최대 임계 값을 초과한 것으로 식별되면, 상기 디스플레이의 최대 출력 속도, 디코더의 최대 디코딩 속도 및 상기 컨텐츠의 영상 주파수를 비교하고, 비교 결과에 기초하여 인코딩 제어 요청을 상기 외부 서버로 전송하거나, 상기 출력 모드 및 스킵할 프레임 위치 및 개수에 대한 정보에 기초하여 프레임 출력 속도, 프레임 출력 스킵 또는 프레임 보간 스킵 중 적어도 하나를 제어할 수 있다.
일 예에 따라 상기 하나 이상의 프로세서는, 상기 비교 결과 상기 디스플레이의 최대 출력 속도가 상기 컨텐츠의 영상 주파수보다 크고 상기 디코더의 최대 디코딩 속도가 상기 컨텐츠의 영상 주파수보다 큰 것으로 식별되면, 상기 출력 버퍼의 남은 공간 사이즈를 식별하고, 상기 출력 모드 및 상기 식별된 공간 사이즈에 기초하여 디코딩 속도, 상기 디스플레이의 출력 속도 및 상기 스킵할 프레임 위치 및 개수를 식별하고, 상기 디코딩 속도 또는 상기 디스플레이의 출력 속도 중 적어도 하나의 조정이 가능한지 여부에 따라 상기 프레임 출력 속도, 프레임 출력 스킵 또는 프레임 보간 스킵 중 적어도 하나를 제어할 수 있다.
일 예에 따라 상기 하나 이상의 프로세서는, 상기 디코딩 속도 또는 상기 디스플레이의 출력 속도 중 적어도 하나의 조정이 가능한 경우 상기 출력 모드에 기초하여 상기 프레임 출력 속도를 제어하거나, 프레임 보간 스킵을 제어하고, 상기 디코딩 속도 또는 상기 디스플레이의 출력 속도 중 적어도 하나의 조정이 불가능한 경우 상기 프레임 출력 스킵을 제어하기 위해 인코딩시 스킵할 프레임에 대한 정보를 포함하는 인코딩 제어 요청을 상기 외부 서버로 전송할 수 있다. 상기 하나 이상의 프로세서는, 상기 비교 결과 상기 디스플레이의 최대 출력 속도가 상기 컨텐츠의 영상 주파수 미만 및 상기 디코더의 최대 디코딩 속도가 상기 컨텐츠의 영상 주파수 미만 중 적어도 하나로 식별되면, 인코딩시 스킵할 프레임에 대한 정보를 포함하는 상기 인코딩 제어 요청을 상기 외부 서버로 전송할 수 있다.
일 예에 따라 상기 하나 이상의 프로세서는, 상기 인코딩 제어 요청을 상기 외부 서버로 전송한 후 상기 서버로부터 디코딩 스킵 수행 여부 및 스킵 적용된 프레임의 위치 정보를 포함하는 제어 응답이 수신되면, 상기 수신된 제어 응답에 포함된 정보에 기초하여 상기 스트리밍되는 컨텐츠에 대한 디코딩 동작을 제어할 수 있다.
일 실시 예에 따른 서버 장치는, 통신 인터페이스, 적어도 하나의 명령어를 저장하는 메모리 및, 상기 통신 인터페이스 및 상기 메모리와 연결되어 상기 전자 장치를 제어하는 하나 이상의 프로세서를 포함하며, 상기 하나 이상의 프로세서는,상기 적어도 하나의 명령어를 실행함으로써, 상기 통신 인터페이스를 통해 클라이언트 장치로 컨텐츠를 스트리밍하고, 상기 통신 인터페이스를 통해 상기 클라이언트 장치로 상기 스트리밍되는 컨텐츠와 관련된 지연 특성 정보를 전송하며, 상기 클라이언트 장치로부터 인코딩시 스킵할 프레임에 대한 정보를 포함하는 인코딩 제어 요청이 수신되면, 스트리밍 모드가 유니캐스트 모드인지 브로드캐스트 모드인지 식별할 수 있다. 또한, 상기 하나 이상의 프로세서는, 상기 스트리밍 모드에 따라 상기 인코딩 제어 요청에 포함된 정보 및 인코딩 모드에 기초하여 인코딩 동작을 제어하고, 상기 통신 인터페이스를 통해 상기 인코딩 제어 요청에 대한 제어 응답을 상기 클라이언트 장치로 전송할 수 있다.
일 예에 따라 상기 하나 이상의 프로세서는, 상기 인코딩 제어 요청의 빈도 또는 상기 인코딩 제어 요청에 포함된 인코딩시 스킵할 프레임 개수에 기초하여 상기 스트리밍 컨텐츠의 해상도 또는 비트 레이트 중 적어도 하나를 조정할 수 있다.
일 실시 예에 따른 전자 장치의 제어 방법은, 외부 서버로부터 스트리밍되는 컨텐츠를 표시하는 단계, 상기 외부 서버로부터 상기 스트리밍되는 컨텐츠에 대응되는 지연 특성 정보가 수신되면, 상기 지연 특성 정보에 기초하여 상기 스트리밍되는 컨텐츠가 저장되는 스트림 버퍼의 임계 값을 식별하는 단계 및, 상기 스트림 버퍼의 임계 값 및 상기 스트림 버퍼의 상태에 기초하여 상기 컨텐츠의 디코딩 속도 또는 디스플레이의 출력 속도 중 적어도 하나를 제어하는 단계를 포함할 수 있다.
일 실시 예에 따른 서버 장치의 제어 방법은, 클라이언트 장치로 컨텐츠를 스트리밍하는 단계, 상기 통신 인터페이스를 통해 상기 클라이언트 장치로 상기 스트리밍되는 컨텐츠와 관련된 지연 특성 정보를 전송하는 단계, 상기 클라이언트 장치로부터 인코딩시 스킵할 프레임에 대한 정보를 포함하는 인코딩 제어 요청이 수신되면, 스트리밍 모드가 유니캐스트 모드인지 브로드캐스트 모드인지 식별하는 단계, 상기 스트리밍 모드에 따라 상기 인코딩 제어 요청에 포함된 정보 및 인코딩 모드에 기초하여 인코딩 동작을 제어하는 단계 및, 상기 통신 인터페이스를 통해 상기 인코딩 제어 요청에 대한 제어 응답을 상기 클라이언트 장치로 전송하는 단계를 포함할 수 있다.
일 실시 예에 따른 전자 장치의 프로세서에 의해 실행되는 경우 상기 전자 장치가 동작을 수행하도록 하는 컴퓨터 명령을 저장하는 비일시적 컴퓨터 판독 가능 매체에 있어서, 상기 동작은, 외부 서버로부터 스트리밍되는 컨텐츠를 표시하는 단계, 상기 외부 서버로부터 상기 스트리밍되는 컨텐츠에 대응되는 지연 특성 정보가 수신되면, 상기 지연 특성 정보에 기초하여 상기 스트리밍되는 컨텐츠가 저장되는 스트림 버퍼의 임계 값을 식별하는 단계 및, 상기 스트림 버퍼의 임계 값 및 상기 스트림 버퍼의 상태에 기초하여 상기 컨텐츠의 디코딩 속도 또는 디스플레이의 출력 속도 중 적어도 하나를 제어하는 단계를 포함할 수 있다.
일 실시 예에 따른 서버 장치의 프로세서에 의해 실행되는 경우 상기 서버 장치가 동작을 수행하도록 하는 컴퓨터 명령을 저장하는 비일시적 컴퓨터 판독 가능 매체에 있어서, 상기 동작은, 클라이언트 장치로 컨텐츠를 스트리밍하는 단계, 상기 통신 인터페이스를 통해 상기 클라이언트 장치로 상기 스트리밍되는 컨텐츠와 관련된 지연 특성 정보를 전송하는 단계, 상기 클라이언트 장치로부터 인코딩시 스킵할 프레임에 대한 정보를 포함하는 인코딩 제어 요청이 수신되면, 스트리밍 모드가 유니캐스트 모드인지 브로드캐스트 모드인지 식별하는 단계, 상기 스트리밍 모드에 따라 상기 인코딩 제어 요청에 포함된 정보 및 인코딩 모드에 기초하여 인코딩 동작을 제어하는 단계 및, 상기 통신 인터페이스를 통해 상기 인코딩 제어 요청에 대한 제어 응답을 상기 클라이언트 장치로 전송하는 단계를 포함할 수 있다.
도 1은 본 개시의 일 실시 예에 따른 실시간 영상 스트리밍 시스템을 개략적으로 설명하기 위한 도면이다.
도 2a는 일 실시 예에 따른 전자 장치의 구성을 나타내는 블럭도이다.
도 2b는 일 실시 예에 따른 전자 장치의 구성을 구체적으로 나타내는 블럭도이다.
도 3은 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 도면이다.
도 4는 일 실시 예에 따른 전자 장치의 제어 방법을 자세히 설명하기 위한 도면이다.
도 5는 일 실시 예에 따른 전자 장치의 제어 방법을 자세히 설명하기 위한 도면이다.
도 6은 일 실시 예에 따른 전자 장치의 제어 방법을 자세히 설명하기 위한 도면이다.
도 7은 일 실시 예에 따른 서버 장치의 구성을 나타내는 도면이다.
도 8은 일 실시 예에 따른 서버 장치의 제어 방법을 설명하기 위한 도면이다.
도 9, 도 10a 내지 도 10d는 일 실시 예에 따른 서버 장치의 인코딩 동작을 설명하기 위한 도면들이다.
도 11은 일 실시 예에 따른 전자 장치의 디코딩 동작을 설명하기 위한 도면이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 개시에 대해 구체적으로 설명하기로 한다.
본 개시의 실시 예에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 개시의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 명세서에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 개시에서, "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 명세서에서 사용된 "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어(operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 어떤 구성요소가 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다.
본 개시에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)," "~하는 능력을 가지는(having the capacity to)," "~하도록 설계된(designed to)," "~하도록 변경된(adapted to)," "~하도록 만들어진(made to)," 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다.
어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구성되다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
실시 예에 있어서 "모듈" 혹은 "부"는 적어도 하나의 기능이나 동작을 수행하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 "모듈" 혹은 복수의 "부"는 특정한 하드웨어로 구현될 필요가 있는 "모듈" 혹은 "부"를 제외하고는 적어도 하나의 모듈로 일체화되어 적어도 하나의 프로세서(미도시)로 구현될 수 있다.
한편, 도면에서의 다양한 요소와 영역은 개략적으로 그려진 것이다. 따라서, 본 발명의 기술적 사상은 첨부한 도면에 그려진 상대적인 크기나 간격에 의해 제한되지 않는다.
이하 첨부된 도면들을 참조하여 본 개시의 일 실시 예를 보다 상세하게 설명한다.
도 1은 본 개시의 일 실시 예에 따른 실시간 영상 스트리밍 시스템을 개략적으로 설명하기 위한 도면이다.
도 1에 도시된 실시 예에 따르면, 실시간 영상 스트리밍 시스템은 클라이언트 장치(10) 및 서버 장치(20)를 포함할 수 있다.
4K, 8K 등의 고화질/고해상도 영상을 네트워크를 통해 스트리밍하기 위해서는, 네트워크 요구 대역폭을 줄일 수 있는 영상 부호화 기술과 Up/Down Scaling 기술이 중요하다. 영상 부호화 기술은 H.264/265, VP8/9, AV1 과 같은 표준 코덱이 널리 사용되고 있으며, OTT 업체의 경우 4K 영상을 H.265 기준 약 15 Mbps 까지 압축하여 서비스하고 있다. 사용자마다 서로 다른 네트워크 환경에 맞게 서비스를 하려면, 여러 조합의 영상 해상도와 전송률로 압축해야 하는데 이 때 사용되는 기술이 Up/Down Scaling 기술이다. 예를 들어 8K 영상을 약 15 Mbps 수준으로 전송하고자 할 때, 서버 장치(20)는 영상을 다운스케일링하고 다운스케일링된 영상을 인코딩하여 클라이언트 장치(10)로 전송할 수 있다. 이 경우 서버 장치(20)는 영상을 다운스케일링하기 위한 다운스케일러(21), 영상을 인코딩하기 위한 인코더(22) 및 인코딩된 영상을 클라이언트 장치(10)로 전송하기 위한 송/수신부(23)를 포함할 수 있다.
일 예에 따른 실시간 영상 스트리밍 서비스의 경우 서버 장치(20)는 ABR(Average Bit Rate) 선택기(24)에 의해 실시간으로 선택된 해상도 및/또는 압축 비트율에 기초하여 영상을 실시간으로 다운스케일링 및 인코딩할 수 있다. 예를 들어, 실시간 영상 스트리밍 서비스는 라이브 방송 서비스, 클라우드 게임 서비스, 미러링 서비스, 화상 통신 서비스 등을 포함할 수 있다. 여기서, ABR(Average Bit Rate)은 목표 비트 레이트를 설정하고 목표 비트 레이트에 맞춰 비트 레이트를 변경하며 인코딩하는 방식을 의미한다. ABR(Average Bit Rate) 방식은 VBR(Variable Bit Rate) 방식처럼 설정 수치에 맞춰 비트 레이트가 변경하며 CBR(Constant Bit Rate) 방식처럼 완성될 동영상의 용량을 예상할 수 있다는 점에서 CBR과 VBR의 특징을 섞어 놓은 압축 방법일 수 있다.
클라이언트 장치(10)는 서버 장치(20)로부터 수신된 영상을 디코딩하고 디코딩된 영상을 디스플레이할 수 있다. 또한, 클라이언트 장치(10)는 필요한 경우 디코딩된 영상을 업스케일링하여 디스플레이할 수 있다. 이 경우, 클라이언트 장치(10)는 서버 장치(20)로부터 영상을 수신하는 송/수신부(11), 수신된 영상을 디코딩하기 위한 디코더(12) 및 디코딩된 영상을 디스플레이하기 위한 디스플레이(13)를 포함할 수 있다.
한편, 스트리밍 서비스가 제공되는 네트워크망은 일시적인 전송 장애나 대역폭 감소와 같은 열화 상황이 발생할 수 있다. 이러한 네트워크 상황에 따라 서버 장치(20)에서는 ABR 기능을 통해 해상도 및 압축 비트율 조정을 통해 서비스 끊김과 지연을 최소화할 수 있다.
OTT 영화 시청과 같은 비 실시간 서비스에서는 네트워크 열화나 클라이언트 장치(10) 및/또는 서버 장치(20)의 일시 장애 등의 상황에서 전송 지연 발생 시 일시적 멈춤이 발생할 수 있지만 멈춤 발생된 이후의 컨텐츠를 이어서 스트리밍하여 문제없이 서비스가 이루어질 수 있다.
반면, 실시간 스트리밍 서비스에서 네트워크 열화 상황에 비 실시간 서비스와 같은 방식으로 스트리밍이 이루어지면 전송 지연 발생시 마다 지연이 누적되어 실시간 서비스가 제대로 이루어질 수 없게 된다. 따라서 전송 지연 발생시 지연된 만큼의 컨텐츠를 버리고 최신 컨텐츠를 서비스하여 지연이 누적되지 않도록 해야 한다. 예를 들어, 압축 인코딩은 프레임 간 의존성이 있는 GOP(Group of Pictures) 단위로 묶음 처리하므로, 지연 발생시 새로운 GOP가 시작되는 시점에서 예전 컨텐츠를 버리고 최신 컨텐츠를 디코딩 및 디스플레이할 수 있다. 따라서 지연은 최소 하나의 GOP가 끝날 때까지 누적되어 큰 지연이 발생할 가능성이 있다. GOP를 작게 설정하면 지연 누적을 줄일 수 있으나 GOP의 시작인 인트라 프레임이 자주 생성되어 화질 열화가 발생할 수 있고, GOP를 크게 설정하면 지연누적된 컨텐츠를 버리고 새로운 GOP를 디스플레이하는 상황에서 컨텐츠가 단절되어 서비스 품질이 훼손될 수 있다. 여기서, GOP는 몇 프레임의 전후 화면 데이터를 한 묶음으로 하는 영상 데이터 단위를 의미할 수 있다.
이에 따라 이하에서는 실시간 스트리밍과 같은 저지연 스트리밍 서비스에서 네트워크 상태 및 컨텐츠 특성에 따라 퀄리티를 유지하면서 전송 지연을 최소화하고 지연 발생 시 최대한 빠른 시간 내에 최소 지연 상황으로 복구하기 위한 다양한 실시 예에 대해 설명하도록 한다.
도 2a는 일 실시 예에 따른 전자 장치의 구성을 나타내는 블럭도이다.
도 2a에 따르면 전자 장치(100)은 통신 인터페이스(110), 디스플레이(120), 메모리(130) 및 하나 이상의 프로세서(140)를 포함한다.
통신 인터페이스(110)는 전자 장치(100)의 구현 예에 따라 다양한 통신 방식을 지원할 수 있다. 예를 들어 통신 인터페이스(110)는 블루투스(Bluetooth), AP 기반의 Wi-Fi(와이파이, Wireless LAN 네트워크), 지그비(Zigbee), 유/무선 LAN(Local Area Network), WAN(Wide Area Network), 이더넷(Ethernet), IEEE 1394, HDMI(High-Definition Multimedia Interface), USB(Universal Serial Bus), MHL(Mobile High-Definition Link), AES/EBU(Audio Engineering Society/ European Broadcasting Union), 옵티컬(Optical), 코액셜(Coaxial) 등과 같은 통신 방식을 통해 외부 장치, 외부 저장 매체(예를 들어, USB 메모리), 외부 서버(예를 들어 클라우드 서버) 등과 통신을 수행할 수 있다.
디스플레이(120)는 자발광 소자를 포함하는 디스플레이 또는, 비자발광 소자 및 백라이트를 포함하는 디스플레이로 구현될 수 있다. 예를 들어, LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diodes) 디스플레이, LED(Light Emitting Diodes), 마이크로 LED(micro LED), Mini LED, PDP(Plasma Display Panel), QD(Quantum dot) 디스플레이, QLED(Quantum dot light-emitting diodes) 등과 같은 다양한 형태의 디스플레이로 구현될 수 있다. 디스플레이(120) 내에는 a-si TFT, LTPS(low temperature poly silicon) TFT, OTFT(organic TFT) 등과 같은 형태로 구현될 수 있는 구동 회로, 백라이트 유닛 등도 함께 포함될 수 있다. 일 예에 따라 디스플레이(120)의 전면에는 터치 필름, 터치 시트, 터치 패드 등의 형태를 가지고 터치(touch) 동작을 감지하는 터치 센서가 배치되어 다양한 유형의 터치 입력을 감지할 수 있도록 구현될 수 있다. 예를 들어, 디스플레이(120)는 사용자 손에 의한 터치 입력, 스타일러스 펜과 같은 입력 장치에 의한 터치 입력, 특정 정전 물질에 의한 터치 입력 등 다양한 유형의 터치 입력을 감지할 수 있다. 여기서, 입력 장치는 전자 펜, 스타일러스 펜, S-펜 등 다양한 용어로 지칭될 수 있는 펜 형의 입력 장치으로 구현될 수 있다. 일 예에 따라 디스플레이(120)는 평면(flat) 디스플레이, 커브드(curved) 디스플레이, 폴딩(folding) 또는/및 롤링(rolling) 가능한 플렉서블 디스플레이 등으로 구현될 수 있다.
메모리(130)는 다양한 실시 예를 위해 필요한 데이터를 저장할 수 있다. 메모리(130)는 데이터 저장 용도에 따라 전자 장치(100')에 임베디드된 메모리 형태로 구현되거나, 전자 장치(100)에 탈부착이 가능한 메모리 형태로 구현될 수도 있다. 예를 들어,전자 장치(100)의 구동을 위한 데이터의 경우 전자 장치(100')에 임베디드된 메모리에 저장되고, 전자 장치(100)의 확장 기능을 위한 데이터의 경우 전자 장치(100)에 탈부착이 가능한 메모리에 저장될 수 있다. 한편, 전자 장치(100)에 임베디드된 메모리의 경우 휘발성 메모리(예: DRAM(dynamic RAM), SRAM(static RAM), 또는 SDRAM(synchronous dynamic RAM) 등), 비휘발성 메모리(non-volatile Memory)(예: OTPROM(one time programmable ROM), PROM(programmable ROM), EPROM(erasable and programmable ROM), EEPROM(electrically erasable and programmable ROM), mask ROM, flash ROM, 플래시 메모리(예: NAND flash 또는 NOR flash 등), 하드 드라이브, 또는 솔리드 스테이트 드라이브(solid state drive(SSD)) 중 적어도 하나로 구현될 수 있다. 또한, 전자 장치(100')에 탈부착이 가능한 메모리의 경우 메모리 카드(예를 들어, CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital), MMC(multi-media card) 등), USB 포트에 연결가능한 외부 메모리(예를 들어, USB 메모리) 등과 같은 형태로 구현될 수 있다.
하나 이상의 프로세서(140)는 전자 장치(100)의 동작을 전반적으로 제어한다. 구체적으로, 하나 이상의 프로세서(140)는 전자 장치(100)의 각 구성과 연결되어 전자 장치(100)의 동작을 전반적으로 제어할 수 있다. 예를 들어, 하나 이상의 프로세서(140)는 디스플레이(120) 및 메모리(130)와 전기적으로 연결되어 전자 장치(100)의 전반적인 동작을 제어할 수 있다. 하나 이상의 프로세서(140)는 하나 또는 복수의 프로세서로 구성될 수 있다.
하나 이상의 프로세서(140)는 메모리(130)에 저장된 적어도 하나의 인스트럭션(instruction)을 실행함으로써, 다양한 실시 예에 따른 전자 장치(100)의 동작을 수행할 수 있다.
하나 이상의 프로세서(140)는 CPU (Central Processing Unit), GPU (Graphics Processing Unit), APU (Accelerated Processing Unit), MIC (Many Integrated Core), DSP (Digital Signal Processor), NPU (Neural Processing Unit), 하드웨어 가속기 또는 머신 러닝 가속기 중 하나 이상을 포함할 수 있다. 하나 이상의 프로세서(140)는 전자 장치의 다른 구성요소 중 하나 또는 임의의 조합을 제어할 수 있으며, 통신에 관한 동작 또는 데이터 처리를 수행할 수 있다. 하나 이상의 프로세서(140)는 메모리에 저장된 하나 이상의 프로그램 또는 명령어(instruction)을 실행할 수 있다. 예를 들어, 하나 이상의 프로세서는 메모리에 저장된 하나 이상의 명령어를 실행함으로써, 본 개시의 일 실시 예에 따른 방법을 수행할 수 있다.
본 개시의 일 실시 예에 따른 방법이 복수의 동작을 포함하는 경우, 복수의 동작은 하나의 프로세서에 의해 수행될 수도 있고, 복수의 프로세서에 의해 수행될 수도 있다. 예를 들어, 일 실시 예에 따른 방법에 의해 제 1 동작, 제 2 동작, 제 3 동작이 수행될 때, 제 1 동작, 제 2 동작, 및 제 3 동작 모두 제 1 프로세서에 의해 수행될 수도 있고, 제 1 동작 및 제 2 동작은 제 1 프로세서(예를 들어, 범용 프로세서)에 의해 수행되고 제 3 동작은 제 2 프로세서(예를 들어, 인공지능 전용 프로세서)에 의해 수행될 수도 있다.
하나 이상의 프로세서(140)는 하나의 코어를 포함하는 단일 코어 프로세서(single core processor)로 구현될 수도 있고, 복수의 코어(예를 들어, 동종 멀티 코어 또는 이종 멀티 코어)를 포함하는 하나 이상의 멀티 코어 프로세서(multicore processor)로 구현될 수도 있다. 하나 이상의 프로세서(140)가 멀티 코어 프로세서로 구현되는 경우, 멀티 코어 프로세서에 포함된 복수의 코어 각각은 캐시 메모리, 온 칩(On-chip) 메모리와 같은 프로세서 내부 메모리를 포함할 수 있으며, 복수의 코어에 의해 공유되는 공통 캐시가 멀티 코어 프로세서에 포함될 수 있다. 또한, 멀티 코어 프로세서에 포함된 복수의 코어 각각(또는 복수의 코어 중 일부)은 독립적으로 본 개시의 일 실시 예에 따른 방법을 구현하기 위한 프로그램 명령을 판독하여 수행할 수도 있고, 복수의 코어 전체(또는 일부)가 연계되어 본 개시의 일 실시 예에 따른 방법을 구현하기 위한 프로그램 명령을 판독하여 수행할 수도 있다.
본 개시의 일 실시 예에 따른 방법이 복수의 동작을 포함하는 경우, 복수의 동작은 멀티 코어 프로세서에 포함된 복수의 코어 중 하나의 코어에 의해 수행될 수도 있고, 복수의 코어에 의해 수행될 수도 있다. 예를 들어, 일 실시 예에 따른 방법에 의해 제 1 동작, 제 2 동작, 및 제 3 동작이 수행될 때, 제 1 동작, 제2 동작, 및 제3 동작 모두 멀티 코어 프로세서에 포함된 제 1 코어에 의해 수행될 수도 있고, 제 1 동작 및 제 2 동작은 멀티 코어 프로세서에 포함된 제 1 코어에 의해 수행되고 제 3 동작은 멀티 코어 프로세서에 포함된 제 2 코어에 의해 수행될 수도 있다.
본 개시의 실시 예들에서, 프로세서는 하나 이상의 프로세서 및 기타 전자 부품들이 집적된 시스템 온 칩(SoC), 단일 코어 프로세서, 멀티 코어 프로세서, 또는 단일 코어 프로세서 또는 멀티 코어 프로세서에 포함된 코어를 의미할 수 있으며, 여기서 코어는 CPU, GPU, APU, MIC, DSP, NPU, 하드웨어 가속기 또는 기계 학습 가속기 등으로 구현될 수 있으나, 본 개시의 실시 예들이 이에 한정되는 것은 아니다. 이하에서는 설명의 편의를 위하여 하나 이상의 프로세서(140)를 프로세서(140)로 명명하도록 한다.
도 2b는 일 실시 예에 따른 전자 장치의 구성을 구체적으로 나타내는 블럭도이다.
도 2b에 따르면, 전자 장치(100')은 통신 인터페이스(110), 디스플레이(120), 메모리(130), 하나 이상의 프로세서(140), 사용자 인터페이스(150), 스피커(160) 및 센서(170)를 포함할 수 있다. 도 2b에 도시된 구성 중 도 2a에 도시된 구성과 중복되는 구성에 대해서는 자세한 설명을 생략하도록 한다.
사용자 인터페이스(150)는 버튼, 터치 패드, 마우스 및 키보드와 같은 장치로 구현되거나, 상술한 디스플레이 기능 및 조작 입력 기능도 함께 수행 가능한 터치 스크린 등으로 구현될 수 있다.
스피커(160)는 각종 오디오 데이터뿐만 아니라 각종 알림 음이나 음성 메시지 등을 출력하는 구성일 수 있다. 프로세서(140)는 본 개시의 다양한 실시 예에 따른 UI 화면에 대응되는 정보 또는 각종 알림을 오디오 형태로 출력하도록 스피커를 제어할 수 있다.
카메라(170)는 기 설정된 이벤트에 따라 턴 온 되어 촬영을 수행할 수 있다. 카메라(170)는 촬상된 영상을 전기적인 신호로 변환하고 변환된 신호에 기초하여 영상 데이터를 생성할 수 있다. 예를 들어, 피사체는 반도체 광학소자(CCD; Charge Coupled Device)를 통해 전기적인 영상 신호로 변환되고, 이와 같이 변환된 영상 신호는 증폭 및 디지털 신호로 변환된 후 신호 처리될 수 있다.
그 밖에 전자 장치(100')는 구현 예에 따라 마이크(미도시), 센서(미도시), 튜너(미도시) 및 복조부(미도시) 등을 포함할 수 있다.
마이크(미도시)는 사용자 음성이나 기타 소리를 입력받아 오디오 데이터로 변환하기 위한 구성이다. 다만, 다른 실시 예에 따라 전자 장치(100')는 외부 장치를 통해 입력된 사용자 음성을 통신 인터페이스(110)를 통해 수신할 수 있다.
센서(미도시)는 터치 센서, 근접 센서, 가속도 센서, 지자기 센서, 자이로 센서, 압력 센서, 위치 센서, 조도 센서 등과 같은 다양한 유형의 센서를 포함할 수 있다.
튜너(미도시)는 안테나를 통해 수신되는 RF(Radio Frequency) 방송 신호 중 사용자에 의해 선택된 채널 또는 기 저장된 모든 채널을 튜닝하여 RF 방송 신호를 수신할 수 있다.
복조부(미도시)는 튜너에서 변환된 디지털 IF 신호(DIF)를 수신하여 복조하고, 채널 복호화 등을 수행할 수도 있다.
일 실시 예에 따르면, 프로세서(140)는 컨텐츠의 지연 특성 정보에 기초하여 스트리밍되는 컨텐츠 처리를 위한 제어 파라미터 값을 결정하고 이에 따라 컨텐츠를 처리할 수 있다.
도 2c는 일 실시 예에 따른 전자 장치의 컨텐츠 처리 방법을 설명하기 위한 도면이다.
도 2c에 도시된 실시 예에 따르면 전자 장치(100)로 실시간 스트리밍되는 컨텐츠는 스트림 버퍼(또는 수신 버퍼)(41)에 저장될 수 있다. 여기서, 스트리밍되는 컨텐츠는 외부 서버(도 1, 20)에서 인코딩된 컨텐츠일 수 있다. 이에 따라 스트림 버퍼(41)에 저장된 컨텐츠는 디코더(42)로 제공되어 디코딩되고, 디코딩된 컨텐츠는 출력 버퍼(43)에 버퍼링되면서 디스플레이(120)를 통해 출력될 수 있다. 여기서, 디코더(42)는 일종의 DSP 형태로 구현될 수 있다.
도 3은 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 도면이다.
도 3에 도시된 실시 예에 따르면, 프로세서(140)는 통신 인터페이스(110)를 통해 외부 서버(도 1, 20)로부터 스트리밍되는 컨텐츠를 표시하도록 디스플레이(120)를 제어할 수 있다(S310).
또한, 프로세서(140)는 스트리밍되는 컨텐츠에 대응되는 지연 특성 정보가 수신되면(S320:Y), 수신된 지연 특성 정보에 기초하여 스트리밍되는 컨텐츠가 저장되는 스트림 버퍼의 임계 값을 식별할 수 있다(S330).
지연 특성 정보는 컨텐츠(또는 소스 컨텐츠)의 특성에 기초하여 식별된 정보일 수 있다. 예를 들어, 컨텐츠가 어떤 지연 특성을 요구하는 종류인지 분류할 때, 게임기/셋탑/BDP 등 입력 소스에 따라 분류하거나 컨텐츠 DB에 저장된 정보를 이용하거나 영상을 직접 분석하는 등의 방법이 이용될 수 있다. 예를 들어, 하나의 게임 컨텐츠 내에서도 사용자가 직접 플레이하여 저지연을 요구하는 부분과 감상 위주의 저지연을 요구하지 않는 부분이 있을 수 있으므로 챕터나 씬(장면) 별로 분류류가 변경될 수 있다.
일 예에 따라 서버 장치(20)는 컨텐츠(또는 소스 컨텐츠)의 특성에 기초하여 지연 특성 정보를 식별할 수 있다. 예를 들어, 지연 특성 정보는 저지연 요구 여부 만을 나타내는 정보이거나, 저지연 요구 정도가 수치화된 정보이거나, 저지연 요구 정도를 등급화한 레벨 정보일 수 있다. 즉, 지연 특성 정보를 컨텐츠의 저지연 요구를 나타낼 수 있는 다양한 형태의 정보일 수 있다.
프로세서(140)는 컨텐츠의 지연 특성 정보에 기초하여 스트림 버퍼의 임계 값을 식별할 수 있다. 예를 들어, 프로세서(140)는 컨텐츠의 지연 특성 정보가 큰 지연을 허용하는 것으로 식별되면, 스트림 버퍼의 최대 임계 값(또는 허용 최대 값)을 높여 큰 지연을 허용하되 안정성을 확보할 수 있다. 이 경우, 서버(20)에서는 인코딩의 지연을 높이는 대신 화질을 높이는 코딩 옵션을 설정할 수 있다.
이 경우, 프로세서(140)는 S330 단계에서 식별된 스트림 버퍼의 임계 값 및 스트림 버퍼의 상태에 기초하여 컨텐츠의 디코딩 속도 또는 디스플레이(120)의 출력 속도 중 적어도 하나를 제어할 수 있다.
도 4는 일 실시 예에 따른 전자 장치의 제어 방법을 자세히 설명하기 위한 도면이다.
도 4에 도시된 실시 예에 따르면, 프로세서(140)는 외부 서버(20)로부터 컨텐츠의 지연 특성 정보가 수신되면(S410), 수신된 지연 특성 정보에 기초하여 스트림 버퍼의 최소 임계 값(또는 허용 최소 값) 및/또는 최대 임계 값(또는 허용 최대 값)을 식별할 수 있다(S420). 예를 들어, 프로세서(140)는 컨텐츠의 지연 특성 정보가 큰 지연을 허용하는 것으로 식별되면, 스트림 버퍼의 최대 임계 값을 증가시켜 큰 지연을 허용하되 안정성을 확보할 수 있다. 이 경우, 서버(20)에서는 인코딩의 지연을 높이는 대신 화질을 높이는 코딩 옵션을 설정할 수 있다.
일 예에 따라 프로세서(140)는 컨텐츠의 지연 특성 정보 뿐 아니라 네트워크 상태를 고려하여 스트림 버퍼의 최소 임계 값 및/또는 최대 임계 값을 식별할 수 있다. 예를 들어 네트워크 상태 변화가 심한 경우에는 스트림 버퍼의 최소 임계 값 및 최대 임계 값이 모두 상대적으로 크게 설정될 수 있다. 또한, 저 지연 특성 가지는 컨텐츠의 경우(예를 들어, 사용자와의 상호 응답 속도가 매우 중요한 게임 컨텐츠), 최소 임계 값 및 최대 임계 값이 모두 상대적으로 작게 설정될 수 있다. 또한, 프로세서(140)는 ABR(Average Bit Rate)에 의해 실시간으로 선택된 해상도 및/또는 압축 비트율에 기초하여 영상을 실시간으로 다운스케일링 및 인코딩할 수 있다.
여기서, 네트워크 상태 정보는, 네트워크의 가용 Bandwidth, 패킷 손실률, 패킷의 Round-Trip Time, 패킷의 Delay-Gradient, RSSI(Received signal strength indicator) 정보, 통신 채널 정보, 링크 스피드 정보, 채널 간섭 정보 또는 재시도 레이트 정보 중 적어도 하나를 포함할 수 있다. 즉, 네트워크 상태 정보는 네트워크의 혼잡, 거리, 전송 속도에 따라 영향을 받는 다양한 네트워크 관련 정보가 될 수 있다. 패킷의 Round-Trip Time(또는 Round trip delay)은 네트워크에서 수신단까지 패킷이 왕복하는데 걸리는 시간을 의미할 수 있다. 패킷의 Delay-Gradient는 송신단에서 전송되는 패킷들의 전송 시간 간격 및 수신단에서 수신되는 패킷들의 수신 시간 간격 간 차이가 될 수 있다. 통신 채널 정보는 채널 및 주파수 중 적어도 하나에 대한 정보를 포함할 수 있다. 링크 스피드 정보는, 송신단에서 수신단으로 전송되는 패킷들의 레이트에 대한 정보가 될 수 있다. 채널 간섭 정보는, Channel active time, Channel busy time 및 Channel transmit time와 같은 다양한 채널 RF 파라미터를 이용하여 측정된 각 채널에 대한 간섭 팩터에 기초하여 획득될 수 있다. 재시도 레이트 정보는, 초 단위로 재시도되는 전송 패킷의 퍼센티지를 나타낼 수 있다.
일 실시 예에 따라 프로세서(140)는 출력 버퍼 상태 및 출력 모드에 기초하여 디코더의 디코딩 속도 및/또는 디스플레이(120)의 출력 속도 및/또는 출력 시퀀스를 산출하고, 이에 기초하여 디코더 및/또는 디스플레이(120)를 제어할 수 있다.
일 예에 따라 프로세서(140)는 스트림 버퍼에 저장된 스트림이 최소 임계 값 미만으로 식별되면(S430:Y), 출력 버퍼 상태 및 출력 모드에 기초하여 프레임 출력 속도, 프레임 보간 또는 프레임 반복 출력 중 적어도 하나를 제어할 수 있다(S440). 여기서, 출력 모드는 VRR(Variable Refresh Rate) 모드, FRC(Frame Rate Control) 모드 및 Nomal 모드 중 적어도 하나를 포함할 수 있다.
또한, 프로세서(140)는 스트림 버퍼에 저장된 스트림이 최대 임계 값을 초과한 것으로 식별되면(S450:Y), 출력 버퍼 상태 및 출력 모드에 기초하여 프레임 출력 속도, 프레임 출력 스킵, 또는 프레임 보간 스킵 중 적어도 하나를 제어할 수 있다(S460).
도 5는 일 실시 예에 따른 전자 장치의 제어 방법을 자세히 설명하기 위한 도면이다.
도 5에 도시된 실시 예에 따르면, 프로세서(140)는 외부 서버(20)로부터 컨텐츠의 지연 특성 정보가 수신되면(S510), 수신된 지연 특성 정보에 기초하여 스트림 버퍼의 최소 임계 값 및/또는 최대 임계 값을 식별할 수 있다(S520).
일 예에 따라 프로세서(140)는 스트림 버퍼에 저장된 스트림이 최소 임계 값 미만으로 식별되면(S530:Y), 출력 버퍼의 상태 즉, 저장 공간 사이즈 및/또는 남은 공간 사이즈를 식별할 수 있다(S540).
프로세서(140)는 출력 버퍼의 남은 공간 사이즈에 기초하여 출력 버퍼에 추가할 프레임의 개수 및 위치를 식별할 수 있다(S550). 여기서, 프레임의 위치란
이 후, 프로세서(140)는 디스플레이(110)의 출력 모드 및 S550 단계에서 식별된 프레임의 개수 및 위치에 기초하여 프레임 출력 속도, 프레임 보간 또는 프레임 반복 출력 중 적어도 하나를 제어할 수 있다(S560). 여기서, 출력 모드는 VRR(Variable Refresh Rate) 모드, FRC(Frame Rate Control) 모드 및 Nomal 모드 중 적어도 하나를 포함할 수 있다.
또한, 프로세서(140)는 스트림 버퍼에 저장된 스트림이 최대 임계 값을 초과한 것으로 식별되면(S570:Y), 디스플레이의 최대 출력 속도, 디코더의 최대 디코딩 속도 및 컨텐츠의 영상 주파수를 비교할 수 있다(S580). 구체적으로, 프로세서(140)는 디스플레이의 최대 출력 속도를 컨텐츠의 영상 주파수와 비교하고, 디코더의 최대 디코딩 속도를 컨텐츠의 영상 주파수와 비교할 수 있다.
이 후, 프로세서(140)는 S580 단계의 비교 결과에 기초하여 인코딩 제어 요청을 서버(20)로 전송하거나, 출력 모드 및 스킵할 프레임 위치 및 개수에 대한 정보에 기초하여 프레임 출력 속도, 프레임 출력 스킵 또는 프레임 보간 스킵 중 적어도 하나를 제어할 수 있다(S590).
일 예에 따라 프로세서(140)는 S580 단계의 비교 결과 디스플레이(120)의 최대 출력 속도가 컨텐츠의 영상 주파수보다 크고 디코더의 최대 디코딩 속도가 컨텐츠의 영상 주파수보다 큰 것으로 식별되면, 출력 버퍼의 남은 공간 사이즈를 식별할 수 있다. 이어서, 프로세서(140)는 출력 모드 및 출력 버퍼의 남은 공간 사이즈에 기초하여 디코딩 속도, 디스플레이(110)의 출력 속도 및 스킵할 프레임 위치 및 개수를 식별할 수 있다. 이 후, 프로세서(140)는 디코딩 속도 또는 디스플레이(110)의 출력 속도 중 적어도 하나의 조정이 가능한지 여부에 따라 프레임 출력 속도, 프레임 출력 스킵 또는 프레임 보간 스킵 중 적어도 하나를 제어할 수 있다.
일 예에 따라 프로세서(140)는 디코딩 속도 또는 디스플레이(120)의 출력 속도 중 적어도 하나의 조정이 가능한 경우 출력 모드에 기초하여 프레임 출력 속도를 제어하거나, 프레임 보간 스킵을 제어할 수 있다. 또는 프로세서(140)는 디코딩 속도 또는 디스플레이(110)의 출력 속도 중 적어도 하나의 조정이 불가능한 경우 프레임 출력 스킵을 제어하기 위해 인코딩시 스킵할 프레임에 대한 정보를 포함하는 인코딩 제어 요청을 서버(20)로 전송할 수 있다.
일 실시 예에 따라 프로세서(140)는 S580 단계의 비교 결과 디스플레이(120)의 최대 출력 속도가 컨텐츠의 영상 주파수 미만 및 디코더의 최대 디코딩 속도가 컨텐츠의 영상 주파수 미만 중 적어도 하나로 식별되면, 인코딩시 스킵할 프레임에 대한 정보를 포함하는 인코딩 제어 요청을 서버(20)로 전송할 수 있다.
한편, 프로세서(140)는 인코딩 제어 요청을 서버(20)로 전송한 후 서버(20)로부터 디코딩 스킵 수행 여부 및 스킵 적용된 프레임의 위치 정보를 포함하는 제어 응답이 수신되면, 수신된 제어 응답에 포함된 정보에 기초하여 스트리밍되는 컨텐츠에 대한 디코딩 동작을 제어할 수 있다.
도 6은 일 실시 예에 따른 전자 장치의 제어 방법을 자세히 설명하기 위한 도면이다.
도 6에 도시된 실시 예에 따르면, 프로세서(140)는 외부 서버(20)로부터 컨텐츠의 지연 특성 정보가 수신되면(S601), 수신된 지연 특성 정보에 기초하여 요구 지연에 최적화된 디코딩 옵션 및/또는 제어 파라미터를 설정할 수 있다(S602). 예를 들어, 프로세서(140)는 지연 특성 정보에 기초하여 스트림 버퍼의 최소 임계 값 및/또는 최대 임계 값을 식별할 수 있다.
프로세서(140)는 스트림 버퍼의 상태를 식별할 수 있다(S603). 여기서, 스트림 버퍼의 상태는 스트림 버퍼에 저장된 스트림 사이즈를 의미할 수 있다.
프로세서(140)는 스트림 버퍼에 저장된 스트림 사이즈가 최소 임계 값 미만으로 식별되면, 출력 버퍼 내 기 저장된 공간 사이즈 및/또는 남은 공간 사이즈를 식별할 수 있다(S604).
이어서, 프로세서(140)는 출력 버퍼에 추가할 즉, 출력 버퍼에 채워 넣을 프레임 개수 및 위치를 식별할 수 있다(S605).
프로세서(140)는 S605 단계에서 식별된 프레임의 개수 및 위치에 기초하여 디코더의 속도를 제어할 수 있다(S606). 여기서, 속도 제어는 디코더 Pause 제어를 포함할 수 있다.
또한, 프로세서(140)는 디스플레이(120)의 출력 모드를 식별할 수 있다(S607).
프로세서(140)는 디스플레이(120)의 출력 모드가 VRR 모드인 것으로 식별되면, 디코더의 디코딩 속도 및/또는 디스플레이(120)의 출력 속도를 필요한 만큼 낮출 수 있다(S608). 이에 따라 전송 부족(또는 전송 지연)으로 인한 화면 멈춤을 방지할 수 있게 된다.
프로세서(140)는 디스플레이(120)의 출력 모드가 FRC 모드인 것으로 식별되면, 프레임 보간 처리를 수행할 수 있다(S609).
중간중간 보간프레임을 추가로 생성하도록 제어하여 속도를 늦출 수 있는데 VRR만큼 세밀한 속도조정이 불가하므로 일부 화면멈춤 또는 프레임 skip이 발생할 수 있다.
프로세서(140)는 디스플레이(120)의 출력 모드가 일반 모드 즉, VRR 및 FRC를 지원하지 않는 것으로 식별되면, 프레임 반복 출력하도록 제어할 수 있다(S610). 즉, 프로세서(140)는 프레임 반복 출력을 통해 디스플레이 속도를 늦출 수 있다.
한편, 프로세서(140)는 스트림 버퍼에 저장된 스트림 사이즈가 최대 임계 값을 초과하는 것으로 식별되면, 디스플레이(120)의 최대 출력 속도가 컨텐츠의 영상 주파수보다 크고 디코더의 최대 디코딩 속도가 상기 컨텐츠의 영상 주파수보다 큰 지 식별할 수 있다(S611). 여기서, 스트림 버퍼에 저장된 스트림 사이즈가 최대 임계 값을 초과하는 경우는 전송 지연이 발생된 후 밀려있던 스트림이 빠르게 몰려 들어와서 버퍼에 누적된 경우일 수 있다.
프로세서(140)는 디스플레이의 최대 출력 속도가 컨텐츠의 영상 주파수보다 크고 디코더의 최대 디코딩 속도가 컨텐츠의 영상 주파수보다 큰 것으로 식별되면(S611:Y), 출력 모드 및 출력 버퍼의 기 저장된 공간 사이즈 및/또는 남은 공간 사이즈를 식별할 수 있다(S612).
프로세서(140)는 S612 단계에서 식별된 디스플레이(120)의 출력 모드 및 출력 버퍼의 기 저장된 공간 사이즈 및/또는 남은 공간 사이즈에 기초하여 디코딩 속도, 디스플레이(120)의 출력 속도, 프레임 스킵 여부, 스킵할 프레임 위치 및 개수 중 적어도 하나를 식별할 수 있다(S613). 이 경우, 디코딩 속도, 디스플레이(120)의 출력 속도을 통해 프로세서(140)는 빠르게 출력할 프레임들도 식별할 수 있다.
한편, 프로세서(140)는 디코딩 속도 또는 디스플레이(210)의 출력 속도 중 적어도 하나의 조정이 가능한지 식별할 수 있다(S614).
프로세서(140)는 디코딩 속도 또는 디스플레이(210)의 출력 속도 중 적어도 하나의 조정이 가능한 것으로 식별되면(S614:Y), 조정 속도 및 대상 프레임 위치를 식별하고(S615), 디스플레이(120)의 출력 모드를 식별할 수 있다(S616).
프로세서(140)는 디스플레이(120)의 출력 모드가 VRR 모드인 것으로 식별되면, 디코더의 디코딩 속도 및/또는 디스플레이(120)의 출력 속도를 필요한 만큼 높일 수 있다(S617). 예를 들어, 프로세서(140)는 디코더로 다코딩 속도 제어 신호를 전송할 수 있고, 디스플레이(120)로 프레임 출력 속도 제어 신호를 전송할 수 있다. 이 경우, 제어 신호에는 제어 속도 정보, 제어 대상 프레임의 개수 및 위치 정보 등이 포함될 수 있다.
프로세서(140)는 디스플레이(120)의 출력 모드가 FRC 모드인 것으로 식별되면, 프레임 보간 스킵 처리를 제어할 수 있다(S618). 예를 들어, 프로세서(140)는 디스플레이(120)로 프레임 보간 스킵을 위한 제어 신호를 전송할 수 있다. 이 경우, 제어 신호에는 보간 스킵할 프레임의 위치 정보가 포함될 수 있다.
이 경우, 디코더나 디스플레이의 실행 속도 한계, VRR 모드 및 FRC 모드에서 속도 증가로도 출력하지 못한 프레임들과 일반 모드에서 최대 속도로 출력 후 남는 프레임들이 발생할 수 있다. 지연을 정상화하기 위해서는 이 남는 프레임들을 스킵해야 하며, 이를 위해 디코더에서 스킵할 프레임들과 의존성이 없는 새로운 프레임 압축 스트림이 필요할 수 있다.
프로세서(140)는 스킵할 프레임이 존재하는 경우 서버(20)로 인코딩 제어 요청을 전송할 수 있다(S620). 일 예로, 프로세서(140)는 인코딩 제어 요청을 통해 디코딩 스킵이 가능한 스트림을 요청할 수 있다. 예를 들어, 인코딩 제어 요청에는 스킵할 프레임 개수 정보가 포함될 수 있다. 이 후, 프로세서(140)는 서버(20)로부터 인코딩 제어 요청에 대한 제어 응답이 수신되면, 수신된 제어 응답에 기초하여 디코더의 동작을 제어할 수 있다(S621). 예를 들어, 제어 응답에는 서버 장치(200)에서 결정된 디코더의 스킵 수행 여부 및 스킵이 적용된 프레임들의 위치 정보가 포함될 수 있다. 예를 들어, 디코더의 스킵 수행 여부에 대한 정보는 skip-flag를 통해 전송될 수 있다.
한편, 프로세서(140)는 디코딩 속도 또는 디스플레이(210)의 출력 속도 중 적어도 하나의 조정이 불가능한 것으로 식별되면(S614:N), 스킵할 프레임이 존재하는지 식별할 수 있다(S619).
프로세서(140)는 스킵할 프레임이 존재하는 경우, 서버(20)로 인코딩 제어 요청을 전송할 수 있다(S620). 예를 들어, 인코딩 제어 요청에는 스킵할 프레임 개수 정보가 포함될 수 있다. 이 후, 프로세서(140)는 서버(20)로부터 인코딩 제어 요청에 대한 제어 응답이 수신되면, 수신된 제어 응답에 기초하여 디코더의 동작을 제어할 수 있다(S621). 예를 들어, 제어 응답에는 서버(20)에서 결정된 디코더의 스킵 수행 여부 및 스킵이 적용된 프레임들의 위치 정보가 포함될 수 있다. 예를 들어, 디코더의 스킵 수행 여부에 대한 정보는 skip-flag를 통해 전송될 수 있다.
한편, 프로세서(140)는 S611 단계에서 디스플레이(120)의 최대 출력 속도가 컨텐츠의 영상 주파수 이하이거나 디코더의 최대 디코딩 속도가 컨텐츠의 영상 주파수 이하인 것으로 식별되면(S611:N), 스킵할 프레임 위치 및 개수를 식별할 수 있다(S622).
프로세서(140)는 S622 단계에서 스킵할 프레임 위치 및 개수가 식별되면, 서버(20)로 인코딩 제어 요청을 전송할 수 있다(S620). 예를 들어, 인코딩 제어 요청에는 스킵할 프레임 개수 정보가 포함될 수 있다. 이 후, 프로세서(140)는 서버(20)로부터 인코딩 제어 요청에 대한 제어 응답이 수신되면, 수신된 제어 응답에 기초하여 디코더의 동작을 제어할 수 있다(S621). 예를 들어, 제어 응답에는 서버(20)에서 결정된 디코더의 스킵 수행 여부 및 스킵이 적용된 프레임들의 위치 정보가 포함될 수 있다. 예를 들어, 디코더의 스킵 수행 여부에 대한 정보는 skip-flag를 통해 전송될 수 있다.
도 7은 일 실시 예에 따른 서버 장치의 구성을 나타내는 도면이다.
도 7에 따르면 서버 장치(200)은 통신 인터페이스(210), 메모리(220) 및 하나 이상의 프로세서(230)를 포함한다. 일 예에 따라 서버 장치(200)는 도 1에 도시된 서버(20)로 구현될 수 있다.
통신 인터페이스(210)는 서버 장치(200)의 구현 예에 따라 다양한 통신 방식을 지원할 수 있다. 예를 들어 통신 인터페이스(210)는 블루투스(Bluetooth), AP 기반의 Wi-Fi(와이파이, Wireless LAN 네트워크), 지그비(Zigbee), 유/무선 LAN(Local Area Network), WAN(Wide Area Network), 이더넷(Ethernet), IEEE 1394, HDMI(High-Definition Multimedia Interface) 등과 같은 통신 방식을 통해 외부 장치, 예를 들어 전자 장치(100)와 통신을 수행할 수 있다.
메모리(220)는 다양한 실시 예를 위해 필요한 데이터를 저장할 수 있다. 메모리(220)의 구현 형태는 도 2a에 도시된 메모리(130)의 구현 형태와 동일/유사하므로 자세한 설명은 생략하도록 한다.
하나 이상의 프로세서(230)는 서버 장치(200)의 동작을 전반적으로 제어한다. 구체적으로, 하나 이상의 프로세서(230)는 서버 장치(200)의 각 구성과 연결되어 서버 장치(200)의 동작을 전반적으로 제어할 수 있다. 예를 들어, 하나 이상의 프로세서(230)는 메모리(220)와 전기적으로 연결되어 서버 장치(200)의 전반적인 동작을 제어할 수 있다. 하나 이상의 프로세서(230)는 하나 또는 복수의 프로세서로 구성될 수 있다. 하나 이상의 프로세서(230)이 구현 형태는 도 2a에 도시된 하나 이상의 프로세서(140)의 구현 형태와 동일/유사하므로 자세한 설명은 생략하도록 한다. 이하에서는 설명의 편의를 위하여 하나 이상의 프로세서(230)를 프로세서(230)로 명명하도록 한다.
도 8은 일 실시 예에 따른 서버 장치의 제어 방법을 설명하기 위한 도면이다.
도 8에 도시된 실시 예에 따르면, 프로세서(230)는 통신 인터페이스(210)를 통해 전자 장치(100)로 컨텐츠를 스트리밍하고 스트리밍되는 컨텐츠에 대응되는 지연 특성 정보를 전송할 수 있다(S810).
프로세서(230)는 클라이언트 장치(예를 들어, 전자 장치(100))로부터 인코딩 제어 요청이 수신되면(S820:Y), 스트리밍 모드를 식별할 수 있다. 여기서, 인코딩 제어 요청은 인코딩시 스킵할 프레임에 대한 정보를 포함할 수 있다. 예를 들어, 인코딩 제어 요청은 스킵할 프레임 개수 정보를 포함할 수 있다.
프로세서(230)는 스트리밍 모드가 유니 캐스트 모드로 식별되면(S830:Y), 인코딩 제어 요청에 포함된 정보 및 인코딩 모드에 기초하여 인코더의 인코딩 동작을 제어할 수 있다.
이 후, 프로세서(230)는 인코딩 제어 요청에 대한 제어 응답을 클라이어트 장치로 전송할 수 있다(S850). 예를 들어, 제어 응답에는 서버 장치(200)에서 결정된 디코더의 스킵 수행 여부 및 스킵이 적용된 프레임들의 위치 정보가 포함될 수 있다. 예를 들어, 디코더의 스킵 수행 여부에 대한 정보는 스킵 플래그(skip-flag)를 통해 전송될 수 있다.
일 예에 따라 프로세서(230)는 인코딩 제어 요청의 빈도 또는 인코딩 제어 요청에 포함된 인코딩시 스킵할 프레임 개수에 기초하여 스트리밍 컨텐츠의 해상도 또는 비트 레이트 중 적어도 하나를 조정할 수 있다.
도 9, 도 10a 내지 도 10d는 일 실시 예에 따른 서버 장치의 인코딩 동작을 설명하기 위한 도면들이다.
도 9에 도시된 실시 예에 따르면, 프로세서(230)는 외부 장치, 예를 들어, 전자 장치(100)로 컨텐츠를 실시간 스트리밍할 수 있다(S905).
프로세서(230)는 컨텐츠가 실시간 스트리밍되는 동안 컨텐츠의 지연 특성 정보가 변경되는지 식별할 수 있다(S910).
프로세서(230)는 컨텐츠의 지연 특성 정보가 변경된 것으로 식별되면(S910:Y), 컨텐츠의 지연 특성 정보에 기초하여 요구 지연에 최적화된 인코딩 옵션 및/또는 제어 파라미터를 설정할 수 있다(S915).
프로세서(230)는 클라이언트 장치로부터 제어 요청이 수신되면(S920:Y), 제어 요청을 분석/처리하고 클라이언트로 장치로 제어 응답을 전송할 수 있다(S925). 여기서, 제어 요청은 인코딩 제어 요청일 수 있으며, 인코딩 제어 요청은 스킵할 프레임 개수 정보를 포함할 수 있다.
반면, 프로세서(230)는 클라이언트 장치로부터 제어 요청이 수신되지 않으면(S920:N), 지연 특성 정보가 변경되는지 여부를 식별할 수 있다(S910).
프로세서(230)는 클라이언트 장치로부터 제어 요청 빈도나 스킵할 프레임 개수가 과다한 것으로 식별되면(S930:Y), 컨텐츠의 해상도 및/또는 압축 비트율이 감소되도록 제어할 수 있다(S935). 여기서, 제어 요청 빈도가 과다함은 임계 횟수 이상인 경우이고, 스킵할 프레임 개수가 과다함은 임계 개수 이상인 경우일 수 있다. 여기서, 임계 횟수 및/또는 임계 개수는 기 설정된 값이거나 컨텐츠 특성, 지연 특성 정보 등에 따라 가변적인 값일 수 있다. 즉, 제어 요청이 자주 발생하거나 스킵할 프레임 개수가 과다한 경우 클라이언트 장치의 수신 환경이 좋지 않음을 의미하므로, 프로세서(230)는 ABR을 제어하여 전송량을 낮춤으로써 전송 지연 발생을 최소화할 수 있다.
예를 들어, 프로세서(230)는 제어 요청 내의 프레임 개수만큼 인코더에서 직접 스킵을 수행하거나 클라이언트 장치의 디코더에서 스킵을 수행하도록 할 수 있고 대응되는 정보를 제어 응답에 포함시켜 클라이언트 장치로 전송할 수 있다. 예를 들어, 프로세서(230)는 제어 응답 내의 스킵 플래그(skip-flag)로 대응되는 정보를 포함시킬 수 있다. 예를 들어, 현재 스트리밍 모드가 유니 캐스트 모드인 경우 인코더에서 스킵을 수행하는 것이 전송량도 감소시키고 디코더의 작업도 감소시킬 수 있게 된다. 멀티캐스트/브로드캐스트 모드에서도 인코더 스킵 선택이 가능하지만 스킵이 필요하지 않은 다른 클라이언트 장치도 있을 수 있으므로 디코더에서 스킵을 수행하는 것이 전체 품질에 유리할 수 있다. 예를 들어, 복수의 프레임들이 스킵되는 경우 연속된 프레임들 또는 연속되지 않은 프레임들이 선택될 수 있다.
이에 따라, 프로세서(230)는 스트리밍 모드를 식별할 수 있다(S940). 프로세서(230)는 스트리밍 모드가 유니 캐스트 모드로 식별되면, 클라이언트 장치로부터 요청된 프레임 개수 만큼 코딩을 스킵할 수 있다. 다만, 프로세서(230)는 스트리밍 모드가 멀티 캐스트/브로드 캐스트 모드로 식별되면, 클라이언트 장치로부터 요청된 프레임 개수 만큼 코딩 스킵을 수행하지 않을 수 있다.
또한, 프로세서(230)는 화질 및 코딩 효율을 고려하여 프레임 스킵 발생 이후의 프레임들을 인트라 모드로 압축할 것인지, 또는 스킵 프레임이 아닌 프레임들 만을 참조하는 인터 모드로 압축할 것인지 식별할 수 있다(S950).
프로세서(230)는 인코딩 모드가 인트라 모드인 것으로 식별되면 인트라 코딩을 수행하고, 인터 모드인 것으로 식별되면 스킵할 프레임들을 제외한 프레임들만을 참조하여 인터 코딩을 수행할 수 있다. 여기서, 인트라 코딩은 도 10a에 도시된 바와 같이 모든 프레임마다 개별적으로 압축을 진행하는 방식이고, 인터 코딩은 도 10b에 도시된 바와 같이 인접한 프레임 사이의 유사성을 이용하여 여러 프레임을 한꺼번에 압축하는 방식을 의미한다. 인터 코딩에 따라 압축된 영상은 도 10c에 도시된 바와 같이 인터 프레임(Inter Frame)을 포함하며, 인터 프레임은 한 프레임 이상의 정보를 압축하고 있으며, I 프레임(Inter Frame)을 제외한 B 프레임(Bidirectional predictive frame) 및 P 프레임(Predicitve frame)을 의미할 수 있다. 예를 들어, 도 10c에 도시된 프레임들이 하나의 GOP를 구성한다고 가정하면, 디코딩시 I 프레임 및 P 프레임을 먼저 처리하고, 그 다음에 사이의 B 프레임을 처리할 수 있다. 이에 따라 프로세서(230)는 하나의 GOP 내에서 B 프레임을 우선적으로 스킵하도록 인코딩할 있다. 또한, 프로세서(230)는 다른 GOP 들 간에도 I 프레임> P 프레임> B 프레임 순위로 우선 순위를 두어 인코딩 처리할 수 있다.
일 예에 따라 클라이언트 장치의 디코더에서 프레임 스킵이 수행되는 경우, 디코더에서 스킵될 프레임들을 이용하여 인터 코딩을 수행하게 되면 클라이언트 장치의 디코더에서 해당 프레임들이 스킵됨에 따라 디코딩 퀄리티가 낮아질 수 있다. 이에 따라 프로세서(230)는 클라이언트 장치의 디코더에서 스킵할 프레임들을 제외한 프레임들만을 참조하여 인터 코딩을 수행할 수 있다. 일 예에 따라 스트리밍되는 컨텐츠는 GOP 단위로 전송되므로 디코더에서 스킵할 프레임은 GOP 단위를 고려하여 식별될 수 있다. 예를 들어, 프로세서(220)는 스킵될 프레임 수에 기초하여 클라이언트 장치에서 GOP 단위로 컨텐츠를 수신하여 디코딩할 경우 디코딩시 참조할 프레임을 제외한 프레임을 스킵 프레임으로 식별하여 클라이언트 장치로 해당 정보를 전송할 수 있다.
반면, 인트라 모드에서는 도 10d에 도시된 바와 같이 각 프레임이 인트라 프레임으로 개별 압축되므로 어느 프레임이든 스킵 가능할 수 있다. 이에 따라 스킵할 프레임과 관계 없이 인트라 코딩을 수행할 수 있다.
도 11은 일 실시 예에 따른 전자 장치의 디코딩 동작을 설명하기 위한 도면이다.
도 11에 도시된 전자 장치(100)의 디코딩 동작에 따르면, 전자 장치(100)(예를 들어, 프로세서(140))는 서버 장치(200)로부터 수신된 제어 응답에 기초하여 디코더의 동작을 제어할 수 있다.
일 예에 따라 프로세서(140)는 서버 장치(200)로부터 제어 응답이 수신되면(S1105), 수신된 제어 응답에 포함된 정보에 기초하여 디코딩시 프레임 스킵 여부를 식별할 수 있다. 예를 들어, 프로세서(140)는 제어 응답에 포함된 스킵 플래그(skip-flag)에 기초하여 스킵 수행 여부를 식별할 수 있다(S1110). 서버 장치(200)는 스트리밍 모드에 따라 인코더에서 직접 스킵을 수행하거나 전자 장치(100)의 디코더에서 스킵을 수행하도록 할 수 있다. 현재 스트리밍 모드가 유니 캐스트 모드인 경우 인코더에서 스킵을 수행하는 것이 전송량도 감소시키고 디코더의 작업도 감소시킬 수 있게 된다. 멀티캐스트/브로드캐스트 모드에서도 인코더 스킵 선택이 가능하지만 스킵이 필요하지 않은 다른 클라이언트 장치도 있을 수 있으므로 디코더에서 스킵을 수행하는 것이 전체 품질에 유리할 수 있다. 예를 들어, 복수의 프레임들이 스킵되는 경우 연속된 프레임들 또는 연속되지 않은 프레임들이 선택될 수 있다.
이에 따라 프로세서(140)는 스킵 플래그에 기초하여 디코더에서 스킵을 수행하는 것으로 식별되면, 지정된 프레임 수 만큼 디코딩 스킵을 결정할 수 있다(S1115). 예를 들어, 제어 응답에는 서버 장치(200)에서 결정된 디코더의 스킵 수행 여부 및 스킵이 적용된 프레임들의 위치 정보가 포함될 수 있다. 한편, 전자 장치(100)의 디코더는 프레임 스킵을 수행하기 위해 참조 프레임에 대한 인덱싱을 변경할 있는 기능을 지원할 수 있고, 디스플레이(120)의 출력 속도 제어 및/또는 pause 명령을 수행할 수 있는 기능을 지원할 수 있다.
즉, 프로세서(140)는 스트리밍 모드가 유니캐스트 모드인 경우 서버 장치(200)의 인코더에서 이미 프레임 스킵이 수행되었으므로 일반적인 디코딩 동작을 수행하지만, 스트리밍 모드가 멀티캐스트/브로드캐스트 모드인 경우 제어 응답에 포함된 정보에 기초하여 디코더에서 프레임 스킵을 수행하게 된다.
상술한 다양한 실시 예들에 따르면, 실시간 스트리밍과 같은 저지연 스트리밍 서비스에서 네트워크 상태 및 컨텐츠 특성에 따라 퀄리티를 유지하면서 전송 지연을 최소화할 수 있게 된다. 또한, 지연 발생 시 최대한 빠른 시간 내에 최소 지연 상황으로 복구하고 지연이 누적되는 것을 방지하며 사용자 디스플레이의 사양에 최적화된 시청 품질을 제공할 수 있게 된다.
한편, 상술한 본 개시의 다양한 실시 예들에 따른 방법들은, 기존 전자 장치에 설치 가능한 어플리케이션 형태로 구현될 수 있다. 또는 상술한 본 개시의 다양한 실시 예들에 따른 방법들은 딥 러닝 기반의 인공 신경망(또는 심층 인공 신경망) 즉, 학습 네트워크 모델을 이용하여 수행될 수 있다. 일 예에 따라 다운스케일링, 디코딩, 인코딩, 업스케일링 중 적어도 하나는 학습된 신경망 모델을 통해 수행될 수 있다.
또한, 상술한 본 개시의 다양한 실시 예들에 따른 방법들은, 기존 전자 장치에 대한 소프트웨어 업그레이드, 또는 하드웨어 업그레이드 만으로도 구현될 수 있다.
또한, 상술한 본 개시의 다양한 실시 예들은 전자 장치에 구비된 임베디드 서버, 또는 전자 장치의 외부 서버를 통해 수행되는 것도 가능하다.
한편, 본 개시의 일시 예에 따르면, 이상에서 설명된 다양한 실시 예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 전자 장치(예: 전자 장치(A))를 포함할 수 있다. 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접, 또는 프로세서의 제어 하에 다른 구성요소들을 이용하여 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장 매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
또한, 본 개시의 일 실시 예에 따르면, 이상에서 설명된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
또한, 상술한 다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시 예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시 예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시에 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.
100: 전자 장치 110: 통신 인터페이스
120: 디스플레이 130: 메모리
140: 하나 이상의 프로세서
200: 서버 장치 210: 통신 인터페이스
220: 메모리 230: 하나 이상의 프로세서

Claims (20)

  1. 전자 장치에 있어서,
    통신 인터페이스;
    디스플레이;
    적어도 하나의 명령어를 저장하는 메모리; 및
    상기 통신 인터페이스, 상기 디스플레이 및 상기 메모리와 연결되어 상기 전자 장치를 제어하는 하나 이상의 프로세서;를 포함하며,
    상기 하나 이상의 프로세서는,
    상기 적어도 하나의 명령어를 실행함으로써,
    상기 통신 인터페이스를 통해 외부 서버로부터 스트리밍되는 컨텐츠를 표시하도록 상기 디스플레이를 제어하고,
    상기 외부 서버로부터 상기 스트리밍되는 컨텐츠에 대응되는 지연 특성 정보가 수신되면, 상기 지연 특성 정보에 기초하여 상기 스트리밍되는 컨텐츠가 저장되는 스트림 버퍼의 임계 값을 식별하고,
    상기 스트림 버퍼의 임계 값 및 상기 스트림 버퍼의 상태에 기초하여 상기 컨텐츠의 디코딩 속도 또는 상기 디스플레이의 출력 속도 중 적어도 하나를 제어하는, 전자 장치.
  2. 제1항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 수신된 지연 특성 정보에 기초하여 상기 스트림 버퍼의 최소 임계 값 또는 최대 임계 값 중 적어도 하나를 식별하고,
    상기 스트림 버퍼에 저장된 스트림이 상기 최소 임계 값 미만으로 식별되면, 출력 버퍼 상태 및 출력 모드에 기초하여 프레임 출력 속도, 프레임 보간 또는 프레임 반복 출력 중 적어도 하나를 제어하고,
    상기 스트림 버퍼에 저장된 스트림이 상기 최대 임계 값을 초과한 것으로 식별되면, 출력 버퍼 상태 및 출력 모드에 기초하여 프레임 출력 속도, 프레임 출력 스킵, 또는 프레임 보간 스킵 중 적어도 하나를 제어하며,
    상기 출력 모드는,
    VRR(Variable Refresh Rate) 모드, FRC(Frame Rate Control) 모드 및 Nomal 모드 중 적어도 하나를 포함하는, 전자 장치.
  3. 제2항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 스트림 버퍼에 저장된 스트림이 상기 최소 임계 값 미만으로 식별되면, 상기 출력 버퍼의 남은 공간 사이즈를 식별하고,
    상기 식별된 공간 사이즈에 기초하여 상기 출력 버퍼에 추가할 프레임의 개수 및 위치를 식별하고,
    상기 출력 모드 및 상기 식별된 프레임의 개수 및 위치에 기초하여 프레임 출력 속도, 프레임 보간 또는 프레임 반복 출력 중 적어도 하나를 제어하는, 전자 장치.
  4. 제2항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 스트림 버퍼에 저장된 스트림이 상기 최대 임계 값을 초과한 것으로 식별되면, 상기 디스플레이의 최대 출력 속도, 디코더의 최대 디코딩 속도 및 상기 컨텐츠의 영상 주파수를 비교하고,
    비교 결과에 기초하여 인코딩 제어 요청을 상기 외부 서버로 전송하거나, 상기 출력 모드 및 스킵할 프레임 위치 및 개수에 대한 정보에 기초하여 프레임 출력 속도, 프레임 출력 스킵 또는 프레임 보간 스킵 중 적어도 하나를 제어하는, 전자 장치.
  5. 제4항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 비교 결과 상기 디스플레이의 최대 출력 속도가 상기 컨텐츠의 영상 주파수보다 크고 상기 디코더의 최대 디코딩 속도가 상기 컨텐츠의 영상 주파수보다 큰 것으로 식별되면, 상기 출력 버퍼의 남은 공간 사이즈를 식별하고,
    상기 출력 모드 및 상기 식별된 공간 사이즈에 기초하여 디코딩 속도, 상기 디스플레이의 출력 속도 및 상기 스킵할 프레임 위치 및 개수를 식별하고,
    상기 디코딩 속도 또는 상기 디스플레이의 출력 속도 중 적어도 하나의 조정이 가능한지 여부에 따라 상기 프레임 출력 속도, 프레임 출력 스킵 또는 프레임 보간 스킵 중 적어도 하나를 제어하는, 전자 장치.
  6. 제5항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 디코딩 속도 또는 상기 디스플레이의 출력 속도 중 적어도 하나의 조정이 가능한 경우 상기 출력 모드에 기초하여 상기 프레임 출력 속도를 제어하거나, 프레임 보간 스킵을 제어하고,
    상기 디코딩 속도 또는 상기 디스플레이의 출력 속도 중 적어도 하나의 조정이 불가능한 경우 상기 프레임 출력 스킵을 제어하기 위해 인코딩시 스킵할 프레임에 대한 정보를 포함하는 인코딩 제어 요청을 상기 외부 서버로 전송하는, 전자 장치.
  7. 제4항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 비교 결과 상기 디스플레이의 최대 출력 속도가 상기 컨텐츠의 영상 주파수 미만 및 상기 디코더의 최대 디코딩 속도가 상기 컨텐츠의 영상 주파수 미만 중 적어도 하나로 식별되면, 인코딩시 스킵할 프레임에 대한 정보를 포함하는 상기 인코딩 제어 요청을 상기 외부 서버로 전송하는, 전자 장치.
  8. 제4항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 인코딩 제어 요청을 상기 외부 서버로 전송한 후 상기 서버로부터 디코딩 스킵 수행 여부 및 스킵 적용된 프레임의 위치 정보를 포함하는 제어 응답이 수신되면, 상기 수신된 제어 응답에 포함된 정보에 기초하여 상기 스트리밍되는 컨텐츠에 대한 디코딩 동작을 제어하는, 전자 장치.
  9. 서버 장치에 있어서,
    통신 인터페이스;
    적어도 하나의 명령어를 저장하는 메모리; 및
    상기 통신 인터페이스 및 상기 메모리와 연결되어 상기 전자 장치를 제어하는 하나 이상의 프로세서;를 포함하며,
    상기 하나 이상의 프로세서는
    상기 적어도 하나의 명령어를 실행함으로써,
    상기 통신 인터페이스를 통해 클라이언트 장치로 컨텐츠를 스트리밍하고
    상기 통신 인터페이스를 통해 상기 클라이언트 장치로 상기 스트리밍되는 컨텐츠와 관련된 지연 특성 정보를 전송하며,
    상기 클라이언트 장치로부터 인코딩시 스킵할 프레임에 대한 정보를 포함하는 인코딩 제어 요청이 수신되면, 스트리밍 모드가 유니캐스트 모드인지 브로드캐스트 모드인지 식별하고,
    상기 스트리밍 모드에 따라 상기 인코딩 제어 요청에 포함된 정보 및 인코딩 모드에 기초하여 인코딩 동작을 제어하고,
    상기 통신 인터페이스를 통해 상기 인코딩 제어 요청에 대한 제어 응답을 상기 클라이언트 장치로 전송하는, 서버 장치.
  10. 제9항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 인코딩 제어 요청의 빈도 또는 상기 인코딩 제어 요청에 포함된 인코딩시 스킵할 프레임 개수에 기초하여 상기 스트리밍 컨텐츠의 해상도 또는 비트 레이트 중 적어도 하나를 조정하는, 서버 장치.
  11. 전자 장치의 제어 방법에 있어서,
    외부 서버로부터 스트리밍되는 컨텐츠를 표시하는 단계;
    상기 외부 서버로부터 상기 스트리밍되는 컨텐츠에 대응되는 지연 특성 정보가 수신되면, 상기 지연 특성 정보에 기초하여 상기 스트리밍되는 컨텐츠가 저장되는 스트림 버퍼의 임계 값을 식별하는 단계; 및
    상기 스트림 버퍼의 임계 값 및 상기 스트림 버퍼의 상태에 기초하여 상기 컨텐츠의 디코딩 속도 또는 디스플레이의 출력 속도 중 적어도 하나를 제어하는 단계;를 포함하는 제어 방법.
  12. 제11항에 있어서,
    상기 스트림 버퍼의 임계 값을 식별하는 단계는,
    상기 수신된 지연 특성 정보에 기초하여 상기 스트림 버퍼의 최소 임계 값 또는 최대 임계 값 중 적어도 하나를 식별하고,
    상기 컨텐츠의 디코딩 속도 또는 디스플레이의 출력 속도 중 적어도 하나를 제어하는 단계는,
    상기 스트림 버퍼에 저장된 스트림이 상기 최소 임계 값 미만으로 식별되면, 출력 버퍼 상태 및 출력 모드에 기초하여 프레임 출력 속도, 프레임 보간 또는 프레임 반복 출력 중 적어도 하나를 제어하는 단계; 및
    상기 스트림 버퍼에 저장된 스트림이 상기 최대 임계 값을 초과한 것으로 식별되면, 출력 버퍼 상태 및 출력 모드에 기초하여 프레임 출력 속도, 프레임 출력 스킵, 또는 프레임 보간 스킵 중 적어도 하나를 제어하는 단계;를 포함하고,
    상기 출력 모드는,
    VRR(Variable Refresh Rate) 모드, FRC(Frame Rate Control) 모드 및 Nomal 모드 중 적어도 하나를 포함하는 제어 방법.
  13. 제12항에 있어서,
    상기 컨텐츠의 디코딩 속도 또는 디스플레이의 출력 속도 중 적어도 하나를 제어하는 단계는,
    상기 스트림 버퍼에 저장된 스트림이 상기 최소 임계 값 미만으로 식별되면, 상기 출력 버퍼의 남은 공간 사이즈를 식별하는 단계;
    상기 식별된 공간 사이즈에 기초하여 상기 출력 버퍼에 추가할 프레임의 개수 및 위치를 식별하는 단계; 및
    상기 출력 모드 및 상기 식별된 프레임의 개수 및 위치에 기초하여 프레임 출력 속도, 프레임 보간 또는 프레임 반복 출력 중 적어도 하나를 제어하는 단계;를 포함하는 제어 방법.
  14. 제12항에 있어서,
    상기 컨텐츠의 디코딩 속도 또는 디스플레이의 출력 속도 중 적어도 하나를 제어하는 단계는,
    상기 스트림 버퍼에 저장된 스트림이 상기 최대 임계 값을 초과한 것으로 식별되면, 상기 디스플레이의 최대 출력 속도, 디코더의 최대 디코딩 속도 및 상기 컨텐츠의 영상 주파수를 비교하는 단계; 및
    비교 결과에 기초하여 인코딩 제어 요청을 상기 외부 서버로 전송하거나, 상기 출력 모드 및 스킵할 프레임 위치 및 개수에 대한 정보에 기초하여 프레임 출력 속도, 프레임 출력 스킵 또는 프레임 보간 스킵 중 적어도 하나를 제어하는 단계;를 포함하는 제어 방법.
  15. 제14항에 있어서,
    상기 컨텐츠의 디코딩 속도 또는 디스플레이의 출력 속도 중 적어도 하나를 제어하는 단계는,
    상기 비교 결과 상기 디스플레이의 최대 출력 속도가 상기 컨텐츠의 영상 주파수보다 크고 상기 디코더의 최대 디코딩 속도가 상기 컨텐츠의 영상 주파수보다 큰 것으로 식별되면, 상기 출력 버퍼의 남은 공간 사이즈를 식별하는 단계;
    상기 출력 모드 및 상기 식별된 공간 사이즈에 기초하여 디코딩 속도, 상기 디스플레이의 출력 속도 및 상기 스킵할 프레임 위치 및 개수를 식별하는 단계; 및
    상기 디코딩 속도 또는 상기 디스플레이의 출력 속도 중 적어도 하나의 조정이 가능한지 여부에 따라 상기 프레임 출력 속도, 프레임 출력 스킵 또는 프레임 보간 스킵 중 적어도 하나를 제어하는 단계;를 포함하는 제어 방법.
  16. 제15항에 있어서,
    상기 컨텐츠의 디코딩 속도 또는 디스플레이의 출력 속도 중 적어도 하나를 제어하는 단계는,
    상기 디코딩 속도 또는 상기 디스플레이의 출력 속도 중 적어도 하나의 조정이 가능한 경우 상기 출력 모드에 기초하여 상기 프레임 출력 속도를 제어하거나, 프레임 보간 스킵을 제어하는 단계; 및
    상기 디코딩 속도 또는 상기 디스플레이의 출력 속도 중 적어도 하나의 조정이 불가능한 경우 상기 프레임 출력 스킵을 제어하기 위해 인코딩시 스킵할 프레임에 대한 정보를 포함하는 인코딩 제어 요청을 상기 외부 서버로 전송하는 단계;를 포함하는 제어 방법.
  17. 제14항에 있어서,
    상기 컨텐츠의 디코딩 속도 또는 디스플레이의 출력 속도 중 적어도 하나를 제어하는 단계는,
    상기 비교 결과 상기 디스플레이의 최대 출력 속도가 상기 컨텐츠의 영상 주파수 미만 및 상기 디코더의 최대 디코딩 속도가 상기 컨텐츠의 영상 주파수 미만 중 적어도 하나로 식별되면, 인코딩시 스킵할 프레임에 대한 정보를 포함하는 상기 인코딩 제어 요청을 상기 외부 서버로 전송하는 단계;를 포함하는 제어 방법.
  18. 제14항에 있어서,
    상기 컨텐츠의 디코딩 속도 또는 디스플레이의 출력 속도 중 적어도 하나를 제어하는 단계는,
    상기 인코딩 제어 요청을 상기 외부 서버로 전송한 후 상기 서버로부터 디코딩 스킵 수행 여부 및 스킵 적용된 프레임의 위치 정보를 포함하는 제어 응답이 수신되면, 상기 수신된 제어 응답에 포함된 정보에 기초하여 상기 스트리밍되는 컨텐츠에 대한 디코딩 동작을 제어하는 단계;를 포함하는 제어 방법.
  19. 서버 장치의 제어 방법에 있어서,
    클라이언트 장치로 컨텐츠를 스트리밍하는 단계;
    상기 통신 인터페이스를 통해 상기 클라이언트 장치로 상기 스트리밍되는 컨텐츠와 관련된 지연 특성 정보를 전송하는 단계;
    상기 클라이언트 장치로부터 인코딩시 스킵할 프레임에 대한 정보를 포함하는 인코딩 제어 요청이 수신되면, 스트리밍 모드가 유니캐스트 모드인지 브로드캐스트 모드인지 식별하는 단계;
    상기 스트리밍 모드에 따라 상기 인코딩 제어 요청에 포함된 정보 및 인코딩 모드에 기초하여 인코딩 동작을 제어하는 단계; 및
    상기 통신 인터페이스를 통해 상기 인코딩 제어 요청에 대한 제어 응답을 상기 클라이언트 장치로 전송하는 단계;를 포함하는 제어 방법.
  20. 제19항에 있어서,
    상기 인코딩 동작을 제어하는 단계는,
    상기 인코딩 제어 요청의 빈도 또는 상기 인코딩 제어 요청에 포함된 인코딩시 스킵할 프레임 개수에 기초하여 상기 스트리밍 컨텐츠의 해상도 또는 비트 레이트 중 적어도 하나를 조정하는 단계;를 포함하는 제어 방법.




KR1020220138550A 2022-10-24 2022-10-25 전자 장치, 서버 장치 및 그 제어 방법 KR20240057844A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220138550A KR20240057844A (ko) 2022-10-25 2022-10-25 전자 장치, 서버 장치 및 그 제어 방법
PCT/KR2023/009430 WO2024090710A1 (ko) 2022-10-25 2023-07-04 전자 장치, 서버 장치 및 그 제어 방법
US18/449,993 US20240137606A1 (en) 2022-10-24 2023-08-14 Electronic apparatus, server apparatus and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220138550A KR20240057844A (ko) 2022-10-25 2022-10-25 전자 장치, 서버 장치 및 그 제어 방법

Publications (1)

Publication Number Publication Date
KR20240057844A true KR20240057844A (ko) 2024-05-03

Family

ID=90831032

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220138550A KR20240057844A (ko) 2022-10-24 2022-10-25 전자 장치, 서버 장치 및 그 제어 방법

Country Status (3)

Country Link
US (1) US20240137606A1 (ko)
KR (1) KR20240057844A (ko)
WO (1) WO2024090710A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101011134B1 (ko) * 2004-06-07 2011-01-26 슬링 미디어 인코퍼레이티드 퍼스널 미디어 브로드캐스팅 시스템
US9160779B2 (en) * 2011-06-30 2015-10-13 Qualcomm Incorporated Dynamic adaptive streaming proxy for unicast or broadcast/multicast services
KR102133012B1 (ko) * 2014-04-07 2020-07-10 삼성전자주식회사 미디어 스트리밍 방법 및 그 전자 장치
KR102275296B1 (ko) * 2018-04-12 2021-07-12 주식회사 큐램 스트리밍에서의 전송속도 제어방법 및 이를 위한 시스템
KR20220030736A (ko) * 2020-09-03 2022-03-11 라인플러스 주식회사 실시간 라이브 스트리밍에서 지연을 최소화하기 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체

Also Published As

Publication number Publication date
US20240137606A1 (en) 2024-04-25
WO2024090710A1 (ko) 2024-05-02

Similar Documents

Publication Publication Date Title
CN108076364B (zh) 自适应媒体流传输设备和媒体服务设备
WO2016131223A1 (zh) 一种视频帧丢帧方法及视频发送装置
US9894393B2 (en) Video encoding for reduced streaming latency
KR20140111859A (ko) 콘텐트 공유 방법 및 이를 위한 디바이스
US20160191594A1 (en) Context aware streaming media technologies, devices, systems, and methods utilizing the same
CN110582012B (zh) 视频切换方法、视频处理方法、装置及存储介质
US9232249B1 (en) Video presentation using repeated video frames
US20150341634A1 (en) Method, apparatus and system to select audio-video data for streaming
US9226003B2 (en) Method for transmitting video signals from an application on a server over an IP network to a client device
WO2021030294A1 (en) Prediction-based dropped frame handling logic in video playback
CN110996035B (zh) 信息发送方法及装置
US10462200B2 (en) System for cloud streaming service, method for still image-based cloud streaming service and apparatus therefor
US11134114B2 (en) User input based adaptive streaming
CN111107387B (zh) 视频转码方法、装置及计算机存储介质
US20210400334A1 (en) Method and apparatus for loop-playing video content
KR20240057844A (ko) 전자 장치, 서버 장치 및 그 제어 방법
US8982128B2 (en) Method of providing image and display apparatus applying the same
US20170249120A1 (en) Sharing of Multimedia Content
US20150189231A1 (en) Video conferencing system
WO2018054349A1 (zh) 数据发送方法、数据接收方法及其装置和系统
CN116962613A (zh) 数据传输方法及装置、计算机设备、存储介质
US20240181340A1 (en) Display apparatus, server apparatus and control method thereof
CN113014940A (zh) 一种直播优化方法和装置
KR20240082771A (ko) 디스플레이 장치, 서버 장치 및 그 제어 방법
WO2024117479A1 (ko) 디스플레이 장치, 서버 장치 및 그 제어 방법