KR102419249B1 - 오디오 및 비디오를 동기시키기 위한 시스템 및 방법 - Google Patents

오디오 및 비디오를 동기시키기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102419249B1
KR102419249B1 KR1020207026014A KR20207026014A KR102419249B1 KR 102419249 B1 KR102419249 B1 KR 102419249B1 KR 1020207026014 A KR1020207026014 A KR 1020207026014A KR 20207026014 A KR20207026014 A KR 20207026014A KR 102419249 B1 KR102419249 B1 KR 102419249B1
Authority
KR
South Korea
Prior art keywords
video
audio
audio samples
volume
data
Prior art date
Application number
KR1020207026014A
Other languages
English (en)
Other versions
KR20210002459A (ko
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 저장 진셍 일렉트로닉스 테크놀러지 컴퍼니 리미티드
Publication of KR20210002459A publication Critical patent/KR20210002459A/ko
Application granted granted Critical
Publication of KR102419249B1 publication Critical patent/KR102419249B1/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/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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • H04N21/43072Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of multiple content streams on the same device
    • 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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4305Synchronising client clock from received content stream, e.g. locking decoder clock with encoder clock, extraction of the PCR packets
    • 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/438Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
    • H04N21/4382Demodulation or channel decoding, e.g. QPSK demodulation
    • 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/439Processing of audio elementary streams
    • H04N21/4392Processing of audio elementary streams involving audio buffer management
    • 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/47End-user applications
    • H04N21/485End-user interface for client configuration
    • H04N21/4852End-user interface for client configuration for modifying audio parameters, e.g. switching between mono and stereo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8106Monomedia components thereof involving special audio data, e.g. different tracks for different languages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/816Monomedia components thereof involving special video data, e.g 3D video
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/04Synchronising
    • H04N5/06Generation of synchronising signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

본 개시는 오디오와 비디오를 동기시키기 위한 시스템들 및 방법들에 관한 것이다. 시스템들 및 방법들은: 비디오 프레임들의 시퀀스 및 오디오 샘플들의 시퀀스를 포함한 데이터 스트림을 획득하는 것; 비디오 프레임들의 시퀀스를 비디오 채널에 입력하는 것으로서, 상기 비디오 프레임들의 시퀀스는 비디오 채널로부터 처리되고 출력되는, 상기 비디오 프레임들의 시퀀스를 비디오 채널에 입력하는 것; 처리를 위해, 상기 오디오 샘플들의 시퀀스를 오디오 채널에 입력하는 것으로서, 상기 오디오 채널은 처리된 오디오 샘플들을 버퍼링하도록 구성된 데이터 버퍼를 포함하고, 상기 데이터 버퍼의 볼륨 임계값은 하나 이상의 연속 비디오 프레임들을 처리하기 위한 시간에 따라 결정되는, 상기 오디오 샘플들의 시퀀스를 오디오 채널에 입력하는 것; 상기 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값을 초과한다고 결정하는 것; 및 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값을 초과한다는 결정에 응답하여, 오디오 채널로부터 버퍼링된 오디오 샘플들을 출력하는 것을 포함한 동작들을 수행할 수 있다.

Description

오디오 및 비디오를 동기시키기 위한 시스템 및 방법
관련 출원들에 대한 상호-참조
본 출원은 2018년 2월 11일에 출원된, 중국 출원 번호 제201810141325.X호에 대한 우선권을 주장하며, 그 전체 내용은 여기에서 참조로서 통합된다.
기술 분야
본 개시는 일반적으로 멀티미디어 기술들에 관한 것이며, 특히 오디오 및 비디오를 동기화하기 위한 시스템들 및 방법들에 관한 것이다.
멀티미디어 콘텐트들(예컨대, 텔레비전 방송들, 영화 재생들 등)은 일반적으로 풍부한 오디오 및 비디오 정보를 포함한다. 오디오 및 비디오 데이터가 단말기(예컨대, 스마트폰, 텔레비전 등)로 전달될 ‹š, 오디오 데이터는 처리를 위해 오디오 채널에 입력되고 재생을 위해 오디오 재생기(예컨대, 단말기의 라우드스피커)로 출력될 수 있으며, 비디오 데이터는 처리를 위해 비디오 채널에 입력되고 그 후 디스플레이를 위해 비디오 디스플레이(예컨대, 단말기의 디스플레이 스크린)로 출력될 수 있다. 일반적으로, 비디오 데이터 처리는 오디오 데이터 처리보다 훨씬 많은 시간이 들 수 있다. 따라서, 오디오 데이터 및 비디오 데이터는 때때로 동기화되지 않으며, 이것은 사용자 경험에 영향을 줄 수 있다.
현재, 오디오 및 비디오의 비동기화 문제를 해결하기 위해, 하나의 접근법은 동기화 식별자를 사용하는 것이다. 구체적으로, 오디오 데이터는 오디오 버퍼에 입력될 수 있으며, 비디오 데이터는 비디오 버퍼에 입력될 수 있다. 오디오 데이터 및 비디오 데이터가 동기적인지 여부는 동기화 식별자에 따라 결정될 수 있다. 오디오 데이터 및 비디오 데이터가 동기화되지 않았다고 결정되면, 오디오 버퍼 및 비디오 버퍼는 재초기화될 수 있다. 그러나, 오디오 버퍼 및 비디오 버퍼의 재초기화는 오디오 데이터 및 비디오 데이터를 재생하는데 불연속성을 야기하여, 추가로 열악한 사용자 경험을 야기할 수 있다. 게다가, 비디오 채널에서의 비디오 데이터가 하나 이상의 비디오 프레임들을 손실한다면, 출력된 오디오 데이터는 출력된 비디오 데이터에 매칭될 수 없어서, 오디오 데이터 및 비디오 데이터를 재생하는데 실패를 야기할 수 있다.
그러므로, 오디오 및 비디오의 동기화를 구현하기 위한 시스템들 및 방법들을 제공하는 것이 바람직하다.
본 개시의 일 양상에서, 오디오 및 비디오를 동기화하기 위한 시스템이 제공된다. 시스템은 적어도 하나의 저장 장치 및 상기 적어도 하나의 저장 장치와 통신하는 적어도 하나의 프로세서를 포함할 수 있다. 상기 적어도 하나의 저장 장치는 명령들의 세트를 포함할 수 있다. 명령들의 세트를 실행할 때, 적어도 하나의 프로세서는 시스템으로 하여금 비디오 프레임들의 시퀀스 및 오디오 샘플들의 시퀀스를 포함한 데이터 스트림을 획득하는 것을 포함한 동작들을 수행하도록 구성될 수 있다. 상기 적어도 하나의 프로세서는 또한 시스템으로 하여금 비디오 프레임들의 시퀀스를 비디오 채널에 입력하는 것을 포함하며, 처리를 위해 오디오 채널로 오디오 샘플들의 시퀀스를 입력하는 것을 포함한 동작들을 수행하도록 구성될 수 있다. 비디오 프레임들의 시퀀스는 비디오 채널에서 처리되며 비디오 채널로부터 출력될 수 있다. 상기 오디오 채널은 처리된 오디오 샘플들을 버퍼링하도록 구성된 데이터 버퍼를 포함할 수 있다. 데이터 버퍼의 볼륨 임계값은 비디오 프레임들의 시퀀스의 하나 이상의 연속 비디오 프레임들을 처리하기 위한 시간에 따라 결정될 수 있다. 하나 이상의 연속 비디오 프레임들은 버퍼링된 오디오 샘플들에 대응할 수 있다. 적어도 하나의 프로세서는 또한 시스템으로 하여금 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값을 초과한다고 결정하는 것, 및 상기 버퍼링된 오디오 샘플들의 데이터 볼륨이 데이터 버퍼의 볼륨 임계값을 초과한다는 결정에 응답하여, 오디오 채널로부터 버퍼링된 오디오 샘플들을 출력하는 것을 포함한 동작들을 수행하도록 구성될 수 있다.
몇몇 실시예들에서, 데이터 버퍼의 볼륨 임계값은 비디오 채널에서의 하나의 비디오 프레임이 처리될 때 버퍼링될 필요가 있는 오디오 샘플들의 데이터 볼륨과 동일할 수 있다.
몇몇 실시예들에서, 상기 적어도 하나의 프로세서는 또한 시스템으로 하여금 오디오 샘플들을 출력하기 위한 하나 이상의 출력 명령들을 수신하는 것, 및 상기 버퍼링된 오디오 샘플들의 데이터 볼륨이 데이터 버퍼의 볼륨 임계값을 초과한다는 결정에 응답하여, 상기 하나 이상의 수신된 출력 명령들에 기초하여 오디오 채널로부터 버퍼링된 오디오 샘플들을 출력하는 것을 포함한 부가적인 동작들을 수행하도록 구성될 수 있다.
몇몇 실시예들에서, 상기 적어도 하나의 프로세서는 또한 시스템으로 하여금 제 1 그룹의 연속 비디오 프레임들을 처리하기 위한 제 1 시간 및 제 2 그룹의 연속 비디오 프레임들을 처리하기 위한 제 2 시간 사이에서의 시간 차를 결정하는 것을 포함한 부가적인 동작들을 수행하도록 구성될 수 있다. 상기 제 1 그룹의 연속 비디오 프레임들의 프레임 카운트는 제 2 그룹의 연속 비디오 프레임들의 프레임 카운트와 동일할 수 있다. 상기 제 1 그룹의 연속 비디오 프레임들은 처리될 비디오 프레임들을 포함할 수 있으며 상기 제 2 그룹의 연속 비디오 프레임들은 처리된 비디오 프레임들을 포함할 수 있다. 상기 적어도 하나의 프로세서는 또한 시스템으로 하여금 시간 차가 제 1 시간 임계값보다 크다는 결정에 응답하여, 데이터 버퍼의 볼륨 임계값을 증가시키거나, 시간 차가 제 2 시간 임계값 미만이라는 결정에 응답하여, 데이터 버퍼의 볼륨 임계값을 감소시키는 것을 포함한 부가적인 동작들을 수행하도록 구성될 수 있다.
몇몇 실시예들에서, 상기 제 2 시간 임계값은 상기 제 1 시간 임계값과 동일할 수 있다.
몇몇 실시예들에서, 데이터 버퍼의 볼륨 임계값을 증가시키면, 상기 적어도 하나의 프로세서는 시스템으로 하여금: 볼륨 임계값의 증분으로서 시간 차에 대응하는 오디오 샘플들의 제 2 데이터 볼륨을 지정하는 것; 상기 볼륨 임계값의 증분이 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨을 초과하는지를 결정하는 것; 및 상기 볼륨 임계값의 증분이 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨보다 작다는 결정에 응답하여, 볼륨 임계값의 증분만큼 볼륨 임계값을 증가시킴으로써 업데이트된 볼륨 임계값을 결정하는 것을 포함한 부가적인 동작들을 수행하도록 구성될 수 있다.
몇몇 실시예들에서, 상기 적어도 하나의 프로세서는 또한 상기 시스템으로 하여금 볼륨 임계값의 증분이 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨을 초과한다는 결정에 응답하여, 제 1 그룹의 연속 비디오 프레임들이 비디오 채널로부터 출력될 때 하나의 비디오 프레임을 폐기하는 것을 포함한 부가적인 동작들을 수행하도록 구성될 수 있다.
몇몇 실시예들에서, 상기 폐기된 비디오 프레임은 처리되지 않은 비디오 프레임일 수 있다.
몇몇 실시예들에서, 데이터 버퍼의 볼륨 임계값을 감소시키면, 상기 적어도 하나의 프로세서는 시스템으로 하여금: 볼륨 임계값의 감소분으로서 시간 차에 대응하는 오디오 샘플들의 제 3 데이터 볼륨을 지정하는 것; 상기 볼륨 임계값의 감소분이 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨을 초과하는지를 결정하는 것; 및 볼륨 임계값의 감소분이 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨보다 작다는 결정에 응답하여, 볼륨 임계값의 감소분만큼 볼륨 임계값을 감소시킴으로써 업데이트된 볼륨 임계값을 결정하는 것을 포함한 부가적인 동작들을 수행하도록 구성될 수 있다.
몇몇 실시예들에서, 상기 적어도 하나의 프로세서는 또한 시스템으로 하여금 볼륨 임계값의 감소분이 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨을 초과한다는 결정에 응답하여, 제 1 그룹의 연속 비디오 프레임들이 비디오 채널로부터 출력될 때 하나의 비디오 프레임을 복사하는 것을 포함한 부가적인 동작들을 수행하도록 구성될 수 있다.
몇몇 실시예들에서, 상기 복사된 비디오 프레임은 처리된 비디오 프레임일 수 있다.
몇몇 실시예들에서, 상기 데이터 버퍼는 또한 제 2 볼륨 임계값 및 제 3 볼륨 임계값을 포함할 수 있다. 상기 제 2 볼륨 임계값 및/또는 상기 제 3 볼륨 임계값은 하나의 비디오 프레임을 송신하거나 또는 디스플레이하기 위한 볼륨 임계값 및 시간에 관한 것일 수 있다.
몇몇 실시예들에서, 상기 적어도 하나의 프로세서는 시스템으로 하여금 비디오 채널에 입력된 비디오 프레임들의 시퀀스의 적어도 일부분의 입력 레이트 및 비디오 채널로부터 출력된 비디오 프레임들의 시퀀스의 적어도 일부분의 출력 레이트를 획득하는 것; 및 상기 입력 레이트가 상기 출력 레이트보다 큰지를 결정하는 것을 포함한 부가적인 동작들을 수행하도록 구성될 수 있다.
몇몇 실시예들에서, 상기 적어도 하나의 프로세서는 또한 시스템으로 하여금 입력 레이트가 출력 레이트보다 크다는 결정에 응답하여, 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 제 3 볼륨 임계값을 초과하는지를 결정하는 것; 및 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 제 3 볼륨 임계값을 초과한다는 결정에 응답하여, 데이터 버퍼에 남아있는 오디오 샘플들의 데이터 볼륨이 제 2 볼륨 임계값을 초과하지 않도록 오디오 샘플들의 일부분을 삭제하는 것을 포함한 부가적인 동작들을 수행하도록 구성될 수 있다.
몇몇 실시예들에서, 상기 적어도 하나의 프로세서는 또한 시스템으로 하여금 입력 레이트가 출력 레이트보다 작다는 결정에 응답하여, 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값보다 작은지를 결정하는 것; 및 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값보다 작다는 결정에 응답하여, 데이터 버퍼에 남아있는 오디오 샘플들의 데이터 볼륨이 제 2 임계값보다 작지 않도록 데이터 버퍼로부터 오디오 샘플들을 출력하는 것을 정지시키는 것을 포함한 부가적인 동작들을 수행하도록 구성될 수 있다.
본 개시의 또 다른 양상에서, 오디오 및 비디오를 동기화하기 위한 방법이 제공된다. 상기 방법은 적어도 하나의 프로세서, 적어도 하나의 컴퓨터-판독 가능한 저장 매체, 및 네트워크에 연결된 통신 플랫폼을 갖는 컴퓨팅 장치 상에서 구현될 수 있다. 상기 방법은 비디오 프레임들의 시퀀스 및 오디오 샘플들의 시퀀스를 포함한 데이터 스트림을 획득하는 것을 포함할 수 있다. 상기 방법은 또한 비디오 프레임들의 시퀀스를 비디오 채널에 입력하는 것, 및 처리를 위해 오디오 채널로 오디오 샘플들의 시퀀스를 입력하는 것을 포함할 수 있다. 비디오 프레임들의 시퀀스는 비디오 채널에서 처리되며 비디오 채널로부터 출력될 수 있다. 오디오 채널은 처리된 오디오 샘플들을 버퍼링하도록 구성된 데이터 버퍼를 포함할 수 있다. 데이터 버퍼의 볼륨 임계값은 비디오 프레임들의 시퀀스의 하나 이상의 연속 비디오 프레임들을 처리하기 위한 시간에 따라 결정될 수 있다. 하나 이상의 연속 비디오 프레임들은 버퍼링된 오디오 샘플들에 대응할 수 있다. 상기 방법은 또한 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값을 초과한다고 결정하는 것; 및 상기 버퍼링된 오디오 샘플들의 데이터 볼륨이 데이터 버퍼의 볼륨 임계값을 초과한다는 결정에 응답하여, 오디오 채널로부터 버퍼링된 오디오 샘플들을 출력하는 것을 포함할 수 있다.
본 개시의 또 다른 양상에서, 비-일시적 컴퓨터-판독 가능한 저장 매체가 제공된다. 비-일시적 컴퓨터-판독 가능한 저장 매체는 적어도 하나의 세트의 명령들을 포함할 수 있다. 컴퓨팅 장치의 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 세트의 명령들은 비디오 프레임들의 시퀀스 및 오디오 샘플들의 시퀀스를 포함한 데이터 스트림을 획득하는 것을 포함하는 동작들을 수행하도록 적어도 하나의 프로세서에 명령할 수 있다. 상기 적어도 하나의 세트의 명령들은 또한 처리를 위해 비디오 프레임들의 시퀀스를 비디오 채널에 입력하는 것 및 오디오 채널로 오디오 샘플들의 시퀀스를 입력하는 것을 포함한 동작들을 수행하도록 적어도 하나의 프로세서에 명령할 수 있다. 상기 비디오 프레임들의 시퀀스는 비디오 채널에서 처리되며 비디오 채널로부터 출력될 수 있다. 상기 오디오 채널은 처리된 오디오 샘플들을 버퍼링하도록 구성된 데이터 버퍼를 포함할 수 있다. 데이터 버퍼의 볼륨 임계값은 비디오 프레임들의 시퀀스의 하나 이상의 연속 비디오 프레임들을 처리하기 위한 시간에 따라 결정될 수 있다. 하나 이상의 연속 비디오 프레임들은 버퍼링된 오디오 샘플들에 대응할 수 있다. 상기 적어도 하나의 세트의 명령들은 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값을 초과한다고 결정하는 것, 및 버퍼링된 오디오 샘플들의 데이터 볼륨이 데이터 버퍼의 볼륨 임계값을 초과한다는 결정에 응답하여, 오디오 채널로부터 버퍼링된 오디오 샘플들을 출력하는 것을 포함한 동작들을 수행하도록 적어도 하나의 프로세서에 명령할 수 있다.
본 개시의 또 다른 양상에서, 오디오 및 비디오를 동기화하기 위한 시스템이 제공된다. 상기 시스템은 비디오 프레임들의 시퀀스 및 오디오 샘플들의 시퀀스를 포함한 데이터 스트림을 획득하도록 구성된 획득 모듈을 포함할 수 있다. 상기 시스템은 또한 처리를 위해 비디오 프레임들의 시퀀스를 비디오 채널에 입력하며 오디오 샘플들의 시퀀스를 오디오 채널에 입력하도록 구성된 입력 모듈을 포함할 수 있다. 비디오 프레임들의 시퀀스는 비디오 채널에서 처리되며 비디오 채널로부터 출력될 수 있다. 오디오 채널은 처리된 오디오 샘플들을 버퍼링하도록 구성된 데이터 버퍼를 포함할 수 있다. 데이터 버퍼의 볼륨 임계값은 비디오 프레임들의 시퀀스의 하나 이상의 연속 비디오 프레임들을 처리하기 위한 시간에 따라 결정될 수 있다. 상기 하나 이상의 연속 비디오 프레임들은 버퍼링된 오디오 샘플들에 대응할 수 있다. 상기 시스템은 또한 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값을 초과한다고 결정하도록 구성된 결정 모듈을 포함할 수 있다. 상기 시스템은, 버퍼링된 오디오 샘플들의 데이터 볼륨이 데이터 볼륨의 볼륨 임계값을 초과한다는 결정에 응답하여, 오디오 채널로부터 버퍼링된 오디오 샘플들을 출력하도록 구성된 출력 모듈을 추가로 포함할 수 있다.
부가적인 특징들은 이어지는 설명에서 부분적으로 제시될 것이며, 부분적으로 다음 및 수반된 도면들의 검사시에 이 기술분야의 숙련자들에게 명백해질 것이며 예들의 생성 또는 동작에 의해 학습될 수 있다. 본 개시의 특징들은 이하에서 논의된 상세한 예들에 제시되는 방법론들, 수단들 및 조합들의 다양한 양상들의 실시 또는 사용에 의해 실현되고 달성될 수 있다.
본 발명은 오디오 및 비디오를 동기시키기 위한 시스템들 및 방법을 제공한다.
본 개시는 대표적인 실시예들에 대하여 추가로 설명된다. 이들 대표적인 실시예들은 도면들을 참조하여 상세하게 설명된다. 도면들은 일정한 비율이 아니다. 이들 실시예들은 비-제한적인 개략적 실시예들이며, 여기에서 유사한 참조 번호들은 도면들의 여러 뷰들 전체에 걸쳐 유사한 구조들을 나타낸다.
도 1은 본 개시의 몇몇 실시예들에 따른 대표적인 멀티미디어 콘텐트 처리 시스템을 예시한 개략도이다.
도 2는 본 개시의 몇몇 실시예들에 따른 컴퓨팅 장치의 대표적인 하드웨어 및/또는 소프트웨어 구성요소들을 예시한 개략도이다.
도 3은 본 개시의 몇몇 실시예들에 따른 이동 장치의 대표적인 하드웨어 및/또는 소프트웨어 구성요소들을 예시한 개략도이다.
도 4는 본 개시의 몇몇 실시예들에 따른 오디오 및 비디오의 동기화를 구현하기 위한 시스템의 대표적인 아키텍처이다.
도 5는 본 개시의 몇몇 실시예들에 따른 대표적인 처리 장치를 예시한 블록도이다.
도 6은 본 개시의 몇몇 실시예들에 따른 오디오 및 비디오의 동기화를 구현하기 위한 대표적인 프로세스를 예시한 흐름도이다.
도 7a는 본 개시의 몇몇 실시예들에 따른 데이터 버퍼의 볼륨 임계값을 조정하기 위한 대표적인 프로세스를 예시한 흐름도이다.
도 7b는 본 개시의 몇몇 실시예들에 따라 오디오 및 비디오가 동기화되지 않은 두 개의 조건들을 도시한다.
도 8은 본 개시의 몇몇 실시예들에 따른 데이터 버퍼의 대표적인 볼륨 임계값들을 예시한 개략도이다.
도 9는 본 개시의 몇몇 실시예들에 따른 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨을 제어하기 위한 대표적인 프로세스를 예시한 흐름도이다.
다음의 상세한 설명에서, 다수의 특정 세부사항들이 관련 있는 개시의 철저한 이해를 제공하기 위해 예들로서 제시된다. 그러나, 본 개시가 이러한 세부사항들 없이 실시될 수 있다는 것은 당업자들에게 명백해야 한다. 다른 경우, 본 개시의 양상들을 불필요하게 모호하게 하는 것을 피하기 위해, 잘 알려진 방법들, 절차들, 시스템들, 구성요소들 및/또는 회로들이 세부사항 없이 비교적 높은 수준에서 설명되었다. 개시된 실시예들에 대한 다양한 수정들은 당업자들에게 쉽게 나타날 것이며, 여기에서 정의된 일반적인 원리들은 본 개시의 사상 및 범위로부터 벗어나지 않고 다른 실시예들 및 응용들에 적용될 수 있다. 따라서, 본 개시는 도시된 실시예들에 제한되지 않으며, 청구항들과 일치하는 가장 넓은 범위에 부합된다.
여기에서 사용된 용어는 단지 특정한 예시적인 실시예들을 설명할 목적을 위한 것이며 제한을 위해 의도되지 않는다. 여기에서 사용된 바와 같이, 단수형 형태들("a", "an", 및 "the")은 문맥이 달리 명확하게 나타내지 않는다면, 복수형 형태들을 또한 포함하도록 의도될 수 있다. 용어들("포함하다" 및/또는 "포함하는", "포함시키다" 및/또는 "포함시키는")은, 본 명세서에서 사용될 때, 서술된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 구성요소들을 특정하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 구성요소들, 및/또는 그것의 그룹들의 존재 또는 부가를 배제하지 않는다는 것이 더욱 이해될 것이다.
여기에서 사용된 용어("시스템", "유닛", "모듈", 및/또는 "블록")는 오름차순으로 상이한 레벨의 상이한 구성요소들, 요소들, 부분들, 섹션 또는 어셈블리를 구별하기 위한 하나의 방법이라는 것이 이해될 것이다. 그러나, 용어들은 그것들이 동일한 목적을 달성한다면 또 다른 표현으로 대체될 수 있따.
본 개시에서 설명된 모듈들(또는 유닛들, 블록들, 유닛들)은 소프트웨어 및/또는 하드웨어 모듈들로서 구현될 수 있으며 임의의 유형의 비-일시적 컴퓨터-판독 가능한 매체 또는 다른 저장 장치에 저장될 수 있다. 몇몇 실시예들에서, 소프트웨어 모듈은 컴파일링되며 실행 가능한 프로그램으로 연결될 수 있다. 소프트웨어 모듈들은 다른 모듈들로부터 또는 그것들 자체로부터 호출 가능할 수 있으며, 및/또는 검출된 이벤트들 또는 인터럽트들에 응답하여 호출될 수 있다는 것이 이해될 것이다. 컴퓨팅 장치들 상에서의 실행을 위해 구성된 소프트웨어 모듈들은, 컴팩트 디스크, 디지털 비디오 디스크, 플래시 드라이브, 자기 디스크, 또는 임의의 다른 유형의 매체와 같은 컴퓨터-판독 가능한 매체상에서, 또는 디지털 다운로드로서 제공될 수 있다(및 설치, 압축 해제, 또는 실행 이전 복호화를 요구하는 압축된 또는 설치 가능한 포맷으로 원래 저장될 수 있다). 이러한 소프트웨어 코드는, 컴퓨팅 장치에 의한 실행을 위해, 실행 컴퓨팅 장치의 메모리 장치 상에, 부분적으로 또는 전체적으로 저장될 수 있다. 소프트웨어 명령들은 EPROM과 같은, 펌웨어에 내장될 수 있다. 하드웨어 모듈들(예컨대, 회로들)에는 게이트들 및 플립-플롭들과 같은, 연결된 또는 결합된 논리 유닛들이 포함될 수 있으며, 및/또는 프로그램 가능한 게이트 어레이들 또는 프로세서들과 같은, 프로그램 가능한 유닛들이 포함될 수 있다는 것이 더욱 이해될 것이다. 여기에서 설명된 모듈들 또는 컴퓨팅 장치 기능은 바람직하게는 하드웨어 모듈들로서 구현되지만, 또한 소프트웨어 모듈들일 수 있다. 일반적으로, 여기에서 설명된 모듈들은 그것들의 물리적 조직 또는 저장에도 불구하고 다른 모듈들과 조합되거나 또는 유닛들로 분할될 수 있는 논리 모듈들을 나타낸다.
일반적으로, 여기에서 사용된 바와 같이 단어("모듈들", "서브-모듈", "유닛", 또는 "블록")는 하드웨어 또는 펌웨어에 내장된 로직, 또는 소프트웨어 명령들의 모음을 나타낸다. 여기에서 설명된 모듈, 유닛, 또는 블록은 소프트웨어 및/또는 하드웨어로서 구현될 수 있으며 임의의 유형의 비-일시적 컴퓨터-판독 가능한 매체 또는 다른 저장 장치에 저장될 수 있다. 몇몇 실시예들에서, 소프트웨어 모듈/유닛/블록은 컴파일링되며 실행 가능한 프로그램으로 연결될 수 있다. 소프트웨어 모듈들은 다른 모듈들/유닛들/블록들로부터 또는 그것들 자체로부터 호출 가능할 수 있으며, 및/또는 검출된 이벤트들 또는 인터럽트들에 응답하여 호출될 수 있다.
컴퓨팅 장치들 상에서의 실행을 위해 구성된 소프트웨어 모듈들/유닛들/블록들은 컴팩트 디스크, 디지털 비디오 디스크, 플래시 드라이브, 자기 디스크, 임의의 다른 유형의 매체와 같이, 컴퓨터-판독 가능한 매체상에 제공되거나, 디지털 다운로드(그리고 설치, 압축 해제, 또는 실행 이전 복호화가 필요한 압축 또는 설치 가능한 포맷으로 원래 저장될 수 있다) 할 수 있다. 이러한 소프트웨어 코드는, 컴퓨팅 장치에 의한 실행을 위해, 실행 컴퓨팅 장치의 메모리 장치상에, 부분적으로 또는 전체적으로 저장될 수 있다. 소프트웨어 명령들은 EPROM과 같은, 펌웨어에 내장될 수 있다. 하드웨어 모듈들/유닛들/블록들은 게이트들 및 플립-플롭들과 같은, 연결된 논리 구성요소들에 포함될 수 있으며, 및/또는 프로그램 가능한 게이트 어레이들 또는 프로세서들과 같은, 프로그램 가능한 유닛들이 포함될 수 있다는 것이 더욱 이해될 것이다. 여기에서 설명된 모듈들/유닛들/블록들 또는 컴퓨팅 장치 기능은 소프트웨어 모듈들/유닛들/블록들로서 구현될 수 있지만, 하드웨어 또는 펌웨어로 표현될 수 있다. 일반적으로, 여기에서 설명된 모듈들/유닛들/블록들은 그것들의 물리적 조직 또는 저장에도 불구하고 다른 모듈들/유닛들/블록들과 조합되거나 또는 서브-모듈들/서브-유닛들/서브-블록들로 분할될 수 있는 논리 모듈들/유닛들/블록들을 나타낸다. 설명은 시스템, 엔진, 또는 그것의 일부분에 적용 가능할 수 있다.
유닛, 엔진, 모듈 또는 블록이 또 다른 유닛, 엔진, 모듈, 또는 블록 "상에", "에 연결되거나" 또는 "에 결합되는" 것으로 나타내어질 때, 그것은 다른 유닛, 엔진, 모듈, 또는 블록 상에 바로 있고, 그것에 연결되거나 또는 결합될 수 있거나, 또는 매개 유닛, 엔진, 모듈, 또는 블록이, 맥락이 달리 명확하게 나타내지 않는다면, 존재할 수 있다는 것이 이해될 것이다. 여기에서 사용된 바와 같이, 용어("및/또는")는 연관된 나열된 아이템들 중 하나 이상의 임의의 및 모든 조합들을 포함한다.
이들 및 다른 특징들, 및 본 개시의 특성들, 뿐만 아니라 구조의 관련 요소들의 동작 방법들 및 기능들 그리고 부품과 제조 경제의 조합들이 수반된 도면들을 참조하여 다음 설명의 고려시 더 명백해질 수 있으며, 그 모두는 본 개시의 부분을 형성한다. 그러나, 도면들은 단지 예시 및 설명의 목적을 위한 것이며 본 개시의 범위를 제한하도록 의도되지 않음이 명확하게 이해될 것이다.
본 개시는 오디오 및 비디오를 동기화하기 위한 시스템을 및 방법들에 관한 것이다. 시스템들 및 방법들은 비디오 프레임들의 시퀀스 및 오디오 샘플들의 시퀀스를 포함한 데이터 스트림을 획득할 수 있다. 시스템들 및 방법들은 동시에 처리하기 위해 비디오 프레임들의 시퀀스를 비디오 채널에 입력하며, 오디오 샘플들의 시퀀스를 오디오 채널에 입력할 수 있다. 비디오 프레임들의 시퀀스는 비디오 채널에서 처리될 수 있다. 동시에, 처리된 오디오 샘플들은 오디오 채널의 데이터 버퍼에 버퍼링될 수 있다. 데이터 버퍼의 볼륨 임계값은 비디오 프레임들의 시퀀스의 하나 이상의 연속 비디오 프레임들을 처리하기 위한 시간에 따라 결정될 수 있다. 하나 이상의 연속 비디오 프레임들은 버퍼링된 오디오 샘플들에 대응할 수 있다. 시스템들 및 방법들은 또한 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값을 초과하는지를 결정할 수 있다. 버퍼링된 오디오 샘플들의 데이터 볼륨이 데이터 버퍼의 볼륨 임계값을 초과한다는 결정에 응답하여, 시스템들 및 방법들은 오디오 채널로부터 버퍼링된 오디오 샘플들을 출력할 수 있다. 동시에, 처리된 비디오 프레임들은 비디오 채널로부터 출력될 수 있다. 본 개시의 몇몇 실시예들에서, 데이터 버퍼내 처리된 오디오 샘플들을 버퍼링하는 것은 처리된 오디오 샘플들에 대응하는 비디오 프레임(들)을 처리하기 위한 시간을 허용할 수 있으며, 이것은 오디오 및 비디오의 동시적 출력을 달성할 수 있다.
몇몇 실시예들에서, 오디오 및 비디오의 동기화를 보장하기 위해, 오디오 및 비디오의 동기화에 대한 누적 주파수 차들의 영향이 고려된다. 시스템들 및 방법들은 또한 제 1 그룹의 연속 비디오 프레임들(예컨대, 처리될 n개의 연속 비디오 프레임들)을 처리하기 위한 제 1 시간 및 제 2 그룹의 연속 비디오 프레임들(예컨대, n개의 처리된 연속 비디오 프레임들)을 처리하기 위한 제 2 시간 사이에서의 시간 차를 결정할 수 있다. 시간 차가 제 1 시간 임계값(예컨대, 0)보다 크다면, 시스템들 및 방법들은 비디오 프레임들을 처리하기 위한 증가된 시간을 보상하기 위해 데이터 버퍼의 볼륨 임계값을 증가시킬 수 있다. 시간 차가 제 2 시간 임계값(예컨대, 0)보다 작다면, 시스템들 및 방법들은 비디오 프레임들을 처리하기 위한 감소된 시간을 보상하기 위해 데이터 버퍼의 볼륨 임계값을 감소시킬 수 있다.
몇몇 실시예들에서, 버퍼링된 오디오 샘플들의 데이터 볼륨에 대한 비디오 프레임(들)의 입력 레이트 및 비디오 프레임(들)의 출력 레이트의 레이트 차의 영향이 고려된다. 시스템들 및 방법들은 입력 레이트가 출력 레이트와 동일한지를 결정할 수 있다. 입력 레이트가 출력 레이트보다 크고 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 제 3 볼륨 임계값을 초과한다면, 시스템들 및 방법들은 데이터 버퍼에 남아있는 오디오 샘플들의 데이터 볼륨이 제 2 볼륨 임계값을 초과하지 않도록 오디오 샘플들의 일부분을 삭제할 수 있다. 입력 레이트가 출력 레이트보다 작고 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값 미만이면, 시스템들 및 방법들은 데이터 버퍼에 남아있는 오디오 샘플들의 데이터 볼륨이 제 2 볼륨 임계값보다 작지 않도록 데이터 버퍼로부터 오디오 샘플들을 출력하는 것을 정지시킬 수 있다.
도 1은 본 개시의 몇몇 실시예들에 따른 대표적인 멀티미디어 콘텐트 처리 시스템(100)을 예시한 개략도이다. 멀티미디어 콘텐트 처리 시스템(100)은 멀티미디어 콘텐트들에서 오디오 및 비디오를 동기화하기 위해 구성될 수 있다. 멀티미디어 콘텐트 처리 시스템(100)은 캡처 장치(110), 네트워크(120), 단말기(130), 처리 장치(140), 및 저장 장치(150)를 포함할 수 있다. 멀티미디어 콘텐트 처리 시스템(100)의 구성요소들은 다양한 방식들 중 하나 이상으로 서로 연결될 수 있다. 단지 예로서, 도 1에 예시된 바와 같이, 캡처 장치(110)는 네트워크(120)를 통해 처리 장치(140)에 연결될 수 있다. 또 다른 예로서, 캡처 장치(110)는 캡처 장치(110) 및 처리 장치(140)를 연결하는 점선들에서 양-방향 화살표에 의해 표시된 바와 같이 처리 장치(140)에 직접 연결될 수 있다. 추가 예로서, 저장 장치(150)는 직접 또는 네트워크(120)를 통해 처리 장치(140)에 연결될 수 있다. 추가 예로서, 단말기(130)는 직접(단말기(130) 및 처리 장치(140)를 연결하는 점선들로 양-방향 화살표에 의해 표시된 바와 같이) 또는 네트워크(120)를 통해 처리 장치(140)에 연결될 수 있다.
캡처 장치(110)는 하나 이상의 유형들의 멀티미디어 콘텐트들을 캡처하도록 구성될 수 있다. 멀티미디어 콘텐트(들)는 모션 화상들, 텔레비전 방송들, 영화 재생들 등을 포함할 수 있다. 멀티미디어 콘텐트(들)는 오디오 및 비디오 구성요소들을 포함할 수 있다. 몇몇 실시예들에서, 멀티미디어 콘텐트(들)는 비디오 및 오디오 데이터의 패킷들 또는 프레임들을 포함한 스트리밍된 콘텐트(들)의 형태로 배열될 수 있다. 몇몇 실시예들에서, 비디오 데이터는 비디오 디스플레이(예컨대, 단말기(130)의 디스플레이 스크린)에 의한 뒤이은 디스플레이를 위해 비디오 채널로 공급될 수 있으며, 오디오 데이터는 오디오 재생기(예컨대, 단말기(130)의 라우드스피커)를 통한 재생을 위해 오디오 채널로 공급될 수 있다. 캡처 장치(110)는 하나 이상의 카메라들이거나 또는 이를 포함할 수 있다. 몇몇 실시예들에서, 캡처 장치(110)는 디지털 카메라, 비디오 카메라, 보안 카메라, 웹 카메라, 스마트폰, 태블릿, 랩탑, 웹 카메라를 구비한 비디오 게이밍 콘솔, 다수의 렌지들을 갖는 카메라, 캠코더 등일 수 있다.
네트워크(120)는 정보 및/또는 데이터의 교환을 가능하게 할 수 있다. 몇몇 실시예들에서, 멀티미디어 콘텐트 처리 시스템(100)의 하나 이상의 구성요소들(예컨대, 캡처 장치(110), 단말기(130), 처리 장치(140), 저장 장치(150))는 네트워크(120)를 통해 멀티미디어 콘텐트 처리 시스템(10)에서의 또 다른 구성요소(들)에 정보 및/또는 데이터를 전송할 수 있다. 예를 들어, 처리 장치(140)는 네트워크(120)를 통해 캡처 장치(110)로부터 획득된 이미지를 처리할 수 있다. 다른 예로서, 캡처 장치(110)는 네트워크(120)를 통해 단말기(130)로부터 사용자 명령들을 획득할 수 있다. 몇몇 실시예들에서, 네트워크(120)는 임의의 유형의 유선 또는 무선 네트워크, 또는 그것의 조합일 수 있다. 단지 예로서, 네트워크(120)는 케이블 네트워크, 와이어라인 네트워크, 광섬유 네트워크, 전기통신 네트워크, 인트라넷, 인터넷, 근거리 네트워크(LAN), 광역 네트워크(WAN), 무선 근거리 네트워크(WLAN), 대도시 영역 네트워크(MAN), 광역 네트워크(WAN), 공중 전화 스위칭 네트워크(PSTN), 블루투스™ 네트워크, 지그비™ 네트워크, 근거리장 통신(NFC) 네트워크 등, 또는 그것의 임의의 조합을 포함할 수 있다. 몇몇 실시예들에서, 네트워크(120)는 하나 이상의 네트워크 액세스 포인트들을 포함할 수 있다. 예를 들어, 네트워크(120)는 기지국들 및/또는 인터넷 교환 포인트들(120-1, 120-2, ...,)과 같은 유선 또는 무선 네트워크 액세스 포인트들을 포함할 수 있으며, 이것을 통해 멀티미디어 콘텐트 처리 시스템(100)의 하나 이상의 구성요소들이 데이터 및/또는 정보를 교환하기 위해 네트워크(120)에 연결될 수 있다.
단말기(130)는 이동 장치(130-1), 태블릿 컴퓨터(130-2), 랩탑 컴퓨터(130-3) 등, 또는 그것의 임의의 조합을 포함한다. 몇몇 실시예들에서, 이동 장치(130-1)는 스마트 홈 장치, 착용 가능한 장치, 스마트 이동 장치, 가상 현실 장치, 증강 현실 장치 등, 또는 그것의 임의의 조합을 포함할 수 있다. 몇몇 실시예들에서, 스마트 홈 장치는 스마트 조명 장치, 지능형 전기 장치의 제어 장치, 스마트 모니터링 장치, 스마트 텔레비전, 스마트 비디오 카메라, 인터폰 등, 또는 그것의 임의의 조합을 포함할 수 있다. 몇몇 실시예들에서, 착용 가능한 장치는 팔찌, 풋기어, 안경, 헬멧, 시계, 의류, 백팩, 액세서리 등, 또는 그것의 임의의 조합을 포함할 수 있다. 몇몇 실시예들에서, 스마트 이동 장치는 스마트폰, 개인용 디지털 보조기(PDA), 게이밍 장치, 내비게이션 장치, 판매 시점 관리(POS) 장치 등, 또는 그것의 임의의 조합을 포함할 수 있다. 몇몇 실시예들에서, 가상 현실 장치 및/또는 증강 현실 장치는 가상 현실 헬멧, 가상 현실 안경, 가상 현실 패치, 증강 현실 헬멧, 증강 현실 안경, 증강 현실 패치 등, 또는 그것의 임의의 조합을 포함할 수 있다. 예를 들어, 가상 현실 장치 및/또는 증강 현실 장치는 Google Glass™, Oculus Rift™, HoloLens™, Gear VR™ 등을 포함할 수 있다. 몇몇 실시예들에서, 단말기(130)는 캡처 장치(110)를 원격으로 동작시킬 수 있다. 몇몇 실시예들에서, 단말기(130)는 무선 연결을 통해 캡처 장치(110)를 동작시킬 수 있다. 몇몇 실시예들에서, 단말기(130)는 사용자에 의해 입력된 정보 및/또는 명령들을 수신하며, 수신된 정보 및/또는 명령들을 네트워크(120)를 통해 캡처 장치(110)에 또는 처리 장치(140)에 전송할 수 있다. 몇몇 실시예들에서, 단말기(130)는 처리 장치(140)의 부분일 수 있다. 몇몇 실시예들에서, 단말기(130)는 생략될 수 있다.
몇몇 실시예들에서, 처리 장치(140)는 캡처 장치(110), 단말기(130), 또는 저장 장치(150)로부터 획득된 데이터를 처리할 수 있다. 예를 들어, 처리 장치(140)는 비디오 프레임들의 시퀀스 및 제 2의 오디오 샘플들을 포함한 멀티미디어 데이터 스트림을 획득할 수 있다. 또 다른 예로서, 처리 장치(140)는 비디오 프레임들의 시퀀스 및/또는 오디오 샘플들의 시퀀스를 처리할 수 있다. 처리 장치(140)는 처리된 비디오 프레임들 및 처리된 오디오 샘플들을 단말기(130)로 동시에 출력할 수 있다. 처리 장치(140)는 중앙 처리 유닛(CPU), 디지털 신호 프로세서(DSP), 시스템 온 칩(SoC), 마이크로제어기 유닛(MCU) 등, 또는 그것의 임의의 조합일 수 있다. 몇몇 실시예들에서, 처리 장치(140)는 단일 서버 또는 서버 그룹일 수 있다. 서버 그룹은 집중되거나 또는 분산될 수 있다. 몇몇 실시예들에서, 처리 장치(140)는 멀티미디어 콘텐트 처리 시스템(100)의 하나 이상의 다른 구성요소들에 국소적이거나 또는 그로부터 멀리 떨어질 수 있다. 예를 들어, 처리 장치(140)는 네트워크(120)를 통해 캡처 장치(110), 단말기(130), 및/또는 저장 장치(150)에 저장된 정보 및/또는 데이터를 액세스할 수 있다. 또 다른 예로서, 처리 장치(140)는 저장된 정보 및/또는 데이터를 액세스하기 위해, 캡처 장치(110), 단말기(130), 및/또는 저장 장치(150)에 직접 연결될 수 있다. 몇몇 실시예들에서, 처리 장치(140)는 클라우드 플랫폼상에 구현될 수 있다. 단지 예로서, 클라우드 플랫폼은 사설 클라우드, 공공 클라우드, 하이브리드 클라우드, 커뮤니티 클라우드, 분산형 클라우드, 클라우드-간, 다중-클라우드 등, 또는 그것의 임의의 조합을 포함할 수 있다.
저장 장치(150)는 데이터 및/또는 명령들을 저장할 수 있다. 몇몇 실시예들에서, 저장 장치(150)는 캡처 장치(110), 단말기(130) 및/또는 처리 장치(140)로부터 획득된 데이터 또는 이미지들을 저장할 수 있다. 몇몇 실시예들에서, 저장 장치(150)는 처리 장치(140)가 본 개시에서 설명된 대표적인 방법들을 수행하기 위해 실행하거나 또는 사용할 수 있는 데이터 및/또는 명령들을 저장할 수 있다. 몇몇 실시예들에서, 저장 장치(150)는 대용량 저장 장치, 착탈 가능한 저장 장치, 휘발성 판독-및-기록 메모리, 판독-전용 메모리(ROM) 등, 또는 그것의 임의의 조합을 포함할 수 있다. 대표적인 대용량 저장 장치는 자기 디스크, 광학 디스크, 고체-상태 드라이브 등을 포함할 수 있다. 대표적인 착탈 가능한 저장 장치는 플래시 드라이브, 플로피 디스크, 광학 디스크, 메모리 카드, 집 디스크, 자기 테이프 등을 포함할 수 있다. 대표적인 휘발성 판독-및-기록 메모리는 랜덤-액세스 메모리(RAM)를 포함할 수 있다. 대표적인 RAM은 동적 RAM(DRAM), 이중 데이터 레이트 동기식 동적 RAM(DDR SDRAM), 정적 RAM(SRAM), 사이리스터 RAM(T-RAM) 및 제로-커패시터 RAM(Z-RAM) 등을 포함할 수 있다. 대표적인 ROM은 마스크 ROM(MROM), 프로그램 가능한 ROM(PROM), 삭제 가능한 프로그램 가능 ROM(EPROM), 전기적으로 삭제 가능한 프로그램 ROM(EEPROM), 컴팩트 디스크 ROM(CD-ROM), 및 디지털 다목적 디스크 ROM 등을 포함할 수 있다. 몇몇 실시예들에서, 저장 장치(150)는 클라우드 플랫폼상에 구현될 수 있다. 단지 예로서, 클라우드 플랫폼은 사설 클라우드, 공공 클라우드, 하이브리드 클라우드, 커뮤니티 클라우드, 분산형 클라우드, 클라우드-간, 다중-클라우드 등, 또는 그것의 임의의 조합을 포함할 수 있다.
몇몇 실시예들에서, 저장 장치(150)는 멀티미디어 콘텐트 처리 시스템(100)의 하나 이상의 구성요소들(예컨대, 캡처 장치(110), 단말기(130), 처리 장치(140))과 통신하기 위해 네트워크(120)에 연결될 수 있다. 멀티미디어 콘텐트 처리 시스템(100)에서 하나 이상의 구성요소들은 네트워크(120)를 통해 저장 장치(150)에 저장된 데이터 또는 명령을 액세스할 수 있다. 몇몇 실시예들에서, 저장 장치(150)는 멀티미디어 콘텐트 처리 시스템(100)에서의 하나 이상의 구성요소들(예컨대, 캡처 장치(110), 단말기(130), 처리 장치(140))에 직접 연결되거나 또는 그것과 통신할 수 있다. 몇몇 실시예들에서, 저장 장치(150)는 캡처 장치(110), 또는 처리 장치(140)의 일부일 수 있다.
도 2는 본 개시의 몇몇 실시예들에 따른 컴퓨팅 장치(200)의 대표적인 하드웨어 및 소프트웨어 구성요소들을 예시한 개략도이다. 몇몇 실시예들에서, 캡처 장치(110), 단말기(130), 처리 장치(140)는 컴퓨팅 장치(200) 상에 구현될 수 있다. 예를 들어, 처리 장치(140)는 컴퓨팅 장치(200) 상에 구현되며 본 개시에 개시된 처리 장치(140)의 기능들을 수행하도록 구성될 수 있다.
컴퓨팅 장치(200)는 본 개시를 위한 멀티미디어 콘텐트 처리 시스템을 구현하기 위해 사용된 특수 목적 컴퓨터일 수 있다. 컴퓨팅 장치(200)는 여기에서 설명된 바와 같이 멀티미디어 콘텐트 처리 시스템의 임의의 구성요소를 구현하기 위해 사용될 수 있다. 예를 들어, 처리 장치(140)는 그것의 하드웨어, 소프트웨어 프로그램, 펌웨어, 또는 그것의 조합을 통해, 컴퓨팅 장치 상에 구현될 수 있다. 편리함을 위해 단지 하나의 이러한 컴퓨터가 도시되지만, 여기에서 설명된 바와 같이 이미지 처리에 관한 컴퓨터 기능들은 처리 로드를 분산시키기 위해, 다수의 유사한 플랫폼들 상에서 분산형 방식으로 구현될 수 있다.
컴퓨팅 장치(200)는, 예를 들어, 데이터 통신들을 가능하게 하기 위해 그것에 연결된 네트워크로 및/또는 그로부터 연결된 COM 포트(250)를 포함할 수 있다. 컴퓨팅 장치(200)는 또한, 프로그램 명령들을 실행하기 위해, 하나 이상의 프로세서들(또는 CPU들)의 형태로, 프로세서(220)를 포함할 수 있다. 대표적인 컴퓨팅 장치는 내부 통신 버스(210), 상이한 유형들의 프로그램 저장 유닛들 및 데이터 저장 유닛들(예컨대, 디스크(270), 판독 전용 메모리(ROM)(230), 랜덤 액세스 메모리(RAM)(240)), 컴퓨터 처리 및/또는 통신에 적용 가능한 다양한 데이터 파일들을 포함할 수 있다. 대표적인 컴퓨팅 장치는 또한 프로세서(220)에 의해 실행되도록 ROM(230), RAM(240), 및/또는 다른 유형의 비-일시적 저장 매체에 저장된 프로그램 명령들을 포함할 수 있다. 본 개시의 방법 및/또는 프로세스는 프로그램 명령들로서 구현될 수 있다. 컴퓨팅 장치(200)는 또한 컴퓨팅 장치(200) 및 다른 구성요소들 사이에서의 데이터 흐름들의 입력 및/또는 출력을 지원할 수 있는 I/O 장치(260)를 포함한다. 컴퓨팅 장치(200)는 또한 통신 네트워크를 통해 프로그램들 및 데이터를 수신할 수 있다.
단지 예시를 위해, 단지 하나의 CPU 및/또는 프로세서만이 컴퓨팅 장치(200)에서 설명된다. 그러나, 본 개시에서의 컴퓨팅 장치(200)는 또한 다수의 CPU들 및/또는 프로세서들을 포함할 수 있으며, 따라서 본 개시에서 설명된 바와 같이 하나의 CPU 및/또는 프로세서에 의해 수행되는 동작들 및/또는 방법 단계들은 또한 다수의 CPU들 및/또는 프로세서들에 의해 공동으로 또는 별개로 수행될 수 있다는 것이 주의되어야 한다. 예를 들어, 본 개시에서 컴퓨팅 장치(200)의 CPU 및/또는 프로세서가 단계 A 및 단계 B 양쪽 모두를 실행한다면, 단계 A 및 단계 B는 또한 컴퓨팅 장치(200)에서 공동으로 또는 별개로 두 개의 상이한 CPU들 및/또는 프로세서들에 의해 수행될 수 있다는 것이 이해되어야 한다(예컨대, 제 1 프로세서는 단계 A를 실행하며 제 2 프로세서는 단계 B를 실행하거나, 또는 제 1 및 제 2 프로세서들은 공동으로 단계들 A 및 B를 실행한다).
도 3은 본 개시의 몇몇 실시예들에 따른 이동 장치(300)의 대표적인 하드웨어 및/또는 소프트웨어 구성요소들을 예시한 개략도이다. 몇몇 실시예들에서, 이동 장치(300)는 단말기(130)에 대응하는 대표적인 실시예일 수 있다. 도 3에 예시된 바와 같이, 이동 장치(300)는 통신 플랫폼(310), 디스플레이(320), 그래픽 처리 유닛(GPU)(330), 중앙 처리 유닛(CPU)(340), I/O(350), 메모리(360), 및 저장 장치(390)를 포함할 수 있다. 몇몇 실시예들에서, 이에 제한되지 않지만 시스템 버스 또는 제어기(도시되지 않음)를 포함한, 임의의 다른 적절한 구성요소가 또한 이동 장치(300)에 포함될 수 있다.
몇몇 실시예들에서, 운영 시스템(370)(예컨대, iOS™, Android™, Windows Phone™ 등) 및 하나 이상의 애플리케이션들(380)은 CPU(340)에 의해 실행되도록 저장 장치(390)로부터 메모리(360)로 로딩될 수 있다. 애플리케이션들(380)은 이미지 처리에 관한 정보 또는 멀티미디어 콘텐트 처리 시스템(100)으로부터의 다른 정보를 수신하고 렌더링하기 위한 브라우저 또는 임의의 다른 적절한 모바일 앱들을 포함할 수 있다. 정보 스트림과의 사용자 상호작용들은 I/O(350)를 통해 달성되며 저장 장치(150), 캡처 장치(110) 및/또는 멀티미디어 콘텐트 처리 시스템(100)의 다른 구성요소들로 제공될 수 있다.
본 개시에서 설명된 다양한 모듈들, 유닛들, 및 그것들의 기능들을 구현하기 위해, 컴퓨터 하드웨어 플랫폼들이 여기에서 설명된 요소들 중 하나 이상을 위한 하드웨어 플랫폼(들)으로서 사용될 수 있다. 사용자 인터페이스 요소들을 갖는 컴퓨터는 개인용 컴퓨터(PC) 또는 임의의 다른 유형의 워크 스테이션 또는 단말기 장치를 구현하기 위해 사용될 수 있다. 컴퓨터는 또한 적절하게 프로그램된다면 시스템으로서 동작할 수 있다.
도 4는 본 개시의 몇몇 실시예들에 따라 오디오 및 비디오의 동기화를 구현하기 위한 시스템의 대표적인 아키텍처이다.
시스템(400)은 비디오 채널(401) 및 오디오 채널(403)을 포함할 수 있다. 비디오 프레임들의 시퀀스는 처리를 위해 비디오 채널(401)로 입력될 수 있다. 오디오 샘플들의 시퀀스는 처리를 위해 오디오 채널(403)로 입력될 수 있다. 비디오 채널(401)은 입력된 비디오 프레임(들)을 처리하도록 구성된 하나 이상의 비디오 처리 모듈들을 포함할 수 있다. 오디오 채널(403)은 입력된 오디오 샘플(들)을 처리하도록 구성된 하나 이상의 오디오 처리 모듈들을 포함할 수 있다. 오디오 채널(403)은 또한 처리된 오디오 샘플(들)을 버퍼링하도록 구성된 데이터 버퍼를 포함할 수 있다. 몇몇 실시예들에서, 오디오 샘플(들)을 처리하기 위한 시간은 대응하는 비디오 프레임(들)을 처리하기 위한 시간보다 크게 작을 수 있으며, 따라서, 오디오 샘플(들)을 처리하기 위한 시간은 대응하는 비디오 프레임(들)을 처리하기 위한 시간에 비교하여 무시해도 될 정도로 고려될 수 있다. 비디오 및 오디오의 동기화를 보장하기 위해, 처리된 오디오 샘플(들)은 오디오 채널로부터 직접 출력되지 않으며 데이터 버퍼에 버퍼링될 수 있다. 데이터 버퍼는 선입선출(FIFO) 버퍼, 이중 포트 랜덤 액세스 메모리(RAM) 등을 포함할 수 있다. 몇몇 실시예들에서, 볼륨 임계값은 데이터 버퍼를 위해 설정될 수 있다. 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값 미만일 때, 부가적인 오디오 샘플(들)은 어떤 오디오 샘플도 데이터 버퍼로부터 출력되지 않는 동안 데이터 버퍼에 입력될 수 있다. 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값에 도달할 때, 부가적인 오디오 샘플(들)은 계속해서 데이터 버퍼에 입력될 수 있고 버퍼링된 오디오 샘플(들)은 데이터 버퍼로부터 출력될 수 있다.
시스템(400)은 또한 시간 차 결정 모듈(405) 및 버퍼 임계값 조정 모듈(407)을 포함할 수 있다. 시간 차 결정 모듈(405)은 제 1 그룹의 연속 비디오 프레임들(예컨대, 처리될 n개의 연속 비디오 프레임들)을 처리하기 위한 제 1 시간 및 제 2 그룹의 연속 비디오 프레임들(예컨대, n개의 처리된 연속 비디오 프레임들)을 처리하기 위한 제 2 시간 사이에서의 시간 차를 결정하도록 구성될 수 있다. 단지 예로서, 시간 차가 0과 같지 않다면, 시간 차 결정 모듈(405)은 임계값 조정 명령을 버퍼 임계값 조정 모듈(407)에 전송할 수 있다. 버퍼 임계값 조정 모듈(407)은 임계값 조정 명령에 응답하여, 오디오 및 비디오의 동기화를 보장하고, 달성하거나, 또는 개선하기 위해 데이터 버퍼의 볼륨 임계값을 조정할 수 있다. 볼륨 임계값의 조정에 관한 세부사항들은 본 개시에서의 다른 곳에서(예컨대, 도 7a 및 그것의 설명들) 발견될 수 있다.
시스템(400)은 레이트 차 결정 모듈(409) 및 버퍼 데이터 볼륨 조정 모듈(411)을 추가로 포함할 수 있다. 레이트 차 결정 모듈(409)은 비디오 채널에 입력된 비디오 프레임들의 입력 레이트 및 비디오 채널로부터 출력된 비디오 프레임들의 출력 레이트 사이에서의 레이트 차를 결정하도록 구성될 수 있다. 단지 예로서, 레이트 차가 0과 같지 않다면, 레이트 차 결정 모듈(409)은 데이터 볼륨 조정 명령을 버퍼 데이터 볼륨 조정 모듈(411)에 전송할 수 있다. 버퍼 데이터 볼륨 조정 모듈(411)은 데이터 볼륨 조정 명령에 응답하여, 데이터 버퍼에 남아있는 오디오 샘플들의 데이터 볼륨이 범위 임계값 내에(예컨대, 제 1 볼륨 임계값 및 제 3 볼륨 임계값 내에) 있도록 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨을 조정할 수 있다. 버퍼링된 오디오 샘플들의 데이터 볼륨의 조정에 관한 세부사항들은 본 개시에서의 다른 곳에서(예컨대, 도 9 및 그것의 설명들) 발견될 수 있다.
시스템(400)은 피드백 및 제어 모듈(413)을 추가로 포함할 수 있다. 피드백 및 제어 모듈(413)은 버퍼 임계값 조정 모듈(407) 및 버퍼 데이터 볼륨 조정 모듈(411)의 작동 상태를 검출하도록 구성될 수 있다. 예를 들어, 피드백 및 제어 모듈(413)은 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨, 데이터 버퍼의 볼륨 임계값, 버퍼링된 오디오 샘플들이 볼륨 임계값을 초과하는 발생들의 카운트 등을 결정할 수 있다. 몇몇 실시예들에서, 비정상적인 신호가 검출되면(예컨대, 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값을 초과하는 발생들의 카운트가 미리 설정된 값보다 큰), 피드백 및 제어 모듈(413)은 오디오 채널로부터 오디오 샘플들을 및 비디오 채널로부터 비디오 프레임들을 출력하는 것을 정지시킬 수 있다.
시스템(400)은 신호 변조 모듈(415)을 추가로 포함할 수 있다. 신호 변조 모듈(415)은 복소 신호들을 생성하기 위해 출력된 오디오 샘플들 및 비디오 프레임들을 변조시키도록 구성될 수 있다. 몇몇 실시예들에서, 복소 신호들은 디지털 신호들, 아날로그 신호들 등을 포함할 수 있다. 변조는 위상 변조, 주파수 변조, 진폭 변조, 진폭-시프트 키잉(ASK), 위상-시프트 키잉(PSK), 직교 진폭 변조(QAM), 주파수-시프트 키잉(FSK), 직교 주파수 분할 다중화(OFDM) 등, 또는 그것의 임의의 조합을 포함할 수 있다. 그 후 복소 신호들이 출력될 수 있다.
상기 설명은 단지 예시의 목적들을 위해 제공되며, 본 개시의 범위를 제한하도록 의도되지 않는다는 것에 주의해야 한다. 이 기술분야에서의 통상의 기술자들을 위해, 다수의 변형들 및 수정들이 본 개시의 교시들 하에서 이루어질 수 있다. 그러나, 이들 변형들 및 수정들은 본 개시의 범위로부터 벗어나지 않는다. 몇몇 실시예들에서, 시스템(400)에서 둘 이상의 모듈들은 병렬로 구동할 수 있다. 예를 들어, 시간 차 결정 모듈(405) 및 버퍼 임계값 조정 모듈(407)이 시간 차를 결정하고 데이터 버퍼의 볼륨 임계값을 조정할 때, 레이트 차 결정 모듈(409) 및 버퍼 데이터 볼륨 조정 모듈(411)은 레이트 차를 결정하며 버퍼링된 오디오 샘플들의 데이터 볼륨을 조정할 수 있다. 동시에, 피드백 및 제어 모듈(413)은 버퍼 임계값 조정 모듈(407) 및 버퍼 데이터 볼륨 조정 모듈(411)의 작동 상태를 모니터링하고 조정할 수 있다.
도 5는 본 개시의 몇몇 실시예들에 따른 대표적인 처리 장치(140)를 예시한 블록도이다. 처리 장치(140)는 획득 모듈(502), 입력 모듈(504), 결정 모듈(506), 출력 모듈(508), 제 1 처리 모듈(510), 제 2 처리 모듈(512), 및 피드백 모듈(514)을 포함할 수 있다. 모듈들은 처리 장치(140)의 모두 또는 일부의 하드웨어 회로들일 수 있다. 모듈들은 또한 처리 장치(140)에 의해 판독되고 실행된 명령들의 세트 또는 애플리케이션으로서 구현될 수 있다. 뿐만 아니라, 모듈들은 하드웨어 회로들 및 애플리케이션/명령들의 임의의 조합일 수 있다. 예를 들어, 모듈들은 처리 장치(140)가 애플리케이션/명령들의 세트를 실행 중일 때 처리 장치(140)의 일부일 수 있다. 몇몇 실시예들에서, 대표적인 시스템(400)은 처리 장치(140) 상에 구현될 수 있다.
획득 모듈(502)은 멀티미디어 콘텐트 처리 시스템(100)에 관련된 정보 및/또는 데이터를 획득하도록 구성될 수 있다. 몇몇 실시예들에서, 획득 모듈(502)은 비디오 프레임들의 시퀀스 및 오디오 샘플들의 시퀀스를 포함한 데이터 스트림을 획득할 수 있다. 몇몇 실시예들에서, 데이터 스트림은 멀티미디어 데이터를 포함할 수 있으며, 이것은 각각, 비디오 채널 및 오디오 채널을 입력하기 전에 비디오 프레임들 및 오디오 샘플들로 분리될 필요가 있다. 대안적으로, 데이터 스트림은 별개의 비디오 프레임들 및 오디오 샘플들을 포함할 수 있으며, 이것은 각각 비디오 채널 및 오디오 채널로 직접 입력될 수 있다. 몇몇 실시예들에서, 비디오 프레임은 하나 이상의 오디오 샘플들에 대응할 수 있다. 여기에서, "~에 대응하는"은 비디오 프레임 및 오디오 샘플(들)이 대체로 동시에 수집되는 조건을 나타낼 수 있다. 몇몇 실시예들에서, 획득 모듈(502)은 캡처 장치(110), 단말기(130), 저장 장치(예컨대, 저장 장치(150)) 등, 또는 그것의 임의의 조합과 같은, 멀티미디어 콘텐트 처리 시스템(100)의 하나 이상의 구성요소들로부터 데이터 스트림을 획득할 수 있다. 대안적으로 또는 부가적으로, 획득 모듈(502)은 네트워크(120)를 통해 외부 소스(예컨대, 클라우드 디스크)로부터 데이터 스트림을 획득할 수 있다.
입력 모듈(504)은 비디오 데이터를 비디오 채널에 및 오디오 데이터를 오디오 채널에 입력하도록 구성될 수 있다. 몇몇 실시예들에서, 입력 모듈(504)은 비디오 프레임들의 시퀀스를 비디오 채널에 및 오디오 샘플들의 시퀀스를 오디오 채널에 동시에 입력할 수 있다. 몇몇 실시예들에서, 비디오 프레임들의 시퀀스는 비디오 채널에서 하나 이상의 비디오 처리 모듈들에 의해 차례대로 처리될 수 있다. 몇몇 실시예들에서, 오디오 채널은 처리된 오디오 샘플들을 버퍼링하도록 구성된 데이터 버퍼를 포함할 수 있다. 데이터 버퍼의 볼륨 임계값은 하나 이상의 연속 비디오 프레임들을 처리하기 위한 시간에 따라 결정될 수 있다. 데이터 버퍼의 볼륨 임계값에 관한 세부사항들은 본 개시에서의 다른 곳에서(예컨대, 동작(605) 및 그것의 설명들) 발견될 수 있다.
결정 모듈(506)은 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 데이터 버퍼의 볼륨 임계값을 초과하는지를 결정하도록 구성될 수 있다. 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 데이터 버퍼의 볼륨 임계값을 초과한다는 결정에 응답하여, 부가적인 오디오 샘플들은 데이터 버퍼에 계속해서 버퍼링될 수 있고 버퍼링된 오디오 샘플들은 데이터 버퍼로부터 차례대로 출력될 수 있다. 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 데이터 버퍼의 볼륨 임계값을 초과하지 않는다는 결정에 응답하여, 버퍼링된 오디오 샘플들이 데이터 버퍼로부터 출력되지 않는 동안 부가적인 오디오 샘플들은 계속해서 데이터 버퍼에 버퍼링될 수 있다.
출력 모듈(508)은 비디오 채널로부터 처리된 비디오 프레임(들)을 차례대로 출력하도록 구성될 수 있다. 출력 모듈(508)은 또한 오디오 채널로부터 버퍼링된 오디오 샘플(들)을 차례대로 출력하도록 구성될 수 있다. 몇몇 실시예들에서, 출력 모듈(508)은 오디오 샘플들을 출력하기 위한 하나 이상의 출력 명령들을 수신할 수 있다. 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값을 초과할 때, 출력 모듈(508)은 수신된 출력 명령들에 기초하여 오디오 채널로부터 그 버퍼링된 오디오 샘플들을 출력할 수 있다. 출력된 비디오 프레임(들)은 출력된 오디오 샘플(들)에 대응할 수 있다. 특별하게, 출력된 비디오 프레임(들)이 디스플레이될 때, 그 대응하는 출력된 오디오 샘플(들)은 동시에 재생될 수 있다.
제 1 처리 모듈(510)은 데이터 버퍼의 볼륨 임계값을 조정하도록 구성될 수 있다. 몇몇 실시예들에서, 제 1 처리 모듈(510)은 시스템의 시간 차 결정 모듈(405) 및/또는 버퍼 임계값 조정 모듈(47)에 대응할 수 있다. 몇몇 실시예들에서, 제 1 처리 모듈(510)은 제 1 그룹의 연속 비디오 프레임들(예컨대, 처리될 n개의 연속 비디오 프레임들)을 처리하기 위한 제 1 시간 및 제 2 그룹의 연속 비디오 프레임들(예컨대, n개의 처리된 연속 비디오 프레임들)을 처리하기 위한 제 2 시간 사이에서의 시간 차를 결정할 수 있다. 시간 차가 제 1 임계값(예컨대, 0)보다 크다면, 제 1 처리 모듈(510)은 시간 차에 따라 데이터 버퍼의 볼륨 임계값을 증가시킬 수 있다. 시간 차가 제 2 임계값(예컨대, 0)보다 작다면, 제 1 처리 모듈(510)은 시간 차에 따라 데이터 버퍼의 볼륨 임계값을 감소시킬 수 있다. 데이터 버퍼의 볼륨 임계값의 조정에 관한 세부사항들은 본 개시에서의 다른 곳에서(예컨대, 도 7a 및 그 설명들) 발견될 수 있다.
제 2 처리 모듈(512)은 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨을 조정하도록 구성될 수 있다. 몇몇 실시예들에서, 제 2 처리 모듈(512)은 시스템(400)의 레이트 차 결정 모듈(409) 및/또는 버퍼 데이터 볼륨 조정 모듈(411)에 대응할 수 있다. 몇몇 실시예들에서, 제 2 처리 모듈(512)은 비디오 채널에 입력된 비디오 프레임들의 입력 레이트 및 비디오 채널로부터 출력된 비디오 프레임들의 출력 레이트 사이에서의 레이트 차를 결정할 수 있다. 입력 레이트가 출력 레이트보다 크며 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 제 3 볼륨 임계값을 초과하면, 제 2 처리 모듈(512)은 데이터 버퍼에 남아있는 오디오 샘플들의 데이터 볼륨이 제 2 볼륨 임계값을 초과하지 않도록 오디오 샘플들의 일부분을 삭제할 수 있다. 입력 레이트가 출력 레이트보다 작고 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값보다 작다면, 제 2 처리 모듈(512)은 데이터 버퍼에 남아있는 오디오 샘플들의 데이터 볼륨이 제 2 볼륨 임계값보다 작지 않도록 데이터 버퍼로부터 오디오 샘플들을 출력하는 것을 정지시킬 수 있다. 버퍼링된 오디오 샘플들의 데이터 볼륨의 조정에 관한 세부사항들은 본 개시에서의 다른 곳에서(예컨대, 도 9 및 그것의 설명들) 발견될 수 있다.
피드백 모듈(514)은 처리 장치(140)의 하나 이상의 구성요소들의 작동 상태를 검출하도록 구성될 수 있다. 몇몇 실시예들에서, 피드백 모듈(514)은 시스템(400)의 피드백 및 제어 모듈(413)에 대응할 수 있다. 몇몇 실시예들에서, 피드백 모듈(514)은 제 1 처리 모듈(510) 및/또는 제 2 처리 모듈(512)의 작동 상태를 검출할 수 있다. 예를 들어, 피드백 모듈(514)은 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨, 데이터 버퍼의 볼륨 임계값, 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값을 초과하는 발생들의 카운트 등을 결정할 수 있다. 단지 예로서, 비정상적인 신호가 검출되면, (예컨대, 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값을 초과하는 발생들의 카운트가 미리 설정된 값보다 크면), 피드백 모듈(514)은 오디오 채널로부터 오디오 샘플들을 및 비디오 채널로부터 비디오 프레임들을 출력하는 것을 정지시킬 수 있다.
처리 장치(140)에서의 모듈들은 유선 연결 또는 무선 연결을 통해 서로 연결되거나 또는 통신할 수 있다. 유선 연결은 금속 케이블, 광 케이블, 하이브리드 캐이블 등, 또는 그것의 임의의 조합을 포함할 수 있다. 무선 연결은 근거리 네트워크(LAN), 광역 네트워크(WAN), 블루투스, 지그비, 근거리장 통신(NFC) 등, 또는 그것의 임의의 조합을 포함할 수 있다.
상기 설명은 단지 예시의 목적들을 위해 제공되며, 본 개시의 범위를 제한하도록 의도되지 않는다는 것에 주의해야 한다. 이 기술분야에서 통상의 기술자들을 위해, 다수의 변형들 및 수정들이 본 개시의 교시들 하에서 이루어질 수 있다. 그러나, 이들 변형들 및 수정들은 본 개시의 범위로부터 벗어나지 않는다. 몇몇 실시예들에서, 단일 모듈은 두 개 이상의 유닛들로 분할될 수 있다. 예를 들어, 입력 모듈(504)은 제 1 입력 유닛 및 제 2 입력 유닛으로 분할될 수 있다. 제 1 입력 유닛은 비디오 프레임(들)을 입력하도록 구성될 수 있으며 제 2 입력 유닛은 오디오 프레임(들)을 입력하도록 구성될 수 있다. 몇몇 실시예들에서, 처리 장치(140)는 하나 이상의 부가적인 모듈들을 추가로 포함할 수 있다. 예를 들어, 처리 장치(140)는 처리 장치(140)의 모듈들에 의해 생성된 데이터를 저장하도록 구성된 저장 모듈(도 4에서 도시되지 않음)을 추가로 포함할 수 있다.
도 6은 본 개시의 몇몇 실시예들에 따른 오디오 및 비디오의 동기화를 구현하기 위한 대표적인 프로세스를 예시한 흐름도이다. 단지 예시 목적을 위해, 처리 장치(140)는 프로세스(600)를 수행하기 위한 대상으로서 설명될 수 있다. 그러나, 이 기술분야에서의 통상의 기술자는 프로세스(600)가 또한 다른 엔티티들에 의해 수행될 수 있다는 것을 이해할 것이다. 예를 들어, 이 기술분야에서의 통상의 기술자는 프로세스(600)의 적어도 일부분이 또한 도 2에 예시된 바와 같이 컴퓨팅 장치(200) 또는 도 3에 예시된 바와 같이 이동 장치(300) 상에서 구현될 수 있다는 것을 이해할 것이다. 몇몇 실시예들에서, 프로세스(600)의 하나 이상의 동작들은 도 1에 예시된 바와 같이 멀티미디어 콘텐트 처리 시스템(100)에서 구현될 수 있다. 몇몇 실시예들에서, 프로세스(600)에서의 하나 이상의 동작들은 명령들의 형태로 저장 장치(150) 및/또는 저장 장치(예컨대, ROM(230), RAM(240) 등)에 저장되며, 처리 장치(140)(예컨대, 처리 장치(140)의 프로세서(220), 또는 처리 장치(140)의 하나 이상의 모듈들)에 의해 호출되고 및/또는 실행될 수 있다. 몇몇 실시예들에서, 명령들은 전자 전류 또는 전기 신호들의 형태로 송신될 수 있다.
(601)에서, 처리 장치(140)(예컨대, 획득 모듈(502))는 비디오 프레임들의 시퀀스 및 오디오 샘플들의 시퀀스를 포함한 데이터 스트림을 획득할 수 있다. 몇몇 실시예들에서, 데이터 스트림은 다중화기에 의해 병합되는, 조합된 비디오 및 오디오 데이터(또한 멀티미디어 데이터로서 불리움)를 포함할 수 있다. 이 경우에, 데이터 스트림은 각각, 비디오 채널 및 오디오 채널에 입력되기 전에, 역다중화기에 의해, 비디오 데이터 및 오디오 데이터로 분리될 수 있다. 대안적으로, 데이터 스트림은 별개의 비디오 데이터 및 오디오 데이터를 포함할 수 있으며, 이것은 각각 비디오 채널 및 오디오 채널에 직접 입력될 수 있다.
일반적으로, 비디오 및 오디오에서 캡처된 이벤트의 발생 시간을 고려하면, 비디오 데이터 및 오디오 데이터 간의 대응 관계가 존재할 수 있다. 예를 들어, 비디오 데이터(예컨대, 비디오 신호)는 수반한 또는 대응하는 오디오 데이터(예컨대, 오디오 신호)를 가질 수 있다. 몇몇 실시예들에서, 비디오 데이터는 비디오 프레임(들)으로서 표현될 수 있다. 비디오 프레임들은 선택된 레이트로 디스플레이될 비디오 데이터를 포함한 이미지들 또는 화상들의 개개의 프레임들을 나타낼 수 있다. 예를 들어, 30개의 비디오 프레임들이 초당 디스플레이될 수 있다. 몇몇 실시예들에서, 오디오 데이터(또한 오디오 샘플들로 불리움)는 블록들 또는 그룹들로 그룹핑될 수 있다. 몇몇 실시예들에서, 비디오 프레임은 오디오 프레임으로 처리되는 하나 이상의 오디오 샘플들에 대응할 수 있다. 단지 예로서, 초당 48,000개 오디오 샘플들 및 30개 비디오 프레임들이 있을 수 있다. 비디오 프레임은 본질적으로 1/30초를 차지할 수 있으며, 오디오 프레임은 비디오 프레임의 디스플레이 동안 재생되는 대응하는 1,600개 오디오 샘플들로서 정의될 수 있다. 상기 설명은 단지 예시 목적들을 위한 것이며, 본 개시의 범위를 제한하도록 의도되지 않는다는 것에 주의해야 한다. 몇몇 실시예들에서, 오디오의 상이한 인코딩 포맷들로 인해, 하나의 오디오 프레임은 다른 수 또는 카운트의 오디오 샘플들을 포함할 수 있다.
몇몇 실시예들에서, 처리 장치(140)는 캡처 장치(110), 단말기(130), 저장 장치(예컨대, 저장 장치(150)) 등, 또는 그것의 임의의 조합과 같은, 멀티미디어 콘텐트 처리 시스템(100)의 하나 이상의 구성요소들로부터 데이터 스트림을 획득할 수 있다. 대안적으로 또는 부가적으로, 처리 장치(140)는 네트워크(120)를 통해 외부 소스(예컨대, 클라우드 디스크)로부터 데이터 스트림을 획득할 수 있다.
몇몇 실시예들에서, 비디오 데이터를 송신하는 대역폭 요건들을 만족시키기 위해, 비디오 데이터는 인코딩되거나 또는 압축될 수 있다. 몇몇 실시예들에서, 복수의 화상 그룹들(GOP들)은, 예컨대 인코더에 의해, 비디오 데이터를 인코딩함으로써 생성될 수 있다. 화상 그룹(GOP)은, I-프레임들, P-프레임들, B-프레임들과 같은, 상이한 포맷들의 프레임들을 포함할 수 있다. I-프레임은 비디오 콘텐트의 완전한 화상을 저장할 수 있다. P-프레임은 이전 프레임과 상이한 정보만을 저장할 수 있다. B-프레임은 이전 프레임 및 다음 프레임과 상이한 정보만을 저장할 수 있다. 인코딩된 비디오 데이터는 인코딩 전에 원래 비디오 데이터의 순차적인 순서를 유지할 수 있다. 비디오 채널에 입력될 때, 인코딩된 비디오 프레임들은 디코딩되거나 또는 처리될 필요가 있다. P-프레임들 및 B-프레임들의 사용은 비디오 데이터를 압축하기 위한 효율적인 메커니즘을 제공할 수 있지만, 또한 비디오 데이터를 디코딩하는 복잡도를 증가시킬 수 있다는 것이 이해될 것이다. 따라서, 인코딩된 비디오 데이터의 처리/디코딩은 일반적으로 인코딩된 오디오 데이터의 것보다 훨씬 더 긴 시간이 걸릴 수 있다. 유사하게, 오디오 데이터는 송신될 때 데이터 볼륨을 감소시키기 위해 인코딩되거나 또는 압축될 수 있다. 인코딩된 오디오 데이터는 인코딩 전에 원래 오디오 데이터의 순차적인 순서를 유지할 수 있다. 오디오 채널에 입력될 때, 인코딩된 오디오 프레임들 또는 샘플들은 디코딩되거나 처리될 필요가 있다.
(603)에서, 처리 장치(140)(예컨대, 입력 모듈(504))는 비디오 프레임들의 시퀀스를 비디오 채널에 입력할 수 있다. 비디오 프레임들의 시퀀스는 비디오 채널에서 처리되며 그 후 비디오 채널로부터 출력될 수 있다. 몇몇 실시예들에서, 비디오 채널은 비디오 디코딩, 디노이징 등을 수행하도록 구성된 하나 이상의 비디오 처리 모듈들을 포함할 수 있다. 비디오 프레임은 비디오 처리 모듈(들)에 의해 처리될 수 있다. 비디오 프레임들에서 캡처된 이벤트의 시간 시퀀스 때문에, 비디오 프레임들의 시퀀스는 차례대로 처리되고 출력될 수 있다. 단지 예로서, 제 1 시간 포인트에서 비디오 채널에 입력된 제 1 비디오 프레임은 첫 번째로 비디오 처리 모듈(들)에 의해 처리될 수 있으며, 그 후 제 2 시간 포인트(제 1 시간 포인트 후)에서 비디오 채널에 입력된 제 2 비디오 프레임은 그 후 비디오 처리 모듈(들)에 의해 처리될 수 있다. 처리된 제 1 비디오 프레임은 먼저 비디오 채널로부터 출력될 수 있으며, 처리된 제 2 비디오 프레임이 그 다음에 비디오 채널로부터 출력될 수 있다. 배열은 선입선출(FIFO)로 불리울 수 있다.
(605)에서, 처리 장치(140)(예컨대, 입력 모듈(504))는 오디오 샘플들의 시퀀스를 처리를 위해 오디오 채널에 입력할 수 있다. 동작들(603 및 605)은 동시에 수행될 수 있다는 것이 주의되어야 한다. 유사하게, 오디오 샘플들의 시퀀스는 하나 이상의 오디오 처리 모듈들에 의해 차례대로 처리될 수 있다. 오디오 채널은 처리된 오디오 샘플들을 버퍼링하도록 구성된 데이터 버퍼를 포함할 수 있다. 몇몇 실시예들에서, 오디오 데이터를 처리하기 위한 시간은, 비디오 및 오디오의 동기화를 보장하기 위해, 비디오 데이터를 처리하기 위한 시간보다 크게 작을 수 있고, 처리된 오디오 샘플들은 한 번 처리된 오디오 채널로부터 직접 출력되지 않지만 데이터 버퍼에 버퍼링될 수 있다. 몇몇 실시예들에서, 오디오 채널에서 오디오 샘플(들)의 처리가 비디오 채널에서의 비디오 프레임(들)의 처리보다 훨씬 더 적은 시간이 걸리므로, 오디오 샘플(들)을 처리하기 위한 시간은 본 개시의 몇몇 실시예들에서 무시해도 될 정도로 간주될 수 있다. 비디오 프레임(들)을 처리하기 위한 시간은 비디오 프레임(들)에 대응하는 그 처리된 오디오 샘플들이 데이터 버퍼에 버퍼링되는 시간에 의해 보상될 수 있다.
몇몇 실시예들에서, 하나의 비디오 프레임을 처리하기 위한 시간은 대체로 일정할 수 있다. 데이터 버퍼의 볼륨 임계값은 비디오 프레임들의 시퀀스의 하나 이상의 연속 비디오 프레임들을 처리하기 위한 시간에 따라 결정될 수 있다. 하나 이상의 연속 비디오 프레임들은 버퍼링된 오디오 샘플들에 대응할 수 있다. 여기에서, "~에 대응하다"는, 하나 이상의 연속 비디오 프레임들이 디스플레이될 때, 버퍼링된 오디오 샘플들이 대체로 동시에 재생되는 조건을 나타낸다. 하나 이상의 연속 비디오 프레임들 및 버퍼링된 오디오 샘플들 사이에서 절대 동기화를 유지하는 것은 필요하지 않다. 예를 들어, 버퍼링된 오디오 샘플들은 하나 이상의 연속 비디오 프레임들이 디스플레이될 때 재생을 위해 출력되지 않은 하나 이상의 오디오 샘플들을 포함할 수 있다.
단지 예로서, 데이터 버퍼의 볼륨 임계값은 비디오 채널에서의 하나의 비디오 프레임이 처리될 때 버퍼링될 필요가 있는 오디오 샘플들의 데이터 볼륨과 동일할 수 있다. 여기에서, "버퍼링될 필요가 있는 오디오 샘플들"은 대응하는 비디오 프레임을 처리하기 위한 시간 동안 데이터 버퍼에 버퍼링된 오디오 샘플들을 나타낼 수 있다. 몇몇 실시예들에서, 처리 장치(140)는 하나의 비디오 프레임을 처리하기 위한 시간, 즉 비디오 채널로 비디오 프레임을 입력하는 것으로부터 비디오 채널로부터 비디오 프레임을 출력하기까지(예컨대, 비디오 프레임이 처리된 후) 경과한 시간을 결정할 수 있다. 하나의 비디오 프레임을 처리하기 위한 시간은 비디오 처리 모듈(들)의 처리 시간(들)에 의존할 수 있다. 처리 시간들은 상이한 비디오 표준들(예컨대, PAL 비디오, NTSC 비디오)에 대해 상이할 수 있다. 몇몇 실시예들에서, 특정한 비디오 표준(예컨대, PAL 비디오)에 대해, 하나의 비디오 프레임을 처리하기 위한 시간은 아래와 같이 식(1)에 따라 결정될 수 있다.
Figure 112020106778667-pct00001
여기에서 N은 비디오 처리 모듈들의 총 카운트를 나타내고; i는 제 i 비디오 처리 모듈을 나타내고;
Figure 112020106778667-pct00002
는 제 i 비디오 처리 모듈의 클록들의 카운트를 나타내며;
Figure 112020106778667-pct00003
는 제 i 비디오 처리 모듈의 클록 레이트를 나타내며; T0은 하나의 비디오 프레임을 처리하기 위한 시간을 나타낸다.
데이터 버퍼의 볼륨 임계값은 하나의 비디오 프레임을 처리하기 위한 시간에 기초하여 결정될 수 있다. 예를 들어, 데이터 버퍼의 볼륨 임계값은 아래와 같이 식(2)에 따라 결정될 수 있다.
TH0 = cap0 = Sa × N ×T0 (2)
여기에서 Sa는 오디오 샘플들의 샘플링 레이트를 나타내고; N은 단위 시간당(예컨대, 초당) 캡처 장치(110)에 의해 수집되거나 또는 캡처된 오디오 샘플들에 의해 차지된 비트들을 나타내고; cap0은 시간(T0) 내에서 버퍼링된 오디오 샘플들의 데이터 볼륨을 나타내며; TH0은 데이터 버퍼의 볼륨 임계값을 나타낸다. 몇몇 실시예들에서, N은 16과 같을 것이다.
몇몇 실시예들에서, 데이터 버퍼의 볼륨 임계값은 비디오 채널에서의 둘 이상의 하나의 비디오 프레임들이 처리될 때 버퍼링될 필요가 있는 오디오 샘플들의 데이터 볼륨과 같을 수 있다. 즉, 데이터 버퍼의 볼륨 임계값은 둘 이상의 비디오 프레임들을 처리하기 위한 시간에 기초하여 결정될 수 있다.
(607)에서, 처리 장치(140)(예컨대, 결정 모듈(506))는 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 볼륨 임계값을 초과하는지를 결정할 수 있다. 오디오 채널에서 처리된 오디오 샘플들은 차례대로, 예컨대 FIFO 순서로 데이터 버퍼에 버퍼링될 수 있다. 버퍼링된 오디오 샘플들의 데이터 볼륨(cap으로 표시됨)은 오디오 샘플들의 버퍼링에 따라 증가할 수 있다. 처리 장치(140)는 버퍼링된 오디오 샘플들의 데이터 볼륨(cap)이 볼륨 임계값(TH0)을 초과하는지를 결정할 수 있다. 버퍼링된 오디오 샘플들의 데이터 볼륨(cap)이 볼륨 임계값(TH0)을 초과한다는 결정에 응답하여, 처리 장치(140)는 동작(609)으로 진행할 수 있다.
(609)에서, 처리 장치(140)(예컨대, 출력 모듈(508))는 오디오 채널로부터 버퍼링된 오디오 샘플들을 출력할 수 있다. 몇몇 실시예들에서, 데이터 버퍼는 선입선출(FIFO) 버퍼, 이중 포트 랜덤 액세스 메모리(RAM) 등을 포함할 수 있다. 버퍼링된 오디오 샘플들의 데이터 볼륨(cap)이 볼륨 임계값(TH0)을 초과할 때, 처리 장치(140)는 오디오 채널로부터 버퍼링된 오디오 샘플들을 차례대로 출력할 수 있다. 몇몇 실시예들에서, 먼저 버퍼링되는 오디오 샘플(들)은 오디오 채널로부터 먼저 출력될 수 있다. 예를 들어, 제 1 오디오 샘플은 제 1 시간 포인트에서 데이터 버퍼에 버퍼링될 수 있으며, 제 2 오디오 샘플은 다음 시간 포인트에서 데이터 버퍼에 버퍼링될 수 있다. 제 1 오디오 샘플이 먼저 출력될 수 있고 제 2 오디오 샘플이 그 다음에 출력될 수 있다.
몇몇 실시예들에서, 처리 장치(140)는 오디오 샘플들을 출력하기 위한 하나 이상의 출력 명령들을 수신할 수 있다. 버퍼링된 오디오 샘플들의 데이터 볼륨(cap)이 볼륨 임계값(TH0)을 초과한다는 결정에 응답하여, 처리 장치(140)는 하나 이상의 출력 명령들에 기초하여 오디오 채널로부터 버퍼링된 오디오 샘플들을 출력할 수 있다. 몇몇 실시예들에서, 출력 명령(들)는 오디오 및 비디오의 동기화를 보장하기 위해 비디오 채널의 비디오 처리 모듈(들)에 의해 전송될 수 있다. 예를 들어, 비디오 처리 모듈(들)은 사전 설정된 주파수에 따라 출력 명령(들)를 전송할 수 있다. 단지 예로서, 비디오 프레임이 매 10 밀리초(ms)마다 출력되며 비디오 프레임이 10개 오디오 샘플들에 대응한다고 가정하면, 사전 설정된 주파수는 1ms로서 설정될 수 있다. 즉, 비디오 처리 모듈(들)은 매 1ms마다 출력 명령을 전송할 수 있다. 비디오 프레임이 비디오 채널로부터 출력될 때, 10개 오디오 샘플들이 오디오 채널로부터 동기식으로 출력될 수 있다. 사전 설정된 주파수에 대한 상기 설명들은 단지 예시 목적들을 위한 것이며, 본 개시의 범위를 제한하도록 의도되지 않는다는 것이 주의되어야 한다.
몇몇 실시예들에서, 오디오 샘플들은 처리를 위해 오디오 채널로 계속해서 입력될 수 있고, 처리된 오디오 샘플들은 데이터 버퍼에 계속해서 버퍼링될 수 있으며, 버퍼링된 오디오 샘플들은 오디오 채널(또는 데이터 버퍼)로부터 계속해서 출력될 수 있다. 동시에 비디오 프레임들은 처리를 위해 비디오 채널로 계속해서 입력될 수 있으며, 처리된 비디오 프레임들은 비디오 채널로부터 계속해서 출력될 수 있다.
본 개시의 몇몇 실시예들에서, 데이터 버퍼는 오디오 채널에서 처리된 오디오 샘플들을 버퍼링하기 위해 사용될 수 있다. 데이터 버퍼의 볼륨 임계값은 비디오 채널에서 하나 이상의 연속 비디오 프레임들을 처리하기 위한 시간에 기초하여 결정될 수 있다. 따라서, 데이터 버퍼에 남아있는 오디오 샘플들의 버퍼 시간은 대응하는 비디오 프레임(들)을 처리하기 위한 시간을 보상할 수 있으며, 이것은 오디오 및 비디오의 동기화를 달성할 수 있다.
프로세스(600)에 관한 상기 설명은 단지 예시의 목적들을 위해 제공되며, 본 개시의 범위를 제한하도록 의도되지 않는다는 것이 주의되어야 한다. 이 기술분야에서 통상의 기술자들을 위해, 다수의 변형들 및 수정들이 본 개시의 교시들 하에서 이루어질 수 있다. 그러나, 이들 변형들 및 수정들은 본 개시의 범위로부터 벗어나지 않는다. 몇몇 실시예들에서, 처리 장치(140)는 비정상적인 신호가 검출되는지를 결정할 수 있다. 비정상적인 신호가 검출된다는 결정에 응답하여, 처리 장치(140)는 오디오 채널로부터 오디오 샘플들을 및 비디오 채널로부터 비디오 프레임들을 출력하는 것을 정지시킬 수 있다. 몇몇 실시예들에서, 동작(609)후, 처리 장치(140)는 복소 신호들을 생성하기 위해 출력된 비디오 프레임들 및 오디오 샘플들을 변조할 수 있다. 몇몇 실시예들에서, 복소 신호들은 디지털 신호들, 아날로그 신호들 등을 포함할 수 있다. 변조는 위상 변조, 주파수 변조, 진폭 변조, 진폭-시프트 키잉(ASK), 위상-시프트 키잉(PSK), 직교 진폭 변조(QAM), 주파수-시프트 키잉(FSK), 직교 주파수 분할 다중화(OFDM) 등, 또는 그것의 임의의 조합을 포함할 수 있다. 처리 장치(140)는 복소 신호들을 출력할 수 있다.
몇몇 실시예들에서, 두 개의 비디오 프레임들을 처리하기 위한 시간은 정확하게 동일하지 않을 수 있다. 예를 들어, 제 1 비디오 프레임을 처리하기 위한 시간은 0.99999ms일 수 있으며, 제 2 비디오 프레임을 처리하기 위한 시간은 1.00001ms 일 수 있다. 두 개의 비디오 프레임들에 대해, 시간 차는 무시할 수 있다. 그러나, 다수의 비디오 프레임들에 대해, 누적 시간 차는 무시해도 될 정도가 아닐 수 있으며, 이것은 누적 주파수 차 효과로 불리운다. 이러한 상황하에서, 오디오 및 비디오는 동기화(싱크)가 되지 않을 수 있다. 도 7b는 오디오 및 비디오가 동기화되지 않은 두 개의 조건들을 도시한다. 도 7b에 도시된 바와 같이, 비디오 0은 n개의 처리된 연속 비디오 프레임들을 나타낸다. 오디오 1은 제 1 조건에서 n개의 처리된 연속 비디오 프레임들에 대응하는 복수의 처리된 오디오 샘플들을 나타낸다. 제 1 조건에서, 오디오 1은 비디오 0을 래그하며, 시간 차(△tn)가 존재한다. 오디오 2는 제 2 조건에서 n개의 처리된 연속 비디오 프레임들에 대응하는 복수의 처리된 오디오 샘플들을 나타낸다. 제 2 조건에서, 비디오 1은 오디오 2를 래그하며, 제 2 시간 차(
Figure 112020106778667-pct00004
)가 존재한다. 시간 차에 의해 야기된 비동기화를 정정하기 위해, 데이터 버퍼의 볼륨 임계값이, 예컨대 주기적으로 또는 비동기화의 정도가 임계값을 초과할 때 조정될 수 있다.
도 7a는 본 개시의 몇몇 실시예들에 따라 데이터 버퍼의 볼륨 임계값을 조정하기 위한 대표적인 프로세스를 예시한 흐름도이다. 단지 예시 목적을 위해, 처리 장치(140)는 프로세스(700)를 수행하기 위한 대상으로서 설명될 수 있다. 그러나, 이 기술분야에서의 통상의 기술자는 프로세스(700)가 또한 다른 엔티티들에 의해 수행될 수 있다는 것을 이해할 것이다. 예를 들어, 이 기술분야에서의 통상의 기술자는 프로세스(700)의 적어도 일부분이 또한 도 2에 예시된 바와 같은 컴퓨팅 장치(200) 또는 도 3에 예시된 바와 같이 이동 장치(300) 상에서 구현될 수 있다는 것을 이해할 것이다. 몇몇 실시예들에서, 프로세스(700)의 하나 이상의 동작들은 도 1에 예시된 바와 같이 멀티미디어 콘텐트 처리 시스템(100)에서 구현될 수 있다. 몇몇 실시예들에서, 프로세스(700)에서 하나 이상의 동작들은 명령들의 형태로 저장 장치(150) 및/또는 저장 장치(예컨대, ROM(230), RAM(240) 등)에 저장되며, 처리 장치(140)(예컨대, 처리 장치(140)의 프로세서(220), 또는 처리 장치(140)의 하나 이상의 모듈들)에 의해 호출되고 및/또는 실행될 수 있다. 몇몇 실시예들에서, 명령들은 전자 전류 또는 전기 신호들의 형태로 송신될 수 있다.
(701)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))는 제 1 그룹의 연속 비디오 프레임들을 위한 제 1 시간 및 제 2 그룹의 연속 비디오 프레임들을 처리하기 위한 제 2 시간을 획득할 수 있다. 제 1 그룹의 연속 비디오 프레임들이 프레임 카운트는 제 2 그룹의 연속 비디오 프레임들의 프레임 카운트와 동일하거나 또는 그것과 상이할 수 있다. 제 1 그룹의 연속 비디오 프레임들은 처리될 비디오 프레임들을 포함할 수 있다. 제 2 그룹의 연속 비디오 프레임들은 처리된 비디오 프레임들을 포함할 수 있다. 몇몇 실시예들에서, 제 1 그룹의 연속 비디오 프레임들의 제 1 비디오 프레임은 제 2 그룹의 연속 비디오 프레임들의 마지막 비디오 프레임을 바로 따를 수 있다. 몇몇 실시예들에서, 처리 장치(140)는 제 1 그룹에 속하는 n개의 연속 비디오 프레임들(즉, n개의 다음으로 처리될 비디오 프레임들)을 선택하며 제 2 그룹에 속하는 n개의 연속 비디오 프레임들(즉, 막 처리된 n개의 비디오 프레임들)(n은 양의 정수이다)을 선택할 수 있다. 제 2 그룹에 속하는 n개의 연속 비디오 프레임들을 처리하는 제 2 시간(Tn2)은 예컨대, 비디오 채널에서의 클록에 의해 결정될 수 있다. 게다가, 클록은 또한 두 개의 연속 비디오 프레임들이 처리될 때 시간 편차(예컨대, 기준 시간으로부터의 선형 시간 편차)를 기록할 수 있다. 제 1 그룹에 속하는 n개의 연속 비디오 프레임들을 처리하는 제 1 시간(Tn1)은 하나 이상의 선형 시간 편차 및 클록에 따라 추정될 수 있다. 단지 예로서, 5개의 프레임들을 포함한 제 2 그룹의 연속 비디오 프레임들 및 5개의 프레임들을 포함한 제 1 그룹의 연속 비디오 프레임들에 대해, 제 2 그룹의 5개의 연속 비디오 프레임들의 선형 시간 편차들은 각각 0.1ms, 0.2ms, 0.3ms, 0.4ms, 및 0.5ms일 수 있다. 따라서, 제 1 그룹의 5개의 연속 비디오 프레임들의 선형 시간 편차는 각각 0.6ms, 0.7ms, 0.8ms, 0.9ms, 및 1ms로서 추론될 수 있다. 그 후 처리 장치(140)는 5개의 선형 시간 편차들 및 카운터에 기초하여 5개의 제 1 연속 비디오 프레임들을 처리하기 위한 제 1 시간을 결정할 수 있다.
몇몇 실시예들에서, 처리 장치(140)는 주기적으로 제 1 시간(Tn1) 및 제 2 시간(Tn2)을 획득할 수 있다. 예를 들어, 제 1 시간(Tn1) 및 제 2 시간(Tn2)을 획득하는 획득 주파수(예컨대, 초당 획득 카운트)는 이하에서처럼 식(3)에 따라 결정될 수 있다.
Figure 112020106778667-pct00005
여기에서 Fv는 비디오의 프레임 레이트(초당 디스플레이되는 비디오 프레임들의 수)를 나타내고; n은 제 1(또는 제 2) 그룹의 연속 비디오 프레임들의 프레임 카운트를 나타내며; fth _refs는 제 1 시간(Tn1) 및 제 2 시간(Tn2)을 획득하는 획득 주파수를 나타낸다. 몇몇 실시예들에서, 획득 주파수(fth _refs)는 또한 볼륨 임계값 업데이팅 주파수로 불리울 수 있다.
(703)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))는 제 1 시간(Tn1) 및 제 2 시간(Tn2) 사이에서의 시간 차를 결정할 수 있다. 몇몇 실시예들에서, 처리 장치(140)는 이하에서처럼 식(4)에 따라 시간 차(△T)를 결정할 수 있다.
△T = Tn1 - Tn2 (4)
몇몇 실시예들에서, 처리 장치(140)는 획득 주파수에 따라 복수의 제 1 시간들(Tn1) 및 복수의 제 2 시간들(Tn2)을 획득할 수 있다. 처리 장치(140)는 식(4)에 따라 복수의 제 1 시간들(Tn1)과 그것의 대응하는 제 2 시간들(Tn2) 사이에서의 복수의 시간 차들을 결정하고, 복수의 시간 차들의 합을 최종 시간 차(△T)로서 결정할 수 있다.
(705)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))은 시간 차(△T)가 0과 같은지를 결정할 수 있다. 제 1 그룹의 연속 비디오 프레임들을 처리하는 것은 제 2 그룹의 연속 비디오 프레임들을 처리하는 것과 동일한 양의 시간이 걸린다는 것을 나타내는, 시간 차(△T)가 0이라는 결정에 응답하여, 처리 장치(140)는 동작(701)으로 진행하고 다음 라운드를 시작할 수 있다. 시간 차(△T)가 0이 아니라는 결정에 응답하여, 처리 장치(140)는 동작(707) 또는 동작(717)으로 진행할 수 있다.
(707)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))는 시간 차(△T)가 제 1 시간 임계값보다 큰지를 결정할 수 있다. 제 1 시간 임계값은 0 이상의 실수일 수 있다. 몇몇 실시예들에서, 제 1 시간 임계값은 0일 수 있다. 제 1 그룹의 연속 비디오 프레임들을 처리하는 것이 제 2 그룹의 연속 비디오 프레임들을 처리하는 것보다 많은 시간이 걸린다는 것을 나타내는, 시간 차(△T)가 제 1 시간 임계값보다 크다는 결정에 응답하여, 제 1 그룹의 연속 비디오 프레임들에 대응하는 하나 이상의 오디오 샘플들의 데이터 버퍼에서의 보유 시간은 길어질 필요가 있을 것이다. 구체적으로, 처리 장치(140)는 동작(709)으로 진행할 수 있다.
(709)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))는 볼륨 임계값의 증분으로서 시간 차(△T)에 대응하는 오디오 샘플들의 제 2 데이터 볼륨을 지정할 수 있다. 여기에서, "시간 차(△T)에 대응하는 오디오 샘플들의 제 2 데이터 볼륨"은 오디오 샘플들이 시간 차(△T) 내에서 데이터 버퍼에 입력되는 데이터 볼륨을 나타낼 수 있다. 예를 들어, 처리 장치(140)는 이하에서처럼 식(5)에 따라 볼륨 임계값의 증분을 결정할 수 있다.
△cap = Sa × N ×△T (5)
여기에서 Sa는 오디오 샘플들의 샘플링 레이트를 나타내고; N은 단위 시간당(예컨대, 초당) 캡처 장치(110)에 의해 수집되거나 또는 캡처된 오디오 샘플들에 의해 차지된 비트들을 나타내며, △cap은 볼륨 임계값의 증분을 나타낸다. 몇몇 실시예들에서, N은 16과 같을 수 있다.
(711)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))는 볼륨 임계값의 증분(△cap)이 기준 데이터 볼륨을 초과하는지를 결정할 수 있다. 기준 데이터 볼륨은 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨일 수 있다. 여기에서, "하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨"은 하나의 대응하는 비디오 프레임이 디스플레이되거나 또는 출력될 때 재생될 오디오 샘플들의 데이터 볼륨을 나타낼 수 있다. 몇몇 실시예들에서, 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨은 이하에서처럼 식(6)에 따라 결정될 수 있다.
Figure 112020106778667-pct00006
여기에서 Sa는 오디오 샘플들의 샘플링 레이트를 나타내고; N은 단위 시간당(예컨대, 초당) 캡처 장치(110)에 의해 수집되거나 또는 캡처된 오디오 샘플들에 의해 차지된 비트들을 나타내고; Fv는 비디오의 프레임 레이트(초당 디스플레이된 비디오 프레임들의 수)를 나타내며; cappf는 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨을 나타낸다. 기준 데이터 볼륨으로서 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨(cappf)을 설정하는 것은 단지 예시 목적들을 위한 것이며, 본 개시의 범위를 제한하도록 의도되지 않는다는 것이 주의되어야 한다. 몇몇 실시예들에서, 기준 데이터 볼륨은 비디오 프레임의 부분(예컨대, 비디오 프레임의 절반, 비디오 프레임의 1/3 등), 또는 하나 이상의 비디오 프레임(예컨대, 1.5 비디오 프레임들, 2 비디오 프레임들 등) 등에 대응하는 오디오 샘플들의 데이터 볼륨일 수 있다.
볼륨 임계값의 증분(△cap)이 기준 데이터 볼륨(예컨대, 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨(cappf))을 초과하지 않는다는(예컨대, 이하) 결정에 응답하여, 처리 장치(140)는 동작(713)으로 진행할 수 있다. (713)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))는 볼륨 임계값의 증분(△cap)만큼 볼륨 임계값을 증가시킴으로써 업데이트된 볼륨 임계값을 결정할 수 있다. 단지 예로서, 처리 장치(140)는 이하에서처럼 식(7)에 따라 업데이트된 볼륨 임계값(
Figure 112020106778667-pct00007
)을 결정할 수 있다.
Figure 112020106778667-pct00008
몇몇 실시예들에서, 처리 장치(140)는 하나 이상의 다른 방식들로 데이터 버퍼의 볼륨 임계값을 조정할 수 있다. 예를 들어, 처리 장치(140)는 제 1 보상 값(C1)에 따라 데이터 버퍼의 볼륨 임계값을 조정할 수 있다. 구체적으로, 처리 장치(140)는 이하에서처럼 식(7')에 따라 업데이트된 볼륨 임계값(
Figure 112020106778667-pct00009
)을 결정할 수 있다.
Figure 112020106778667-pct00010
여기에서 m1은 제 1 보상 값(C1)의 가중치를 나타낸다. m1은 시간 차(△T)에 따라 결정될 수 있다.
데이터 버퍼의 볼륨 임계값을 증가시키는 것은 비디오 채널에서 비디오 프레임(들)을 처리하기 위한 증가된 시간을 보상하며, 따라서 오디오 및 비디오의 동기화를 유지할 수 있다. 동작(713) 후, 처리 장치(140)는 동작(701)으로 진행하고, 다음 라운드를 시작할 수 있다.
동작(711)을 다시 참조하면, 볼륨 임계값의 증분(△cap)이 기준 데이터 볼륨(예컨대, 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨(cappf))을 초과한다는 결정에 응답하여, 처리 장치(140)는 동작(715)으로 진행할 수 있다. (715)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))은 제 1 연속 비디오 프레임들이 비디오 채널로부터 출력될 때 하나의 비디오 프레임을 폐기할 수 있다. 폐기된 비디오 프레임은 처리되지 않은 비디오 프레임(예컨대, 제 1 연속 비디오 프레임들 중 하나)일 수 있다.
(717)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))은 시간 차(△T)가 제 2 시간 임계값 미만인지를 결정할 수 있다. 제 2 시간 임계값은 0 이하의 실수일 수 있다. 몇몇 실시예들에서, 제 2 시간 임계값은 제 1 시간 임계값과 동일할 수 있다. 예를 들어, 제 1 시간 임계값 및 제 2 시간 임계값은 양쪽 모두 0일 수 있다. 대안적으로 또는 부가적으로, 제 2 시간 임계값은 제 1 시간 임계값과 상이할 수 있다. 예를 들어, 제 1 시간 임계값은 0.1ms일 수 있는 반면, 제 2 임계값은 -0.1ms일 수 있다. 또 다른 예로서, 제 1 시간 임계값은 0.11ms일 수 있는 반면, 제 2 임계값은 -0.09ms일 수 있다. 제 1 그룹의 연속 비디오 프레임들을 처리하는 것은 제 2 그룹의 연속 비디오 프레임들을 처리하는 것보다 적은 시간이 걸린다는 것을 나타내는, 시간 차(△T)가 제 2 시간 임계값 미만이라는 결정에 응답하여, 제 1 그룹의 연속 비디오 프레임들에 대응하는 하나 이상의 오디오 샘플들의 데이터 버퍼에서의 보유 시간은 단축될 필요가 있을 것이다. 구체적으로, 처리 장치(140)는 동작(719)으로 진행할 수 있다.
(719)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))는 볼륨 임계값의 감소분으로서 시간 차(△T)에 대응하는 오디오 샘플들의 제 3 데이터 볼륨을 지정할 수 있다. 여기에서, "시간 차(△T)에 대응하는 오디오 샘플들의 제 3 데이터 볼륨"은 오디오 샘플들이 시간 차(△T)의 절대 값 내에서 데이터 버퍼에 입력되는 데이터 볼륨을 나타낼 수 있다. 예를 들어, 처리 장치(140)는 이하에서처럼 식(8)에 따라 볼륨 임계값의 감소분을 결정할 수 있다.
△cap' = Sa × N ×|△T| (8)
여기에서 Sa는 오디오 샘플들의 샘플링 레이트를 나타내고; N은 단위 시간당(예컨대, 초당) 캡처 장치(110)에 의해 수집되거나 또는 캡처된 오디오 샘플들에 의해 차지된 비트들을 나타내며; △cap'은 볼륨 임계값의 감소분을 나타낸다. 몇몇 실시예들에서, N은 16과 같을 수 있다.
(721)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))은 볼륨 임계값의 감소분(△cap')이 기준 데이터 볼륨을 초과하는지를 결정할 수 있다. 기준 데이터 볼륨은 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨일 수 있다. 몇몇 실시예들에서, 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨(cappf)은 상기 설명된 식(6)에 따라 결정될 수 있다. 기준 데이터 볼륨으로서 하나의 비디오 프레임(cappf)에 대응하는 오디오 샘플들의 데이터 볼륨을 설정하는 것은 단지 예시 목적들을 위한 것이며, 본 개시의 범위를 제한하도록 의도되지 않는다는 것에 주의해야 한다. 몇몇 실시예들에서, 기준 데이터 볼륨은 비디오 프레임의 부분(예컨대, 1/2 비디오 프레임, 1/3 비디오 프레임 등), 또는 하나 이상의 비디오 프레임(예컨대, 1.5 비디오 프레임들, 2 비디오 프레임들 등) 등에 대응하는 오디오 샘플들의 데이터 볼륨일 수 있다.
볼륨 임계값의 감소분(△cap')이 기준 데이터 볼륨(예컨대, 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨(cappf))을 초과하지 않는다는(예컨대, 이하) 결정에 응답하여, 처리 장치(140)는 동작(723)으로 진행할 수 있다. (723)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))는 볼륨 임계값의 감소분(△cap')만큼 볼륨 임계값을 감소시킴으로써 업데이트된 볼륨 임계값을 결정할 수 있다. 단지 예로서, 처리 장치(140)는 이하에서처럼 식(9)에 따라 업데이트된 볼륨 임계값(
Figure 112020106778667-pct00011
)을 결정할 수 있다.
Figure 112020106778667-pct00012
몇몇 실시예들에서, 처리 장치(140)는 하나 이상의 다른 방식들로 데이터 버퍼의 볼륨 임계값을 조정할 수 있다. 예를 들어, 처리 장치(140)는 제 2 보상 값(C2)에 따라 이터 버퍼의 볼륨 임계값을 조정할 수 있다. 구체적으로, 처리 장치(140)는 이하에서처럼 식(9')에 따라 업데이트된 볼륨 임계값(
Figure 112020106778667-pct00013
)을 결정할 수 있다.
Figure 112020106778667-pct00014
여기에서 m2는 제 2 보상 값(C2)의 가중치를 나타낸다. m2는 시간 차(△T)에 따라 결정될 수 있다.
데이터 버퍼의 볼륨 임계값을 감소시키는 것은 비디오 채널에서 비디오 프레임(들)을 처리하기 위한 감소된 시간을 보상하며, 그에 따라 오디오 및 비디오의 동기화를 유지할 수 있다. 동작(723) 후, 처리 장치(140)는 동작(701)으로 진행하며, 다음 라운드를 시작할 수 있다.
동작(721)을 다시 참조하면, 볼륨 임계값의 감소분(△cap')이 기준 데이터 볼륨(예컨대, 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨(cappf))을 초과한다는 결정에 응답하여, 처리 장치(140)는 동작(725)으로 진행할 수 있다. (725)에서, 처리 장치(140)(예컨대, 제 1 처리 모듈(510))는 제 1 연속 비디오 프레임들이 비디오 채널로부터 출력될 때 하나의 비디오 프레임을 복사할 수 있다. 복사된 비디오 프레임은 처리된 비디오 프레임(예컨대, 제 2 연속 비디오 프레임들 중 하나)일 수 있다.
본 개시의 몇몇 실시예들에서, 오디오 및 비디오의 동기화에 대한 누적 주파수 차들의 영향이 고려된다. 시간 차(△T)가 제 1 시간 임계값(예컨대, 0)보다 크면, 데이터 버퍼의 볼륨 임계값은 처리 비디오 프레임들에 대한 증가된 시간을 보상하기 위해 증가될 수 있다. 시간 차가 제 2 시간 임계값(예컨대, 0)보다 작다면, 데이터 버퍼의 볼륨 임계값은 비디오 프레임들을 처리하기 위한 감소된 시간을 보상하기 위해 감소될 수 있다. 따라서, 오디오 및 비디오의 동기화가 달성될 수 있다. 게다가, 볼륨 임계값의 증분이 기준 데이터 볼륨보다 크다면, 하나의 비디오 프레임은 제 1 연속 비디오 프레임들이 비디오 채널로부터 출력될 때 폐기될 수 있다. 볼륨 임계값의 감소분이 기준 데이터 볼륨보다 크다면, 하나의 비디오 프레임은 제 1 연속 비디오 프레임들이 비디오 채널로부터 출력될 때 복사될 수 있다. 따라서, 이것은 비디오 프레임들 및 그것의 대응하는 오디오 샘플들이 하나의 비디오 프레임을 디스플레이하기 위한 시간 내에서 정확한 동기화를 달성할 수 있다는 것을 보장할 수 있다. 예를 들어, 60개의 비디오 프레임들이 1분 동안 도시되었다면, 하나의 비디오 프레임이 1초 동안 도시된다. 오디오 및 비디오의 비동기화는 1초 내에서 제한될 수 있다.
프로세스(700)에 관한 상기 설명은 단지 예시의 목적들을 위해 제공되며, 본 개시의 범위를 제한하도록 의도되지 않는다는 것에 주의해야 한다. 이 기술분야에서의 통상의 기술자들에 대해, 다수의 변형들 및 수정들이 본 개시의 교시들 하에서 이루어질 수 있다. 그러나, 이들 변형들 및 수정들은 본 개시의 범위로부터 벗어나지 않는다. 몇몇 실시예들에서, 동작들(717 내지 725)은 동작들(707 내지 715) 전에 수행될 수 있다.
몇몇 실시예들에서, 비디오 프레임들의 입력 레이트(VV1) 대 오디오 프레임들의 입력 레이트(VA1)의 비는 제 1 일정한 값에서 유지할 수 있으며, 이것은 입력된 비디오 프레임(들)이 입력된 오디오 샘플(들)에 대응한다는 것을 보장할 수 있다. 여기에서, "~에 대응하는"은 입력된 비디오 프레임(들) 및 입력된 오디오 샘플(들)이 대체로 동시에 수집된다는 조건을 나타낼 수 있다. 유사하게, 비디오 프레임들의 출력 레이트(VV2) 대 오디오 프레임들의 출력 레이트(VA2)의 비는 제 2 일정한 값에서 유지할 수 있으며, 이것은 출력된 비디오 프레임(들)이 출력된 오디오 샘플(들)에 대응한다는 것을 보장할 수 있다. 여기에서, "~에 대응하는"은 출력된 비디오 프레임(들)이 디스플레이될 때, 출력된 오디오 샘플(들)이 대체로 동기식으로 재생될 수 있는 조건을 나타낼 수 있다.
일반적으로, 비디오 프레임(들)의 입력 레이트(VV1)는 비디오 프레임(들)의 출력 레이트(VV2)와 같을 수 있다. 따라서, 오디오 샘플(들)의 입력 레이트(VA1)는 오디오 샘플(들)의 출력 레이트(VA2)와 같을 수 있다. 이 경우에, 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨은 대체로 볼륨 임계값(TH0)에서 유지될 수 있다. 비디오 프레임(들)의 입력 레이트(VV1)가 비디오 프레임(들)의 출력 레이트(VV2)와 같지 않을 때, 오디오 샘플(들)의 입력 레이트(VA1)는 오디오 샘플(들)의 출력 레이트(VA2)와 같지 않을 수 있다. 이 경우에, 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨은 볼륨 임계값(TH0)에서 유지될 수 없다. 버퍼링된 오디오 샘플들의 데이터 볼륨의 빈번한 변동은 오디오 샘플들을 재생하는데 비연속성을 야기할 수 있다. 따라서, 버퍼링된 오디오 샘플들의 데이터 볼륨의 변동은 특정한 범위 임계값 내에서 유지될 필요가 있을 것이다.
단지 예로서, 도 8은 본 개시의 몇몇 실시예들에 따라 데이터 버퍼의 대표적인 볼륨 임계값들을 예시한 개략도이다. 도 8에 도시된 바와 같이, 데이터 버퍼는 제 1 볼륨 임계값(TH1), 제 2 볼륨 임계값(TH2), 및 제 3 볼륨 임계값(TH3)을 포함할 수 있다. 몇몇 실시예들에서, 제 1 볼륨 임계값(TH1)은 도 6과 관련되어 설명된 볼륨 임계값(TH0)일 수 있다. 즉, 제 1 볼륨 임계값(TH1) = cap0. 제 2 볼륨 임계값(TH2) 및/또는 제 3 볼륨 임계값(TH3)은 하나의 비디오 프레임을 송신하거나 또는 디스플레이하기 위한 시간 및 볼륨 임계값에 관한 것이다. 단지 예로서, 제 3 볼륨 임계값(TH3)은 이하에서처럼 식(10)에 따라 결정될 수 있다.
TH3 = cap0 + cappf (10)
몇몇 실시예들에서, 제 2 볼륨 임계값(TH2)은 이하에서처럼 식(11)에 따라 결정될 수 있다.
TH2 = cap0 + K × cappf (11)
여기에서 K는 계수(0<K<1)를 나타낸다. 몇몇 실시예들에서, 버퍼링된 오디오 샘플들의 데이터 볼륨은 제 2 볼륨 임계값(TH2)에 대하여 변동될 수 있다. K가 1/2 미만일 때, 제 2 볼륨 임계값(TH2)은 제 3 볼륨 임계값(TH3)보다 제 1 볼륨 임계값(TH1)(또는 볼륨 임계값(TH0))에 더 가까울 수 있으며, 이것은 버퍼링된 오디오 샘플들의 데이터 볼륨인 제 1 볼륨 임계값(TH1)에 가깝다는 것을 나타낸다. K가 1/2보다 클 때, 제 2 볼륨 임계값(TH2)은 제 1 볼륨 임계값(TH1)(또는 볼륨 임계값(TH0))보다 제 3 볼륨 임계값(TH3)에 더 가까울 수 있으며, 이것은 버퍼링된 오디오 샘플들의 데이터 볼륨이 제 3 볼륨 임계값(TH3)에 가깝다는 것을 나타낸다. 몇몇 실시예들에서, K는 1/2와 같을 수 있다.
몇몇 실시예들에서, 제 1 볼륨 임계값(TH1) 및 제 3 볼륨 임계값(TH3)은 제어 마진(α)을 갖고 할당될 수 있으며, 즉, 제 1 볼륨 임계값 TH1 = cap0 + α, 및 제 3 볼륨 임계값 TH3 = cap0 + cappf - α. 몇몇 실시예들에서, 버퍼링된 오디오 샘플들의 데이터 볼륨은 제 1 볼륨 임계값(TH1) 및 제 3 볼륨 임계값(TH3) 내에 있을 수 있다. 특정한 실시예들에서, 도 8에 도시된 바와 같이, 버퍼링된 오디오 샘플들의 데이터 볼륨이 제 2 볼륨 임계값(TH2)을 초과할 때, 버퍼링된 오디오 샘플들은 데이터 버퍼로부터 출력될 수 있다.
도 9는 본 개시의 몇몇 실시예들에 따라 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨을 조정하기 위한 대표적인 프로세스를 예시한 흐름도이다. 단지 예시 목적들을 위해, 처리 장치(140)는 프로세스(900)를 수행하기 위한 대상으로서 설명될 수 있다. 그러나, 이 기술분야에서의 통상의 기술자는 프로세스(900)가 또한 다른 엔티티들에 의해 수행될 수 있다는 것을 이해할 것이다. 예를 들어, 이 기술분야에서의 통상의 기술자는 프로세스(900)의 적어도 일부분이 도 2에서 예시된 바와 같이 컴퓨팅 장치(200) 또는 도 3에 예시된 바와 같이 이동 장치(300) 상에서 구현될 수 있다는 것을 이해할 것이다. 몇몇 실시예들에서, 프로세스(900)의 하나 이상의 동작들은 도 1에 예시된 바와 같이 미디어 콘텐트 처리 시스템(100)에서 구현될 수 있다. 몇몇 실시예들에서, 프로세스(900)에서의 하나 이상의 동작들은 명령들의 형태로 저장 장치(150) 및/또는 저장 장치(예컨대, ROM(230), RAM(240) 등)에 저장되며, 처리 장치(140)(예컨대, 처리 장치(140)의 프로세서(220), 또는 처리 장치(140)의 하나 이상의 모듈들)에 의해 호출되고 및/또는 실행될 수 있다. 몇몇 실시예들에서, 명령들은 전자 전류 또는 전기 신호들의 형태로 송신될 수 있다.
(901)에서, 처리 장치(140)(예컨대, 제 2 처리 모듈(512))은 비디오 채널에 입력된 비디오 프레임들의 시퀀스의 적어도 일부분의 입력 레이트(VV1) 및 비디오 채널로부터 출력된 비디오 프레임들의 시퀀스의 적어도 일부분의 출력 레이트(VV2)를 획득할 수 있다. 몇몇 실시예들에서, 처리 장치(140)는 비디오 프레임들의 입력 레이트(VV1) 및 비디오 프레임들의 출력 레이트(VV2)를 실시간으로 검출하고 획득할 수 있다. 대안적으로 또는 부가적으로, 처리 장치(140)는 비디오 프레임들의 입력 레이트(VV1) 및 비디오 프레임들의 출력 레이트(VV2)를 주기적으로 획득할 수 있다.
(903)에서, 처리 장치(140)(예컨대, 제 2 처리 모듈(512))는 입력 레이트(VV1)가 출력 레이트(VV2)와 동일한지를 결정할 수 있다. 입력 레이트(VV1)가 출력 레이트(VV2)와 동일하다는 결정에 응답하여, 처리 장치(140)는 동작(911)으로 진행할 수 있다. (911)에서, 처리 장치(140)(예컨대, 제 2 처리 모듈(512))은 데이터 버퍼로부터 오디오 샘플들을 출력할 수 있다. 입력 레이트(VV1)가 출력 레이트(VV2)와 동일할 때, 오디오 샘플(들)의 입력 레이트(VA1)는 오디오 샘플(들)의 출력 레이트(VA2)와 동일할 수 있다. 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨은 대체로 볼륨 임계값(TH0) 또는 제 2 볼륨 임계값(TH2)에서 유지될 수 있으며, 처리 장치(140)는 데이터 버퍼로부터 오디오 샘플들을 계속해서 출력할 수 있다.
동작(903)을 다시 참조하면, 입력 레이트(VV1)이 출력 레이트(VV2)와 동일하지 않다는 결정에 응답하여, 처리 장치(140)는 동작(905)으로 진행할 수 있다. (905)에서, 처리 장치(140)(예컨대, 제 2 처리 모듈(512))는 입력 레이트(VV1)가 출력 레이트(VV2)보다 큰지를 결정할 수 있다.
입력 레이트(VV1)가 출력 레이트(VV2)보다 크다는 결정에 응답하여, 처리 장치(140)는 동작(907)으로 진행할 수 있다. (907)에서, 처리 장치(140)(예컨대, 제 2 처리 모듈(512))는 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨(cap)이 제 3 볼륨 임계값(TH3)을 초과하는지를 결정할 수 있다. 입력 레이트(VV1)가 출력 레이트(VV2)보다 클 때, 오디오 샘플(들)의 입력 레이트(VA1)는 오디오 샘플(들)의 출력 레이트(VA2)보다 클 수 있으며, 오디오 채널에서 오디오 샘플들은 증가할 수 있다. 따라서, 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨(cap)은 증가할 수 있다. 버퍼링된 오디오 샘플들의 데이터 볼륨(cap)이 제 3 볼륨 임계값(TH3)을 초과한다는 결정에 응답하여, 처리 장치(140)는 동작(909)으로 진행할 수 있다. (909)에서, 처리 장치(140)(예컨대, 제 2 처리 모듈(512))는 데이터 버퍼에 남아있는 오디오 샘플들의 데이터 볼륨이 제 2 볼륨 임계값(TH2)을 초과하지 않도록 오디오 샘플들의 일부분을 삭제할 수 있다. 몇몇 실시예들에서, 오디오 샘플들의 삭제된 부분은 대체로 비디오 채널에서 폐기된 하나 이상의 비디오 프레임들에 대응할 수 있다. 폐기된 비디오 프레임에 대응하는 오디오 샘플들은 삭제될 수 있다. 몇몇 실시예들에서, 버퍼는 FIFO(선입선출) 버퍼이고; 처리되고 있는 비디오 프레임이 폐기될 때, 버퍼로부터 막 출력된 하나 이상의 대응하는 오디오 샘플들(즉, 버퍼에서 다른 오디오 샘플(들)보다 이전에 버퍼에 들어간 하나 이상의 오디오 샘플들)은 폐기될 수 있다. 폐기된 비디오 프레임(들)은 비디오 채널에 입력된 처리되지 않은 비디오 프레임들일 수 있다. 입력 레이트(VV1)가 출력 레이트(VV2)보다 클 때, 비디오 프레임들을 처리하는 것은 비디오 프레임들을 입력하는 것보다 긴 시간이 걸릴 수 있다. 비디오 프레임들을 처리하는 것과 비디오 프레임들을 입력하는 것 사이에서의 시간 차가 하나의 비디오 프레임을 처리하기 위한 시간을 초과할 때, 처리되지 않은 비디오 프레임은 비디오 채널에서 폐기될 수 있다.
(907)에서, 버퍼링된 오디오 샘플들의 데이터 볼륨(cap)이 제 3 볼륨(TH3)을 초과하지 않는다는 결정에 응답하여, 처리 장치(140)는 데이터 버퍼로부터 오디오 샘플들을 출력하기 위해 동작(911)으로 진행할 수 있다.
동작(905)을 다시 참조하면, 입력 레이트(VV1)가 출력 레이트(VV2) 미만이라는 결정에 응답하여, 처리 장치(140)는 동작(913)으로 진행할 수 있다. (913)에서, 처리 장치(140)(예컨대, 제 2 처리 모듈(512))는 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 제 1 볼륨 임계값(TH1)보다 작은지를 결정할 수 있다. 입력 레이트(VV1)가 출력 레이트(VV2) 미만일 때, 오디오 샘플(들)의 입력 레이트(VA1)는 오디오 샘플(들)의 출력 레이트(VA2) 미만일 수 있으며, 오디오 채널에서의 오디오 샘플들은 감소할 수 있다. 따라서, 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨(cap)은 감소할 수 있다. 버퍼링된 오디오 샘플들의 데이터 볼륨(cap)이 제 1 볼륨 임계값(TH1)보다 작다는 결정에 응답하여, 처리 장치(140)는 동작(915)으로 진행할 수 있다. (915)에서, 처리 장치(140)(예컨대, 제 2 처리 모듈(512))는 데이터 버퍼에 남아있는 오디오 샘플들의 데이터 볼륨이 제 2 볼륨 임계값(TH2)보다 작지 않도록 데이터 버퍼로부터 오디오 샘플들을 출력하는 것을 정지시킬 수 있다. (913)에서, 버퍼링된 오디오 샘플의 데이터 볼륨(cap)이 제 1 볼륨 임계값(TH1)보다 작지 않다는 결정에 응답하여, 처리 장치(140)는 데이터 버퍼로부터 오디오 샘플들을 출력하기 위해 동작(911)으로 진행할 수 있다.
본 개시의 몇몇 실시예들에서, 버퍼링된 오디오 샘플들의 데이터 볼륨에 대한 비디오 프레임(들)의 입력 레이트(VV1) 및 비디오 프레임(들)의 출력 레이트(VV1)의 레이트 차이의 영향이 고려될 수 있다. 입력 레이트(VV1)가 출력 레이트(VV2)와 동일하지 않다고 결정될 때, 버퍼링된 오디오 샘플들의 데이터 볼륨은 데이터 버퍼에 남아있는 버퍼링된 오디오 샘플들의 데이터 볼륨이 제 1 볼륨 임계값(TH1) 및 제 3 볼륨 임계값(TH3)에 의해 정의된 범위 내에 있음을 보장하기 위해 조정될 수 있으며, 그에 의해 대체로 제 2 볼륨 임계값(TH2)에서 버퍼링된 오디오 샘플들의 데이터 볼륨을 유지할 수 있다.
프로세스(900)에 관한 상기 설명은 단지 예시의 목적들을 위해 제공되며, 본 개시의 범위를 제한하도록 의도되지 않는다는 것이 주의되어야 한다. 이 기술분야에서의 통상의 기술자들을 위해, 다수의 변형들 및 수정들이 본 개시의 교시들 하에서 이루어질 수 있다. 그러나, 이들 변형들 및 수정들은 본 개시의 범위로부터 벗어나지 않는다. 몇몇 실시예들에서, 동작들(913 및 915)은 동작들(907 및 909) 이전에 수행될 수 있다.
이와같이 기본 개념들을 설명하였지만, 앞서 말한 상세한 개시는 단지 예로서 제공되도록 의도된 것이며 제한적이지 않다는 것이 이러한 상세한 개시를 판독한 후 이 기술분야의 숙련자들에게 꽤 명백할 수 있다. 여기에서 명확하게 서술되지는 않지만, 다양한 변경들, 개선들, 및 수정들이 발생하며, 이 기술분야의 숙련자들에게 의도된다. 이들 변경들, 개선들 및 수정들은 본 개시에 의해 제안되도록 의도되며, 본 개시의 대표적인 실시예들의 사상 및 범위 내에 있다.
또한, 특정 용어가 본 개시의 실시예들을 설명하기 위해 사용되었다. 예를 들어, 용어들("일 실시예", "실시예", 및/또는 몇몇 실시예들")은 실시예들과 관련되어 설명된 특정한 특징, 구조 또는 특성이 본 개시의 적어도 일 실시예에 포함된다는 것을 의미한다. 그러므로, 본 명세서의 다양한 부분들에서 "실시예" 또는 "일 실시예" 또는 "대안적인 실시예"에 대한 둘 이상의 참조들은 반드시 모두가 동일한 실시예를 나타내는 것은 아니라는 것이 강조되며 이해되어야 한다. 더욱이, 특정한 특징들, 구조들 또는 특성들은 본 개시의 하나 이상의 실시예들에서 적절하게 조합될 수 있다.
뿐만 아니라, 본 개시의 양상들은 임의의 새롭고 유용한 프로세스, 기계, 제조, 또는 물질의 조성, 또는 그것의 새롭고 유용한 개선을 포함한 다수의 특허 가능한 클래스들 또는 맥락 중 임의의 것에서 예시되고 설명될 수 있다는 것이 이 기술분야의 숙련자에 의해 이해될 것이다. 따라서, 본 개시의 양상들은 모두가 일반적으로 여기에서 "유닛", "모듈", 또는 "시스템"으로 불리울 수 있는 전적으로 하드웨어, 전적으로 소프트웨어(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함한) 또는 조합한 소프트웨어 및 하드웨어 구현으로 구현될 수 있다. 더욱이, 본 개시의 양상들은 컴퓨터-판독 가능한 프로그램 코드를 구체화한 하나 이상의 컴퓨터-판독 가능한 미디어에 구체화된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
컴퓨터-판독 가능한 신호 매체는 예를 들어, 기저 대역에서 또는 캐리어 파의 부분으로서, 그 안에 구체화된 컴퓨터-판독 가능한 프로그램 코드를 갖는 전파된 데이터 신호를 포함할 수 있다. 이러한 전파된 신호는, 전자기, 광학 등, 또는 그것의 임의의 적절한 조합을 포함하여, 다양한 형태들 중 임의의 것을 취할 수 있다. 컴퓨터-판독 가능한 신호 매체는 컴퓨터-판독 가능한 저장 매체가 아니며 명령 실행 시스템, 장치, 또는 장치에 의한 사용을 위해 또는 그것과 관련되어 프로그램을 전달하고, 전파하거나, 또는 수송할 수 있는 임의의 컴퓨터-판독 가능한 매체일 수 있다. 컴퓨터-판독 가능한 신호 매체상에 구체화된 프로그램 코드는 무선, 와이어라인, 광 섬유 케이블, RF 등, 또는 앞서 말한 것의 임의의 적절한 조합을 포함한 임의의 적절한 매체를 사용하여 송신될 수 있다.
본 개시의 양상들을 위한 동작들을 실행하기 위한 컴퓨터 프로그램 코드는, Java, Scala, Smalltalk, Eiffel, JADE, Emerald, C++, C#, VB. NET, Python 등과 같은 오브젝트 지행 프로그래밍 언어, "C" 프로그래밍 언어, Visual Basic, Fortran 2003, Perl, COBOL 2002, PHP, ABAP와 같은 종래의 절차식 프로그래밍 언어들, Python, Ruby 및 Groovy와 같은 동적 프로그래밍 언어들, 또는 다른 프로그래밍 언어들을 포함한, 하나 이상의 프로그래밍 언어들의 임의의 조합으로 쓰여질 수 있다. 프로그램 코드는 전적으로 사용자 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 및 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터 또는 서버상에서 실행할 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 근거리 네트워크(LAN) 또는 광역 네트워크(WAN)를 포함한, 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, 또는 연결은 외부 컴퓨터에 대해(예를 들어, 인터넷 서비스 제공자를 사용한 인터넷을 통해) 또는 클라우드 컴퓨터 환경에서 이루어지거나 또는 서비스로서의 소프트웨어(SaaS)와 같은 서비스로서 제공될 수 있다.
더욱이, 처리 요소들 또는 시퀀스들의 열거된 순서, 또는 숫자들, 글자들, 또는 다른 지정들의 사용은, 그러므로 청구된 프로세스들 및 방법들을 청구항들에서 특정될 수 있는 경우를 제외하고 임의의 순서에 제한하도록 의도되지 않는다. 상기 개시는 현재 본 개시의 다양한 유용한 실시예들인 것으로 고려되는 것을 다양한 예들을 통해 논의하지만, 이러한 세부사항은 단지 상기 목적을 위한 것이며, 첨부된 청구항들은 개시된 실시예들에 제한되지 않지만, 반대로, 개시된 실시예들의 사상 및 범위 내에 있는 수정들 및 등가 배열들을 커버하도록 의도된 것이 이해될 것이다. 예를 들어, 상기 설명된 다양한 구성요소들의 구현은 하드웨어 장치에서 구체화될 수 있지만, 그것은 또한 소프트웨어 전용 솔루션, 예컨대 기존의 서버 또는 이동 장치 상에서의 설치로서 구현될 수 있다.
유사하게, 본 개시의 실시예들의 이전 설명에서, 다양한 특징들은 때때로 다양한 실시예들 중 하나 이상의 이해를 돕기 위해 개시를 간소화할 목적으로 단일 실시예, 도면, 또는 그것의 설명에서 함께 그룹핑된다는 것이 이해되어야 한다. 본 개시의 이러한 방법은, 그러나, 청구된 주제가 각각의 청구항에서 명확하게 나열된 것보다 많은 특징들을 요구한다는 의도를 반영한 것으로 해석되지 않을 것이다. 오히려, 청구된 주제는 단일의 앞서 말한 개시된 실시예의 모두보다 적은 특징들에 있을 수 있다.

Claims (33)

  1. 오디오와 비디오를 동기시키기 위한 시스템에 있어서,
    명령들의 세트를 포함한 적어도 하나의 저장 장치;
    상기 적어도 하나의 저장 장치와 통신하는 적어도 하나의 프로세서를 포함하고, 상기 명령들의 세트를 실행할 때 상기 적어도 하나의 프로세서는 상기 시스템으로 하여금:
    비디오 프레임들의 시퀀스 및 오디오 샘플들의 시퀀스를 포함한 데이터 스트림을 획득하는 것;
    상기 비디오 프레임들의 시퀀스를 비디오 채널에 입력하는 것으로서, 상기 비디오 프레임들의 시퀀스는 상기 비디오 채널에서 처리되며 상기 비디오 채널로부터 출력되는, 상기 비디오 프레임들의 시퀀스를 비디오 채널에 입력하는 것;
    처리를 위해, 상기 오디오 샘플들의 시퀀스를 오디오 채널에 입력하는 것으로서, 상기 오디오 채널은 처리된 오디오 샘플들을 버퍼링하도록 구성된 데이터 버퍼를 포함하고, 상기 데이터 버퍼의 볼륨 임계값은 상기 비디오 프레임들의 시퀀스의 하나 이상의 연속 비디오 프레임들을 처리하기 위한 시간과 양의 상관관계에 있고, 상기 하나 이상의 연속 비디오 프레임들은 상기 버퍼링된 오디오 샘플들에 대응하는, 상기 오디오 샘플들의 시퀀스를 오디오 채널에 입력하는 것;
    상기 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 상기 볼륨 임계값을 초과하는지를 결정하는 것; 및
    상기 버퍼링된 오디오 샘플들의 데이터 볼륨이 상기 데이터 버퍼의 볼륨 임계값을 초과한다는 결정에 응답하여, 상기 오디오 채널로부터 상기 버퍼링된 오디오 샘플들을 출력하는 것을 포함한 동작들을 수행하게 하도록 구성된, 오디오와 비디오를 동기시키기 위한 시스템.
  2. 제 1 항에 있어서,
    상기 데이터 버퍼의 볼륨 임계값은 상기 비디오 채널에서 하나의 비디오 프레임이 처리될 때 버퍼링될 필요가 있는 오디오 샘플들의 데이터 볼륨과 동일한, 오디오와 비디오를 동기시키기 위한 시스템.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 적어도 하나의 프로세서는 또한 상기 시스템으로 하여금:
    오디오 샘플들을 출력하기 위한 하나 이상의 명령들을 수신하는 것; 및
    상기 버퍼링된 오디오 샘플들의 데이터 볼륨이 상기 데이터 버퍼의 볼륨 임계값을 초과한다는 결정에 응답하여, 상기 하나 이상의 수신된 출력 명령들에 기초하여, 상기 오디오 채널로부터 버퍼링된 오디오 샘플들을 출력하는 것을 포함한 부가적인 동작들을 수행하도록 구성되는, 오디오와 비디오를 동기시키기 위한 시스템.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 적어도 하나의 프로세서는 또한 상기 시스템으로 하여금:
    제 1 그룹의 연속 비디오 프레임들을 처리하기 위한 제 1 시간과 제 2 그룹의 연속 비디오 프레임들을 처리하기 위한 제 2 시간 사이에서의 시간 차를 결정하는 것으로서, 상기 제 1 그룹의 연속 비디오 프레임들의 프레임 카운트는 상기 제 2 그룹의 연속 비디오 프레임들의 프레임 카운트와 동일하고, 상기 제 1 그룹의 연속 비디오 프레임들은 처리될 비디오 프레임들을 포함하고 상기 제 2 그룹의 연속 비디오 프레임들은 처리된 비디오 프레임들을 포함하는, 상기 시간 차를 결정하는 것;
    상기 시간 차가 제 1 시간 임계값보다 크다는 결정에 응답하여, 상기 데이터 버퍼의 볼륨 임계값을 증가시키는 것; 또는
    상기 시간 차가 제 2 시간 임계값보다 작다는 결정에 응답하여, 상기 데이터 버퍼의 볼륨 임계값을 감소시키는 것을 포함한 부가적인 동작들을 수행하도록 구성되는, 오디오와 비디오를 동기시키기 위한 시스템.
  5. 제 4 항에 있어서,
    상기 데이터 버퍼의 볼륨 임계값을 증가시키면, 상기 적어도 하나의 프로세서는 상기 시스템으로 하여금:
    상기 볼륨 임계값의 증분으로서 상기 시간 차에 대응하는 오디오 샘플들의 제 2 데이터 볼륨을 지정하는 것;
    상기 볼륨 임계값의 증분이 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨을 초과하는지를 결정하는 것; 및
    상기 볼륨 임계값의 증분이 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨보다 작다는 결정에 응답하여, 상기 볼륨 임계값의 증분만큼 상기 볼륨 임계값을 증가시킴으로써 업데이트된 볼륨 임계값을 결정하는 것을 포함한 부가적인 동작들을 수행하도록 구성되는, 오디오와 비디오를 동기시키기 위한 시스템.
  6. 제 5 항에 있어서,
    상기 적어도 하나의 프로세서는 또한 상기 시스템으로 하여금:
    상기 볼륨 임계값의 증분이 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨을 초과한다는 결정에 응답하여, 상기 제 1 그룹의 연속 비디오 프레임들이 상기 비디오 채널로부터 출력될 때 하나의 비디오 프레임을 폐기하는 것을 포함한 부가적인 동작들을 수행하도록 구성되는, 오디오와 비디오를 동기시키기 위한 시스템.
  7. 제 4 항에 있어서,
    상기 데이터 버퍼의 볼륨 임계값을 감소시키면, 상기 적어도 하나의 프로세서는 상기 시스템으로 하여금:
    상기 볼륨 임계값의 감소분으로서 상기 시간 차에 대응하는 오디오 샘플들의 제 3 데이터 볼륨을 지정하는 것;
    상기 볼륨 임계값의 감소분이 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨을 초과하는지를 결정하는 것; 및
    상기 볼륨 임계값의 감소분이 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨보다 작다는 결정에 응답하여, 상기 볼륨 임계값의 감소분만큼 상기 볼륨 임계값을 감소시킴으로써 업데이트된 볼륨 임계값을 결정하는 것을 포함한, 부가적인 동작들을 수행하도록 구성되는, 오디오와 비디오를 동기시키기 위한 시스템.
  8. 제 7 항에 있어서,
    상기 적어도 하나의 프로세서는 또한 상기 시스템으로 하여금:
    상기 볼륨 임계값의 감소분이 하나의 비디오 프레임에 대응하는 오디오 샘플들의 데이터 볼륨을 초과한다는 결정에 응답하여, 상기 제 1 그룹의 연속 비디오 프레임들이 상기 비디오 채널로부터 출력될 때 하나의 비디오 프레임을 복사하는 것을 포함한 부가적인 동작들을 수행하도록 구성되는, 오디오와 비디오를 동기시키기 위한 시스템.
  9. 제 1 항 또는 제 2 항에 있어서,
    상기 데이터 버퍼는 제 2 볼륨 임계값 및 제 3 볼륨 임계값을 더 포함하며, 상기 제 2 볼륨 임계값 및/또는 상기 제 3 볼륨 임계값은 하나의 비디오 프레임을 송신하거나 또는 디스플레이하기 위한 시간 및 상기 볼륨 임계값에 관한 것인, 오디오와 비디오를 동기시키기 위한 시스템.
  10. 제 9 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 시스템으로 하여금:
    상기 비디오 채널에 입력된 비디오 프레임들의 시퀀스의 적어도 일부분의 입력 레이트 및 상기 비디오 채널로부터 출력된 상기 비디오 프레임들의 시퀀스의 적어도 일부분의 출력 레이트를 획득하는 것; 및
    상기 입력 레이트가 상기 출력 레이트보다 큰지를 결정하는 것을 포함한 부가적인 동작들을 수행하도록 구성되는, 오디오와 비디오를 동기시키기 위한 시스템.
  11. 제 10 항에 있어서,
    상기 적어도 하나의 프로세서는 또한 상기 시스템으로 하여금:
    상기 입력 레이트가 상기 출력 레이트보다 크다는 결정에 응답하여, 상기 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 상기 제 3 볼륨 임계값을 초과하는지를 결정하는 것; 및
    상기 데이터 버퍼에 버퍼링된 상기 오디오 샘플들의 데이터 볼륨이 상기 제 3 볼륨 임계값을 초과한다는 결정에 응답하여, 상기 데이터 버퍼에 남아있는 상기 오디오 샘플들의 데이터 볼륨이 상기 제 2 볼륨 임계값을 초과하지 않도록 상기 오디오 샘플들의 일부분을 삭제하는 것을 포함한 부가적인 동작들을 수행하도록 구성되는, 오디오와 비디오를 동기시키기 위한 시스템.
  12. 제 11 항에 있어서,
    상기 적어도 하나의 프로세서는 또한 상기 시스템으로 하여금:
    상기 입력 레이트가 상기 출력 레이트 미만이라는 결정에 응답하여, 상기 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 상기 볼륨 임계값보다 작은지를 결정하는 것; 및
    상기 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 상기 볼륨 임계값보다 작다는 결정에 응답하여, 상기 데이터 버퍼에 남아있는 오디오 샘플들의 데이터 볼륨이 상기 제 2 볼륨 임계값보다 작지 않도록 상기 데이터 버퍼로부터 오디오 샘플들을 출력하는 것을 정지시키는 것을 포함한 부가적인 동작들을 수행하도록 구성되는, 오디오와 비디오를 동기시키기 위한 시스템.
  13. 적어도 하나의 프로세서, 적어도 하나의 컴퓨터-판독 가능한 저장 매체, 및 네트워크에 연결된 통신 플랫폼을 갖는 컴퓨팅 장치상에 구현된 오디오와 비디오를 동기시키기 위한 방법에 있어서,
    비디오 프레임들의 시퀀스 및 오디오 샘플들의 시퀀스를 획득하는 단계;
    상기 비디오 프레임들의 시퀀스를 비디오 채널에 입력하는 단계로서, 상기 비디오 프레임들의 시퀀스는 상기 비디오 채널에서 처리되고 상기 비디오 채널로부터 출력되는, 상기 비디오 프레임들의 시퀀스를 비디오 채널에 입력하는 단계;
    처리를 위해, 상기 오디오 샘플들의 시퀀스를 오디오 채널에 입력하는 단계로서, 상기 오디오 채널은 처리된 오디오 샘플들을 버퍼링하도록 구성된 데이터 버퍼를 포함하고, 상기 데이터 버퍼의 볼륨 임계값은 상기 비디오 프레임들의 시퀀스의 하나 이상의 연속 비디오 프레임들을 처리하기 위한 시간과 양의 상관관계에 있으며, 상기 하나 이상의 연속 비디오 프레임들은 상기 버퍼링된 오디오 샘플들에 대응하는, 상기 오디오 샘플들의 시퀀스를 오디오 채널에 입력하는 단계;
    상기 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 상기 볼륨 임계값을 초과하는지를 결정하는 단계; 및
    상기 버퍼링된 오디오 샘플들의 데이터 볼륨이 상기 데이터 버퍼의 볼륨 임계값을 초과한다는 결정에 응답하여, 상기 오디오 채널로부터 상기 버퍼링된 오디오 샘플들을 출력하는 단계를 포함하는, 오디오와 비디오를 동기시키기 위한 방법.
  14. 제 13 항에 있어서,
    비정상적 신호가 검출되는지를 결정하는 단계, 및
    상기 비정상적 신호가 검출된다는 결정에 응답하여, 상기 오디오 채널로부터 상기 오디오 샘플들을 및 상기 비디오 채널로부터 상기 비디오 프레임들을 출력하는 것을 정지시키는 단계를 더 포함하는, 오디오와 비디오를 동기시키기 위한 방법.
  15. 적어도 한 세트의 명령들을 포함한, 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서,
    컴퓨팅 장치의 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 세트의 명령들은:
    비디오 프레임들의 시퀀스 및 오디오 샘플들의 시퀀스를 포함한 데이터 스트림을 획득하는 것;
    상기 비디오 프레임들의 시퀀스를 비디오 채널에 입력하는 것으로서, 상기 비디오 프레임들의 시퀀스는 상기 비디오 채널에서 처리되고 상기 비디오 채널로부터 출력되는, 상기 비디오 프레임들의 시퀀스를 비디오 채널에 입력하는 것;
    처리를 위해, 상기 오디오 샘플들의 시퀀스를 오디오 채널에 입력하는 것으로서, 상기 오디오 채널은 처리된 오디오 샘플들을 버퍼링하도록 구성된 데이터 버퍼를 포함하고, 상기 데이터 버퍼의 볼륨 임계값은 상기 비디오 프레임들의 시퀀스의 하나 이상의 연속 비디오 프레임들을 처리하기 위한 시간과 양의 상관관계에 있으며, 상기 하나 이상의 연속 비디오 프레임들은 상기 버퍼링된 오디오 샘플들에 대응하는, 상기 오디오 샘플들의 시퀀스를 오디오 채널에 입력하는 것;
    상기 데이터 버퍼에 버퍼링된 오디오 샘플들의 데이터 볼륨이 상기 볼륨 임계값을 초과하는지를 결정하는 것; 및
    상기 버퍼링된 오디오 샘플들의 데이터 볼륨이 상기 데이터 버퍼의 볼륨 임계값을 초과한다는 결정에 응답하여, 상기 오디오 채널로부터 상기 버퍼링된 오디오 샘플들을 출력하는 것을 포함하는, 동작들을 수행하도록 상기 적어도 하나의 프로세서에 명령하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
KR1020207026014A 2018-02-11 2018-12-29 오디오 및 비디오를 동기시키기 위한 시스템 및 방법 KR102419249B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201810141325.XA CN108449617B (zh) 2018-02-11 2018-02-11 一种控制音视频同步的方法及装置
CN201810141325.X 2018-02-11
PCT/CN2018/125216 WO2019153960A1 (en) 2018-02-11 2018-12-29 Systems and methods for synchronizing audio and video

Publications (2)

Publication Number Publication Date
KR20210002459A KR20210002459A (ko) 2021-01-08
KR102419249B1 true KR102419249B1 (ko) 2022-07-11

Family

ID=63192323

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207026014A KR102419249B1 (ko) 2018-02-11 2018-12-29 오디오 및 비디오를 동기시키기 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US11343560B2 (ko)
EP (1) EP3750322A4 (ko)
KR (1) KR102419249B1 (ko)
CN (1) CN108449617B (ko)
WO (1) WO2019153960A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108449617B (zh) * 2018-02-11 2020-04-03 浙江大华技术股份有限公司 一种控制音视频同步的方法及装置
CN109241010A (zh) * 2018-09-11 2019-01-18 中国人民解放军战略支援部队航天工程大学 一种数据储存方法、储存系统及计算机存储介质
CN111654761A (zh) * 2020-04-20 2020-09-11 威比网络科技(上海)有限公司 基于线上教育的视频处理方法、系统、设备及介质
CN112511885A (zh) * 2020-11-20 2021-03-16 深圳乐播科技有限公司 音视频同步方法、装置及存储介质
CN112764709B (zh) * 2021-01-07 2021-09-21 北京创世云科技股份有限公司 一种声卡数据的处理方法、装置及电子设备
CN112929713B (zh) * 2021-02-07 2024-04-02 Oppo广东移动通信有限公司 数据同步方法、装置、终端及存储介质
CN115102931B (zh) * 2022-05-20 2023-12-19 阿里巴巴(中国)有限公司 自适应调整音频延迟的方法及电子设备
CN115720278A (zh) * 2022-11-03 2023-02-28 深圳创维-Rgb电子有限公司 声音与画面的同步处理方法及相关装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107517400A (zh) * 2016-06-15 2017-12-26 成都鼎桥通信技术有限公司 流媒体播放方法及流媒体播放器

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5323272A (en) * 1992-07-01 1994-06-21 Ampex Systems Corporation Time delay control for serial digital video interface audio receiver buffer
US5583652A (en) * 1994-04-28 1996-12-10 International Business Machines Corporation Synchronized, variable-speed playback of digitally recorded audio and video
TW305043B (ko) * 1995-09-29 1997-05-11 Matsushita Electric Ind Co Ltd
US6122668A (en) * 1995-11-02 2000-09-19 Starlight Networks Synchronization of audio and video signals in a live multicast in a LAN
US6546426B1 (en) * 1997-03-21 2003-04-08 International Business Machines Corporation Method and apparatus for efficiently processing an audio and video data stream
US6816909B1 (en) * 1998-09-16 2004-11-09 International Business Machines Corporation Streaming media player with synchronous events from multiple sources
US6665751B1 (en) * 1999-04-17 2003-12-16 International Business Machines Corporation Streaming media player varying a play speed from an original to a maximum allowable slowdown proportionally in accordance with a buffer state
US20050185718A1 (en) * 2004-02-09 2005-08-25 Microsoft Corporation Pipeline quality control
EP1786209B1 (en) * 2004-09-02 2019-11-20 Sony Corporation Content receiver, video-audio output timing control method, and content providing system
US8010863B2 (en) * 2006-07-28 2011-08-30 Thomson Licensing Method and apparatus for synchronizing multiple multimedia streams
JP5087985B2 (ja) * 2007-04-27 2012-12-05 ソニー株式会社 データ処理装置、データ処理方法、及びプログラム
TW201029468A (en) * 2009-01-20 2010-08-01 Magima Digital Information Co Ltd Self-adaptive decoding synchronous device, decoding synchronous method, and visual decoding and displaying system
CN101674486B (zh) * 2009-09-29 2013-05-08 深圳市融创天下科技股份有限公司 一种流媒体音视频同步方法及系统
CN101710958B (zh) 2009-12-02 2015-11-25 北京中星微电子有限公司 一种音视频复合设备及其音视频同步的方法和装置
US20130242186A1 (en) * 2012-03-14 2013-09-19 Samsung Electronics Co., Ltd. Image processing apparatus and control method thereof
CN103338386B (zh) 2013-07-10 2016-01-13 航天恒星科技有限公司 基于简化时间戳的音视频同步方法
CN103546662A (zh) * 2013-09-23 2014-01-29 浙江工业大学 一种网络监控系统中音视频同步方法
EP2881944B1 (en) * 2013-12-05 2016-04-13 Nxp B.V. Audio signal processing apparatus
CN105898541B (zh) * 2014-11-12 2019-11-26 恩智浦美国有限公司 降低多媒体系统中等待时间的方法和装置
CN104902317A (zh) 2015-05-27 2015-09-09 青岛海信电器股份有限公司 音视频同步方法及装置
US9985887B2 (en) * 2015-08-27 2018-05-29 Cavium Inc. Method and apparatus for providing a low latency transmission system using adaptive buffering estimation
CN105744334A (zh) * 2016-02-18 2016-07-06 海信集团有限公司 一种音视频同步和同步播放的方法及设备
CN106658133B (zh) * 2016-10-26 2020-04-14 广州市百果园网络科技有限公司 一种音视频同步播放的方法及终端
CN106657090B (zh) * 2016-12-28 2020-09-29 深圳市共进电子股份有限公司 一种多媒体流的处理方法、装置和嵌入式设备
CN108449617B (zh) 2018-02-11 2020-04-03 浙江大华技术股份有限公司 一种控制音视频同步的方法及装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107517400A (zh) * 2016-06-15 2017-12-26 成都鼎桥通信技术有限公司 流媒体播放方法及流媒体播放器

Also Published As

Publication number Publication date
EP3750322A4 (en) 2021-01-20
EP3750322A1 (en) 2020-12-16
US20200374582A1 (en) 2020-11-26
CN108449617B (zh) 2020-04-03
KR20210002459A (ko) 2021-01-08
WO2019153960A1 (en) 2019-08-15
US11343560B2 (en) 2022-05-24
CN108449617A (zh) 2018-08-24

Similar Documents

Publication Publication Date Title
KR102419249B1 (ko) 오디오 및 비디오를 동기시키기 위한 시스템 및 방법
CN109089130B (zh) 一种调整直播视频的时间戳的方法和装置
KR101746165B1 (ko) 동영상 화면의 처리 방법 및 장치
WO2019223040A1 (zh) 一种合成音视频数据流的方法和装置
CN107566918B (zh) 一种视频分发场景下的低延时取流秒开方法
CN106686438B (zh) 一种跨设备的音频图像同步播放的方法、装置及系统
US20210044845A1 (en) Methods, systems, and media for adjusting quality level during synchronized media content playback on multiple devices
US10771866B2 (en) Methods, systems, and media synchronizing audio and video content on multiple media devices
EP3503570A1 (en) Method of transmitting video frames from a video stream to a display and corresponding apparatus
US8922713B1 (en) Audio and video synchronization
EP2908547A1 (en) Information-processing device, information-processing system, information-processing program, and moving image data transmission/reception method
US10887646B2 (en) Live streaming with multiple remote commentators
EP3881544B1 (en) Systems and methods for multi-video stream transmission
CN107517400B (zh) 流媒体播放方法及流媒体播放器
US9986303B2 (en) Video image coding data transmitter, video image coding data transmission method, video image coding data receiver, and video image coding data transmission and reception system
EP2656609A2 (en) Method of processing a sequence of coded video frames
US11570226B2 (en) Protocol conversion of a video stream
CN109379619A (zh) 音画同步方法及装置
KR101600891B1 (ko) 복수의 단말기에 출력되는 비디오 및 오디오를 동기화시키는 동기화시스템 및 방법
CN113691862B (zh) 视频处理方法、用于视频播放的电子设备和视频播放系统
CN114466145B (zh) 视频处理方法、装置、设备和存储介质
CN107959874B (zh) 音画同步自动校正方法和装置
US11227443B2 (en) Method, device, and computer program for using two network parts to deliver virtual reality content
CN108024121B (zh) 语音弹幕同步方法和系统
US11076197B1 (en) Synchronization of multiple video-on-demand streams and methods of broadcasting and displaying multiple concurrent live streams

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant