KR100589725B1 - 무선 휴대 장치를 위한 멀티미디어 스트리밍 시스템 - Google Patents

무선 휴대 장치를 위한 멀티미디어 스트리밍 시스템 Download PDF

Info

Publication number
KR100589725B1
KR100589725B1 KR1020040001493A KR20040001493A KR100589725B1 KR 100589725 B1 KR100589725 B1 KR 100589725B1 KR 1020040001493 A KR1020040001493 A KR 1020040001493A KR 20040001493 A KR20040001493 A KR 20040001493A KR 100589725 B1 KR100589725 B1 KR 100589725B1
Authority
KR
South Korea
Prior art keywords
client
data
server
access unit
video
Prior art date
Application number
KR1020040001493A
Other languages
English (en)
Other versions
KR20040080942A (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 KR20040080942A publication Critical patent/KR20040080942A/ko
Application granted granted Critical
Publication of KR100589725B1 publication Critical patent/KR100589725B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • GPHYSICS
    • G04HOROLOGY
    • G04BMECHANICALLY-DRIVEN CLOCKS OR WATCHES; MECHANICAL PARTS OF CLOCKS OR WATCHES IN GENERAL; TIME PIECES USING THE POSITION OF THE SUN, MOON OR STARS
    • G04B37/00Cases
    • G04B37/0008Cases for pocket watches and wrist watches
    • G04B37/0033Cases for pocket watches and wrist watches with cover or bottom which can slide or turn (without a spring action)
    • GPHYSICS
    • G04HOROLOGY
    • G04BMECHANICALLY-DRIVEN CLOCKS OR WATCHES; MECHANICAL PARTS OF CLOCKS OR WATCHES IN GENERAL; TIME PIECES USING THE POSITION OF THE SUN, MOON OR STARS
    • G04B45/00Time pieces of which the indicating means or cases provoke special effects, e.g. aesthetic effects
    • G04B45/0069Cases and fixed parts with a special shape
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

수신된 비디오 데이터를 표시할 수 있는 클라이언트가 제공된다. 클라이언트는 비디오 데이터를 수신하고 서버로 비디오 데이터에 대한 요구를 전송하도록 구성된 네트워크 입출력(IO)부를 포함한다. 정기-쓰레드부는 비디오 데이터를 복호하고 디스플레이하도록 구성된다. 리더-쓰레드부는 네트워크 IO를 통해 비디오 데이터를 획득하도록 구성된다. 리더-쓰레드부는 또한 리더-쓰레드부와 결합된 버퍼로부터 수신한 비디오 데이터를 정기-쓰레드부에 공급하도록 구성된다. 비디오/오디오 데이터를 스트리밍하는 시스템, 서버와 클라이언트 사이에서 비디오/오디오 데이터를 통신하는 방법 및 컴퓨터로 읽을 수 있는 매체 또한 포함된다.

Description

무선 휴대 장치를 위한 멀티미디어 스트리밍 시스템{MULTIMEDIA STREAMING SYSTEM FOR WIRELESS HANDHELD DEVICES}
본 발명은 첨부한 도면과 함께 이하의 상세한 설명에 의해 용이하게 이해될 수 있고, 유사한 구성요소에는 유사한 참조 번호를 지정하였다.
도 1은 무선망을 통한 클라이언트/서버 관계를 단순화한 개략도이다.
도 2는 본 발명의 일 실시예에 따라 저전력 휴대 장치에 대한 독특한 제약 및 특성에 적응하도록 구성된 스트리밍 프로토콜을 채택한 클라이언트 서버 관계를 단순화한 개략도이다.
도 3은 본 발명의 일 실시예에 따라 비디오/오디오 데이터를 포함하는 유저 데이터그램 프로토콜(UDP) 패킷을 단순화한 개략도이다.
도 4는 본 발명의 일 실시예에 따라 클라이언트에게 패킷 데이터를 송신하는 것에 대한, 클라이언트로부터 서버로의 요구의 구성을 나타내는 단순화한 개략도이다.
도 5는 본 발명의 일 실시예에 따른 클라이언트의 구성을 나타내는 단순화한 개략도이다.
도 6은 본 발명의 일 실시예에 따른 정기-쓰레드에 이용되는 알고리즘에 대한 방법 수행을 나타내는 흐름도이다.
도 7은 본 발명의 일 실시예에 따라 리더-쓰레드에 의해 정기적으로 호출되는 처리 함수에 대한 방법 수행을 나타내는 흐름도이다.
도 8은 본 발명의 일 실시예에 따라 서버로부터 클라이언트로 비디오/오디오 데이터를 통신하는 방법을 나타내는 흐름도이다.
본 발명은 멀티미디어 스트리밍에 관한 것으로서, 특히 무선 휴대 장치의 저전력 제한 특성 내에서 오디오/비디오 스트림을 교환하는 클라이언트/서버 구성을 제공하도록 구성된 시스템에 관한 것이다.
휴대용 전자 장치는 계속 향상되어 더욱 많은 기능을 수행하고 있다. 무선 네트워크는 이러한 장치에 대한 성능 및 매력을 확대시켜 왔다. 예를 들어, 컬러 디스플레이를 갖는 이동전화를 이용할 수 있고, 이를 사용하여, 무선망을 통해 서버에서 다운받을 수 있는 게임을 플레이할 수 있다. 휴대용 전자 장치의 제약된 리소스, 예를 들어 전력 및 메모리 제약 때문에, 휴대용 전자 장치에 관련된 제약 내에서 동작하도록 2방향 점대점 스트리밍 프로토콜이 구성된다.
도 1은 무선망을 통한 클라이언트/서버 관계를 단순화한 개략도이다. 서버(100)는 네트워크(102)를 통해 클라이언트(104)와 데이터를 통신한다. 예외적인 상황이 발생한 경우에, 스트리밍 프로토콜은 서버(100)와 클라이언트(104) 양 쪽에 책임을 지우는 경향이 있다. 예를 들어, 서버(100)가 보낸 패킷을 클라이언 트(104)가 수신하지 않으면, 패킷을 재전송하기 위해 클라이언트와 서버가 통신한다. 서버(100)는 각 클라이언트의 스테이트를 보유하고, 따라서, 서버가 보유하는 클라이언트의 스테이트에 따라 서버는 송신할 패킷을 판단한다. 각 클라이언트의 스테이트를 보유하는 것으로 인해, 서버(100)가 지원할 수 있는 클라이언트 양이 감소한다. 상세하게는, 서버가 스테이트를 보유함으로써, 추가 클라이언트를 지원하는데 이용할 수 있었던 연산력(computational power)을 소비한다. 따라서, 지원하는 클라이언트가 늘어날수록, 스테이트를 보유하기 위해 더 많은 연산력이 필요해진다. 또한, 네트워크를 통해 데이터를 전송하는데 이용되는 통신 프로토콜은 배터리로 동작하는 장치의 저전력 요구를 만족하도록 구성되어 있지 않다. 예를 들어, 배달이 보장되는 TCP(Transmission Control protocol) 등의 통신 프로토콜은 무선 네트워킹에 관련된 버스티(bursty) 속성에 있어서 낭비적이다. 또한, 이 통신 프로토콜은 무선 휴대 장치에 이용할 수 있는 적당한 양의 메모리에 적응하지 못하는 경향이 있다.
결과적으로, 종래 기술의 문제점을 해결하여 휴대 전자 장치의 제한된 특성에 적응하도록 구성된 통신 프로토콜을 제공할 필요가 있다.
대체적으로, 본 발명은 휴대 전자 장치의 제약에 적응하도록 목표된 스트리밍 프로토콜을 제공함으로써 이러한 요구를 만족시킨다. 본 발명은 방법, 시스템, 컴퓨터로 읽을 수 있는 매체 또는 장치를 포함하는 다양한 방식으로 실시될 수 있 다는 것을 알아야 한다. 본 발명의 몇몇 실시예를 이하에서 설명한다.
일 실시예에 있어서, 멀티미디어 스트리밍을 지원하도록 구성된 시스템이 제공된다. 본 시스템은 클라이언트와 서버를 구비한다. 클라이언트는 리더-쓰레드부 및 정기-쓰레드부와 결합된다. 리더-쓰레드부는 클라이언트가 수신한 데이터를 기억하는 버퍼와 관련된다. 리더-쓰레드부는 또한 네트워크 입출력 기능을 수행하도록 구성된다. 정기-쓰레드부는 데이터의 멀티미디어 스트림을 복호하고 표시하는 것을 가능하게 한다. 정기-쓰레드부는 또한 버퍼로부터 액세스 유닛을 획득하도록 구성된다. 서버는 네트워크를 통해 클라이언트와 통신하고, 클라이언트에 의해 특정된 액세스 유닛을 클라이언트에게 전송하도록 구성된다.
다른 실시예에 있어서, 디지털 비디오/오디오 데이터를 스트리밍하는 시스템을 제공한다. 본 시스템은 클라이언트의 스테이트를 보유하도록 구성된 클라이언트를 구비한다. 본 시스템은 또한 네트워크를 통해 클라이언트와 통신하는 서버를 구비한다. 유저 데이터그램 프로토콜(UDP)이 네트워크를 통한 클라이언트와 서버 사이의 통신을 가능하게 한다. UDP 프로토콜은 적어도 하나의 액세스 유닛(AU)을 보유하도록 구성된 패킷을 정의한다. 적어도 하나의 액세스 유닛 각각은 비디오/오디오 데이터의 하나의 프레임을 나타낸다. 비디오/오디오 데이터의 하나의 프레임은 서버로부터 클라이언트로 전송된다. 데이터의 프레임의 전송은 클라이언트가 보유하는 스테이트에 근거하여 클라이언트로부터 서버로의 송신 패킷의 전송에 의해 개시된다. 송신 패킷의 수신에 응하여, 서버는 송신 패킷에서 특정된 비디오 데이터의 프레임을 전송한다.
또 다른 실시예에 있어서, 수신한 비디오 데이터를 디스플레이할 수 있는 클라이언트를 제공한다. 본 클라이언트는 비디오 데이터를 수신하고 서버로 비디오 데이터에 대한 요구를 전송하도록 구성된 네트워크 입출력(IO)부를 구비한다. 정기-쓰레드부는 비디오 데이터를 복호하고 디스플레이하도록 구성된다. 리더-쓰레드부는 네트워크 입출력을 통해 비디오 데이터를 획득하도록 구성된다. 리더-쓰레드부는 또한 수신된 비디오 데이터를 리더-쓰레드부와 결합된 버퍼로부터 정기-쓰레드부에 공급하도록 구성된다.
다른 실시예에 있어서, 서버에서 클라이언트로 비디오/오디오 데이터를 통신하는 방법을 제공한다. 본 방법은 클라이언트에서 서버로 스트리밍 세션을 식별하기 위한 호출을 전송하는 단계로 개시한다. 그리고 클라이언트로부터의 호출 수신에 응하여, 서버에서 클라이언트로 초기 객체 기술자(IOD)를 전송한다. 다음으로, IOD 수신에 응하여 데이터 전송을 개시한다. 데이터 전송 개시 단계는 스트리밍 세션 데이터의 개시 시퀀스 및 스트리밍 세션 데이터의 양 쌍방을 나타내는 데이터를 서버에 대해 통신하는 단계를 포함한다. 개시 시퀀스와 양은 클라이언트에 의해 결정된다. 그리고 서버는 클라이언트에 상기 비디오/오디오 데이터를 보유하는 액세스 유닛을 공급함으로써, 상기 스트리밍 세션 데이터의 개시 시퀀스와 양을 나타내는 데이터의 수신에 응답한다.
또 다른 실시예에 있어서, 서버에서 클라이언트로 비디오/오디오 데이터를 통신하는 프로그램 명령어를 갖는 컴퓨터로 읽을 수 있는 매체를 제공한다. 본 컴퓨터로 읽을 수 있는 매체는 클라이언트에서 서버로 스트리밍 세션을 식별하기 위 한 호출을 전송하는 프로그램 명령어 및 클라이언트로부터의 호출 수신에 응하여, 서버에서 클라이언트로 초기 객체 기술자(IOD)를 전송하는 프로그램 명령어를 포함한다. IOD 수신에 응하여 데이터 전송을 개시하는 프로그램 명령어를 포함한다. 데이터 전송을 개시하는 프로그램 명령어는 스트리밍 세션 데이터의 개시 시퀀스 및 스트리밍 세션 데이터의 양 쌍방을 나타내는 데이터를 서버에 대해 통신하는 프로그램 명령어를 포함하고, 개시 시퀀스와 양은 클라이언트에 의해 결정된다. 클라이언트에 비디오/오디오 데이터를 보유하는 액세스 유닛을 공급함으로써, 스트리밍 세션 데이터의 개시 시퀀스와 양을 나타내는 데이터의 수신에 응답하는 프로그램 명령어 또한 포함된다.
본 발명의 다른 면과 이점은 첨부된 도면과 결합하여 본 발명의 원리를 예를 들어 설명하는 이하의 상세한 설명에 의해 명확해진다.
송신부로부터 수신부까지의 2방향 점대점(point-to-point) 스트리밍을 위한 멀티미디어 스트리밍을 지원하도록 구성된 시스템에 대한 발명을 설명한다. 그러나, 이러한 구체적인 세부설명의 약간 또는 전부가 없어도, 본 발명을 실시할 수도 있다는 것은 당업자에게는 명백해진다. 또한, 본 발명을 필요 없이 불명확하게 하지 않도록 공지의 과정은 상세하게 설명하지 않았다. 도 1은 "발명이 이루고자 하는 기술적 과제" 부분에서 설명하였다. 여기에서 사용되는 용어 "약"은 참조된 값의 +/-10%를 나타낸다.
본 발명의 실시예는 클라이언트와 서버 사이의 데이터 전송을 위한 시스템 및 통신 프로토콜을 제공한다. 여기에서, 클라이언트는 예컨대 멀티미디어 스트림 같은 데이터를 플레이하거나 표시하는 장치를 말하고, 서버는 데이터의 멀티미디어 스트림을 송신하는 장치를 말한다. 2방향 점대점 스트리밍에 있어서, 두 종점(endpoint)이 둘 다 클라이언트 및 서버로서 동시에 작용할 수 있다는 것을 알아야 한다. 멀티미디어 스트리밍 프로토콜은 예컨대 엠펙(MPEG)-4 표준 등의 전형적인 포맷의 디지털 비디오 및 오디오에 관련된다. 통신 프로토콜은 저전력 휴대 장치에 더 목표를 둔다. 저전력 휴대 장치의 예로는, 휴대 전화, PDA, 포켓 PC, 웹 태블릿, 랩탑 컴퓨터 등이 있다.
도 2는, 본 발명의 일 실시예에 따라 저전력 휴대 장치에 있어서의 독특한 제약 및 특성에 적응하도록 구성된 스트리밍 프로토콜을 채택한 클라이언트 서버 관계를 단순화한 개략도이다. 상술한 바와 같이, 2방향 점대점 스트리밍에 있어서, 두 종점은 둘 다 클라이언트 및 서버로서 동시에 작용할 수 있다. 따라서, 서버와 클라이언트는 둘 다 저전력 휴대 장치 내부에서 실현되도록 구성되어야만 한다. 서버(110)는 버퍼(112)를 통해 그 파일 시스템(114)으로부터 미리 존재하는 스트림을 제공하도록 구성되거나, 또는 버퍼(112)를 통해 실시간 부호기(116)에 의해 생성된 스트림을 제공할 수 있다. 스트리밍 데이터는 무선 또는 유선망(118)을 통해 클라이언트(120)로 전송된다. 클라이언트(120)는 디스플레이 화면(124)에 버퍼(122)를 구비한다. 클라이언트(120)는 클라이언트 상에서 진행되고 있는 것을 판단할 수 있는 최상의 위치에 있다는 것을 알아야 한다. 즉, 클라이언트는 접속 불량 여부, 필요한 데이터, 클라이언트의 용량 등을 가장 잘 판단할 수 있다. 따 라서, 여기에서 설명하는 실시예는, 서버가 클라이언트의 스테이트를 보유하는 것보다는 오히려, 클라이언트가 자신이 필요한 것에 대해 서버에게 정보를 제공하는, 클라이언트 지식을 이용한다. 또한, 클라이언트측에서의 추가된 연산이 많은 부담이 되는 것은 아니다. 따라서, 각 클라이언트에 대한 스테이트를 유지할 필요가 없으면, 서버가 추가 클라이언트를 지원할 능력을 얻기 때문에, 서버에 있어서 유리하게 된다.
도 3은, 본 발명의 일 실시예에 따라 비디오/오디오 데이터를 포함하는 유저 데이터그램 프로토콜(UDP) 패킷을 단순화한 개략도이다. UDP 패킷(130)은 이미지 데이터를 보유하는 액세스 유닛(AU: 132a-132n)을 포함한다. 이 때, AU1(132a), AU2(132b) 내지 AUn(132n)은 각각 비디오/오디오 데이터의 프레임을 보유한다. 일 실시예에 있어서, 이 비디오/오디오 데이터는 MPEG-4 표준 포맷이다. 다른 실시예에 있어서, UDP 패킷(130)의 사이즈는 가변이지만, 최대 패킷 사이즈는 8192 바이트이다. UDP 프로토콜(130)은 64 킬로바이트의 데이터가 패킷으로 통합되도록 하지만, 일반적으로 실제 네트워크에서의 한계는 더 낮다. 여기 설명하는 스트리밍 프로토콜은 저비트율 비디오, 즉 초당 128 킬로비트 이하를 목표로 하고 있다는 것을 알아야 한다. 이렇게, 서버가 각 클라이언트의 스테이트를 보유하지 않기 때문에, 클라이언트가 호출을 개시하고 클라이언트로 전송할 데이터를 특정한다. 이에 응하여, 서버는 UDP 패킷(130)에서 설명한 바와 같이 요구받은 정보를 송신한다. 따라서, 예컨대 UDP와 같은 무보증 배달 프로토콜에 더하여 여기서 설명한 시스템 을 구축함으로써, 이동 장치의 버스티니스(burstiness) 특성에 더 잘 적응한다.
도 4는, 본 발명의 일 실시예에 따라 클라이언트에게 패킷 데이터를 송신하라는, 클라이언트로부터 서버로의 요구의 구성을 나타내는 단순화한 개략도이다. 일 실시예에 있어서, 이 요구는 클라이언트가 데이터 전송을 개시할 때 포함되고, 그리고 서버로 SEND 패킷을 전송한다. SEND 패킷은 개시 시퀀스 번호를 나타내며 또한 스킵 리스트를 나타낼 수도 있다. 예를 들어, 도 4의 블록(136)은 개시 시퀀스 번호 40을 나타낸다. 클라이언트가 블록(138)의 영역(51 - 80) 및 블록(142)의 영역(116 - 135)에 대응하는 데이터를 이미 가지고 있을 때, SEND 패킷은 스킵 리스트를 포함해도 된다. 스킵 리스트는, 블록(136)에 특정된 패킷(40 - 50) 및 블록(140)에 특정된 패킷(81 - 115)을 송신하는 한편 블록(138)에 특정된 패킷(51 - 80) 및 블록(142)에 특정된 패킷(116 - 135)을 스킵하라는 것을 나타낸다.
일 실시예에 있어서, 이하에서 설명하는 다양한 패킷은 헤더에서 널 종료(null terminated) 라인으로 포맷된다. 본 실시예에 있어서는, 최종 라인 이후에, 두 개의 NULL이 있다. 초기 객체 기술자(initial object descriptor; IOD) 패킷 및 액세스 유닛(AU) 패킷 등의, 헤더에서의 프로토콜 정보로부터 이격된 데이터를 운반하는 패킷에 대해, 데이터는 항상 고정된 옵셋에서 시작한다. 일 실시예에 있어서, 옵셋은 512 바이트이다. 아래의 표 1에서 볼 수 있는 바와 같이, 다양한 패킷은 OPEN 패킷, IOD 패킷, AU 패킷, SEND 패킷, 및 CLOSE 패킷을 포함한다. 따라서, 프로토콜은 설계에 있어서 단순하고, 압도적인 옵션 세트로 프로토콜에 부담을 주지 않고 유연성을 달성하려는 목표를 만족시킨다. 즉, 프로토콜이 아니라 클라이언트와 서버에 본 시스템의 인텔리전스가 있다. 이하에서 더 설명하는 바와 같이, 클라이언트가 SEND 패킷에서 값을 선택하고 나서, 서버가 똑똑하게, 즉 휴대 장치의 제약에 기초하여, 액세스 유닛 패킷에서 송신할 것을 선택한다.
표 1 OPEN session-id stream-name IOD session-id AU session-id [au- num offset]* SEND session-id req - num available slots available-buff-in-bytes start-seq- num [skip-seq- num numToSkip ]* CLOSE session-id
표 1은 다양한 형태의 패킷과 함께 각 패킷 형태 내에서 얻어지는 정보를 나타낸다. 표 1에서 *를 갖는 꺾쇠 괄호 내의 값은, 분리 NULL을 가지고, 0 이상의 이러한 값들이 존재할 수 있다는 것을 나타낸다. 일 실시예에 있어서, SEND 패킷의 skip-seq- num numToSkip 데이터가 나타내는 스킵 라인의 총 수는 256으로 설정된 최대 스킵 라인 수보다 작다. 상술한 바와 같이, 다른 실시예에 있어서 IOD 및 AU 패킷에 대해 데이터는 512 바이트로 설정된 옵셋에서 시작한다.
도 5는, 본 발명의 일 실시예에 따른 클라이언트의 구성을 나타내는 단순화 된 개략도이다. 클라이언트(120)는 액세스 유닛 AU1(132a) 내지 AUn(132n)을 보유하는 UDP 패킷(130)을 수신하도록 구성된다. 네트워크 입/출력 블록(150)은 들어오는 UDP 패킷(130)을 수신한다. RT 라고도 하는 리더-쓰레드(Reader-Thread) 블록(152)은 네트워크 입/출력을 수행하도록 구성된다. ST 라고도 하는 정기-쓰레드(Scheduled-Thread) 블록(154)은 리더-쓰레드 블록(152)과 통신한다. 정기-쓰레드 블록(154)은 비디오 스트림 데이터를 복호하여 표시하도록 구성된다. 일 실시예에 있어서 정기-쓰레드 블록(154)은 이미지를 표시하는 데 필요한 다음 액세스 유닛을 리더-쓰레드 블록(152)에게 요청한다. 그 액세스 유닛이 버퍼(156) 내에 있다면, 복호하여 최종적으로 디스플레이 화면(158) 상에 표시하기 위해 액세스 유닛을 정기-쓰레드(154)에게 배달한다. 액세스 유닛이 버퍼(156)에 없다면, 리더-쓰레드 블록(152)은 preferbuffering이라고 하는 파라미터를 이용한다. preferbuffering 파라미터는, 스킵될 수도 있는 액세스 유닛으로 연속 플레이하는 것을 희생하여 스트림의 일부를 놓치지 않기를 사용자가 선호하는지 여부를 퍼센트로 나타내는 것이다. 이하에 더 상세하게 설명하는 바와 같이 preferredbuffering 파라미터의 값에 따라, 리더-쓰레드 블록(152)은 일정 시간을 대기하여, 필요한 액세스 유닛을 취득할 수 있는지를 본다. 리더-쓰레드 블록(152)이 필요한 데이터를 획득할 수 없다면, 리더-쓰레드는 빈 데이터를 반환하고, 복호기의 에러 은폐 알고리즘은 빈 데이터를 채울 데이터를 제공한다.
도 6은, 본 발명의 일 실시예에 따른 정기-쓰레드에 이용되는 알고리즘에 대 한 방법 수행을 나타내는 흐름도이다. 본 방법은 다음 액세스 유닛을 획득하는 공정(170)과 함께 시작한다. 일 실시예에 있어서, 리더-쓰레드와 결합된 버퍼로부터 다음 액세스 유닛을 획득한다. 본 방법은 비디오 스트림 데이터를 복호하는 공정(172)으로 진행하고 나서, 공정(174)에서, 복호된 비디오 스트림 데이터를 디스플레이한다. 여기에 어떠한 적당한 복호 알고리즘이라도 사용할 수 있다는 것을 알아야 한다. 일 실시예에 있어서, 액세스 유닛에 포함된 데이터는 MPEG-4 포맷으로 포맷된다. 공정(174)에서 본 방법은 공정(176)으로 진행하여 플레이 레이트(play rate)에 의한 소정의 시간 동안 정지(sleep)한다. 예를 들어, 플레이 레이트가 초당 15 프레임이라면, 정기-쓰레드는 1 초의 약 1/15 동안 정지한다. 그리고 본 방법은 판단 공정(178)으로 이동하여 스트림이 종료했는지를 판단한다. 스트림이 종료하지 않았다면, 본 방법은 공정(170)으로 복귀하여 상술한 바와 같이 처리할 다음 액세스 유닛을 획득한다. 스트림이 종료했다면, 본 방법은 종료한다. 표 2는 도 6의 흐름도에 의해 대안적으로 설명되는 의사 코드(pseudo code)를 나타낸다.
표 2 While (스트림이 종료하지 않음) do 다음 AU 획득(RT의 버퍼로부터) 복호 및 디스플레이 플레이 레이트에 의해 결정된 시간 동안 정지
도 7은, 본 발명의 일 실시예에 따라 리더-쓰레드에 의해 정기적으로 호출되는 process 함수에 대한 방법 수행을 나타내는 흐름도이다. 일 실시예에 있어서, process() 함수의 호출 주기는 200 밀리초로 설정된다. 네트워크 레이어가 들어오 는 패킷을 검출하는 때에도 이하에서 설명하는 process 함수를 호출할 수 있다는 것을 알아야 한다. Process 함수는, read-packet 함수 및 have-enough-buffered 함수로 호칭하는 두 개의 헬퍼 함수를 사용한다. 이러한 함수 각각에 대해 주석을 단 의사 코드가 표 3 내지 5에 나타나 있다. 표 3은 readpacket() 함수라고 하는 헬퍼 함수 에 대한 의사 코드를 제공한다. 표 4는 haveEnoughBuffered() 함수라고 하는 헬퍼 함수에 대한 의사 코드를 제공한다. 표 5는 process() 함수라고 하는 헬퍼 함수에 대한 의사 코드를 제공한다. Process() 함수에 대한 의사 코드의 대안적인 설명을 도 7을 참조하여 설명한다.
표 3 readPacket() { while (true) { 네트워크로부터 패킷 읽음: if 패킷이 이용 가능하지 않음 then 루프로부터 break and return 패킷 파싱 If CLOSE 패킷 then RT에 알리는 플래그 설정 및 루프로부터 break AU 패킷이다. 패킷 내의 각 AU에 대해 AU를 RT의 버퍼로 복사하고, 본 AU를 획득한 시간 통지}
표 4 haveEnoughBuffered() { AU를 위해 B 버퍼 슬롯을 사용하고 있고, 다음에 필요한 AU로부터 시작하는 버퍼 점유(즉, 이용 가능한 AU)가 적어도 (preferBuffering * B/200) 이라면, true 반환, 아니면 false 반환. }
표 5 process() { If 데이터가 읽기 이용 가능하다고 알려졌기 때문에 본 함수 호출 then readPacket() 호출 If AU가 준비되기를 ST가 대기중 If 버퍼에 AU를 현재 갖고 있음 If 시간 T1(알고리즘 파라미터) 이전에 AU를 획득했음 or if haveEnoughBuffered() then ST에 재개신호를 주고 AU를 얻음 If AU를 갖고 있지 않지만 충분히 최근에(파라미터 T2) SEND 패킷을 송신함으로써 서버로부터 최근에 이를 요청함 then return else 긴급하지 않음 if haveEnoughBuffered() then return 이 시점에서, 요구 송신: ST가 AU를 기다리고 있거나 버퍼가 상당히 비어 있음 갖고 있지 않고 시간이 경과하지 않는 다음 AU 번호에서 시작하는 AUS를 요 구하는 SEND 패킷을 생성. 또한 몇 개의 AU 버퍼 슬롯이 프리한지를 표시함. [skip-seq-num numToSkip]* 라인을 이용하여 될수 있는 한 이미 갖고 있는 AU를 SEND 패킷에 나타냄. 예를 들어, 번호 50에서 시작하는 AU를 요구하 고 있지만 버퍼에 AU 51-57 및 64-68을 이미 갖고 있다면(손실 패킷 때문에 이런 경우가 발생할 수 있다), 스킵 라인은 다음과 같다: 51 7 64 5 이용 가능한 AU가 너무 단편화되어 있으면(이들을 모두 나타내기 위해서는 매우 긴 스킵 리스트가 필요), 클라이언트는 끝에서 스킵 리스트를 자르는 것을 단순하게 선택. SEND 패킷을 서버로 송신 }
표 3, 4, 및 5에 제공된 몇몇 파라미터를 고치면서 클라이언트 동작이 변경될 수 있다는 것을 알아야 한다. haveEnoughBuffered() 함수에 대한 의사 코드에서 사용된 파라미터 B는 클라이언트의 버퍼 슬롯 수를 나타낸다. 일 실시예에 있어서, 각 액세스 유닛(AU)에 대해 하나의 버퍼 슬롯이 있다. 다른 실시예에 있어 서, B는 32이다. 파라미터 preferBuffering은 비디오 데이터를 표시하거나 또는 더 많은 비디오 데이터를 가져와서 버퍼할 때를 나타내는 퍼센트 지시자이다. 따라서, preferBuffering 파라미터는 버퍼 점유 문턱값으로서 작용하고, haveEnoughBuffered() 함수에서 사용된다. 일 실시예에 있어서, process() 함수에서 사용되는 파라미터 T1은 이미지의 프레임 사이 시간의 반으로 설정된다. 파라미터 T2는 클라이언트가, 다른 요구를 송신하기 전에, 요구한 AU의 도달을 자진해서 기다리는 시간을 나타낸다. 일 실시예에 있어서, T2는, 주기적으로 또는 들어오는 패킷이 검출되었기 때문에, process() 함수를 세 번 연속 호출하는 데 걸리는 시간과 동일한 동적인 시간량으로 설정된다.
일 실시예에 있어서, readpacket() 함수는 접속측에서 이용가능한 어떠한 데이터라도 본질적으로 고갈시키도록 구성된다. 즉, readpacket() 함수는 네트워크 접속, 예컨대 도 5의 네트워크 I/O로부터 읽어서, 읽어낸 어떠한 데이터라도 버퍼 내의 적절한 슬롯에 배치한다. process 함수는 소켓을 통해 네트워크 레이어에서 호출된다. 일 실시예에 있어서, 읽을 데이터를 가지고 있는 등의, 그 소켓에 관련된 이벤트는, process 함수 호출을 트리거한다. 이벤트와 process 함수는 플래그를 통해 통신해도 된다는 것을 알아야 한다. 즉, process() 함수가 호출될 때, process() 함수는, 주기적인 호출 때문에 호출되었는지, 데이터가 이용가능하다고 알려졌기 때문에 호출되었는지 여부를 플래그를 통해 알게 된다. 플래그 정보는 도 7의 판단 공정(180)에서 이용된다.
도 7의 방법은, 데이터가 이용가능하다고 알려졌기 때문에 데이터가 호출되 었는지를 판단하는 판단 공정(180)으로 시작한다. 데이터가 이용가능하다고 알려졌기 때문에 데이터가 호출되었다면, 방법은 공정(182)으로 진행하여 read packet 함수를 호출한다. 예를 들어, 데이터가 클라이언트의 버퍼에서 이용 가능하다면, 그 결과 readpacket() 함수는 그 데이터를 복사하고 읽는다. 데이터가 이용가능하다고 알려졌기 때문에 데이터가 호출된 것이 아니라면, 방법은 판단 공정(184)으로 진행하여 정기-쓰레드가 액세스 유닛이 준비되기를 대기하고 있는지를 판단한다. 판단 공정(184)에서 정기-쓰레드가 액세스 유닛이 준비되기를 대기하고 있다면, 방법은 판단 공정(186)으로 진행하여, 그 액세스 유닛이 버퍼에 있는지를 판단한다. 그 액세스 유닛이 버퍼에 있다면, 방법은 판단 공정(188)으로 이동하여, 윈도우 시간 T1 이전에 그 액세스 유닛을 획득했는지를 판단한다. 윈도우 시간 T1 이전에 그 액세스 유닛을 획득했다면, 방법은 공정(190)으로 진행하여 정기-쓰레드는 재개(wake up) 신호를 받고 그 액세스 유닛을 얻는다.
도 7의 방법은 공정(196)으로 진행하여, 클라이언트가 갖고 있지 않고 시간이 경과하지 않은 다음 액세스 유닛에서 시작하는 적어도 하나의 액세스 유닛에 대한 요구를 서버에 송신한다. 이 때, 일 실시예에 있어서, 클라이언트는 몇 개의 버퍼 슬롯이 자유로운지를 나타내도 된다. 다른 실시예에 있어서, 클라이언트는, 이미 가지고 있는 개시 시퀀스를 넘어선 액세스 유닛의 수를 나타낸다. 즉, 스킵 리스트가 여기에 포함되어도 된다. 예를 들어, 표 1의 SEND 패킷이 서버로 전송될 때 이 데이터를 포함한다. 따라서, 서버가 스테이트를 보유하는 것 보다는 클라이언트가 자신의 스테이트를 보유한다. 판단 공정(188)으로 돌아와서, 액세스 유닛 을 시간 윈도우 T1 동안 획득하지 못했다면, 방법은 판단 공정(194)으로 진행하여, have-enough-buffered 함수가 트루 값을 반환하는지를 판단한다. Have-enough-buffered 함수가 트루 값을 반환한다면, 방법은 공정(190)으로 진행하여, 정기-쓰레드는 재개 신호를 받고 그 액세스 유닛을 얻는다. 방법은 공정(190)으로부터 상술한 바와 같이 처리한다. 판단 공정(186)으로 돌아가서, 액세스 유닛이 버퍼에 없다고 판단되면, 방법은 판단 공정(192)으로 진행한다. 판단 공정(192)에서, 클라이언트가 시간 윈도우 T2 이내에 특정한 액세스 유닛을 서버에 요청했는지를 판단한다. 서버가 시간 윈도우 T2 이내에 액세스 유닛을 요청받지 않았다면, 방법은 공정(196)으로 진행하고 상술한 바와 같이 처리한다. 클라이언트가 시간 윈도우 T2 이내에 액세스 유닛을 요청했다면, 방법은 종료한다. 즉, 클라이언트는 액세스 유닛이 수신되기를 대기한다. 판단 공정(184)으로 돌아와서, 정기-쓰레드가 액세스 유닛이 준비되기를 기다리고 있지 않다면, 방법은 판단 공정(198)으로 진행하여, have-enough-buffered 함수가 트루 값을 반환하는지 판단한다. Have-enough-buffered 함수가 트루 값을 반환한다면, 방법은 종료한다. Have-enough-buffered 함수가 트루 값을 반환하지 않는다면, 방법은 공정(196)으로 진행하여 상술한 바와 같이 처리한다. 도 7은 표 5의 의사 코드를 그래픽적으로 나타내고 있는 것을 알아야 한다.
도 8은 본 발명의 일 실시예에 따라 서버에서 클라이언트로 비디오/오디오 데이터를 통신하는 방법을 나타내는 흐름도이다. 본 방법은 공정(210)으로 시작되고, 클라이언트로부터 서버로의 호출이 전송되어 스트리밍 세션을 식별한다. 여기 서, 클라이언트로부터 서버로의 호출은 상술한 OPEN 패킷으로서 구성된다. 그리고, 방법은 공정(212)으로 진행하여, 클라이언트로부터의 호출 수신에 응하여 초기 객체 기술자(IOD) 패킷이 서버에서 클라이언트로 전송된다. 상술한 바와 같이, 초기 객체 기술자 패킷은 고정 옵셋에서 시작하는 데이터를 갖고 이 데이터는 컨텐츠-특정(content-specific)된다. 일 실시예에 있어서, IOD 패킷은 기초(elementary) 스트림의 세트를 기술하는 정보를 포함하고, 또한 그 컨텐츠에 대해 필요한 프로세싱 자원을 평가하기 위해 클라이언트에 필요한 프로파일(profile) 및 레벨 정보의 세트를 전달한다. 그리고 방법은 공정(214)으로 진행하여, 클라이언트로부터의 하나 이상의 호출이 서버로 전송된다. 여기서, 클라이언트에서 서버로의 호출은, 필요한 액세스 유닛 데이터와 함께 버퍼 이용 가능성(availability) 및 점유를 나타내도 된다. 선택적으로, 세션을 닫는 요구, 즉 클로즈 패킷이 클라이언트에서 서버로 전송되어도 된다.
그리고 도 8의 방법은 판단 공정(216)으로 진행하여, 세션을 닫으라는 요구가 클라이언트에서 서버로 전송되었는지를 판단한다. 세션을 닫으라는 요구가 전송되었다면, 세션이 닫힐 때 방법이 종료한다. 세션을 닫으라는 요구가 전송되지 않았다면, 방법은 공정(218)으로 진행하여, 클라이언트로부터 하나 이상의 호출이 서버로 전송된다. 공정(214)에서와 마찬가지로, 클라이언트에서 서버로의 호출은, 필요한 액세스 유닛 데이터와 함께 버퍼 이용 가능성 및 점유를 나타내도 된다. 선택적으로, 세션을 닫는 요구, 즉 클로즈 패킷이 클라이언트에서 서버로 전송되어도 된다. 방법은 판단 공정(220)으로 진행되어, 세션을 닫으라는 요구가 클라이언 트에서 서버로 전송되었는지를 판단한다. 세션을 닫으라는 요구가 전송되었다면, 세션이 닫힐 때 방법이 종료한다. 세션을 닫으라는 요구가 전송되지 않았다면, 방법은 공정(214)으로 진행하여, 상술한 바와 같이 반복된다. 클라이언트가 데이터 전송을 개시한다는 것을 알아야 한다. 일 실시예에 있어서, 상술한 바와 같이 버퍼 점유 및 이용 가능성 정보와 함께 클라이언트가 필요로 하는 AU를 나타내는 SEND 패킷을 서버로 전송함으로써, 클라이언트는 데이터 전송을 개시한다. 다른 실시예에 있어서, 서버에서 클라이언트로의 AU 패킷 내부에 오디오/비디오 데이터가 송신된다.
클라이언트는 고속 포워드 및/또는 고속 리와인드 기능을 제공하도록 구성되어도 된다. 여기서, P(predicted) 프레임과 B(bi-directional) 프레임이 아닌 I(Intra) 프레임만이 고속 포워드 또는 고속 리와인드 기능에 대해 나타난다. 클라이언트는 어느 프레임이 I 프레임인지를 구별하는 정보를 가지고 있지 않기 때문에, 클라이언트는 서버로부터 정보를 요구한다. 예를 들어, 클라이언트는 서버에게 I 프레임 번호의 리스트를 요청하는 패킷을 송신해도 된다. 그리고, 서버는 응답하여 I 프레임 번호의 리스트 또는 첫 번째 I 프레임 번호와 I 프레임의 주기를 제공한다. 클라이언트 요구는 요약(summary) 요구 패킷으로 칭하고, 서버 응답은 요약 응답 패킷으로 칭한다. 따라서, 요약 요구 패킷 및 요약 응답 패킷은 표 1에서 설명한 패킷의 형태에 추가되는 두 가지 추가 패킷 형태이다.
요약하자면, 상술한 발명은 단순화한 통신 프로토콜을 통해 비디오/오디오 데이터를 교환하는 클라이언트 서버 관계를 설명한다. 이 통신 프로토콜은 무선 네트워킹 및 관련된 장치의 특성에 적응하도록 맞추어 졌다. 즉, 시스템은 UDP 등의 무보증 배달 저레벨 프로토콜 위에 구축된다. 휴대 전자 장치에 제공되는 디스플레이 화면의 작은 비디오 치수 특성에 또한 적응한다. 예를 들어, 144 라인당 176 픽셀을 갖는 QCIF(Quarter Common Intermediate Format) 및 288 라인당 352 픽셀을 갖는 CIF(Common Intermediate Format)가 상술한 휴대 전자 장치의 디스플레이 화면으로 일반적으로 사용된다. 이러한 저 비트율과 저해상도 비디오의 (각각 한 프레임의 데이터를 보유하는) 다수의 액세스 유닛을 단일 UDP 패킷 내에 맞춘다. 상술한 시스템의 구성은, 클라이언트가 다수의 요구를 한꺼번에 하고 서버가 단일 UDP 패킷 내에서 다수의 응답을 한꺼번에 하도록 함으로써 이러한 특징을 이용한다. 따라서, 네트워킹 오버헤드 및 분열된 메모리 액세스가 최소화됨으로써, 전력소비를 감소시킨다. 일 실시예에 있어서, 클라이언트, 즉 휴대 전자 장치는 전력 스케일러블(scalable)하다. 즉, 휴대 장치의 배터리에서 이용가능한 전력이 감소함에 따라, 그 장치의 비디오 복호기는 저전력을 소비하는 비디오 복호 프로파일로 전환한다. 비디오 복호기의 전력 조절가능성에 관한 더 상세한 정보를 위해서는, 2003년 2월 7일 출원된 미국 특허 출원 10/360,977호 "POWER SCALABLE DIGITAL VIDEO DECODING"을 참조하면 된다. 본 출원 전체를 참조하여 여기에 통합한다.
여기에서 설명한 시스템 및 통신 프로토콜은 저비트율, 즉 초당 128 킬로비트 이하를 목적으로 했다는 것을 알아야 한다. 그러나, 상술한 실시예는 더 높은 비트율에 대해서도 적용될 수 있다. 또한 상술한 실시예는 소프트웨어 또는 하드 웨어로도 구현될 수 있다는 것을 알아야 한다. 소프트웨어 구현에 있어서는, 리더-쓰레드 및 정기-쓰레드 모듈은 동시에 동작하는 분리된 쓰레드로서 구현되어도 된다. 하드웨어 구현에 있어서는, 리더-쓰레드 및 정기-쓰레드 모듈은, 리더-쓰레드와 정기-쓰레드 모듈이 병렬로 작동하도록 하는 제어 로직을 이용하여 구현해도 된다.
상기 실시예를 염두에 두고, 본 발명은 컴퓨터 시스템에 저장된 데이터를 포함하여 컴퓨터로 수행되는 다양한 동작을 채택할 수도 있다는 것을 알아야 한다. 이러한 동작은 물리량의 물리적 조작을 필요로 하는 동작을 포함한다. 일반적으로, 필수적이지는 않지만, 이러한 양은 저장, 전송, 조합, 비교, 이외의 조작이 가능한 전기적 또는 자기적 신호의 형태를 취한다. 또한, 수행되는 조작은 종종 생산, 식별, 결정, 또는 비교 등의 용어로 칭한다.
상술한 발명은, 휴대 장치, 마이크로프로세서 시스템, 마이크로프로세서 기반 또는 프로그래머블 가정용전자제품, 마이크로 컴퓨터, 메인프레임 컴퓨터 등을 포함하는 기타 컴퓨터 시스템 구성으로 실시될 수도 있다. 또한, 본 발명은 통신망을 통해 링크되는 원격 처리 장치에 의해 작업이 수행되는 배송 컴퓨팅 환경에서 실시될 수도 있다.
또한, 본 발명은 컴퓨터로 읽을 수 있는 매체 상에서 컴퓨터로 읽을 수 있는 코드로서 실시될 수도 있다. 컴퓨터로 읽을 수 있는 매체란 데이터를 기억한 후 컴퓨터 시스템으로 읽을 수 있는 데이터 기억 장치이다. 컴퓨터로 읽을 수 있는 매체는 또한 컴퓨터 코드가 포함되는 전자기 반송파를 포함한다. 컴퓨터로 읽을 수 있는 매체의 예로는 하드 드라이브, NAS(network attached storage), ROM, RAM, CD-ROM, CD-R, CD-RW, 마그네틱 테잎, 기타 광학, 비광학 데이터 기억 장치가 있다. 또한 컴퓨터로 읽을 수 있는 매체는, 네트워크 접속된 컴퓨터 시스템을 통해 배송됨으로써, 컴퓨터로 읽을 수 있는 코드가 배송 방식으로 기억되고 실행될 수 있다.
상술한 발명은 명확한 이해를 돕기 위해서 어느 정도 상세하게 설명되었지만, 첨부된 청구항의 범위 내에서 어떠한 변형이나 변경을 할 수 있다는 것은 명백하다. 따라서, 본 실시예들은 설명하기 위한 것이지 제한하려는 것은 아니고, 본 발명이 여기서 주어진 내용으로 제한되지 않고, 첨부된 청구항의 범위 및 균등물의 범위 내에서 변경될 수 있다. 청구항에서는, 명백하게 언급되지 않은 경우에는, 구성요소 및/또는 단계가 어떤 특정 동작 순서를 의미하지는 않는다.
본 발명은 무선 휴대 장치의 제한된 특성에 적응하도록 구성된 스트리밍 프로토콜을 제공하고, 이와 관련된 방법, 시스템, 컴퓨터로 읽을 수 있는 매체 또는 장치를 포함하는 다양한 방식으로 실시된다.

Claims (30)

  1. 멀티미디어 스트리밍을 지원하도록 구성된 시스템에 있어서,
    리더-쓰레드부 및 정기-쓰레드부와 결합된 클라이언트로서, 상기 리더-쓰레드부는 상기 클라이언트가 수신한 데이터를 기억하는 버퍼와 결합되고, 상기 리더-쓰레드부는 또한 네트워크 입출력 기능을 수행하도록 구성되며, 상기 정기-쓰레드부는 데이터의 멀티미디어 스트림을 복호하고 표시하는 것이 가능하고, 상기 정기-쓰레드부는 또한 상기 버퍼로부터 액세스 유닛을 획득하도록 구성된, 클라이언트; 및
    네트워크를 통해 상기 클라이언트와 통신하는 서버로서, 상기 클라이언트에 의해 특정된 액세스 유닛을 상기 클라이언트에게 전송하도록 구성된 서버를 구비하는 것을 특징으로 하는 시스템.
  2. 제1항에 있어서,
    상기 리더-쓰레드부는 상기 서버에 송신(SEND) 패킷을 전송함으로써 상기 클라이언트에 대한 데이터 전송을 개시하도록 구성된 것을 특징으로 하는 시스템.
  3. 제2항에 있어서,
    상기 송신 패킷은, 이미지 데이터의 프레임을 나타내는 개시 시퀀스 넘버, 상기 클라이언트로 송신할 상기 개시 시퀀스 넘버에 후속하는 이미지 데이터의 프 레임 요구 넘버, 및 상기 프레임 요구 넘버 내에서 상기 클라이언트가 저장한 이미지 데이터의 프레임을 나타내는 스킵-리스트를 포함하는 것을 특징으로 하는 시스템.
  4. 제1항에 있어서,
    상기 클라이언트는 전력 스케일러빌리티를 갖는 무선 휴대 장치이고, 상기 전력 스케일러빌리티는 상기 무선 휴대 장치에 이용할 수 있는 전력이 감소함에 따라 저전력을 소비하는 복호 프로파일로 전환되도록 하는 것을 특징으로 하는 시스템.
  5. 제1항에 있어서,
    상기 액세스 유닛은, 유저 데이터그램 프로토콜(UDP)을 통해 상기 네트워크 상에서 전송되도록 구성된 패킷 내에 포함되는 것을 특징으로 하는 시스템.
  6. 디지털 비디오/오디오 데이터를 스트리밍하는 시스템에 있어서,
    클라이언트의 스테이트를 보유하도록 구성된 클라이언트; 및
    네트워크를 통해 상기 클라이언트와 통신하는 서버를 구비하고,
    유저 데이터그램 프로토콜(UDP)이 상기 네트워크를 통한 상기 클라이언트와 상기 서버 사이의 통신을 가능하게 하며, 상기 UDP 프로토콜은 적어도 하나의 액세스 유닛(AU)을 보유하도록 구성된 패킷을 정의하고, 상기 적어도 하나의 액세스 유닛 각각은 비디오/오디오 데이터의 하나의 프레임을 나타내며, 상기 비디오/오디오 데이터의 하나의 프레임은 상기 서버로부터 상기 클라이언트로 전송되고, 상기 데이터의 하나의 프레임의 전송은 상기 클라이언트가 보유하는 스테이트에 근거하여 상기 클라이언트로부터 상기 서버로의 송신 패킷의 전송에 의해 개시되며, 상기 송신 패킷의 수신에 응하여, 상기 서버는 상기 송신 패킷에서 특정된 상기 비디오 데이터의 하나의 프레임을 전송하는 것을 특징으로 하는 시스템.
  7. 제6항에 있어서,
    상기 클라이언트의 스테이트는, 상기 클라이언트가 필요로 하는 비디오/오디오 데이터의 개시 프레임과 관련된 데이터, 상기 개시 프레임으로부터의 비디오/오디오 데이터 시퀀스에 관련된 데이터, 및 상기 클라이언트가 저장한 상기 비디오/오디오 데이터 시퀀스의 일부에 관련된 데이터를 포함하는 것을 특징으로 하는 시스템.
  8. 제6항에 있어서,
    상기 클라이언트와 상기 서버는 무선망을 통해 통신하는 것을 특징으로 하는 시스템.
  9. 제6항에 있어서,
    상기 패킷은 널 종료 라인으로 포맷되는 것을 특징으로 하는 시스템.
  10. 수신한 비디오 데이터를 디스플레이할 수 있는 클라이언트에 있어서,
    비디오 데이터를 수신하고 서버로 비디오 데이터에 대한 요구를 전송하도록 구성된 네트워크 입출력(IO)부;
    상기 비디오 데이터를 복호하고 디스플레이하도록 구성된 정기-쓰레드부; 및
    상기 네트워크 입출력을 통해 상기 비디오 데이터를 획득하도록 구성된 리더-쓰레드부로서, 상기 리더-쓰레드부는 또한 상기 수신된 비디오 데이터를 상기 리더-쓰레드부와 결합된 버퍼로부터 상기 정기-쓰레드부에 공급하도록 구성된, 리더-쓰레드부를 구비하는 것을 특징으로 하는 클라이언트.
  11. 제10항에 있어서,
    상기 리더-쓰레드부는 프로세스 함수를 호출하여 상기 비디오 데이터를 획득하는 것을 특징으로 하는 클라이언트.
  12. 제11항에 있어서,
    상기 프로세스 함수는 상기 비디오 데이터가 상기 버퍼에 있는지를 판단하는 것을 특징으로 하는 클라이언트.
  13. 제10항에 있어서,
    상기 리더-쓰레드부는 헬퍼 함수를 호출하여 데이터를 요구하고, 상기 헬퍼 함수는 상기 클라이언트에 요구되는 데이터의 개시점과 양을 특정하는 것을 특징으 로 하는 클라이언트.
  14. 제10항에 있어서,
    상기 리더-쓰레드부는 헬퍼 함수를 호출하여 상기 버퍼에 저장된 데이터를 읽는 것을 특징으로 하는 클라이언트.
  15. 서버에서 클라이언트로 비디오/오디오 데이터를 통신하는 방법에 있어서,
    상기 클라이언트에서 상기 서버로 스트리밍 세션을 식별하기 위한 호출을 전송하는 단계;
    상기 클라이언트로부터의 상기 호출 수신에 응하여, 상기 서버에서 상기 클라이언트로 초기 객체 기술자(IOD)를 전송하는 단계;
    상기 IOD 수신에 응하여 데이터 전송을 개시하는 단계로서, 상기 스트리밍 세션 데이터의 개시 시퀀스 및 상기 스트리밍 세션 데이터의 양 모두를 나타내는 데이터를 상기 서버로 통신하는 단계를 포함하고, 상기 개시 시퀀스와 양은 상기 클라이언트에 의해 결정되는, 데이터 전송을 개시하는 단계; 및
    상기 클라이언트에 상기 비디오/오디오 데이터를 보유하는 액세스 유닛을 공급함으로써, 상기 스트리밍 세션 데이터의 개시 시퀀스와 양을 나타내는 데이터의 수신에 응답하는 단계를 포함하는 것을 특징으로 하는 방법.
  16. 제15항에 있어서,
    상기 IOD 수신에 응하여 데이터 전송을 개시하는 상기 단계는,
    프로세스 함수를 호출하는 단계;
    필요한 스트리밍 세션 데이터가 상기 클라이언트와 결합된 버퍼에서 이용가능한지를 판단하는 단계; 및
    상기 필요한 스트리밍 세션 데이터가 이용가능하지 않다면, 상기 필요한 스트리밍 세션 데이터에 대한 요구를 송신하는 단계를 포함하는 것을 특징으로 하는 방법.
  17. 제15항에 있어서,
    상기 호출은 세션 식별 및 스트리밍 세션 명칭을 나타내는 OPEN 패킷인 것을 특징으로 하는 방법.
  18. 제15항에 있어서,
    상기 IOD는 상기 스트리밍 세션에 대해 필요한 프로세싱 자원을 평가하기 위해 상기 클라이언트에 필요한 프로파일 및 레벨 정보의 세트를 특정하는 것을 특징으로 하는 방법.
  19. 제15항에 있어서,
    상기 클라이언트가 SEND 패킷을 이용하여, 상기 서버에 대해 상기 스트리밍 세션 데이터의 개시 시퀀스와 양을 통신하는 것을 특징으로 하는 방법.
  20. 제19항에 있어서,
    상기 SEND 패킷은 스킵 리스트를 포함하고, 상기 스킵 리스트는 상기 클라이언트가 액세스를 갖고 있는 스트리밍 세션 데이터의 일부를 나타내는 것을 특징으로 하는 방법.
  21. 제15항에 있어서,
    상기 액세스 유닛은 패킷으로 상기 서버에서 상기 클라이언트로 전송되고, 각 패킷은 하나 이상의 액세스 유닛을 보유하며, 각 액세스 유닛은 상기 스트리밍 세션의 비디오/오디오 데이터의 단일 프레임에 대응하는 것을 특징으로 하는 방법.
  22. 제15항에 있어서,
    상기 시스템은 유저 데이터그램 프로토콜을 통해 구축되는 것을 특징으로 하는 방법.
  23. 제16항에 있어서,
    상기 프로세스 함수는 상기 클라이언트에 결합된 리더-쓰레드에 의해 정기적으로 호출되는 것을 특징으로 하는 방법.
  24. 제16항에 있어서,
    상기 프로세스 함수는, 상기 클라이언트와 결합된 버퍼 내에서 상기 액세스 유닛이 이용가능한지를 판단하고,
    상기 액세스 유닛이 이용가능하다면, 상기 방법은 네트워크 접속 및 상기 클라이언트와 결합된 버퍼 중 하나로부터 상기 액세스 유닛을 읽는 단계를 포함하며,
    상기 액세스 유닛이 이용가능하지 않다면, 상기 방법은 버퍼 점유 문턱값이 초과되었는지를 판단하는 단계를 포함하고, 상기 버퍼 점유 문턱값이 초과되었다면 상기 클라이언트로부터 상기 서버로 추가 액세스 유닛에 대한 요구가 송신되는 것을 특징으로 하는 방법.
  25. 제24항에 있어서,
    상기 버퍼 점유 문턱값이 초과되지 않았다면, 상기 클라이언트는 상기 액세스 유닛이 이용가능하게 되기를 대기하는 것을 특징으로 하는 방법.
  26. 서버에서 클라이언트로 비디오/오디오 데이터를 통신하는 프로그램 명령어를 갖는 컴퓨터로 읽을 수 있는 매체에 있어서,
    상기 클라이언트에서 상기 서버로 스트리밍 세션을 식별하기 위한 호출을 전송하는 프로그램 명령어;
    상기 클라이언트로부터의 상기 호출 수신에 응하여, 상기 서버에서 상기 클라이언트로 초기 객체 기술자(IOD)를 전송하는 프로그램 명령어;
    상기 IOD 수신에 응하여 데이터 전송을 개시하는 프로그램 명령어로서, 상기 스트리밍 세션 데이터의 개시 시퀀스 및 상기 스트리밍 세션 데이터의 양 모두를 나타내는 데이터를 상기 서버로 통신하는 프로그램 명령어를 포함하고, 상기 개시 시퀀스와 양은 상기 클라이언트에 의해 결정되는, 데이터 전송을 개시하는 프로그램 명령어; 및
    상기 클라이언트에 상기 비디오/오디오 데이터를 보유하는 액세스 유닛을 공급함으로써, 상기 스트리밍 세션 데이터의 개시 시퀀스와 양을 나타내는 데이터의 수신에 응답하는 프로그램 명령어를 포함하는 것을 특징으로 하는 컴퓨터로 읽을 수 있는 매체.
  27. 제26항에 있어서,
    IOD 수신에 응하여 데이터 전송을 개시하는 상기 프로그램 명령어는,
    프로세스 함수를 호출하는 프로그램 명령어;
    필요한 스트리밍 세션 데이터가 상기 클라이언트와 결합된 버퍼에서 이용가능한지를 판단하는 프로그램 명령어; 및
    상기 필요한 스트리밍 세션 데이터가 이용가능하지 않다면, 상기 필요한 스트리밍 세션 데이터에 대한 요구를 송신하는 프로그램 명령어를 포함하는 것을 특징으로 하는 컴퓨터로 읽을 수 있는 매체.
  28. 제27항에 있어서,
    상기 프로세스 함수를 호출하는 상기 프로그램 명령어는 상기 클라이언트에 결합된 리더-쓰레드에 의해 정기적으로 호출되는 것을 특징으로 하는 컴퓨터로 읽을 수 있는 매체.
  29. 제27항에 있어서,
    상기 프로세스 함수에 대한 상기 프로그램 명령어는, 상기 클라이언트와 결합된 버퍼 내에서 상기 액세스 유닛이 이용가능한지를 판단하는 것을 특징으로 하는 컴퓨터로 읽을 수 있는 매체.
  30. 제29항에 있어서,
    상기 액세스 유닛이 이용가능하다면, 네트워크 접속 및 상기 클라이언트와 결합된 버퍼 중 하나로부터 상기 액세스 유닛을 읽는 프로그램 명령어; 및
    상기 액세스 유닛이 이용가능하지 않다면, 버퍼 점유 문턱값이 초과되었는지를 판단하는 프로그램 명령어로서, 상기 버퍼 점유 문턱값이 초과되었다면 상기 서버로부터 추가 액세스 유닛을 요구하는 프로그램 명령어가 실행되는, 판단 프로그램 명령어를 더 포함하는 것을 특징으로 하는 컴퓨터로 읽을 수 있는 매체.
KR1020040001493A 2003-03-14 2004-01-09 무선 휴대 장치를 위한 멀티미디어 스트리밍 시스템 KR100589725B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/390,130 US20040181611A1 (en) 2003-03-14 2003-03-14 Multimedia streaming system for wireless handheld devices
US10/390,130 2003-03-14

Publications (2)

Publication Number Publication Date
KR20040080942A KR20040080942A (ko) 2004-09-20
KR100589725B1 true KR100589725B1 (ko) 2006-06-15

Family

ID=32962345

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040001493A KR100589725B1 (ko) 2003-03-14 2004-01-09 무선 휴대 장치를 위한 멀티미디어 스트리밍 시스템

Country Status (3)

Country Link
US (1) US20040181611A1 (ko)
KR (1) KR100589725B1 (ko)
CN (1) CN100446562C (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100384181C (zh) * 2004-11-09 2008-04-23 北京中星微电子有限公司 一种ip网络环境下的多路音频缓冲处理的方法
CN100375091C (zh) * 2004-11-16 2008-03-12 萧学文 一种基于brew平台实现声音流式播放的方法及系统
KR100757195B1 (ko) * 2005-12-26 2007-09-07 주식회사 팬택 순차 조각 다운로드를 이용한 가변 비트율 의사스트리밍방법
US20090172187A1 (en) * 2007-12-31 2009-07-02 Eetay Natan Techniques to enable firewall bypass for open mobile alliance device management server-initiated notifications in wireless networks
JP2014531142A (ja) * 2011-08-16 2014-11-20 デスティニーソフトウェアプロダクションズ インク スクリプトをベースとするビデオ・レンダリング
CN104159142A (zh) * 2014-08-06 2014-11-19 乐视网信息技术(北京)股份有限公司 一种设备的视频软解码方法和装置
CN105872696A (zh) * 2016-03-29 2016-08-17 杭州施强网络科技有限公司 一种流媒体直播中音频数据送解播放方法
US10785279B2 (en) * 2016-12-29 2020-09-22 Facebook, Inc. Video encoding using starve mode
CN106658117A (zh) * 2016-12-30 2017-05-10 百度在线网络技术(北京)有限公司 音/视频数据的处理方法及装置
WO2020019140A1 (zh) * 2018-07-23 2020-01-30 深圳市大疆创新科技有限公司 视频处理方法、终端设备、机器可读存储介质
US11425183B2 (en) * 2019-06-07 2022-08-23 Eaton Intelligent Power Limited Multi-threaded data transfer to multiple remote devices using wireless hart protocol
CN111954067B (zh) * 2020-09-01 2022-10-04 杭州视洞科技有限公司 一种提高视频渲染效率与用户交互流畅度的方法
CN113079402B (zh) * 2021-03-30 2023-06-23 苏州博动戎影医疗科技有限公司 一种图像显示方法、装置、设备及存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649299A (en) * 1993-10-27 1997-07-15 Motorola, Inc. Apparatus and method for adapting a digital radiotelephone system to increased subscriber traffic
US5469471A (en) * 1994-02-01 1995-11-21 Qualcomm Incorporated Method and apparatus for providing a communication link quality indication
US6005600A (en) * 1996-10-18 1999-12-21 Silcon Graphics, Inc. High-performance player for distributed, time-based media
IL123819A (en) * 1998-03-24 2001-09-13 Geo Interactive Media Group Lt Network media streaming
GB2350973A (en) * 1999-06-11 2000-12-13 Nokia Mobile Phones Ltd Simultaneously fetching page content and link content in a mobile web browser
US6845398B1 (en) * 1999-08-02 2005-01-18 Lucent Technologies Inc. Wireless multimedia player
US6407680B1 (en) * 2000-12-22 2002-06-18 Generic Media, Inc. Distributed on-demand media transcoding system and method
US20020106998A1 (en) * 2001-02-05 2002-08-08 Presley Herbert L. Wireless rich media conferencing
US20020116500A1 (en) * 2001-02-22 2002-08-22 Arora Akhil K. Protocol for wireless devices
JP2005231377A (ja) * 2001-06-13 2005-09-02 Honda Motor Co Ltd 点検状況確認システム
KR20030018950A (ko) * 2001-08-31 2003-03-06 에스케이 텔레콤주식회사 이동전화 단말기를 녹음기로 사용하는 방법
US7453897B2 (en) * 2001-10-03 2008-11-18 Global Ip Solutions, Inc. Network media playout
KR100420601B1 (ko) * 2001-11-22 2004-03-02 에스케이 텔레콤주식회사 비디오 데이터 스트리밍 서비스 방법
US6789123B2 (en) * 2001-12-28 2004-09-07 Microsoft Corporation System and method for delivery of dynamically scalable audio/video content over a network
US8117328B2 (en) * 2002-06-25 2012-02-14 Microsoft Corporation System and method for automatically recovering from failed network connections in streaming media scenarios
US7085576B2 (en) * 2002-12-30 2006-08-01 Motorola, Inc. Method and apparatus for providing streaming information to a wireless mobile wireless device

Also Published As

Publication number Publication date
US20040181611A1 (en) 2004-09-16
CN1531342A (zh) 2004-09-22
KR20040080942A (ko) 2004-09-20
CN100446562C (zh) 2008-12-24

Similar Documents

Publication Publication Date Title
EP1614292B1 (en) Data requesting and transmitting devices and processes
JP5149628B2 (ja) 順序付けられたビデオ・フレーム組を送信し、受信するためのシステム、送信器、受信器、方法及びソフトウェア
US6292834B1 (en) Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network
US5918002A (en) Selective retransmission for efficient and reliable streaming of multimedia packets in a computer network
KR100589725B1 (ko) 무선 휴대 장치를 위한 멀티미디어 스트리밍 시스템
US7587507B2 (en) Media recording functions in a streaming media server
JP4558802B2 (ja) アダプティブバッファリングのための方法と装置
KR101229768B1 (ko) 무선 패킷 네트워크용 블록 확인응답 프로토콜
EP1538817A1 (en) Moving picture streaming file, method and system for moving picture streaming service in a mobile communication terminal
US8127040B2 (en) Signaling buffer parameters indicative of receiver buffer architecture
JP2004525556A (ja) ストリーミングされたメディアをバッファリングする方法及びシステム
US20060291468A1 (en) Selective re-transmission of lost multi-media data packets
WO2001080558A2 (en) A system and method for multimedia streaming
CN104735470A (zh) 一种流媒体数据传输方法及装置
US7564782B2 (en) Transmission format, communication control apparatus and method, recording medium, and program
KR100982630B1 (ko) 콘텐츠의 스트림 비트율을 조정하기 위한 디바이스 및프로세스 그리고 관련 제품
JPH10336626A (ja) 映像データの転送方法および転送装置
JP2005051299A (ja) パケット送信装置、パケット受信装置、パケット送信方法及びパケット受信方法
US20070110168A1 (en) Method for generating high quality, low delay video streaming
KR100624786B1 (ko) 무선 네트워크망을 통해 통신하는 서버 시스템
JP2000295597A (ja) メディアデータ受信および送信装置
CN108989767B (zh) 一种网络自适应的多路h264视频流存储转播方法及系统
WO2005006760A1 (en) Method and system for uneven distribution of data
JP4025533B2 (ja) ストリーム映像受信制御方法、およびストリーム映像配信システム、およびストリーム映像受信装置
CN111555842B (zh) 一种传输数据帧的方法及装置

Legal Events

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

Payment date: 20120521

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130520

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee