KR101234146B1 - 디지털 비디오의 적응적 동기 복호화를 위한 방법, 장치 및 컴퓨터 프로그램 제품 - Google Patents

디지털 비디오의 적응적 동기 복호화를 위한 방법, 장치 및 컴퓨터 프로그램 제품 Download PDF

Info

Publication number
KR101234146B1
KR101234146B1 KR1020107016858A KR20107016858A KR101234146B1 KR 101234146 B1 KR101234146 B1 KR 101234146B1 KR 1020107016858 A KR1020107016858 A KR 1020107016858A KR 20107016858 A KR20107016858 A KR 20107016858A KR 101234146 B1 KR101234146 B1 KR 101234146B1
Authority
KR
South Korea
Prior art keywords
key video
video frame
key
frame
frames
Prior art date
Application number
KR1020107016858A
Other languages
English (en)
Other versions
KR20100113538A (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 KR20100113538A publication Critical patent/KR20100113538A/ko
Application granted granted Critical
Publication of KR101234146B1 publication Critical patent/KR101234146B1/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/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/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/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/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/2368Multiplexing of audio and video streams
    • 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4341Demultiplexing of audio and video streams
    • 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/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8453Structuring of content, e.g. decomposing content into time segments by locking or enabling a set of features, e.g. optional functionalities in an executable program

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

디지털 비디오의 적응적 동기 복호화를 위한 장치는 프로세서를 포함할 수 있다. 그 프로세서는 다음 키 프레임 타임스탬프를 유지하고, 비디오 클립의 복수의 키 프레임들을 복호화하고, 정시에 도달하는 비디오 클립의 복수의 비-키 프레임들을 복호화하며, 그리고 비디오 프레임이 늦게 도달하고 다음 키 프레임이 다음 키 프레임 타임스탬프에 적어도 부분적으로 기초하여 계산된 드롭 타임 윈도우 내에 있다면 그 다음 키 프레임까지 하나 이상의 비-키 프레임들을 드롭하도록 구성될 수 있다. 대응되는 방법 및 컴퓨터 프로그램 제품이 또한 제공된다.

Description

디지털 비디오의 적응적 동기 복호화를 위한 방법, 장치 및 컴퓨터 프로그램 제품{Methods, apparatuses, and computer program products for adaptive synchronized decoding of digital video}
본 발명의 실시예들은 대체로 디지털 비디오 재생(playback) 기술에 관한 것이고, 특히 적응적 동기 복호화(adaptive synchronized decoding)를 통해 오디오/비디오 동기화(audio/video synchronization)를 유지하기 위한 방법, 장치 및 컴퓨터 프로그램 제품에 관한 것이다.
현대 통신 시대는 유선 및 무선 네트워크들의 거대한 확장을 야기하였다. 컴퓨터 네트워크, 텔레비전 네트워크 및 전화통신 네트워크는 소비자 요구에 의해 자극되어 전례없는 기술 신장을 경험하고 있다. 무선 및 모바일 네트워킹 기술들은, 정보 전송의 유연성 및 즉시성을 더 제공하며, 관련된 소비자 요구사항들을 다루었다.
이러한 네트워크들의 확장 및 통신 양식들의 발전은 이를테면 원격 네트워크 기기로부터 로컬 네트워크 단말로의 디지털 비디오 파일들의 스트리밍 또는 미디어 콘텐트 파일들의 다운로딩을 통해 더욱 더 복합적인 디지털 비디오들의 생성 및 전달을 가능하게 해 주었다. 대역폭 및 네트워크 범위에서의 확장이 디지털 비디오들의 복합성을 증가시켜 주고 그리고 비디오 콘텐트를 심지어 모바일 기기 단말들에게로 전달할 수 있게 하였기 때문에, 개인용 컴퓨터에서 그리고 PDA와 셀 폰과 같은 모바일 기기에서 사용되는 것과 같은 컴퓨터 하드웨어 및 소프트웨어의 능력은 필연적으로 최신 모바일 디지털 비디오 재생의 증가하는 수요를 맞추도록 증가하였다.
하드웨어 및 소프트웨어의 발달에도 불구하고, 사용되는 코덱(codec)들의 관련 소프트웨어 또는 하드웨어 또는 비디오 콘텐트의 해상도(resolution)과 무관하게 시스템의 성능을 초과하는 비디오 콘텐트는 언제나 생성될 수 있다. 비디오 콘텐트가 그것이 플레이되고 있는 시스템의 성능을 초과하는 경우, 가장 흔한 결과로서, 오디오/비디오 동기화 또는 AV 싱크(sync)(이것은 또한 때때로 페이싱(pacing)으로도 불림)로 알려진 것을 잃게 된다. 이상적으로, 비디오 콘텐트가 기기 상에서 플레이되는 경우에 오디오 및 비디오 트랙들은 서로 동기화되어 유지되어서, 예를 들어 비디오에서 어떤 사람이 말할 때, 음성의 오디오 트랙은 그 사람이 자신의 입을 여는 것에 관한 비디오 트랙과 동기화될 것이고, 이는 또한 일반적으로 립싱크(lip synchronization)로 불린다. 그러나, 비디오 복잡성이 그 비디오가 플레이되고 있는 시스템의 성능을 초과할 때, 소수의 경우들에서는, 립싱크가 상실될 수도 있고 그 사람 음성의 오디오는 비디오에서 그 사람이 자신의 입을 움직이는 것을 보여주기 약간 전 또는 약간 후 중 어느 한 시점에 플레이될 수 있다. 비디오 콘텐트를 플레이하기 위한 요건들이 시스템 성능을 더 많이 초과하는 더 좋지 않은 경우들에서, 오디오 트랙은 계속 플레이될 수도 있고 그렇지 않을 수도 있는 동안 비디오 재생은 주기적으로 모두 함께 정지하거나 단절될 수 있다. 이러한 AV 싱크 상실은 뷰어 경험(viewer experience)에 해로운 것이다.
비디오 콘텐트가 시스템의 능력을 초과하는 상황들에서 AV 싱크를 유지하려고 시도하기 위해, 비디오 및/또는 오디오 트랙 - 프레임들로 알려짐 - 의 부분들이 드롭되는 과거의 몇몇 알고리즘들이 제안되었다. 오디오 프레임들을 드롭하는 것이 AV 싱크를 유지하는 데 도움을 줄 수 있지만, 뷰어의 경험은 매우 저하되는데 왜냐하면 오디오 프레임들을 빠뜨리는 것이 뷰어에게 거의 항상 명백하게 드러나기 때문이다. 반면에, 하나 이상의 비디오 프레임들을 드롭하는 것은 많은 경우들에 있어서 반드시 뷰어의 눈에 띄는 것은 아니다. 예를 들어, 미국 텔레비전 표준은 초당 30개의 비디오 프레임들의 사용을 지시하고 있고, 반면에 유럽 표준은 비디오 재생을 위해 초당 25 프레임들의 사용을 규정하고 있어 뷰어들은 그 두 재생 표준들 간에 어떠한 분명한 차이도 식별할 수 없다. 그 결과, 비디오 콘텐트가 시스템의 능력을 초과할 때 시스템 상에서 AV 싱크를 최상으로 유지하기 위해, 바람직한 방안은 임의의 오디오 프레임들을 드롭하지 않으면서 하나 이상의 비디오 프레임들을 드롭하는 것이다.
비디오 프레임들을 드롭하는 것은 두 레벨들, 즉 (1) 후처리(postprocess)되기 전에 또는 (2) 복호화되기 전에 일어날 수 있다. 비디오 프레임들이 복호화된 후에 그리고 후처리되기 전에 드롭되는 첫 번째 시나리오에서, 프레임이 후처리기(postprocessor)에 도달하는데 있어 약간 늦은 각 시각에, 그것은 후처리 및 렌더링(rendering)되지 않을 것이고, 이는 이론적으로, 다음 프레임이 정시에 후처리되고 디스플레이될 만큼 충분한 시간을 절약할 것이다. 두 번째 시나리오에서, 복호기에 늦게 도달하는 프레임들은 복호화되기 전에 드롭될 수 있다.
복호화되기 전에 복호기 레벨에서 비디오 프레임들이 드롭될 수 있는 두 번째 시나리오에서, 어떻게 비디오 프레임들이 분류되는지를 이해하는 것이 우선 필요하다. 단순함을 위해, 본 출원에서 기재된 설명은 두 가지 유형들 중 어느 하나, 키 프레임(key frame) 또는 비-키 프레임(non-key frame) 중 어느 하나로서 비디오 프레임들을 분류할 것이다. 키 프레임은 또한 관련 기술분야에서 인트라-프레임(intra-frame) 또는 i-프레임으로 알려져 있고, 단일의 비디오 프레임을 임의의 이전 또는 다음 프레임들을 참조함이 없이 충분히 렌더링하기에 필요한 모든 정보를 담고 있는 자급형(self-contained) 비디오 프레임이다. 반면에, 비-키 프레임 - 이는 또한 예측 프레임(predictive frame; p-frame) 또는 양방향 프레임(bi-directional frame; b-frame)으로 알려져 있음 - 은 자급형이 아니고 하나 이상의 이전 또는 다음 프레임들을 참조할 수 있는 데이터를 포함한다. 예를 들어, 짧은 비디오 세그먼트 동안, 나머지 배경(background) 비디오 콘텐트는 동일 포지셔닝(positioning)을 유지하는 동안 하나의 오브젝트(object)가 프레임들의 시퀀스에 걸쳐 점차적으로 움직일 수 있다. 따라서, 마지막 키 프레임에 후속하는 비-키 프레임들은 비디오 콘텐트의 남아있는 배경을 충분히 렌더링할 방법에 관한 어떠한 데이터도 없이 그 하나의 움직이는 오브젝트의 위치 이동을 기술하는데 필요한 데이터만을 포함할 수 있다. 따라서, 비디오 프레임들이 시퀀스 내의 이전 및/또는 다음 비디오 프레임들을 참조할 수 있기 때문에, 프레임이 복호기 레벨에서 드롭되는 경우는 언제나 시각적인 영향이 있을 수 있는데 왜냐하면 그것들이 충분히 렌더링하기에 필요한 정보의 일정 부분을 빠뜨리고 있기 때문에 프레임의 드롭이 그 드롭된 프레임을 참조하는 임의의 프레임들을 부정확하게 렌더링되게 하게 할 것이기 때문이다. 그러면 그 시각적 품질은 임의의 프레임이 드롭되는 경우 빠르게 감소하고 그리고 어떠한 다음 비-키 프레임들도 드롭되지 않는 한 키-프레임이 복호화되고 유지될 때만 복원될 수 있다.
현재 이전에 복호기 레벨에서 프레임이 드롭되는 경우 시각적 품질의 결과적인 감소에 대한 가장 일반적인 선행기술 솔루션은 임의의 비-키 프레임이 늦었다면 다음 키 프레임까지 모든 연속적인 프레임들을 드롭하는 것이었다. 이 방안 하에서는, 다음 키 프레임의 도달까지 어떠한 비-키 프레임이라도 드롭된다면, 유입되는 비디오 프레임들의 디스플레이는 중단될 것이다. 만약 비디오 클립이 키 프레임들을 별로 포함하고 있지 않다면, 뷰어는 재생이 중단되었거나 단절되었다는 인상을 받을 수 있다.
이에 따라, 비-키 프레임들의 시퀀스들을 드롭하는 것에 관한 선행기술 방안들에 의해 유발될 수 있는 비디오 재생에서의 장시간 중지를 방지함으로써 가능한 한 뷰어 경험에 관한 부정적인 인상을 줄이도록 하면서 실질적으로 AV 동기화를 유지하도록 비디오 프레임들을 적응적으로 복호화하고 드롭하게 해 주는 개선된 AV 동기화 유지 방안을 제공하는 것이 유리할 것이다. 이러한 개선된 방안은 시스템의 안전 지대(comfort zone)를 넘는 경우에서 그 시스템의 성능을 개선시키는데 도움을 줄 수 있고, 이는 그렇지 않으면 비디오 콘텐트의 복잡성을 다룰 수 없을 환경에서 그 비디오 콘텐트의 최적의 재생을 가능하게 해 준다.
그러므로, 비디오 클립이 플레이되는 시스템의 성능을 초과하는 복잡성을 갖는 그 비디오 클립에 관하여 그 비디오 클립의 뷰어의 비디오 재생 경험을 향상시키는 방법, 장치 및 컴퓨터 프로그램 제품이 제공된다. 특히, 예를 들어 복호기에의 비-키 프레임들의 도달 타이밍 및 다음 키 프레임의 근접도에 따라 복호기 레벨에서 비-키 비디오 프레임들의 적응적 드롭을 가능하게 하는 방법, 장치 및 컴퓨터 프로그램 제품이 제공된다. 이 점에 있어서, AV 싱크는 대부분의 환경들에서 유지될 수 있고 비디오 스트림은 단절되는 모습을 뷰어에게 보여주지 않을 수 있다. 이에 따라, 시스템의 재생 성능을 초과하는 비디오 클립을 볼 때 뷰어 경험이 향상될 수 있다.
하나의 바람직한 실시예에서, 다음 키 프레임 타임스탬프를 유지하는 단계, 비디오 클립의 복수의 키 프레임들을 복호화하는 단계, 정시에 도달하는, 비디오 클립의 복수의 비-키 프레임들을 복호화하는 단계, 및 비디오 프레임이 늦게 도달하고 다음 키 프레임이 계산된 드롭 타임 윈도우(drop time window) 내에 있다면 다음 키 프레임까지 하나 이상의 비-키 프레임들을 드롭하는 단계를 포함할 수 있는 방법이 제공된다. 다음 키 프레임이 그 드롭 타임 윈도우 내에 있는지 여부의 결정은 다음 키 프레임 타임스탬프를 기초로 한다.
또 하나의 바람직한 실시예에서, 컴퓨터-판독가능 프로그램 코드 부분들을 저장한 적어도 하나의 컴퓨터-판독가능 저장 매체를 포함하는 컴퓨터 프로그램 제품이 제공된다. 그 컴퓨터-판독가능 프로그램 코드 부분들은 제1, 제2, 제3 및 제4 실행가능 부분들을 포함한다. 제1 실행가능 부분은 다음 키 프레임 타임스탬프를 유지하기 위한 것이다. 제2 실행가능 부분은 비디오 클립의 복수의 키 프레임들을 복호화하기 위한 것이다. 제3 실행가능 부분은 정시에 도달하는, 비디오 클립의 복수의 비-키 프레임들을 복호화하기 위한 것이다. 제4 실행가능 부분은 비디오 프레임이 늦게 도달하고 다음 키 프레임이 계산된 드롭 타임 윈도우 내에 있다면 다음 키 프레임가지 하나 이상의 비-키 프레임들을 드롭하기 위한 것이다. 다음 키 프레임이 그 드롭 타임 윈도우 내에 있는지 여부의 결정은 다음 키 프레임 타임스탬프를 기초로 한다.
또 하나의 바람직한 실시예에서, 프로세서를 포함하는 장치가 제공된다. 그 프로세서는 다음 키 프레임 타임스탬프를 유지하고, 비디오 클립의 복수의 키 프레임들을 복호화하고, 정시에 도달하는, 비디오 클립의 복수의 비-키 프레임들을 복호화하며, 그리고 비디오 프레임이 늦게 도달하고 다음 키 프레임이 계산된 드롭 타임 윈도우 내에 있다면 다음 키 프레임까지 하나 이상의 비-키 프레임들을 드롭하도록 구성될 수 있다. 다음 키 프레임이 그 드롭 타임 윈도우 내에 있는지 여부의 결정은 다음 키 프레임 타임스탬프를 기초로 한다.
또 하나의 바람직한 실시예에서, 다음 키 프레임 타임스탬프를 유지하는 수단, 비디오 클립의 복수의 키 프레임들을 복호화하는 수단, 정시에 도달하는, 비디오 클립의 복수의 비-키 프레임들을 복호화하는 수단, 및 비디오 프레임이 늦게 도달하고 다음 키 프레임이 계산된 드롭 타임 윈도우 내에 있다면 다음 키 프레임까지 하나 이상의 비-키 프레임들을 드롭하는 수단을 포함하는 장치가 제공된다. 다음 키 프레임이 그 드롭 타임 윈도우 내에 있는지 여부의 결정은 다음 키 프레임 타임스탬프를 기초로 한다.
이에 의하여, 본 발명의 실시예들은 비디오 재생을 개선시키는 방법, 장치 및 컴퓨터 프로그램 제품을 제공할 수 있다. 그 결과, 예를 들어, 비디오 클립을 보는 뷰어의 경험은 시스템 성능이 그 비디오 클립의 복잡성에 의해 초과되는 시스템 상에서 그 비디오 클립이 플레이되고 있는 경우일 지라도 향상된다.
이와 같이 본 발명의 실시예들을 일반적으로 기술하였는 바, 이제 첨부 도면들을 참조하여 언급할 것이고 - 여기서 그 도면들은 반드시 일정한 비례로 그려진 것은 아님 - 그 도면들에서,
도 1은 본 발명의 바람직한 일 실시예에 따른 모바일 단말의 도식적인 블록 다이어그램이고;
도 2는 본 발명의 바람직한 일 실시예에 따른 무선 통신 시스템의 도식적인 블록 다이어그램이고;
도 3은 본 발명의 바람직한 일 실시예에 따른 적응적 동기 복호화 알고리즘의 흐름도를 묘사하는 블록 다이어그램이고;
도 4는 본 발명의 바람직한 일 실시예에 따라 서버 상에서 비디오 클립들을 복호화 및 트랜스코딩(transcoding)하고 그 트랜스코딩된 클립들을 원격 기기에 스트리밍하는 시스템을 예시하고 있는 블록 다이어그램이며; 그리고
도 5는 적응적 동기 복호화를 위한 바람직한 방법에 따른 흐름도이다.
이제 본 발명의 실시예들을 본 발명의 모든 실시예들이 아닌 일부 실시예들이 도시된 첨부 도면들을 참조하여 이하에서 더 충분하게 설명할 것이다. 사실, 본 발명은 다수의 상이한 형태들로 구현될 수 있고 본 출원에서 언급한 실시예들에 제한되는 것으로 해석되어서는 안될 것이다; 오히려, 이들 실시예들은 본 개시내용이 법적 적용 요건들을 만족시키기 위해 제공된다. 동일한 참조 번호들은 명세서 전체에 걸쳐 동일한 요소들을 가리킨다.
도 1은 본 발명에서 이익을 얻을 수 있는 모바일 단말(10)의 블록 다이어그램을 예시하고 있다. 그러나, 그 예시되어 있고 이하에서 설명되는 모바일 단말은 단지 본 발명에서 이익을 얻을 수 있는 한 가지 유형의 전자 기기만을 단지 예시하고 있을 뿐이고, 그러므로 본 발명의 범위를 제한하는 것으로 받아들여져서는 안 될 것임을 이해하여야 할 것이다. 그 전자 기기의 몇몇 실시예들이 예로서 도해되어 있고 이하에서 설명될 것이지만, 다른 유형의 전자 기기들, 이를테면 PDA(portable digital assistant), 페이저(pager), 랩탑(laptop) 컴퓨터, 데스크탑(desktop) 컴퓨터, 게임용 기기, 텔레비전, 및 다른 유형의 전자 시스템들에서 본 발명을 활용할 수 있다.
도시된 바와 같이, 모바일 단말(10)은 송신기(14) 및 수신기(16)와 통신하는 안테나(12)를 포함한다. 그 모바일 단말은 또한 그 송신기에 신호를 제공하고 그 수신기로부터 신호를 수신하는 콘트롤러(20) 또는 다른 프로세서를 포함한다. 이들 신호들은 적용가능한 셀룰러 시스템의 공중 인터페이스(air interface) 표준, 및/또는 IEEE 802.11과 같은 무선 LAN(WLAN) 기술, Wi-Fi(Wireless-Fidelity) 기술, 및/또는 기타 등등을 포함하는 그러나 이에 제한되지 않는 임의의 개수의 상이한 무선 네트워킹 기술들에 따른 시그널링 정보를 포함할 수 있다. 또한, 이들 신호들은 음성 데이터, 사용자 생성 데이터, 사용자 요청 데이터, 및/또는 기타 등등을 포함할 수 있다. 이 점에 있어서, 모바일 단말은 하나 이상의 공중 인터페이스 표준들, 통신 프로토콜들, 변조 타입들, 액세스 타입들, 및/또는 기타 등등을 이용하여 동작할 수 있다. 더 자세하게는, 모바일 단말은 다양한 제1세대(1G), 제2세대(2G), 2.5G, 제3세대(3G) 통신 프로토콜들, 제4세대(4G) 통신 프로토콜들, 및/또는 기타 등등에 따라 동작할 수 있다. 예를 들어, 모바일 단말은 2G 무선 통신 프로토콜들 IS-136(TDMA), GSM, 및 IS-95(CDMA)에 따라 동작할 수 있다. 또한, 예를 들어, 모바일 단말은 2.5G 무선 통신 프로토콜들 GPRS, EDGE(Enhanced Data GSM Environment) 또는 기타 등등에 따라 동작할 수 있다. 더 나아가, 예를 들어, 모바일 단말은 WCDMA 무선 액세스 기술을 활용하는 범용 모바일 전화 시스템(Universal Mobile Telephone System; UMTS) 네트워크와 같이 3G 무선 통신 프로토콜들에 따라 동작할 수 있다. 어떤 NAMPS(narrow-band AMPS) 방식 뿐만 아니라 TACS 방식의 모바일 단말들도 또한 본 발명의 교시내용에서 이익을 얻을 수 있고, 이중 모드 또는 더 높은 모드의 전화기들(예: 디지털/아날로그 또는 TDMA/CDMA/아날로그 전화기들)도 그러할 것이다. 또한, 모바일 단말(10)은 Wi-Fi 프로토콜들에 따라 동작할 수 있다.
콘트롤러(20)는 모바일 단말(10)의 오디오 기능 및 로직 기능을 구현하는데 요구되는 회로를 포함할 수 있다는 것이 이해된다. 예를 들어, 콘트롤러(20)는 디지털 신호 프로세서 기기, 마이크로프로세서 기기, 아날로그-대-디지털 컨버터, 디지털-대-아날로그 컨버터, 및/또는 기타 등등일 수 있다. 모바일 단말의 제어 및 신호 프로세싱 기능들은 이들 기기들 간에 그들 각자의 성능에 따라 할당될 수 있다. 그 콘트롤러는 부가적으로 내부 보이스 코더(voice coder; VC, 20a), 내부 데이터 모뎀(data modem; DM, 20b) 및/또는 기타 등등을 포함할 수 있다. 또한, 그 콘트롤러는 메모리에 저장될 수 있는 하나 이상의 소프트웨어 프로그램들을 동작시키는 기능을 포함할 수 있다. 예를 들어, 콘트롤러(20)는 웹 브라우저(Web browser)와 같은 접속 프로그램을 동작시킬 수 있다. 그 접속 프로그램은 모바일 단말(10)이 무선 어플리케이션 프로토콜(Wireless Application Protocol; WAP), 하이퍼텍스트 전송 프로토콜(hypertext transfer protocol; HTTP), 및/또는 기타 등등과 같은 프로토콜에 따라 위치-기반 콘텐트(location-based content)와 같은 웹 콘텐트를 송신 및 수신할 수 있게 해 준다. 모바일 단말(10)은 전송 제어 프로토콜/인터넷 프로토콜(Transmission Control Protocol/Internet Protocol; TCP/IP)을 사용하여 인터넷(50)을 거쳐 웹 콘텐트를 송신 및 수신할 수 있다.
모바일 단말(10)은 또한, 콘트롤러(20)에 연결된, 기존의 이어폰이나 스피커(24), 벨소리장치(ringer, 22), 마이크로폰(26), 디스플레이(28), 사용자 입력 인터페이스, 및/또는 기타 등등을 포함하는 사용자 인터페이스를 포함할 수 있다. 비록 도시되어 있지는 않지만, 그 모바일 단말은 예를 들어 탐지가능 출력으로서 기계적 진동을 제공하는 회로와 같이 그 모바일 단말에 관련된 다양한 회로들에 전력공급하기 위한 배터리를 포함할 수 있다. 사용자 입력 인터페이스는 모바일 단말이 키패드(30), 터치 디스플레이(미도시), 조이스틱(미도시), 및/또는 다른 입력 기기와 같이 그 모바일 단말이 데이터를 수신할 수 있게 해 주는 기기들을 포함할 수 있다. 키패드를 포함한 실시예들에서, 그 키패드는 통상적인 숫자(0-9) 및 관련 키들(#,*), 및/또는 그 모바일 단말을 동작시키기 위한 다른 키들을 포함할 수 있다.
도 1에 도시된 바와 같이, 모바일 단말(10)은 또한 데이터를 공유 및/또는 획득하는 하나 이상의 수단들을 포함할 수 있다. 예를 들어, 그 모바일 단말은 데이터가 RF 기술들에 따라 전자 기기들과 공유될 수 있도록 그리고/또는 그 전자 기기들로부터 획득될 수 있도록 단거리(short-range) 무선 주파수(RF) 트랜시버 및/또는 질문기(interrogator, 64)를 포함할 수 있다. 그 모바일 단말은 예를 들어, 적외선(IR) 트랜시버(66), BluetoothTM Special Interest Group에 의해 개발된 블루투스 브랜드 무선 기술을 이용하여 동작하는 블루투스(BT) 트랜시버(68), 및/또는 기타 등등과 같은 다른 단거리 트랜시버들을 포함할 수 있다. 블루투스 트랜시버(68)는 와이브리(WibreeTM) 무선 표준들에 따라 동작할 수 있다. 이 점에 있어서, 모바일 단말(10) 및 특히 단거리 트랜시버는 예를 들어 10미터 내와 같은 그 모바일 단말의 근접 거리 내의 전자 기기들에게 데이터를 송신하고 그리고/또는 그 전자 기기들로부터 데이터를 수신할 수 있다. 비록 도시되지는 않았지만, 그 모바일 단말은 IEEE 802.11 기술과 같은 WLAN 기술, Wi-Fi 기술, 및/또는 기타 등등을 포함하는 다양한 무선 네트워킹 기술들에 따라 전자 기기들로부터 데이터를 송신 및/또는 수신할 수 있다.
모바일 단말(10)은, 모바일 가입자에 관련된 정보 요소들을 저장할 수 있는 가입자 식별 모듈(subscriber identity module; SIM, 38), 착탈식 사용자 식별 모듈(removable user identity module; R-UIM), 및/또는 기타 등등과 같은 메모리를 포함할 수 있다. SIM에 더하여, 그 모바일 단말은 다른 착탈식 및/또는 고정식 메모리를 포함할 수 있다. 이 점에 있어서, 그 모바일 단말은 데이터의 일시적 저장을 위한 캐쉬 영역(cache area)을 포함할 수 있는 휘발성 RAM(Random Access Memory)과 같은 휘발성 메모리(40)를 포함할 수 있다. 그 모바일 단말은 엠베디드 및/또는 착탈식일 수 있는 다른 비휘발성 메모리(42)를 포함할 수 있다. 비휘발성 메모리는 EEPROM, 플래쉬 메모리, 및/또는 기타 등등을 포함할 수 있다. 그 메모리들은 모바일 단말의 기능들을 수행하기 위해 그 모바일 단말에 의해 사용될 수 있는 하나 이상의 소프트웨어 프로그램들, 명령들, 정보들, 데이터, 및/또는 기타 등등을 저장할 수 있다. 예를 들어, 그 메모리들은 모바일 단말(10)을 고유하게 식별할 수 있는 식별자, 이를테면 국제 모바일 장비 식별(international mobile equipment identification; IMEI) 코드를 포함할 수 있다.
바람직한 일 실시예에서, 모바일 단말(10)은 콘트롤러(20)와 통신하는 미디어 캡쳐 모듈, 이를테면 카메라, 비디오 및/또는 오디오 모듈을 포함한다. 그 미디어 캡쳐 모듈은 저장, 디스플레이 또는 전송을 위해 이미지, 비디오 및/또는 오디오를 캡쳐하는 임의의 수단일 수 있다. 예를 들어, 미디어 캡쳐 모듈이 카메라 모듈(36)인 바람직한 일 실시예에서, 카메라 모듈(36)은 캡쳐된 이미지로부터 디지털 이미지 파일 또는 일련의 캡쳐된 이미지들로부터 디지털 비디오 파일을 형성할 수 있는 디지털 카메라를 포함할 수 있다. 이와 같은 것으로서, 카메라 모듈(36)은 렌즈나 다른 광학 기기와 같은 모든 하드웨어, 및 캡쳐된 이미지 또는 일련의 캡쳐된 이미지들로부터 디지털 이미지 또는 비디오 파일을 생성하기 위해 필요한 소프트웨어를 포함한다. 대안적으로, 카메라 모듈(36)은 단지 이미지를 뷰하는데 필요한 하드웨어만을 포함할 수 있고, 동시에 모바일 단말(10)의 메모리 기기는 캡쳐된 이미지 또는 이미지들로부터 디지털 이미지 또는 비디오 파일을 생성하기 위해 필요한 소프트웨어의 형태로 콘트롤러(20)에 의해 실행될 명령들을 저장한다. 바람직한 일 실시예에서, 카메라 모듈(36)은, 콘트롤러(20)가 이미지 데이터를 프로세싱하는 것을 돕는 보조프로세서(co-processor)와 같은 프로세싱 요소, 및 이미지 데이터를 압축 및/또는 압축해제하기 위한 부호기 및/또는 복호기를 더 포함할 수 있다. 그 부호기 및/또는 복호기는 예를 들어 JPEG 또는 MPEG 표준 포맷에 따라 부호화 및/또는 복호화할 수 있다.
이제 도 2를 참조하면, 도 1의 모바일 단말과 같은 전자 기기로의 통신 및 그 전자 기기로부터의 통신을 지원할 수 있는 하나의 유형의 시스템에 관한 도해예가 제한적이 아닌 예로 제공된다. 도시된 바와 같이, 하나 이상의 모바일 단말들(10)은 각각 기지 사이트(base site) 또는 기지국(base station; BS, 44)에 신호를 송신하고 기지 사이트 또는 기지국(BS, 44)으로부터 신호를 수신하는 안테나(12)를 포함할 수 있다. 기지국(44)은 이를테면 모바일 교환 센터(mobile switching center; MSC, 46)와 같이 네트워크를 동작시키는데 요구되는 요소들을 각각이 포함하는 하나 이상의 셀룰러 또는 모바일 네트워크들의 일부분일 수 있다. 관련 기술분야에서 숙련된 자들에게 잘 알려진 바와 같이, 그 모바일 네트워크는 또한 기지국/MSC/상호작용 기능(Base Station/MSC/Interworking function; BMI)로 불릴 수 있다. 동작에 있어서, MSC(46)는 모바일 단말(10)이 전화를 걸거나 받고 있을 때 모바일 단말(10)로의 그리고 모바일 단말(10)로부터의 호들을 라우팅할 수 있다. MSC(46)는 또한 모바일 단말(10)이 통화에 관계될 때 지상통신 중계 회선들에 대한 접속을 제공할 수 있다. 게다가, MSC(46)는 모바일 단말(10)에 메시지들을 포워딩하는 것 그리고 모바일 단말(10)로부터의 메시지들을 포워딩하는 것을 제어할 수 있고, 또한 메시징 센터로 모바일 단말(10)에 관한 메시지들을 포워딩하는 것 그리고 메시징 센터로부터의 모바일 단말(10)에 관한 메시지들을 포워딩하는 것을 제어할 수 있다. 비록 MSC(46)가 도 2의 시스템에 도시되어 있지만, MSC(46)는 단지 바람직한 네트워크 기기일 뿐이고 본 발명은 MSC를 활용하는 네트워크에서의 사용에 제한되지 않는다.
MSC(46)는 로컬 영역 네트워크(local area network; LAN), 도시 지역 네트워크(metropolitan area network; MAN), 및/또는 광역 네트워크(wide area network; WAN)와 같은 데이터 네트워크에 연결될 수 있다. MSC(46)는 그 네트워크에 직접 연결될 수 있다. 그러나, 하나의 전형적인 실시예에서, MSC(46)는 GTW(48)에 연결될 수 있고 GTW(48)는 인터넷(50)과 같은 WAN에 연결될 수 있다. 차례로, 프로세싱 요소들(예: 개인용 컴퓨터, 서버 컴퓨터 또는 기타 등등)과 같은 기기들이 인터넷(50)을 거쳐 모바일 단말(10)에 연결될 수 있다. 예를 들어, 아래에서 설명되는 바와 같이, 그 프로세싱 요소들은 아래에서 설명될 바와 같이 컴퓨팅 시스템(52, 도 2에 2개가 도시되어 있음), 원 서버(origin server, 54, 도 2에 하나가 도시되어 있음) 또는 기타 등등과 연관된 하나 이상의 프로세싱 요소들을 포함할 수 있다.
도 2에 도시된 바와 같이, BS(44)는 또한 시그널링 GPRS(General Packet Radio Service) 지원 노드(signaling GPRS support node; SGSN, 56)에 연결될 수 있다. 관련 기술분야에서 숙련된 자들에게 알려져 있는 바와 같이, SGSN(56)은 패킷 교환 서비스(packet switched service)에 대하여 MSC(46)와 유사한 기능들을 수행할 수 있다. SGSN(56)은, MSC(46)처럼, 인터넷(50)과 같은 데이터 네트워크에 연결될 수 있다. SGSN(56)은 그 데이터 네트워크에 직접 연결될 수 있다. 대안적으로, SGSN(56)은 GPRS 코어 네트워크(58)와 같은 패킷-교환 코어 네트워크에 연결될 수 있다. 그때 그 패킷-교환 코어 네트워크는 다른 GTW(48), 이를테면 GTW GPRS 지원 노드(GTW GPRS support node; GGSN, 60)에 연결될 수 있고, GGSN(60)은 인터넷(50)에 연결될 수 있다. GGSN(60)에 더하여, 그 패킷-교환 코어 네트워크는 또한 GTW(48)에 연결될 수 있다. 또한, GGSN(60)은 메시징 센터에 연결될 수 있다. 이 점에 있어서, GGSN(60) 및 SGSN(56)은, MSC(46)처럼, MMS 메시지들과 같은 메시지들의 포워딩을 제어할 수 있다. GGSN(60) 및 SGSN(56)은 또한 메시징 센터로 모바일 단말(10)에 관한 메시지들을 포워딩하는 것 그리고 메시징 센터로부터의 모바일 단말(10)에 관한 메시지들을 포워딩하는 것을 제어할 수 있다.
또한, GPRS 코어 네트워크(58) 및 GGSN(60)에 SGSN(56)을 연결함으로써, 컴퓨팅 시스템(52) 및/또는 원 서버(54)와 같은 기기들은 인터넷(50), SGSN(56) 및 GGSN(60)을 거쳐 모바일 단말(10)에 연결될 수 있다. 이 점에 있어서, 컴퓨팅 시스템(52) 및/또는 원 서버(54)와 같은 기기들은 SGSN(56), GPRS 코어 네트워크(58) 및 GGSN(60)을 거쳐 모바일 단말(10)과 통신할 수 있다. 모바일 단말들(10) 및 다른 기기들(예: 컴퓨팅 시스템(52), 원 서버(54) 등)을 인터넷(50)에 직접적으로 또는 간접적으로 접속시킴으로써, 모바일 단말들(10)은 이를테면 하이퍼텍스트 전송 프로토콜(HTTP)에 따라 그 다른 기기들과 그리고 서로와 통신하여, 그에 의해 모바일 단말들(10)의 다양한 기능들을 실행할 수 있다.
비록 모든 가능한 모바일 네트워크의 모든 요소가 도 2에 도시되고 본 출원에서 기술되는 것은 아니지만, 모바일 단말(10)과 같은 전자 기기들은 BS(44)를 통해 다수의 상이한 네트워크들 중 어느 하나 이상에 연결될 수 있다는 것이 인식되어야 할 것이다. 이 점에 있어서, 그 네트워크(들)는 다수의 제1세대(1G), 제2세대(2G), 2.5G, 제3세대(3G), 제4세대(4G) 및/또는 미래의 모바일 통신 프로토콜들 또는 기타 등등 중 어느 하나 이상에 따라 통신을 지원할 수 있다. 예를 들어, 그 네트워크(들) 중 하나 이상의 네트워크는 2G 무선 통신 프로토콜들 IS-136(TDMA), GSM, 및 IS-95(CDMA)에 따라 통신을 지원할 수 있다. 또한, 예를 들어, 그 네트워크(들) 중 하나 이상의 네트워크는 2.5G 무선 통신 프로토콜들 GPRS, EDGE, 또는 기타 등등에 따라 통신을 지원할 수 있다. 더 나아가, 예를 들면, 그 네트워크(들) 중 하나 이상의 네트워크는 광대역 코드 분할 다중 액세스(Wideband Code Division Multiple Access; WCDMA) 무선 액세스 기술을 활용하는 범용 모바일 전화 시스템(UMTS) 네트워크와 같이 3G 무선 통신 프로토콜들에 따라 통신을 지원할 수 있다. 어떤 협대역 AMPS(NAMPS) 방식 뿐만 아니라 TACS 방식의 네트워크(들)도 또한 본 발명의 실시예들에서 이점을 얻을 수 있고, 이중 모드 또는 더 높은 모드의 모바일 단말들(예: 디지털/아날로그 또는 TDMA/CDMA/아날로그 전화기들)도 그러할 것이다.
도 2에 묘사된 바와 같이, 모바일 단말(10)은 또한 하나 이상의 무선 액세스 포인트(access point;AP)들(62)에 연결될 수 있다. AP들(62)은, 이를테면 예를 들어 무선 주파수(RF), 블루투스(BT), 적외선(IrDA) 또는 다수의 상이한 무선 네트워킹 기술들 - IEEE 802.11(예: 802.11a, 802.11b, 802.11g, 802.11n 등)과 같은 무선 LAN(WLAN) 기술, 와이브리 기술, IEEE 802.16과 같은 와이맥스(WiMAX) 기술, Wi-Fi 기술 및/또는 IEEE 802.15와 같은 초 광대역(ultra wideband; UWB) 기술 또는 기타 등등을 포함 - 중 임의의 기술과 같은 기술들에 따라 모바일 단말(10)과 통신하도록 구성된 액세스 포인트들을 포함할 수 있다. AP들(62)은 인터넷(50)에 연결될 수 있다. MSC(46)에서처럼, AP들(62)은 인터넷(50)에 직접 연결될 수 있다. 그러나, 하나의 실시예에서, AP들(62)은 GTW(48)를 거쳐 인터넷(50)에 간접적으로 연결될 수 있다. 또한, 하나의 실시예에서, BS(44)는 또 하나의 AP(62)로서 생각될 수 있다. 인식될 바와 같이, 모바일 단말들(10)과 컴퓨팅 시스템(52), 원 서버(54), 및/또는 다수의 다른 기기들 중 어느 것을 인터넷(50)에 직접적으로 또는 간접적으로 접속시킴으로써, 모바일 단말들(10)은 서로와, 그리고 그 컴퓨팅 시스템 등과 통신하여, 그에 의해 모바일 단말들(10)의 다양한 기능들, 이를테면 컴퓨팅 시스템(52)으로 데이터나 콘텐트 등을 송신하기 위한 그리고/또는 컴퓨팅 시스템(52)으로부터 콘텐트나 데이터 등을 수신하기 위한 다양한 기능들을 실행할 수 있다. 본 출원에서 사용되는 용어들로서, "데이터", "콘텐트", "정보" 및 이와 유사한 용어들은 본 발명의 실시예들에 따라 송신, 수신 및/또는 저장되어질 수 있는 데이터를 말하는 것으로 서로 바꾸어 사용될 수 있다. 따라서, 임의의 이러한 용어들의 사용은 본 발명의 사상 및 범위를 제한하기 위한 것으로 해석되어서는 안될 것이다.
비록 도 2에 도시되진 않았지만, 인터넷(50)을 거쳐 컴퓨팅 시스템들(52) 및/또는 원 서버(54)에 모바일 단말(10)을 연결하는 것에 더하여 또는 그러한 연결 대신에, 모바일 단말(10), 컴퓨팅 시스템(52) 및 원 서버(54)는 서로에 연결되어, 예를 들어 RF, BT, IrDA 또는 다수의 상이한 유선 또는 무선 통신 기술들 - LAN, WLAN, WiMAX, Wi-Fi, WibreeTM 및/또는 UWB 기술들을 포함 - 중 임의의 기술에 따라 통신할 수 있다. 컴퓨팅 시스템들(52) 중 하나 이상은 부가적으로 또는 대안적으로 콘텐트를 저장할 수 있는 착탈식 메모리를 포함할 수 있고, 그 콘텐트는 이후에 모바일 단말(10)로 전송되어질 수 있다. 또한, 모바일 단말(10)은 하나 이상의 전자 기기들, 이를테면 프린터, 디지털 프로젝터 및/또는 다른 멀티미디어 캡쳐용, 생산용 및/또는 저장용 기기들(예: 다른 단말들)에 연결될 수 있다. 컴퓨팅 시스템들(52)에서처럼, 모바일 단말(10)은 이를테면 예를 들어 RF, BT, IrDA 또는 다수의 상이한 유선 또는 무선 통신기술들 - USB, LAN, WibreeTM, Wi-Fi, WLAN, WiMAX 및/또는 UWB 기술들을 포함 - 중 임의의 기술과 같은 기술들에 따라 휴대용 전자 기기들과 통신하도록 구성될 수 있다. 이 점에 있어서, 모바일 단말(10)은 단거리 통신 기술들을 통해 다른 기기들과 통신할 수 있다. 예컨대, 모바일 단말(10)은 단거리 통신 트랜시버(80)를 구비한 하나 이상의 기기들(51)과 단거리 무선 통신을 할 수 있다. 전자 기기들(51)은 블루투스, RFID, IR, WLAN, IrDA(Infrared Data Association) 또는 기타 등등을 포함하는 그러나 이에 제한되지 않는 다수의 상이한 단거리 통신 기술들 중 임의의 기술에 따라 데이터를 송신 및/또는 수신할 수 있는 다수의 상이한 기기들 및 트랜스폰더들 중 어느 것을 포함할 수 있다. 전자 기기(51)는 다수의 상이한 모바일 또는 고정형 기기들 - 다른 모바일 단말, 무선 부속품, 전기제품, PDA, 페이저, 랩탑 컴퓨터, 움직임 센서(motion sensor), 라이트 스위치(light switch) 및 다른 유형의 전자 기기들을 포함 - 중 임의의 기기를 포함할 수 있다.
도 3은 본 발명의 바람직한 일 실시예에 따른 적응적 동기 복호화 알고리즘의 흐름도를 나타내는 블록 다이어그램을 예시하고 있다. 그 흐름도의 각 블록이나 단계 및 그 흐름도 내의 블록들의 조합들은 하나 이상의 컴퓨터 프로그램 명령들을 포함하는 소프트웨어, 펌웨어, 하드웨어와 같은 다양한 수단들에 의해 구현될 수 있음을 이해할 것이다. 예를 들어, 상기에서 설명된 절차들 중 하나 이상은 컴퓨터 프로그램 명령들에 의해 구현될 수 있다. 이 점에 있어서, 이들 컴퓨터 프로그램 명령들은 하나 이상의 전자 기기들의 메모리 기기에 의해 저장되고 적어도 하나의 프로세서에 의해 실행될 수 있다. 인식될 바와 같이, 임의의 이러한 컴퓨터 프로그램 명령들은 기계를 산출하기 위한 컴퓨팅 기기나 다른 장치(즉, 하드웨어) 상으로 로딩되어, 그 컴퓨팅 기기나 다른 장치 상에서 실행되는 명령들은 도 3의 방법을 구현할 수 있다. 이들 컴퓨터 프로그램 명령들은 컴퓨터 기기나 다른 장치에게 특정 방식으로 기능할 것을 지시할 수 있는 컴퓨터-판독가능 메모리에 저장되어서, 그 컴퓨터-판독가능 메모리에 저장된 명령들은 도 3의 방법을 구현하기 위한 명령들을 포함하는 제조 물품을 산출할 수 있다. 그 컴퓨터 프로그램 명령들은 컴퓨팅 기기나 다른 장치 상으로 로딩되어 그 컴퓨팅 기기나 다른 장치 상에서 수행될 일련의 동작 단계들이 컴퓨터-구현 프로세스를 산출하게 할 수 있음으로써, 그 컴퓨팅 기기나 다른 장치 상에서 실행되는 명령들이 도 3의 방법을 구현하기 위한 단계들을 제공하게 할 수 있다.
바람직한 일 실시예에서, 본 발명은 기기 - 예를 들어 모바일 단말(10) - 의 프로세서 - 예를 들어 콘트롤러(20) - 에 의해 실행되거나 그렇지 않으면 제어되는 명령들을 포함할 수 있다. 예를 들어, 사용자는 모바일 단말(10)의 디스플레이(28) 상에서 비디오 클립을 볼 수 있다. 바람직한 일 실시예에서, 비디오 클립은 모바일 단말(10)의 메모리(42) 내에 있을 수 있고 이전에 도 4의 비디오 소스(150) - 이것은 원 서버(54)로 구현될 수 있음 - 와 같은 원격 네트워크 기기로부터 다운로드되었을 수 있다. 또 하나의 바람직한 실시예에서, 비디오 클립은 모바일 단말(10)의 카메라 모듈(36)에 의해 캡쳐되었을 수 있다. 다른 또 하나의 바람직한 실시예에서, 비디오 클립은 도 2의 시스템의 기기들 중 하나 이상 기기의 메모리에 저장되고 전체적으로 또는 부분적으로 모바일 단말(10)에 송신될 수 있다. 그 기기는, 비디오 클립의 복잡성이 그 비디오 클립을 복호화하고 재생할 콘트롤러(20)의 성능을 초과한다면 AV 싱크를 위해, 언제 프레임들을 뺄지를 - 본 출원에서 "드롭" 또는 드롭핑"으로 불림 - 그리고/또는 언제 프레임들을 복호화할지를 적응적으로 결정할 수 있다. 상기에서 알 수 있는 바와 같이, 본 출원에서 "AV 싱크"라는 용어는 "AV 동기화", "오디오/비디오 동기화" 및 "페이싱"과 같은 단어들과 서로 바꿀 수 있게 사용되고 그리고 그 용어는 비디오 클립의 분리된 오디오 및 비디오 부분들의 상대적 타이밍에 관한 것으로 이상적으로는 그 오디오 및 비디오 부분들의 재생의 타이밍이 서로에 대해 동기화될 그 상대적 타이밍을 가리킨다. 본 출원에서 시스템의 하드웨어, 소프트웨어 또는 그것들의 일정 조합의 성능을 초과하는 비디오 클립의 복잡성이 논의될 때, "성능을 초과"한다라는 말은 반드시 그 시스템의 전체적인 성능을 초과하는 것을 의미하는 것은 아니고, 단지 그 비디오 클립을 복호화하는데 쓰일 수 있는 그 시스템의 성능을 초과하는 것을 의미한다는 것이 인식될 것이다.
본 발명의 일 실시예를 포함하는 명령들을 실행하는 프로세서를 포함하는 기기는 예를 들어 도 2의 시스템의 원 서버(54) 또는 컴퓨팅 시스템(52)과 같은 네트워크 기기일 수 있다. 원 서버(54) 또는 컴퓨팅 시스템(52)은 도 4에 묘사된 바와 같은 비디오 소스(150)로서 기능할 수 있다. 이제 도 4를 참조하면, 바람직한 일 실시예에서, 비디오 소스(150)는 메모리(152)에 저장되어 있을 수 있는 복수의 비디오 클립들에 대한 액세스권을 가질 수 있고 그것의 프로세서(들)는 복호기(154)를 사용하여 비디오 클립을 복호화하고, 트랜스코더(transcoder, 156)를 사용하여 그 비디오 클립을 원격 클라이언트 기기에 의해 지원되는 포맷으로 트랜스코딩하며, 그리고 모바일 단말(10)일 수도 있는 사용자 기기(158)와 같은 원격 클라이언트 기기들에게 네트워크 링크를 통하여 실시간으로 요청에 따라 그 비디오 클립을 스트리밍하도록 구성될 수 있다. 비록 단일 비디오 클립의 복호화 및 트랜스코딩이 비디오 소스(150)의 시스템 자원을 초과하지 않을지라도, 다수의 비디오 클립들을 동시에 복호화, 트랜스코딩 및 스트리밍하는 것은 시스템 자원을 제약 및/또는 초과할 수 있다. 이 바람직한 실시예에 따르면, 비디오 소스(150)의 프로세서와 같은 기기는 그 기기에 의해 복호화되고 트랜스코딩될 하나 이상의 비디오 클립들 중 하나 이상의 프레임들을 적응적으로 드롭하여서, 한정된 시스템 자원에 기인하여 그 기기에 의해 스트리밍될 비디오 클립들 중 하나 이상에 걸쳐 AV 싱크를 상실하는 것을 막을 수 있다.
본 발명의 적응적 동기 복호화 알고리즘에 관한 하나의 바람직한 실시예에서, 복호기 레벨의 결정 단계들이 아래에서 기술될 바와 같이 실행될 수 있게 하도록 몇몇 불린(Boolean) 변수들, 통계들 및 타임스탬프들이 그 복호기에 의해 결정되고 유지될 수 있다. 예를 들어, 그 복호기는 비디오의 재생의 현재 시각을 결정하고 유지할 수 있다. 그 현재 시각은 오디오 재생의 현재 위치를 나타내고 그리고 정보제공적(informative)일 수 있는데 왜냐하면 본 발명의 실시예들에서는 비디오 프레임들의 블리팅(blitting)이 오디오 재생에 의해 작동되고 오디오 프레임들이 절대로 드롭되지 않는 것을 생각하고 있기 때문이다. 그 현재 시각은 본 발명의 실시예들이 구현되는 기기의 메모리, 이를테면 예를 들어 모바일 단말(10)의 휘발성 메모리(40)에 저장될 수 있다. 도 3과 관련하여 아래에서 설명할 바와 같이, 임의의 비디오 프레임의 타임스탬프는 현재 시각으로 나타낸 현재 오디오 재생 위치 타임스탬프와 비교되어 본 발명의 실시예들에 따라 그 비디오 프레임을 드롭하거나 복호화할지 여부를 결정하기 위해 그 비디오 프레임이 늦었는지 여부를 결정할 수 있다.
그 복호기는 또한 다음 키 프레임의 타임스탬프를 결정하고 유지할 수 있다. 이 타임스탬프는 본 발명의 실시예들이 구현되는 기기의 메모리, 이를테면 예를 들어 모바일 단말(10)의 휘발성 메모리(40)에 저장될 수 있다. 다음 키 프레임의 타임스탬프는 재생 시간선(timeline)에서 언제 다음 키 프레임이 디스플레이될 것인지를 표시하고 그리고 그것은 몇몇 소스들 중 하나 이상의 소스로부터 획득될 수 있다. 예를 들어, 적응적 동기 복호화 알고리즘에 기반하여 비디오를 복호화하고 프레임들을 드롭 및/또는 복호화 하는 기기는 복호화에 앞서 미리 비디오 프레임들을 버퍼링하는 복수의 입력 버퍼들을 포함할 수 있다. 이 예에서, 그 입력 버퍼들 중 하나가 어떤 키 프레임을 포함한다면 그러면 그 기기는 그 키 프레임의 타임스탬프를 추출하여, 그에 의해 다음 키 프레임의 타임스탬프를 정의할 수 있다. 또 하나의 예로서, 비디오 클립은 이를테면 매 30개 프레임 당 1개의 키 프레임과 같은 알려진 레이트(rate)로, 그 비디오 클립 내에 산재된 키 프레임들을 가질 수 있다. 이 예에서, 그 기기는 이전 키 프레임에 대하여 다음 키 프레임의 타임스탬프를 결정할 수 있다. 또 하나의 예에서, 키 프레임들의 위치는 복호화에 앞서 그 기기에 식별될 수 있다. 이 점에 있어서, 파일 포맷 파서(parser)는 그 기기에 의한 복호화에 앞서 비디오 파일을 판독하고 키 프레임들의 위치(들)을 식별해 놓는다. 대안적으로, 비디오 파일은 비디오 클립의 프레임 시퀀스를 기술하고 키 프레임들을 식별하는 인덱스 테이블(index table)과 연관될 수 있다. 타임스탬프는 절대 시각 참조(time reference), 오프셋 시간 참조, 및/또는 기타 등등과 같은 시각이나 시간을 나타내기 위한 하나 이상의 방법을 포함할 수 있다는 것이 이해되어야 할 것이다.
본 발명의 실시예들에 따른 기기는 단일 키 프레임 및 단일 비-키 프레임을 복호화하는데 요구되는 시간에 관련된 통계사항을 별도로 유지할 수 있다. 이 통계사항은 그 기기의 메모리, 이를테면 예를 들어 모바일 단말(10)의 휘발성 메모리(40)에 저장될 수 있다. 하나의 실시예에서, 예를 들어서, 통계사항은 키 프레임을 복호화하는데 요구되는 평균 시간 및 비-키 프레임을 복호화하는데 요구되는 평균 시간을 기술할 수도 있고 그리고 프레임이 복호화되는 각 시간마다 그 기기에 의해 동적으로 재계산될 수 있다. 그 기기의 프로세서, 이를테면 모바일 단말(10)의 콘트롤러(20)는 평균 복호화 시간을 결정하는데, 이를테면 이 결정을 위한 기능을 제공하는 소프트웨어를 실행함으로써 평균 복호화 시간을 결정할 수 있다. 비록 평균 복호화 시간이 유입 프레임을 복호화하는데 요구되는 시간을 추정할 수 있도록 동적으로 계산되고 유지될 수도 있지만, 본 발명의 실시예들은 그와 같이 제한되는 것은 아니고 평균 복호화 시간 통계사항을 유지하여야 하는 것은 아니다. 대신에, 대안적 실시예들에서, 그 기기는 마지막 키 프레임 및 마지막 비-키 프레임 각각을 복호화하는데 걸리는 시간을 결정하고 유지할 수 있다. 대안적으로, 그 기기는 예를 들어 비디오의 복잡성에 기반하여 그리고 그것의 해상도와 같은 인자들을 고려하여 키 프레임 및 비-키 프레임을 복호화하는데 요구되는 시간에 대한 일정한 추정치를 결정할 수 있다. 대안적인 실시예들에서, 그 기기는 평균 복호화 시간 대신에 중앙값 복호화 시간(median decoding time)을 유지할 수 있다. 단일 키 프레임 및 단일 비-키 프레임을 복호화하는데 요구되는 시간을 결정하기 위한 이러한 방안들 및 다른 유사한 방안들 모두가 본 발명의 실시예들에 의해 예상되어지고 그리고 이를테면 어떤 방안이 더 효율적인지에 따라 서로 교체되어 사용될 수 있다. 이와 같은 것으로서, 비록 단일 키 프레임 및 단일 비-키 프레임을 복호화하는데 요구되는 시간이 예시를 위해 이하에서 평균 복호화 시간으로 논의될 것이지만, 본 발명의 실시예들은 이와 같이 제한되는 것은 아니다.
그 기기는 또한 모든 비-키 프레임들을 다음 키 프레임이 도달할 때까지 연속으로 드롭하여야 할지 여부를 표시하는 불린 로직 변수를 유지할 수 있다. 초기에, 이 변수는 FALSE로 설정될 수 있고 그리고 각 키 프레임의 도달 및 부호화에 따라 FALSE로 리셋될 수 있다. 그러나, 그 변수는 아래에서 논의될 어떤 환경들에서는 true로 설정될 수 있다. 그 변수의 값은 그 기기의 메모리, 이를테면 모바일 단말(10)의 휘발성 메모리(40)에 유지될 수 있다.
또한, 그 기기는 드롭되어진 다수의 연속적인 프레임들을 표시하는 변수를 유지할 수 있다. 이 변수의 초기값은 0일 수 있고 프레임이 복호화되는 때마다 0으로 리셋될 수 있다. 프레임이 드롭될 때, 그 값이 증가될 수 있다. 이 변수의 현재 값은 그 기기의 메모리, 이를테면 모바일 단말(10)의 휘발성 메모리(40)에 유지될 수 있다. 그 기기는 또한, 드롭될 수 있는 연속적인 프레임들의 최대 개수를 표시하는 변수를 유지할 수 있다. 비디오 디스플레이를 주기적으로 업데이트되게끔 하기 위해 비디오 프레임을 적어도 주기적으로 블리팅하여 사용자가 비디오 재생이 멎었다고 생각하지 않도록 이 변수의 값을 경험적으로 결정할 수 있다. 예를 들어, 비디오 클립의 프레임 레이트가 초당 30 프레임 (30 fps)이라면, 30개 프레임마다 하나의 프레임을 복호화하는 것은 프레임을 초당 한 번씩 블리팅하는 것을 보장해 줄 것이다. 이와 같은 것으로서, 그 기기는 드롭될 수 있는 연속적인 프레임들의 최대 개수를 29로 설정할 수 있다. 이 변수의 값은 그 기기의 메모리, 이를테면 모바일 단말(10)의 휘발성 메모리(40)에 유지될 수 있다.
적응적 동기 복호화 배후의 기본 로직은 모든 프레임들을 연속적으로 복호화하려고 시도하는 것이다. 그러나, 시스템 자원을 초과하는 비디오 클립의 복잡성에 기인하여 프레임들이 늦게 도달할 때, 적응적 동기 복호화 로직은 비-키 프레임들을 선택적으로 드롭하는 것을 가능하게 해 준다. 도 3에서 볼 수 있는 바와 같이, 동작들(100-126)은 복호기 레벨에서, 이를테면 복호기에 의해 수행될 수 있고, 그 복호기는 하드웨어, 소프트웨어, 또는 그것들의 어떤 조합으로 구현될 수 있으며 그리고 모바일 기기(10)의 콘트롤러(20)와 같은 프로세서에 의해 제어되거나 그렇지 않으면 구현될 수 있다. 동작들(128-138)은 후처리기 레벨에서, 이를테면 후처리기에 의해 수행될 수 있고, 그 후처리기는 하드웨어, 소프트웨어, 또는 그것들의 어떤 조합으로 구현될 수 있으며 그리고 모바일 단말(10)의 콘트롤러(20)와 같은 프로세서에 의해 제어되거나 그렇지 않으면 구현될 수 있다.
초기에, 동작(100)에서, 유입되는 부호화 프레임이 복호기에 도달할 수 있다. 동작(102)에서 그 복호기는 그 유입 프레임이 키 프레임인지 여부를 결정할 수 있다. 그 프레임이 키 프레임이면, 동작(104)에서 복호기는 그 키 프레임을 복호화할 수 있다. 다음으로, 동작(106)에서, 복호기는 다음 키 프레임까지의 모든 프레임들이 드롭되어야할 것인지 여부를 표시하는 불린 변수의 값을 false로 리셋할 수 있다. 그러면 복호기는 동작(108)에서 키 프레임을 복호화하는데 요구되는 시간, 이를테면 평균 시간을 표시하는 변수를 업데이트할 수 있다.
반면에, 복호기가 동작(102)에서 그 유입되는 부호화 프레임이 키 프레임이 아니라고 결정하면, 복호기는 단계(110)에서 다음 키 프레임까지의 모든 프레임들이 드롭되어야 할 것인지 여부를 표시하는 불린 변수의 값을 결정할 수 있다. 만약 그 불린 변수의 값이 TRUE이면 - 이는 다음 키 프레임까지의 모든 프레임들이 드롭되어야 할 것임을 나타냄 -, 복호기는 단계(126)에서, 이전에 드롭되었던 연속적인 프레임들의 개수를 유지하고 있는 변수값을 드롭될 수 있는 연속적인 프레임들의 최대 개수와 비교할 수 있다. 만약 동작(126)에서 그 값들이 같다면, 그 경우 복호기는 동작(122)에서 비-키 프레임을 복호화할 수 있다. 그 비-키 프레임을 복호화함으로써, 복호기는 사용자를 위해 진행 중인 비디오 재생의 모습을 유지하기에 충분하게 적어도 하나의 비디오 프레임이 빈번하게 블리팅됨을 확실히 할 수 있다. 복호기는 또한 드롭되었던 연속적인 프레임들의 개수를 표시하는 변수값을 0으로 리셋할 수도 있다. 다음으로, 복호기는 동작(124)에서 비-키 프레임을 복호화하는데 걸리는 평균 시간을 업데이트할 수 있다. 만약 동작(126)에서 드롭된 연속적인 프레임들의 개수가 연속적인 드롭된 프레임들의 최대 허용 개수에 도달하지 않았다고 결정한다면, 복호기는 동작(118)에서 비-키 프레임을 드롭할 수 있다.
만약 동작(110)에서 복호기가 다음 키 프레임까지의 모든 프레임들이 드롭되어야 할 것인지 여부를 표시하는 불린 변수의 값이 FALSE라고 판별한다면, 그 경우 복호기는 동작(112)에서 도시된 바와 같이, 그 복호기에 도달하는데 있어 비디오 프레임이 늦었는지 여부를 결정할 수 있다. 바람직한 일 실시에에서, 복호기는 예를 들어 유입 비디오 프레임의 타임스탬프를 현재 오디오 재생 위치와 비교함으로써 이 결정을 할 수 있다. 만약 유입 비디오 프레임의 타임스탬프가 현재 오디오 재생 위치보다 더 늦다면 그 유입 비디오 프레임은 늦은 것으로 생각될 수 있다. 만약 동작(112)에서 복호기가 유입되는 부호화 프레임이 늦지 않았다고 결정하면, 복호기는 동작(122)에서 비-키 프레임을 복호화할 수 있고 복호기는 동작(124)에서 비-키 프레임을 복호화하기 위한 평균 시간을 업데이트할 수 있다. 그러나, 만약 유입되는 부호화 프레임이 복호기에 도달하는데 있어 늦었다면, 복호기는 동작(114)에서 다음 키 프레임이 드롭 타임 윈도우 내에 있는지 여부를 결정하는 과정을 진행할 수 있다. 만약 다음 키 프레임 타임스탬프가 드롭 타임 윈도우 내에 있으면, 복호기는 동작(116)에서 다음 키 프레임까지의 모든 프레임들이 드롭되어야 할 것인지 여부를 표시하는 변수의 불린 값을 TRUE로 설정할 수 있고 동작(118)에서 그 프레임을 드롭하는 과정을 진행할 수 있다.
드롭 타임 윈도우(drop time window; DTW)는, 단일 키 프레임을 복호화하는데 요구되는 평균 시간(KF_Dec_Time) 및 단일 비-키 프레임을 복호화하는데 요구되는 평균 시간(NKF_Dec_Time)과 본 발명의 실시예들이 구현되는 기기의 출력 버퍼들의 개수(Num_Output_Buffers)보다 작은 개수와 같은 정수값의 곱에 기초하여 계산될 수 있다. 드롭 타임 윈도우를 계산하는 등식은 다음과 같이 표현될 수 있다:
DTW = KF_Dec_Time + NKF_Dec_Time*(Num_Output_Buffers - 1).
따라서, 드롭 타임 윈도우 값은 그 기기의 출력 버퍼들 모두를 채우기 위해 다음 키 프레임 및 그 키 프레임에 연속적으로 후속하는 충분한 비-키 프레임들을 복호화하는데 요구되는 시간량을 나타낸다. 이 점에 있어서, 비-키 프레임이 복호기에 도달하는데 있어 늦고 다음 키 프레임이 이 드롭 타임 윈도우 내에 도달할 것이라면, 복호기는 다음 키 프레임까지의 모든 프레임들을 드롭하여서, 다음 키 프레임을 블리팅할 때에, 출력 버퍼들을 채울 그 키 프레임 및 충분한 후속 비-키 프레임들이 디코딩되어서 오디오 및 비디오 재생이 재동기화되고 동기화는 그 이후에 적어도 잠시 동안 유지될 수 있게 될 것이다.
출력 버퍼들의 개수도 또한 재생에 영향을 미칠 수 있다는 것을 유념한다. 이 점에 있어서, 출력 버퍼들의 개수가 드롭 타임 윈도우를 계산하는데 사용될 수 있기 때문에, 최대 연속 개수의 비-키 프레임들이 드롭된 때까지 더 많은 출력 버퍼들이 존재하는 경우들에서 더 많은 연속적인 비-키 프레임들이 드롭될 수 있다. 따라서, 만약 프레임들이 더 많은 출력 버퍼들을 가진 복호기에 늦게 도달하기 시작하면, 첫 번째 프레임이 드롭되는 때와 다음 키 프레임이 디스플레이되는 때 사이의 비디오 재생에서의 중지는 비례하여 더 길어질 수 있고 따라서 비디오 클립 뷰어의 눈에 더 잘 띌 수 있다.
그러나, 복호기가 동작(114)에서 다음 키 프레임 타임스탬프가 드롭 타임 윈도우 내에 있지 않다고 결정하면, 복호기는 동작(120)에서 페일세이프 메커니즘(failsafe mechanism)이 트리거(trigger)되었는지 여부를 결정할 수 있다. 그 페일세이프 메커니즘은, (1) 다음 키 프레임이 드롭 타임 윈도우 내에 있지 않은 경우 비-키 프레임들을 동기화 중에 약간 블리팅될 수 있게 해 주거나 복호화될 수 있게 해 주는 것, 그리고 (2) 늦은 프레임들을 계속하여 복호화함으로써 시스템 자원이 낭비될 수 있을 뿐만 아니라 - 이는 점진적으로 악화되는 AV 싱크를 초래함 - 시스템 자원이 더 제약됨에 따라 시스템이 불안정하게 될 수도 있을 정도까지 비디오 재생이 오디오 재생에 뒤쳐지는 것을 허용하는 것 사이의 조정을 의미할 수 있다. 따라서, 만약 비디오 프레임들이 페일세이프 임계(threshold)보다 느게 도달할 것이라면, 복호기는 동작(116)에서 다음 키 프레임 이전의 모든 비-키 프레임들이 드롭되어야 할 것인지 여부를 표시하는 불린 변수를 TRUE로 설정할 수 있다. 그리고 나서 복호기는 동작(118)에서 프레임을 드롭할 수 있다.
페일세이프 임계는 비디오 재생에서의 일정한 최대 허용 랙 타임(lag time)을 나타내고 몇 가지 방식들로 결정될 수 있다. 하나의 실시예에서, 페일세이프 임계는 시스템이 미리 버퍼링할 수 있는 복호화 비디오의 길이를 나타낼 수 있다. 대안적으로, 예를 들어, 페일세이프 임계는 예를 들어 3초와 같이 그 이상에서는 비디오 재생이 오디오 재생에 뒤쳐지게 허용되지 않을 시간의 일정 길이에 따라 설정될 수 있다. 페일세이프 메커니즘은 또한 다음 키 프레임의 타임스탬프가 다음 키 프레임이 드롭 타임 윈도우 내에 있을 때 비-키 프레임들을 드롭하는 것을 허용하기 위해 이용가능하지 않은 상황들에서 진정한 '페일세이프'를 제공한다. 이 상황에서, 페일세이프 메커니즘은 페일세이프 임계 이상으로 비디오 재생이 오디오 재생에 뒤떨어지는 것을 방지하는데 사용될 수 있고 동기화는 다음 키 프레임에서 다시 얻어질 수 있다.
반면에, 비디오 프레임이 늦었지만 다음 키 프레임이 드롭 타임 윈도우 내에 있지 않고 페일세이프 메커니즘이 트리거되지 않았으면, 복호기는 동작(122)에서 비-키 프레임을 복호화할 수 있고 복호기는 또한 동작(124)에서 비-키 프레임을 복호화하는데 요구되는 평균 시간을 업데이트할 수 있다. 그러면 늦은 비-키 프레임들은 계속하여 복호화될 수 있고 그리고 다음 키 프레임이 드롭 타임 윈도우 내에 있거나 아니면 페일세이프 메커니즘이 트리거될 때까지 AV 싱크는 점차적으로 상실될 수 있다. 그러면 AV 싱크는 일단 다음 키 프레임이 도달하여 복호화되면 다시 얻어질 수 있다.
복호화된 임의의 프레임들은 후처리기로 전달될 수 있고, 그 후처리기는 그 프레임들을 후처리하여 디스플레이할 수 있다. 본 발명의 실시예들을 위하여, 후처리기의 동작 로직은 변경될 필요가 없는데, 왜냐하면 하나의 실시예에서, 모든 관련 결정 로직이 복호기에 의해 실행되기 때문이다. 다시 도 3을 참조하면, 일단 프레임이 후처리기에 도달하면, 그 후처리기는 동작(128)에서 그 프레임이 늦었는지 여부를 결정할 수 있다. 만약 그 프레임이 늦지 않았다면, 후처리기는 동작(130)에서 그 프레임을 후처리한다. 그리고 나서 후처리기는 재생 시간선에서 그 프레임이 디스플레이되어야 할 순간까지 기다리고 그리고 나서 동작(134)에서 그 프레임을 디스플레이할 수 있다. 반면에 그 프레임이 늦었다면, 후처리기는 동작(136)에서 그 프레임이 매우 늦었는지 여부를 결정할 수 있다. '매우 늦었다'고 생각되는 것에 관한 기정의된 시간 임계는 후처리기 구현에 따라 변할 수 있지만, 예시적인 일 실시예에서는 100 밀리초(milliseconds)를 넘는 상태에 관한 것일 수 있다. 만약 그 프레임이 매우 늦지 않으면, 그 프레임은 드롭된다. 그러나, 그 프레임이 기정의된 임계보다 늦게 도달하는지 여부에 의해 결정함에 있어서 그 프레임이 매우 늦으면, 그 프레임은 동작(138)에서 후처리될 수 있고 후속하여 동작(134)에서 디스플레이될 수 있다. 이 기본적 후처리기 구현 배후의 로직은 만약 프레임이 단지 약간만 늦은 경우에, AV 싱크를 다시 얻거나 또는 적어도 재생이 동기화에서 멀리 떨어지는 것을 방지하기 위한 노력으로 그 프레임은 드롭되어야할 것이라는 점이다. 그러나, 후처리기가 프레임들이 도달하여야 할 때보다 일관적으로 더 늦게 그 프레임들을 계속 수신하게 하여, 그 결과 프레임들이 '매우 늦게' 되면, 후처리기는 AV 싱크가 상실되었고 가장 양질의 사용자 경험은 모든 비디오 프레임들을 드롭되게 하는 것보다는 오히려 비디오 재생을 계속하는 것이 될 것이기 때문에 그 프레임들을 디스플레이되게 할 수 있다.
그러나, 본 발명의 하나의 실시예에서, 그 기기는 후처리기가 어느 프레임들이 늦거나 매우 늦은지를 결정할 수 있게 하는 것보다는 복호기 레벨에서 만들어질 프레임을 드롭할지 아니면 복호화하여 디스플레이할지에 관한 결정을 추가적으로 허용하는 로직을 포함하여, 그 후처리기는 적응적 동기 복호화를 지원하기 위한 어떠한 변형도 필요로 하지 않게 될 수 있다. 이 로직을 구현하기 위해, 복호기는 복호화된 또는 복호화될 늦은 프레임들의 타임스탬프를 조정하여 그것들이 오디오 재생의 위치에 의해 결정되는 바와 같이 현재 시간보다 단지 약간만 더 큰 시간을 반영할 수 있게 되고 이로써 후처리기는 그 프레임들을 드롭하는 대신에 그 프레임들을 디스플레이할 수 있게 될 것이다. 새로운 타임스탬프를 계산하기 위해 현재 시간에 부가되는 부가 시간 상수는 평균 후처리 시간일 수 있고, 이는 복호화된 프레임을 디스플레이하기 전에 그 프레임을 색 변환하고, 스케일링(scaling)하고, 회전시키는 등등의 작업을 수행하기 위해 얼마나 많은 시간이 필요로 되는지를 반영해 줄 것이다. 이 값이 복호화 시간보다 훨씬 덜 동적일 수 있기 때문에, 그것은 클립들 간에 일정한 것으로 생각될 수 있다. 따라서, 대안적인 일 실시예가 프레임 복호화 시간에 대해 행해지는 것과 같이 평균 후처리 시간을 동적으로 계산하여야 할 것이지만, 대신에, 정적인 값들이 후처리기 로직에 대한 어떠한 변형이라도 피할 수 있게 하도록 사용될 수 있다. 예를 들어, 하나의 실시예에서, 해상도 또는 비디오 클립의 복잡성에 관한 다른 측정사항들에 의존적인 평균 후처리 시간의 추정치를 포함하고 있는 참조 테이블이 메모리, 이를테면 모바일 단말(10)의 비휘발성 메모리(42)에 저장될 수 있고, 그리고 그것은 늦은 프레임들에 대한 타임스탬프를 위한 새로운 값을 획득하도록 현재 시간에 부가할 일정한 평균 후처리 시간을 결정하기 위해 복호기에 의해 참조될 수 있다. 이 테이블에 저장된 값들은 비디오 클립이 후처리되어질 시스템의 실제 소프트웨어 및 하드웨어 구성에 따라 변할 수 있다.
하나의 예시적인 실시예에서, 타임스탬프 변경은 모든 늦은 복호화 프레임에 대하여 수행되지 않을 수도 있다. 대신에, 그것은 프레임 늦음 허용값보다 더 늦은 프레임들에 대하여만 수행될 수 있어서, 재생은 여전히 동기화되어 있지만 프레임들이 점차적으로 늦어지고 단지 약간만 지연되는 것은 아닐 때에만 타임스탬프 변경이 적용된다. 예를 들어, 프레임 늦음 허용값은 후처리기가 프레임이 정시의 것인지 여부를 결정하는데 있어 +/- 20 밀리초의 임계값을 종종 가짐에 따라 50 밀리초로 설정될 수 있다. 그러나, 상기 값들은 단지 예를 위한 것이고 본 발명의 실시예들은 프레임 늦음을 허용하는데 있어 상기 값들에 제한되는 것은 아니다. 이 점에 있어서, 후처리기는 재생이 기본적으로 여전히 동기화될 때 약간만 늦은 프레임들을 드롭하도록 허용될 수 있다. 그러나, 재생이 동기화에서 멀어지고 있다면, 복호기는 뷰어에게 생생한 경험을 제공하기 위해 복호화 프레임들을 디스플레이할지 여부를 결정할 수 있다.
도 5는 본 발명의 바람직한 일 실시예에 따른 방법 및 컴퓨터 프로그램 제품에 의해 수행될 수 있는 동작들의 흐름도이다. 도 5의 흐름도에서의 동작들은 본 발명의 바람직한 일 실시예에 따른 도 3에 도시된 동작 단계들의 단순화된 조합들을 나타내고 있다. 그 흐름도의 각 블록이나 단계 및 그 흐름도 내의 블록들의 조합들은 하나 이상의 컴퓨터 프로그램 명령들을 포함하는 소프트웨어, 펌웨어, 하드웨어와 같은 다양한 수단들에 의해 구현될 수 있음을 이해할 것이다. 예를 들어, 상기에서 설명된 절차들 중 하나 이상은 컴퓨터 프로그램 명령들에 의해 구현될 수 있다. 이 점에 있어서, 이들 컴퓨터 프로그램 명령들은 하나 이상의 전자 기기들의 메모리 기기에 의해 저장되고 적어도 하나의 프로세서에 의해 실행될 수 있다. 인식될 바와 같이, 임의의 이러한 컴퓨터 프로그램 명령들은 기계를 산출하기 위한 컴퓨팅 기기나 다른 장치(즉, 하드웨어) 상으로 로딩되어, 그 컴퓨팅 기기나 다른 장치 상에서 실행되는 명령들은 도 5의 방법을 구현할 수 있다. 이들 컴퓨터 프로그램 명령들은 컴퓨터 기기나 다른 장치에게 특정 방식으로 기능할 것을 지시할 수 있는 컴퓨터-판독가능 메모리에 저장되어서, 그 컴퓨터-판독가능 메모리에 저장된 명령들은 도 5의 방법을 구현하기 위한 명령들을 포함하는 제조 물품을 산출할 수 있다. 그 컴퓨터 프로그램 명령들은 컴퓨팅 기기나 다른 장치 상으로 로딩되어 그 컴퓨팅 기기나 다른 장치 상에서 수행될 일련의 동작 단계들이 컴퓨터-구현 프로세스를 산출하게 할 수 있음으로써, 그 컴퓨팅 기기나 다른 장치 상에서 실행되는 명령들이 도 4의 방법을 구현하기 위한 단계들을 제공하게 할 수 있다.
이 점에 있어서, 비디오 클립들의 적응적 동기 복호화 방법에 관한 하나의 실시예가 도 5에 예시되어 있다. 이 방법의 동작들은 복호기 레벨에서, 이를테면 복호기에 의해 실행될 수 있고, 그 복호기는 하드웨어, 소프트웨어 또는 그것들의 어떤 조합으로 구현될 수 있으며 모바일 기기(10)의 콘트롤러(20)와 같은 프로세서에 의해 제어되거나 그렇지 않으면 구현될 수 있다. 그 방법은 동작(200)에서 다음 키 프레임 타임스탬프를 유지하는 단계를 포함할 수 있다. 동작(210)에서 도시된 바와 같이, 비디오 클립의 복수의 키 프레임들이 복호화될 수 있다. 비록 하나의 실시예에서 모든 키 프레임들이 복호화되지만, 본 발명의 실시예들은 그에 의해 제한되는 것은 아니고 키 프레임은 때때로 드롭될 수 있다. 동작(220)에 의해 나타난 바와 같이, 정시에 도달하는, 비디오 클립의 복수의 비-키 프레임들이 복호화될 수 있다. 그러나, 동작(230)에서 도시된 바와 같이, 비디오 프레임이 늦게 도달하고 페일세이프 메커니즘이 트리거되면 또는 비디오 프레임이 늦게 도달하고 다음 키 프레임이 계산된 드롭 타임 윈도우 내에 있다면, 다음 키 프레임까지 하나 이상의 비-키 프레임들이 드롭될 수 있다.
상기에서 설명된 기능들은 다수의 방식들로 실행될 수 있다. 예를 들어, 상기에서 설명된 기능들 각각을 실행하는 임의의 적합한 수단들이 본 발명의 실시예들을 실행하기 위해 활용될 수 있다. 하나의 실시예에서, 그 요소들 모두 또는 일부는 일반적으로 컴퓨터 프로그램 제품의 제어 하에 동작한다. 본 발명의 실시예들에 따른 방법들을 수행하기 위한 컴퓨터 프로그램 제품은 비휘발성 저장 매체와 같은 컴퓨터-판독가능 저장 매체, 및 그 컴퓨터-판독가능 저장 매체에 수록된 일련의 컴퓨터 명령들과 같은 컴퓨터-판독가능 프로그램 코드 부분들을 포함할 수 있다.
이로서, 본 발명의 실시예들은 AV 동기화 및 비디오 클립의 뷰어 경험을 개선시킬 수 있다. 한 가지 관점에서, 본 발명의 실시예들은, 비디오 클립을 복호화할 모바일 단말(10)과 같은 기기가 그 기기의 하드웨어 및/또는 소프트웨어의 성능을 초과하는 복잡성을 가진 비디오 클립을 재생할 수 있도록 해 준다. 다음 키 프레임이 언제 도달할지에 관한 지식은, 프레임들이 복호기에 늦게 도달할 때에 다음 키 프레임에 앞선 비-키 프레임들의 연속적 시퀀스를 드롭하는 것을 가능하게 해 주어 다음 키 프레임 및 복수의 후속 프레임들이 미리 버퍼링될 수 있게 되고, 그에 의해 다음 키 프레임에서 AV 싱크가 다시 획득되어질 수 있게 된다. 키 프레임들이 비디오 클립에서 드물고 비디오 재생이 오디오 재생 뒤로 점점 더 뒤떨어지고 있다면, 본 발명의 실시예들에서의 페일세이프 메커니즘은, 동기화가 다시 획득될 때 다음 키 프레임에 앞선 복수의 비-키 프레임들을 드롭하는 기능을 제공함으로써 오디오 재생 뒤에 페일세이프 임계보다 더 멀리 비디오 재생이 뒤떨어져 있는 상황을 피할 수 있게 돕는다. 또한, 본 발명의 실시예들은 적어도 하나의 프레임이 주기적으로 블리팅되고, 그로써 뷰어에게 재생이 중단되지 않았음을 알릴 만큼 디스플레이를 업데이트하도록, 드롭되는 연속적인 프레임들의 개수를 제한함으로써 일련의 비-키 프레임들의 드롭에 의해 뷰어 경험을 가능한 한 적게 방해하는 상황을 만들어줄 수 있다. 또한, 본 발명의 실시예들은 임의의 오디오 프레임들을 드롭하지 않으면서 시스템의 복잡성을 초과하는 비디오 클립들의 재생을 개선시켜 준다.
본 발명의 실시예들은 또한 미디어 스트리밍 또는 실시간 트랜스코딩 기기들로 구현될 수도 있다. 비록 이들 기기들은 일반적으로 모바일 단말(10)과 같은, 비디오 클립들을 보여주는 평균적인 사용자 기기의 성능을 크게 초과하는 하드웨어 및 소프트웨어 성능을 가지지만, 이러한 기기의 하드웨어 및/또는 소프트웨어 성능을 초과하는 비디오 클립들도 여전히 생성될 수 있다. 또한, 그 기기들은 일반적으로 복수의 원격 사용자들로의 스트리밍에 대한 요청에 따라 복수의 비디오 클립들을 동시에 복호화하고 트랜스코딩한다. 이와 같이, 시스템 자원이 제약될 수 있고 본 발명의 실시예들은 AV 싱크를 보호하면서 더 많은 비디오 클립들이 복호화될 수 있도록 복수의 비디오 클립들에 걸쳐 동기화가 더 잘 유지될 수 있게 해 주는 역할을 수행한다.
전술한 설명 및 관련 도면들에서 제시된 교시내용의 이점을 가진 본 출원에서 언급한 본 발명의 많은 변형예들 및 다른 실시예들이 본 발명이 속한 기술분야에서 숙련된 자에게 있어 생각날 수 있을 것이다. 그러므로, 본 발명의 실시예들은 개시된 특정 실시예들에 제한되어서는 안 되고 변형예들 및 다른 실시예들이 첨부된 특허청구범위의 청구항들의 범위 내에 포함되도록 의도된 것임을 이해하여야 할 것이다. 비록 본 출원에서 특정 용어들이 활용되었지만, 그것들은 제한을 위한 것이 아니라 단지 포괄적이고 설명적인 의미로만 사용하였다.

Claims (25)

  1. 오디오 비디오 신호를 복호화하기 위한 방법은:
    복호기(154)에서 비디오 프레임을 수신하고(100), 상기 수신된 비디오 프레임이 키 비디오 프레임임을 결정하고(102);
    다음 키 프레임 타임스탬프(timestamp)를 유지하고;
    상기 복호기(154)에서 추가의 비디오 프레임을 수신하고(100), 상기 수신된 추가의 비디오 프레임이 비-키 비디오 프레임(non-key video frame)임을 결정하고(102);
    상기 비-키 비디오 프레임의 타임스탬프를 현재 오디오 재생 위치 타임스탬프와 비교함으로써, 상기 복호기(154)에서 상기 비-키 비디오 프레임이 상기 복호기에 도달하는데 있어 늦었다고 결정하고(112) - 상기 현재 오디오 재생 위치 타임스탬프는 오디오 재생의 현재 위치를 나타냄 - ; 그리고
    상기 복호기에서 다음 키 비디오 프레임전까지 수신된 추가의 비-키 비디오 프레임들이 드롭됨을 상기 비-키 비디오 프레임이 상기 복호기에 늦게 도달하는지 여부 및 상기 다음 키 프레임 타임스탬프가 계산된 드롭 타임 윈도우(drop time window) 내에 있는지 여부에 따라 결정하는 것(114)을 포함하되,
    상기 드롭 타임 윈도우는, 상기 다음 키 비디오 프레임을 복호화하고, 출력 버퍼를 채우기 위해 상기 다음 키 비디오 프레임에 연속적으로 후속하는 충분한 비-키 비디오 프레임들을 복호화하는데 요구되는 시간량을 나타내도록 계산되는, 방법.
  2. 제1항에 있어서,
    드롭되어진 연속적인 비-키 비디오 프레임들의 개수의 카운트를 유지하며 그리고 기결정된 최대 개수보다 더 많은 개수의 연속적인 비-키 비디오 프레임들이 드롭되었는지 여부(126)에 따라, 상기 비-키 비디오 프레임을 복호화하는 것을 더 포함하는, 방법.
  3. 제2항에 있어서,
    드롭될 수 있는 연속적인 비-키 비디오 프레임들의 상기 기결정된 최대 개수는 비디오 클립의 뷰어에게 재생이 중지되지 않았음을 알려주기에 충분한 빈도로 비-키 비디오 프레임들이 복호화될 수 있도록 결정되는, 방법.
  4. 제1항에 있어서,
    상기 복호기에 도달하는 상기 비-키 비디오 프레임이 기정의된 임계(threshold)보다 더 늦은지를 결정하고 만약 더 늦은 것으로 결정하면 복호화될 상기 비-키 비디오 프레임에 대한 타임스탬프를 변경하는 것을 더 포함하되, 그로 인해 그것들이 상기 오디오 재생의 상기 현재 위치보다 큰 시간을 반영하도록 하고, 상기 비-키 비디오 프레임이 상기 복호기에 의해 복호화되자마자 상기 비-키 비디오 프레임이 후처리기에 의해 후처리될 수 있게끔 하는, 방법.
  5. 제4항에 있어서,
    상기 기정의된 임계는 100 밀리초(milliseconds)인, 방법.
  6. 제1항에 있어서,
    상기 다음 키 비디오 프레임의 상기 타임스탬프는, 버퍼링된 키 비디오 프레임, 비디오 클립 내에 키 비디오 프레임들이 산재된 알려진 일정 레이트(rate), 상기 비디오 클립을 기술하는 파일을 판독하여 상기 키 비디오 프레임들을 식별한 파일 포맷 파서(parser) 중 하나 이상으로부터, 또는 비디오 클립과 연관된 인덱스 테이블(index table)로부터 상기 다음 키 비디오 프레임의 상기 타임스탬프를 추출함으로써 유지되는, 방법.
  7. 제1항에 있어서,
    상기 비-키 비디오 프레임이 늦게 도달하고 페일세이프 메커니즘(failsafe mechanism)이 트리거(trigger)되면(102), 상기 다음 키 비디오 프레임까지의 하나 이상의 비-키 비디오 프레임들을 드롭하고 [상기 페일세이프 메커니즘은 상기 드롭 타임 윈도우보다 더 큰 시간 길이만큼 상기 비-키 비디오 프레임이 지연되는 경우 트리거되고, 상기 페일세이프 매커니즘은 비디오 재생에서의 일정한 최대 허용 랙 타임(lag time)을 나타내는 추가의 기결정된 임계임]; 그리고
    드롭된 연속적인 비-키 비디오 프레임들의 개수의 카운트를 유지하고 만약 기결정된 최대 개수보다 더 많은 개수의 연속적인 비-키 비디오 프레임들이 드롭되었다면, 상기 비-키 비디오 프레임을 복호화하는 것을 더 포함하는, 방법.
  8. 삭제
  9. 컴퓨터-판독가능 프로그램 코드 부분들을 저장한, 오디오 비디오 신호를 복호화하기 위한 컴퓨터-판독가능 저장 매체에 있어서,
    상기 컴퓨터-판독가능 프로그램 코드 부분들은:
    복호기(154)에서 비디오 프레임을 수신하고(100), 상기 수신된 비디오 프레임이 키 비디오 프레임임을 결정하기(102) 위한 제1 프로그램 코드 부분;
    다음 키 프레임 타임스탬프를 유지하기 위한 제2 프로그램 코드 부분;
    상기 복호기(154)에서 추가의 비디오 프레임을 수신하고(100), 상기 수신된 추가의 비디오 프레임이 비-키 비디오 프레임(non-key video frame)임을 결정하기(102) 위한 제3 프로그램 코드 부분;
    상기 비-키 비디오 프레임의 타임스탬프를 현재 오디오 재생 위치 타임스탬프와 비교함으로써, 상기 복호기(154)에서 상기 비-키 비디오 프레임이 상기 복호기에 도달하는데 있어 늦었다고 결정하기 위한 제4 프로그램 코드 부분 - 상기 현재 오디오 재생 위치 타임스탬프는 오디오 재생의 현재 위치를 나타냄 - ; 그리고
    상기 복호기에서 다음 키 비디오 프레임전까지 수신된 추가의 비-키 비디오 프레임들이 드롭됨을 상기 비-키 비디오 프레임이 상기 복호기에 늦게 도달하는지 여부 및 상기 다음 키 프레임 타임스탬프가 계산된 드롭 타임 윈도우(drop time window) 내에 있는지 여부에 따라 결정하기(114) 위한 제5 프로그램 코드 부분을 포함하되,
    상기 드롭 타임 윈도우는, 상기 다음 키 비디오 프레임을 복호화하고, 출력 버퍼를 채우기 위해 상기 다음 키 비디오 프레임에 연속적으로 후속하는 충분한 비-키 비디오 프레임들을 복호화하는데 요구되는 시간량을 나타내도록 계산되는, 컴퓨터-판독가능 저장 매체.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 프로세서를 포함한, 오디오 비디오 신호를 복호화하기 위한 장치에 있어서,
    상기 프로세서는:
    상기 장치(154)에서 비디오 프레임을 수신하고(100), 상기 수신된 비디오 프레임이 키 비디오 프레임임을 결정하고(102);
    다음 키 프레임의 타임스탬프를 유지하고;
    상기 장치(154)에서 추가의 비디오 프레임을 수신하고(100), 상기 수신된 추가의 비디오 프레임이 비-키 비디오 프레임(non-key video frame)임을 결정하고(102);
    상기 비-키 비디오 프레임의 타임스탬프를 현재 오디오 재생 위치 타임스탬프와 비교함으로써, 상기 장치(154)에서 상기 비-키 비디오 프레임이 상기 장치에 도달하는데 있어 늦었다고 결정하고(112) - 상기 현재 오디오 재생 위치 타임스탬프는 오디오 재생의 현재 위치를 나타냄 - ; 그리고
    상기 장치에서 다음 키 비디오 프레임전까지 수신된 추가의 비-키 비디오 프레임들이 드롭됨을 상기 비-키 비디오 프레임이 상기 장치에 늦게 도달하는지 여부 및 상기 다음 키 프레임 타임스탬프가 계산된 드롭 타임 윈도우 내에 있는지 여부에 따라 결정하도록(114) 구성되되,
    상기 드롭 타임 윈도우는, 상기 다음 키 비디오 프레임을 복호화하고, 출력 버퍼를 채우기 위해 상기 다음 키 비디오 프레임에 연속적으로 후속하는 충분한 비-키 비디오 프레임들을 복호화하는데 요구되는 시간량을 나타내도록 계산되는, 장치.
  18. 제17항에 있어서,
    상기 프로세서는 또한, 드롭되어진 연속적인 비-키 비디오 프레임들의 개수의 카운트를 유지하도록, 그리고 기결정된 최대 개수보다 더 많은 개수의 연속적인 비-키 비디오 프레임들이 드롭되었는지 여부(126)에 따라, 상기 비-키 비디오 프레임을 복호화하도록 구성되는, 장치.
  19. 제18항에 있어서,
    드롭될 수 있는 연속적인 비-키 비디오 프레임들의 상기 기결정된 최대 개수는 비디오 클립의 뷰어에게 재생이 중지되지 않았음을 알려주기에 충분한 빈도로 비-키 비디오 프레임들이 복호화될 수 있도록 결정되는, 장치.
  20. 제17항에 있어서,
    상기 프로세서는 또한, 상기 장치에 도달하는 상기 비-키 비디오 프레임이 기정의된 임계보다 더 늦은지를 결정하도록 그리고 만약 더 늦은 것으로 결정하면 복호화될 상기 비-키 비디오 프레임에 대한 타임스탬프를 변경하도록 구성되되, 그로 인해 그것들이 상기 오디오 재생의 상기 현재 위치보다 큰 시간을 반영하도록 하고, 상기 비-키 비디오 프레임이 복호화되자마자 상기 비-키 비디오 프레임이 후처리될 수 있게끔 하는, 장치.
  21. 제20항에 있어서,
    상기 기정의된 임계는 100 밀리초인, 장치.
  22. 제17항에 있어서,
    상기 프로세서는 또한, 버퍼링된 키 비디오 프레임들, 비디오 클립 내에 키 비디오 프레임들이 산재된 알려진 일정 레이트, 상기 비디오 클립을 기술하는 파일을 판독하여 상기 키 비디오 프레임들을 식별한 파일 포맷 파서 중 하나 이상으로부터, 또는 상기 비디오 클립과 연관된 인덱스 테이블로부터 상기 다음 키 비디오 프레임의 상기 타임스탬프를 추출함으로써 상기 다음 키 비디오 프레임의 상기 타임스탬프를 유지하도록 구성되는, 장치.
  23. 제17항에 있어서,
    상기 프로세서는 또한,
    상기 비-키 비디오 프레임이 늦게 도달하고 페일세이프 메커니즘이 트리거되면(102), 상기 다음 키 비디오 프레임까지의 하나 이상의 비-키 비디오 프레임들을 드롭하고 [상기 페일세이프 메커니즘은 상기 드롭 타임 윈도우보다 더 큰 시간 길이만큼 상기 비-키 비디오 프레임이 지연되는 경우 트리거되고, 상기 페일세이프 매커니즘은 비디오 재생에서의 일정한 최대 허용 랙 타임(lag time)을 나타내는 추가의 기결정된 임계임]; 그리고
    드롭된 연속적인 비-키 비디오 프레임들의 개수의 카운트를 유지하고 만약 기결정된 최대 개수보다 더 많은 개수의 연속적인 비-키 비디오 프레임들이 드롭되었다면, 상기 비-키 비디오 프레임을 복호화하도록 구성된, 장치.
  24. 삭제
  25. 삭제
KR1020107016858A 2007-12-28 2008-12-09 디지털 비디오의 적응적 동기 복호화를 위한 방법, 장치 및 컴퓨터 프로그램 제품 KR101234146B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/966,502 2007-12-28
US11/966,502 US8693553B2 (en) 2007-12-28 2007-12-28 Methods, apparatuses, and computer program products for adaptive synchronized decoding of digital video
PCT/IB2008/055177 WO2009083834A1 (en) 2007-12-28 2008-12-09 Methods, apparatuses, and computer program products for adaptive synchronized decoding of digital video

Publications (2)

Publication Number Publication Date
KR20100113538A KR20100113538A (ko) 2010-10-21
KR101234146B1 true KR101234146B1 (ko) 2013-02-22

Family

ID=40456068

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107016858A KR101234146B1 (ko) 2007-12-28 2008-12-09 디지털 비디오의 적응적 동기 복호화를 위한 방법, 장치 및 컴퓨터 프로그램 제품

Country Status (5)

Country Link
US (1) US8693553B2 (ko)
EP (1) EP2232880A1 (ko)
KR (1) KR101234146B1 (ko)
CN (1) CN101946518B (ko)
WO (1) WO2009083834A1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10063873B2 (en) * 2010-03-25 2018-08-28 Mediatek Inc. Method for adaptively performing video decoding, and associated adaptive complexity video decoder and adaptive audio/video playback system
WO2011146898A2 (en) * 2010-05-21 2011-11-24 Bologh Mark J Internet system for ultra high video quality
CN101964894B (zh) * 2010-08-24 2012-11-14 中国科学院深圳先进技术研究院 一种视频分片并行转码方法和系统
EP2498494A1 (en) 2011-03-11 2012-09-12 Thomson Licensing Decoder and method at the decoder for synchronizing the rendering of contents received through different networks
US8677006B2 (en) * 2011-05-05 2014-03-18 Microsoft Corporation Processing media streams
CN102685507B (zh) * 2011-07-12 2014-07-09 天脉聚源(北京)传媒科技有限公司 一种mpeg-2传输流解码音视频同步方法和系统
WO2013173683A1 (en) * 2012-05-18 2013-11-21 Motorola Mobility Llc Synchronizing multiple transcoding devices utilizing simultaneity of receipt of multicast packets
CN104782109B (zh) * 2012-10-30 2018-09-07 三菱电机株式会社 视频音频再现系统、视频显示装置以及音频输出装置
US8924827B2 (en) * 2012-10-31 2014-12-30 Wipro Limited Methods and systems for minimizing decoding delay in distributed video coding
US9674539B2 (en) * 2013-03-14 2017-06-06 Infocus Corporation Concurrent decompression of multiple video streams with constrained decompression resources
US20150067744A1 (en) * 2013-08-27 2015-03-05 Home Box Office, Inc. Providing responsive video previews during rewind and fast forward
CN103533387B (zh) * 2013-10-21 2016-08-17 腾讯科技(深圳)有限公司 一种视频直播控制方法、设备及系统
US20150189365A1 (en) * 2013-12-26 2015-07-02 Thomson Licensing Method and apparatus for generating a recording index
CN103856812B (zh) * 2014-03-25 2018-08-07 北京奇艺世纪科技有限公司 一种视频播放方法及装置
CN104053002A (zh) * 2014-06-05 2014-09-17 乐视网信息技术(北京)股份有限公司 视频解码方法和视频解码装置
US9564172B2 (en) * 2014-07-14 2017-02-07 NFL Enterprises LLC Video replay systems and methods
CN104378675B (zh) * 2014-12-08 2019-07-30 厦门雅迅网络股份有限公司 一种多通道音视频同步播放处理方法
CN105262950B (zh) * 2015-10-15 2018-08-17 广州市百果园网络科技有限公司 一种生成视频信息的方法和装置
CN106998485B (zh) * 2016-01-25 2020-03-06 百度在线网络技术(北京)有限公司 视频直播方法及装置
CN110213308A (zh) * 2018-02-28 2019-09-06 杭州海康威视数字技术股份有限公司 一种解码视频数据的方法及装置
CN111263211B (zh) * 2018-12-03 2022-02-08 深圳市炜博科技有限公司 一种缓存视频数据的方法及终端设备
CN109729404B (zh) * 2019-01-15 2021-06-04 晶晨半导体(上海)股份有限公司 一种基于嵌入式的播放器的同步调制方法
US20200296316A1 (en) 2019-03-11 2020-09-17 Quibi Holdings, LLC Media content presentation
US20200296462A1 (en) 2019-03-11 2020-09-17 Wci One, Llc Media content presentation
CN113906764B (zh) * 2019-09-23 2023-01-31 谷歌有限责任公司 用于转码视频的方法、设备和计算机可读介质
US11375286B1 (en) * 2020-12-30 2022-06-28 Western Digital Technologies, Inc. Pre-fetch of data using seek intervals
CN113242446B (zh) * 2021-04-30 2023-02-28 北京字节跳动网络技术有限公司 视频帧的缓存方法、转发方法、通信服务器及程序产品
CN113490055B (zh) * 2021-07-06 2023-09-19 三星电子(中国)研发中心 数据处理方法和装置
CN113824797B (zh) * 2021-11-19 2022-02-18 南京好先生智慧科技有限公司 一种授课资源自适应同步方法及装置
WO2023147707A1 (zh) * 2022-02-07 2023-08-10 Oppo广东移动通信有限公司 通信方法、接入网设备、核心网网元以及终端设备
CN115695918B (zh) * 2023-01-05 2023-04-18 南昌宾果信息技术有限公司 多摄像头导播控制方法、装置、可读存储介质及终端设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0170848A2 (en) * 1984-07-30 1986-02-12 International Business Machines Corporation Thermal annealing of integrated circuits

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3063824B2 (ja) * 1996-10-29 2000-07-12 日本電気株式会社 オーディオ・ビデオ同期再生装置
US6262776B1 (en) 1996-12-13 2001-07-17 Microsoft Corporation System and method for maintaining synchronization between audio and video
TW526666B (en) * 2000-03-29 2003-04-01 Matsushita Electric Ind Co Ltd Reproducing method for compression coded data and device for the same
US20040125816A1 (en) * 2002-12-13 2004-07-01 Haifeng Xu Method and apparatus for providing a buffer architecture to improve presentation quality of images
US7660512B2 (en) 2003-10-16 2010-02-09 Microsoft Corporation Systems and methods for managing frame rates during multimedia playback
KR20060105890A (ko) * 2005-03-31 2006-10-12 삼성전자주식회사 디지털 방송 수신 장치 및 그 장치에서의 동기화 처리 방법
US8296813B2 (en) 2006-06-22 2012-10-23 Sony Computer Entertainment Inc. Predictive frame dropping to enhance quality of service in streaming data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0170848A2 (en) * 1984-07-30 1986-02-12 International Business Machines Corporation Thermal annealing of integrated circuits

Also Published As

Publication number Publication date
CN101946518A (zh) 2011-01-12
US20090168903A1 (en) 2009-07-02
KR20100113538A (ko) 2010-10-21
EP2232880A1 (en) 2010-09-29
US8693553B2 (en) 2014-04-08
CN101946518B (zh) 2013-07-31
WO2009083834A1 (en) 2009-07-09

Similar Documents

Publication Publication Date Title
KR101234146B1 (ko) 디지털 비디오의 적응적 동기 복호화를 위한 방법, 장치 및 컴퓨터 프로그램 제품
US8805171B2 (en) Constructing video frames and synchronizing audio data in a media player from data received via a plurality of diverse protocol stack paths
US8719883B2 (en) Stream transmission server and stream transmission system
US7366241B2 (en) Data reproduction apparatus and data reproduction method
US20140104493A1 (en) Proactive video frame dropping for hardware and network variance
US20080059724A1 (en) Content distribution and switching amongst data streams
EP2785068B1 (en) Video image data delivery device, method and system
JP2017522767A (ja) ビデオビットストリームにおけるランダムアクセス
KR20220011688A (ko) 몰입형 미디어 콘텐츠 프레젠테이션 및 양방향 360° 비디오 통신
CN103918268A (zh) 用于解码图片缓冲器和参考图片列表的状态信息的信号通知
CN103650509A (zh) 基于照相机和背景运动的参考帧缓冲区的自适应配置
JP2006140984A (ja) 特定メディアデータの破棄を制御する送信装置及び送信プログラム
WO2010000288A1 (en) Fast channel switching in tv broadcast systems
CN108924631B (zh) 一种基于音视频分流存储的录像生成方法
US20080320170A1 (en) Data communication apparatus and data communication method
TW201002081A (en) Media stream processing
EP2214413A2 (en) Server and client selective video frame pathways
JP2008079228A (ja) 動画像・音声再生携帯端末、及び、動画像・音声配信端末、及び、システム
US20140321556A1 (en) Reducing amount of data in video encoding
US20090141792A1 (en) Image processing apparatus, mobile wireless terminal apparatus, and image display method
KR101632012B1 (ko) 통신 시스템, 서버 장치, 서버 장치의 제어 방법 및 프로그램을 저장하는 컴퓨터 판독 가능한 기록 매체
US8401086B1 (en) System and method for increasing responsiveness to requests for streaming media
JP2004180190A (ja) カメラ制御装置及びその制御ステップを実行するプログラム
JP2007228412A (ja) 携帯端末装置
JP2016192658A (ja) 通信システム、通信装置、通信方法および通信制御方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee