KR101002112B1 - 데이터를 트랜스코딩하는 방법 - Google Patents

데이터를 트랜스코딩하는 방법 Download PDF

Info

Publication number
KR101002112B1
KR101002112B1 KR1020087012072A KR20087012072A KR101002112B1 KR 101002112 B1 KR101002112 B1 KR 101002112B1 KR 1020087012072 A KR1020087012072 A KR 1020087012072A KR 20087012072 A KR20087012072 A KR 20087012072A KR 101002112 B1 KR101002112 B1 KR 101002112B1
Authority
KR
South Korea
Prior art keywords
data
information
node
network
packet
Prior art date
Application number
KR1020087012072A
Other languages
English (en)
Other versions
KR20080070017A (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 KR20080070017A publication Critical patent/KR20080070017A/ko
Application granted granted Critical
Publication of KR101002112B1 publication Critical patent/KR101002112B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64784Data processing by the network
    • H04N21/64792Controlling the complexity of the content stream, e.g. by dropping packets
    • 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
    • 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/70Media network packetisation
    • 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/75Media network packet handling
    • H04L65/752Media network packet handling adapting media to network capabilities
    • 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/75Media network packet handling
    • H04L65/756Media network packet handling adapting media to device capabilities
    • 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/75Media network packet handling
    • H04L65/765Media network packet handling intermediate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream

Abstract

데이터를 프로세스하는 방법(600) 및 그 시스템(100)에 관한 것이다. 일 실시예에서, 다수의 데이터 패킷(a plurality of data packets) 내의 데이터가 액세스된다. 상기 데이터는 다수의 데이터 부분(a plurality of data portions)으로 분리된다. 상기 데이터 부분은 네트워크 내의 제각기 노드에 전송되며, 상기 노드는 상기 데이터를 서로 병렬로 프로세스(예를 들어, 트랜스코딩)한다.

Description

데이터를 트랜스코딩하는 방법{SERIAL AND PARALLEL PROCESSING OF DATA USING INFORMATION ABOUT THE DATA AND INFORMATION ABOUT A STREAMING NETWORK}
본 출원에 대한 관련 출원
본 출원은, 본 출원과 공통 계류 중이며, 본 명세서의 전체 범위에서 참조로서 인용되는 "Serial Processing of Data Using Information About the data and Information About a Streaming Network"이란 명칭의 에스. 위 등(S. Wee et al.)에 의해 ___에 출원된 미국 특허 출원 제 ___ 호(Attorney Docket No. HP-200401902-1)에 관련된다.
본 출원은, 본 출원과 공통 계류 중이며, 본 명세서의 전체 범위에서 참조로서 인용되는 "Parallel Processing of Data Using Information About the data and Information About a Streaming Network"이란 명칭의 에스. 위 등(S. Wee et al.)에 의해 ___에 출원된 미국 특허 출원 제 ___ 호(Attorney Docket No. HP-200405065-1)에 관련된다.
본 발명의 실시예는 미디어 데이터를 스트리밍하는(streaming) 분야에 관한 것이다.
미디어 스트리밍 및 통신은 계속해서 중요성을 얻고 있다. 다양한 클라이언트 성능 및 이질적이고 시변하는 통신 링크를 수용하도록 미디어를 적응시키는 것은 효율적이고 효과적인 미디어 스트리밍에 대한 키 중 하나이다. 예를 들어, 클라이언트는 상이한 디스플레이, 통신, 전력 및 연산 성능을 가질 수 있다. 또한, 네트워크의 각종 부분(특히 네트워크의 유선 부분 대 네트워크의 무선 부분)은 상이한 최대 대역폭 및 품질 레벨을 가질 수 있고, 네트워크 상태는 시간에 따라 변경될 수 있다. 네트워크 상태의 시변 특성 뿐만 아니라 클라이언트 및 네트워크 특성의 다양성을 수용하기 위해, 클라이언트 및 네트워크에 대해 미디어 스트림을 적응시키거나 트랜스코딩(transcoding)하는 중간 네트워크("미드 네트워크(mid-network)") 노드 또는 프록시(proxies)가 미디어 콘텐츠의 소스와 클라이언트 사이의 통신 경로 상에 놓일 수 있다.
미디어 콘텐츠의 보안성을 유지하는 것은 성공적인 미디어 스트리밍에 대한 또다른 열쇠이다. 전형적으로, 미디어 콘텐츠는 인증되지 않은 도중의(en route) 액세스에 대해 콘텐츠를 보호하도록 암호화되어 있다. 이상적으로, 콘텐츠는 소스 및 그 최종 목적지(예를 들어, 클라이언트) 사이에 암호화된 채로 유지된다. 그러나, 암호화된 스트림을 트랜스코딩하는 것은 스트림을 복호화하고, 복호화된 스트림을 트랜스코딩하여, 그 결과를 재암호화하는 것을 의미하기 때문에, 앤드 투 엔드(end-to-end) 보안성을 유지하는 것은 미드 네트워크 트랜스코딩에 과제를 제시한다. 따라서, 각각의 네트워크 트랜스코딩 노드는 잠재적인 보안성 침해를 제공 한다.
네트워크 상에서 미디어를 스트리밍하는 것에 대한 다른 과제가 존재한다. 예를 들어, 네트워크 상에서 전송된 몇몇 데이터 패킷은 경로에서 지연을 경험하여, 그들의 목적지에 늦게 도달할 수 있다. 또한, 몇몇 데이터 패킷은 경로에서 손실될 수 있다. 늦어지거나 또는 손실된 데이터 패킷의 영향은 예측 가능하게 인코딩되는(압축되는) 비디오 데이터에 대해 악화될 수 있다. 예측 가능한 인코딩은 압축의 양을 향상시키되 데이터 패킷의 손실 또는 지연된 도달인 경우 에러 전파를 또한 야기할 수 있는 인코딩된 데이터 내에서의 의존성을 도입한다. 예측 가능한 인코딩에 의해, 데이터 프레임의 디코딩은 다른 프레임 내의 정보에 의존할 수 있다. 예를 들어, MPEG(Moving Pictures Experts Group) 인코딩에 의해, B 프레임은 2개의 P 프레임 또는 I 프레임 및 P 프레임으로부터 예측된다. 따라서, 2개의 P 프레임 또는 I 프레임 및 P 프레임에 대한 데이터 패킷은 이들 프레임이 B 프레임을 디코딩하는데 사용될 수 있도록 제각기 디스플레이 시각보다 먼저 수신될 필요가 있다. 따라서, 디코더(예를 들어, 클라이언트 또는 목적지 노드)에서 도달하지 않거나 또는 늦게 도달하는 인코딩된 비디오 프레임은 제각기 디스플레이 기한을 놓칠 수 있을 뿐만 아니라, 늦거나 또는 놓치는 프레임의 특정의 코딩 의존성에 따라, 다수의 다른 후속의 프레임이 적절하게 디스플레이되지 못하게 할 수 있다. 이는 디스플레이의 전체 품질에 영향을 줄 수 있다.
따라서, 다양한 클라이언트 성능 및 이질적이고 시변하는 통신 링크를 수용하고 또한 미디어 콘텐츠의 보안성을 유지하는 것 이외에, 네트워크 상에서 성공적 인 미디어 스트리밍에 대한 또 다른 열쇠는 패킷이 손실되거나 지연될 수 있는 가능성을 감소시키는 것이다. 통상적인 해결책에서는 이들 성능 중 하나 이상이 결여되어 있거나, 또는 과도하게 복합하다.
발명의 개요
본 발명의 실시예는 미디어 데이터를 스트리밍하는(streaming) 방법 및 그 시스템에 관한 것이다. 일 실시예에서, 다수의 데이터 패킷(a plurality of data packets) 내의 데이터가 액세스된다. 상기 데이터는 다수의 데이터 부분(a plurality of data portions)으로 분리된다. 상기 데이터 부분은 네트워크 내의 개별 노드에 전송되며, 상기 노드는 상기 데이터를 서로 병렬로 프로세스(예를 들어, 트랜스코딩)한다.
도면의 간단한 설명
본 명세서의 일부이며 본 명세서에 포함되어 있는 참부 도면은 본 발명의 실시예를 도시하며, 상세한 설명과 함께 본 발명의 원리를 설명하도록 기능한다.
도 1은 본 발명에 따른 실시예가 구현될 수 있는 네트워크의 블록도이고,
도 2는 본 발명에 따른 실시예가 구현될 수 있는 네트워크에서의 병렬 노드의 블록도이며,
도 3은 본 발명에 따른 실시예가 구현될 수 있는 네트워크에서의 직렬 노드의 블록도이고,
도 4는 본 발명에 따른 실시예가 구현될 수 있는 네트워크에서의 직렬 및 병렬 노드의 블록도이며,
도 5는 본 발명의 실시예에 따른 네트워크 노드로 및 노드로부터의 정보의 흐름을 도시하는 도면이고,
도 6은 본 발명에 따른 트랜스코더 장치의 일 실시예의 블록도이며,
도 7은 본 발명의 실시예에 따른 직렬 노드에서의 데이터를 트랜스코딩하는 방법의 플로우차트이고,
도 8은 본 발명의 실시예에 따른 병렬 노드에서의 데이터를 트랜스코딩하는 방법의 플로우차트이며,
도 9는 본 발명의 실시예에 따른 직렬 및 병렬 노드에서의 데이터를 트랜스코딩하는 방법의 플로우차트이다.
본 상세한 설명에서 참조되는 도면은 특별히 언급하지 않는 한, 축적대로 도시되어 있는 것으로 이해되어서는 안 된다.
이하 본 발명의 각종 실시예에 대한 참조가 상세하게 이루어질 것이며, 이들의 예는 첨부 도면에 도시되어 있다. 본 발명은 이들 실시예와 관련하여 기술될 것이나, 이들 실시예에 제한하도록 의도되어 있지 않다는 것이 이해될 것이다. 오히려, 본 발명은 대안 수정예 및 균등물을 커버하도록 의도되어 있으며, 이들은 첨부되는 청구 범위에 의해 정의되는 바와 같이, 본 발명의 사상 및 범위 내에 포함 될 수 있다. 또한, 본 발명의 후술하는 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위해 각종 특정의 세부 사항이 개시되어 있다. 다른 사례에서, 잘 알려진 방법, 프로시쥬어, 구성요소 및 회로는 본 발명의 측면을 불필요할 정도로 불명확하게 하지 않도록 상세하게 기술되어 있지 않다.
본 명세서에서 제공된 설명 및 예는 멀티미디어 데이터(본 명세서에서 미디어 데이터 또는 미디어 콘텐츠로서 또한 지칭됨)의 문맥으로 기술되어 있다. 멀티미디어 데이터의 일례는 오디오 데이터가 수반되는 비디오 데이터(예를 들어, 사운드트랙을 갖는 영화)이다. 그러나, 미디어 데이터는 단지 비디오, 혹은 단지 오디오, 또는 비디오 및 오디오 모두일 수 있다. 일반적으로, 본 발명은, 각종 실시예에서, 스피치(speech) 기반 데이터, 오디오 기반 데이터, 이미지 기반 데이터, 웹 페이지 기반 데이터, 그래픽 데이터 등 및 그 결합과 함께 사용하는데 매우 적합하다.
안전한 스케일러블 ( scalable ) 스트리밍 및 안전한 트랜스코딩
안전한 스케일러블 스트리밍에 의해, 미디어 데이터는 콘텐츠를 복호화하지 않고(또한 디코딩하지 않고), 암호화되고 인코딩된 콘텐츠의 일부를 폐기함으로써, 다운스트림 트랜스코더가 트랜스코딩 동작을 수행하도록 하는 방식으로 인코딩되고 암호화된다.
안전한 스케일러블 스트리밍은 인코딩, 암호화 및 패킷화 동작의 신중한 배치에 근거한다. 본 명세서에서 사용되는 바와 같이, 스케일러블 인코딩은 원래의 데이터를 입력으로서 취하고 벗겨낼 수 있도록(scalably) 인코딩된 데이터를 출력으로서 생성하는 프로세스로서 정의되며, 여기서 벗겨낼 수 있도록 인코딩된 데이터는 그 일부가 각종 품질 레벨에 의해 원래의 데이터를 재구성하는데 사용될 수 있는 특성을 갖는다. 구체적으로, 벗겨낼 수 있도록 인코딩된 데이터는 내장된 비트스트림으로서 간주될 수 있다. 비트스트림의 부분은 비트스트림의 나머지로부터 임의의 정보를 필요로 하지 않고, 원래의 데이터의 베이스라인 품질 재구성을 디코딩하는데 사용될 수 있으며, 점진적으로(progressively) 큰 비트스트림의 부분이 원래의 데이터의 향상된 재구성을 더 코딩하는데 사용될 수 있다. 예를 들어, 이미지가 해상도에 의해 벗겨낼 수 있도록 인코딩되는 경우, 데이터의 적은 부분은 저 해상도 이미지를 디코딩하는데 사용될 수 있고, 데이터의 큰 부분은 중간 해상도 이미지를 디코딩하는데 사용될 수 있으며, 모든 데이터는 전체 해상도 이미지를 디코딩하는데 사용될 수 있다. 스케일러블 코딩 표준안은 MPEG-1/2/4 및 H.261/2/3/4, Motion JPEG(Joint Photographic Experts Group) 2000을 포함하는 JPEG 2000 및 3-D 서브밴드 코딩을 들 수 있으며, 이들로만 제한되지 않는다.
본 명세서에서 사용되는 바와 같이, 점진적인 암호화는 원래의 데이터(평문(plaintext))를 입력으로 취하고 점진적으로 암호화된 데이터(암호문(ciphertext))를 출력으로서 생성하는 프로세스로서 정의된다. 점진적인 암호화 기법은, 예를 들어, 암호화 블록 체인(chains) 및 스트림 암호화를 포함한다. 이들 점진적인 암호화 방법은 데이터의 제 1 부분이 독립적으로 암호화되고, 이후의 부분이 이전의 부분에 근거하여 암호화되는 특성을 갖는다. 평문은 개시-종료 또 는 순차적인 방식으로 암호화되며, 여기서 비트스트림의 제 1 부분은 그 자체로 암호화되고, 비트스트림의 제 2 부분은 제 1 부분(암호화되거나 혹은 암호화되지 않은 제 1 부분이 사용될 수 있음)을 이용하여(예를 들어, 결합하여) 암호화되는 등이다. 점진적으로 암호화된 데이터는 원래의 데이터의 나머지로부터 정보를 필요로 하지 않고, 제 1 부분이 홀로 암호화될 수 있는 특성을 가지며, 점진적으로 큰 부분은 이와 동일한 특성에 의해 복호화될 수 있고, 그 복호화는 비트스트림의 이후가 아니라 이전인 부분으로부터의 데이터를 사용할 수 있다. 스케일러블 코딩 및 패킷화와 적절하게 부합되는 경우, 점진적인 암호화는, 미디어 데이터를 복호화하지 않고 데이터 패킷을 절단하거나 폐기함으로써 미디어 데이터를 드랜스코딩하는 능력을 제공한다. 점진적인 암호화 표준안은 DES(Data Encrytion Standard), Triple-DES 및 AES(Advanced Encrytion Standard)를 들 수 있으며, 이들로만 제한되지 않는다. 이들 암호화 프리미티브(primitives)는 ECB(electronic codebook), CBC(cipher block chaining), CFB(cipheR-Deedback), OFB(output feedback), CTR(counter) 모드를 포함하는 다수의 블록 암호화 모드를 이용하여 적용될 수 있다.
점진적인 암호화와 함께, 사용될 수 있는 인증 기법은 MAC(message authentication codes) 및 DS(digital signatures)와 같은 대중적인 인증 기법을 들 수 있으며, 이들로만 제한되지 않는다. 대중적인 MAC는 SHA-1(Secure Hash Algorithm-1)을 이용하는 HMAC(Hashed Message Authentication Code)와 같은 해쉬 기반형 MAC, 또는 CBC 모드에서의 AES와 같은 암호화 기반형 MAC를 포함한다. 데 이터 패킷은 하나 이상의 패킷이 다른 패킷을 인증할 능력에 영향을 주지 않고 폐기될 수 있도록 독립적으로 인증될 수 있다. 대안적으로, 패킷의 그룹은, 다른 패킷의 그룹을 인증하는 능력에 영향을 주지 않고 그 패킷의 그룹이 폐기될 수 있도록 독립적으로 인증될 수 있다. 상기 암호화 기법은 대칭형 키 기법을 이용하거나 또는 공개/비밀 키 기법을 이용하여 적용될 수 있다.
효과적이고 효류적인 보안성 스케일러블 스트리밍을 달성하기 위해, 벗겨낼 수 있도록 인코딩되고 점진적으로 암호화된 데이터는 데이터를 복호화하지 않고, 패킷을 절단하거나 혹은 폐기함으로써 트랜스코딩이 수행될 수 있도록 하는 우선 순위 방식으로 데이터 패킷 내에 선정하여 위치된다. 일 실시예에서, 콘텐츠는 점진적으로 암호화되는 데이터 패킷으로 인코딩된다. 암호화되거나 암호화되지 않을 수 있은 헤더는 각각의 패킷과 연관되어 있다. 헤더는 콘텐츠 데이터를 암호화하는데 사용된 기법과 상이한 암호화 기법을 이용하여 암호화될 수 있다. 헤더가 암호와되는 경우, 미디어 콘텐츠를 나타내는 데이터를 복호화하지 않고 헤더가 복호화될 수 있다. 패킷의 헤더는, 예를 들어, 패킷 내에서 절단 포인트를 식별하는 정보를 포함한다. 제 1 절단 포인트는, 예를 들어, 제 1 비트레이트, 해상도 또는 품질 레벨에 대응할 수 있고, 제 2 절단 포인트는, 예를 들어, 제 2 비트레이트, 해상도 또는 품질 레벨에 대응할 수 있는 등이다. 예를 들어, 제 1 레벨을 달성하도록 콘텐츠를 절단허가나 또는 적응시키기 위해, 헤더 정보가 판독되고 제 1 절단 포인트가 식별된다. 그 다음에 패킷은 제 1 해상도 또는 품질 또는 비트레이트 레벨을 실현하는데 요구되지 않는 데이터가 폐기되도록 제 1 절단 포인트에서 절단될 수 있다. 그리고 나서 절단된 패킷은 그 다음의 목적지로 전송된다.
상기 예에서 비트레이트, 해상도 및 품질이 명명되어 있더라도, 본 발명에 따른 실시예는 이와 같이 제한되지 않는다. 본 명세서에서의 예 및 다른 예는 본 발명의 폭 및 범위를 제한하는 것이 아니라, 트랜스코딩하기 위한 기본으로서 존재하고 사용될 수 있는 다양한 파라미터를 예시하기 위한 것으로 의도된다.
데이터의 부분만이 이용 가능한 경우이더라도 트랜스코딩하는 것이 가능하다. 즉, 예를 들어, 콘텐츠의 특정의 인스턴스(instance)와 연관된 전체 데이터의 한 부분은 전체 데이터의 다른 부분이 수신되거나 액세스되는 동안 트랜스코딩될 수 있다.
본 명세서에서 사용되는 바와 같이, 데이터 패킷의 절단은 일반적으로 데이터 패킷의 일부 부분으로부터의 데이터 제거를 지칭한다. 일 실시예에서, 데이터는, 예를 들어, 제 1 해상도 레벨에 대한 데이터가 패킷의 제 1 부분에 위치되고, 제 2 해상도 레벨에 대한 데이터가 패킷의 제 2 부분에 위치되며, 제 3 해상도 레벨에 대한 데이터가 패킷의 제 3 부분에 위치되고, 여기서 제 2 부분은 제 1 및 제 3 부분 사이에 위치되도록 패킷 내에 배치될 수 있다. 헤더 정보는 제 1, 제 2 및 제 3 부분을 구분하는 패킷 내의 포인트를 식별한다. 본 실시예에서, 이미지가, 예를 들어, 단지 제 1 해상도 레벨에서 재구성되는 경우, 트랜스코딩 동안 제 2 및 제 3 부분이 절단될 수 있다. 즉, 데이터 캐킷은 본질적으로 제 1 절단 포인트에서 잘리며, 제 2 및 제 3 부분을 제거하여, 제 1 부분(및 헤더)으로만 구성되는 보다 적은 패킷을 남기게 된다.
일 실시예에서, 데이터 패킷에 대한 절단 포인트는 데이터 패킷의 스트림이 레이트 디스토션(rate-distortion : R-D) 최적이거나 또는 거의 R-D 최적인 레이트로 압축될 수 있도록, R-D 분석과 같은 분석에 따라 특정된다. 다른 실시예에서, 데이터 패킷의 헤더 부분은 R-D 분석에 의해 생성된 R-D 곡선을 기술하는 정보를 포함하며, 절단 포인트는 R-D 곡선의 추가적인 분석으로부터 도출된다.
R-D 코딩은 비디오 이미지의 각각의 영역에 대해 R-D 플롯을 생성하고 나서, 원하는 총 비트레이트를 생성하는 동일한 경사에서 모든 영역에 대해 동작함으로써 달성될 수 있다. 다수의 품질 레벨에 대한 최적 R-D 컷오프 포인트를 데이터 패킷의 헤더 부분에 배치함으로써 거의 최적의 트랜스코딩이 데이터 패킷 레벨에서 달성될 수 있다. 그 다음에, 트랜스코더는 적절한 컷오프 포인트에서 각각의 패킷을 절단할 수 있으므로, 그 결과 패킷은 원하는 품질 레벨에 대한 이미지의 각각의 영역에 대해 적절한 수의 비트를 포함할 것이다. 트랜스코더는 각각의 패킷 헤더를 판독하고, 그 다음에 적절한 포인트에서 패킷을 절단한다. 예를 들어, 이미지의 3개의 영역이 개별적인 패킷으로 인코딩되는 경우, 각각의 영역에 대해 3 R-D 최적 절단 포인트가 식별되고 각각의 패킷 해더 내에 이들 로케이션이 위치된다. 트랜스코더는 임의의 3 R-D 포인트(또는 그 사이의 지점)에서 동작하도록 선택할 수 있고, 적절한 컷오프 포인트에서 각각의 패킷을 절단할 수 있다.
다른 실시예에서, 데이터는, 예를 들어, 제 1 해상도 레벨에 대한 데이터가 패킷의 다수의 부분에 위치되고, 제 2 해상도 레벨에 대한 데이터가 패킷의 다른 다수의 부분에 위치되며, 제 3 해상도 레벨에 대한 데이터가 패킷의 또 다른 다수 의 부분에 위치되도록 데이터 패킷 내에 배치된다. 즉, 제 1 해상도 레벨과 연관된 데이터 세그먼트, 제 2 해상도 레벨과 연관된 데이터 세그먼트, 제 3 해상도 레벨과 연관된 데이터 세그먼트는 패킷 내에서 인터리브(interleave)된다. 본 예에서, 헤더 정보는 각각의 해상도 레벨에 대응하는 데이터 세그먼트가 패킷 내에 어디에 위치하는지를 식별한다. 본 실시예에서, 이미지가, 예를 들어, 제 1 해상도 레벨에서만 재구성되는 경우, 트랜스코딩 동안 제 1 해상도 레벨과 연관된 데이터 세그먼트는 패킷으로부터 추출되어, 재패킷화될 수 있다. 이와 달리, 제 2 및 제 3 해상도 레벨과 연관된 데이터 세그먼트는 패킷으로부터 추출되어, 폐기될 수 있다. R-D 코딩은, 예를 들어, 원하는 비트레이트를 생성하는 동일한 동작 포인트에서 각각의 세그먼트에 대한 R-D 곡선을 생성함으로써 달성될 수 있다. R-D 정보는 압축되었으나 암호화되지 않은 데이터로부터 도출되며, 데이터를 복호화하지 않고 암호화된 데이터를 트랜스코딩하는데 사용될 수 있는 "힌트(hints)"로서 암호화된 비트스트림과 함께 포함된다. 힌트는 암호회될 수도 있고 혹은 암호화되지 않을 수도 있다. 힌트에 의해 제공된 R-D 정보를 이용하여, 재구성된 이미지의 품질에 대해 덜 영향을 주는 데이터 세그먼트가 식별될 수 있다. 전술한 바와 같이, 트랜스코딩 동안, 덜 중요한 프레임에 대응하는 데이터 세그먼트가 드롭(drpo)되거나 추출될 수 있다. 특히, 트랜스코딩 동작은 미디어 데이터를 복호화하지 않고 수행된다.
선행 문단에서 설명의 전제는 세그먼트 길이가 문제가 되지 않는다는 것, 즉, 예를 들어, 몇몇 개수의 세그먼트는 그들의 길이에 관계없이 전송될 수 있거 나, 또는 세그먼트가 동등한 길이로 되어 있다는 것이다. 비트레이트 제한이 존재하는 경우, 세그먼트 길이는 트랜스코딩 동안 고려할 인자일 수 있으며, 예를 들어, 하나의 보다 긴 세그먼트 대신에 2개의 보다 짧은 세그먼트를 전송하는 것이 보다 나을 수 있으며, 혹은 그 반대일 수도 있다. 따라서, 일 실시예에서, 세그먼트는 그 상대적인 "이용도"(예를 들어, 비트 당 중요도)에 따라 랭크된다. 일 실시예에서, 세그먼트의 이용도는 세그먼트 내의 비트 당 디스토션(distortion)에 의해 측정된다. 즉, 세그먼트와 연관된 디스토션의 양(세그먼트가 드롭되거나 또는 폐기된 경우에 초래되는 디스토션의 양)은 세그먼트 내의 비트 수에 의해 나누어지며, 비트 당 디스토션의 비는 세그먼트의 이용도를 제공한다. 상대적으로 보다 높은 이용도를 갖는 세그먼트가 전송되는 반면, 필요하다면 혹은 바람직하다면 상대적으로 낮은 이용도를 갖는 세그먼트는 드롭되거나 또는 폐기될 수 있다.
패킷을 절단하는 대신에, 트랜스코딩은 전체 패킷을 폐기하거나 드롭함으로써 달성될 수 있다. 또한, 각각의 패킷은 암호화되거나 혹은 암호화되지 않는 헤더와 연관되어 있다. 헤더가 암호화되는 경우, 미디어 콘텐츠를 나타내는 데이터를 복호화하지 않고 복호화될 수 있다. 제 1 패킷은, 디코딩되는 경우, 예를 들어, 제 1 비트레이트, 해상도 또는 품질 레벨과 연관되는 데이터를 포함할 수 있고, 제 2 패킷은, 디코딩되어 제 1 패킷 내의 데이터와 결합되는 경우, 제 2 비트레이트, 해상도 또는 품질 레벨과 연관되는 데이터를 포함할 수 있다. 헤더는 어느 패킷이 어느 레벨과 연관되는지를 식별하는 정보를 포함할 수 있다. 제 1 레벨을 달성하기 위한 콘텐츠를 트랜스코딩하거나 적응시키기 위해, 예를 들어, 각각의 패킷의 헤더 정보가 판독되고, 제 1 패킷은 제 1 레벨과 연관되는 것으로서 식별되며, 제 2 패킷은 제 2 레벨과 연관되는 것으로서 식별된다. 따라서, 제 1 패킷은 그 다음의 목적지로 전송되고, 제 2 패킷은 드롭되거나 또는 폐기된다.
헤더 부분은, 예를 들어, 번호에 의해 각각의 데이터 패킷을 식별하는 정보를 또한 포함할 수 있다. 따라서, 트랜스코더는, 스트림으로부터 소정 데이터 패킷을 제거할 수 있다. 예를 들어, 패킷 하나 걸러서 제거되어야 하는 경우(예를 들어, 기수 번호의 패킷), 트랜스코더는 헤더 정보를 사용하여 기수 번호의 데이터 패킷을 식별하고 데이터 패킷의 스트림으로부터 이들을 제거할 수 있다.
요약하면, 트랜스코딩은 1) 패킷의 한쪽 단부 혹은 양 단부를 절단하는 것에 의한 패킷 절단, 2) 단부 이외의 패킷의 부분 또는 부분들을 폐기하는 것에 의한 패킷 절단, 3) 패킷을 전체적으로 폐기하는 것을 포함할 수 있다. 안전한 스케일러블 스트리밍은 스트리밍 미디어 시스템이 미드 네트워크 트랜스코딩 및 엔드 투 엔드 보안성이라도, 겉보기에는 충돌하는 특성을 달성하도록 한다. 암호화된 데이터의 트랜스코딩은 데이터를 복호화하지 않고 패킷을 절단하거나 혹은 폐기함으로써 중간의, 잠재적으로 신뢰되지 않는 네트워크 노드에서 수행될 수 있다. 설계에 의해, 트랜스코딩 장치는 압축 기법, 암호화 기법, 심지어 트랜스코딩되는 미디어의 유형에 대한 지식을 필요로 하지 않는다.
비스케일러블 ( non - scalable ) 데이터에 대한 안전한 트랜스코딩
상술한 설명은 스케일러블성을 제공하도록 의도되는 미디어 인코더에 대해 초점이 맞추어져 있다. 그러나, 본 발명에 따른 실시예는 비스케일러블 인코더에 대해 또한 적용 가능하다. 미디어 인코더가 압축된 비트를 생성하지만, 이것은, 재구성된(디코딩된) 이미지의 품질에 대한 영향을 고려하면 비트의 일부가 다른 비트보다 중요할 것이기 때문에, 달성될 수 있다. 일부 비트 대 다른 비트의 상대적인 중요도를 인식하고, 일부 프레임 대 다른 프레임의 상대적인 중요도를 확장하여, 보다 중요도가 높은 비트 또는 프레임이 식별됨에 따라, 트랜스코딩 동안 보다 낮은 중요도의 비트 또는 프레임이 드롭되거나 폐기될 수 있다.
예시를 위해, 인코딩된 비디오 데이터가 개시 I 프레임 이후에 P 프레임으로만 구성되는(예를 들어, B 프레임이 존재하지 않는) 예를 고려한다. 인코딩된 비디오가 P 프레임만을 포함하기 때문에, 프레임의 자연적인 우선 순위가 제시되지 않는다. 그러나, 재구성된 이미지에 대한 제각기의 영향에 따라 P 프레임에 우선 순위를 부여함으로써, 트랜스코딩 동안 하나 이상의 P 프레임을 제거하는 것이 필요하면, 보다 낮은 우선 순위의 P 프레임과 연관된 패킷이 드롭되거나 또는 폐기되는 반면, 보다 높은 우선 순위의 P 프레임과 연관된 패킷이 그 목적지로 전송될 수 있다.
일 실시예에서, R-D 최적화된 스트리밍을 수행하기 위한 R-D 정보가 비디오 데이터에 대해 생성된다. R-D 속성은 비디오 데이터의 스트림과 연관된 "힌트 트랙"에서 요약된다. 비디오 데이터가 보안성을 위해 암호화되는 반면, 힌트 트랙은 암호화되지 않을 수도 있다. 힌트 트랙 내의 R-D 정보는 데이터를 트랜스코딩하는데 사용될 수 있다. 상기 예를 계속하면, 모든 P 프레임을 동등하게 다루는 대신 에, 특정의 P 프레임은 힌트 트랙 내의 R-D 정보에 근거하여 지능적으로 선택될 수 있다. 즉, 재구성된 이미지의 품질에 덜 영향을 주는 이들 P 프레임이 식별될 수 있다. 심지어 이미지 품질에 대한 이들 영향에 따라 P 프레임을 랭크하는 것이 가능할 수 있다. 트랜스코딩 동안, 보다 중요도가 낮은 P 프레임에 대응하는 패킷이 드롭될 수 있다. 드롭되는 패킷/프레임의 수는, 예를 들어, 네트워크 제한에 의존할 수 있다. 특히, 트랜스코딩 동작은 미디어 데이터를 복호화하지 않고 수행된다.
다른 실시예에서, 각각의 프레임의 상대적인 중요도, 및 그에 따른 각각의 패킷의 상대적인 중요도에 관련 정보는 각각의 패킷과 연관된 헤더 정보에 포함될 수 있다. 데이터 패킷 내의 데이터가 암호화되는 반면, 헤더 정보는 암호화될 수도 있고 혹은 암호화되지 않을 수도 있다. 앞서 기술한 것과 마찬가지의 방식으로, 네트워크 트랜스코더는 미디어 데이터를 복호화하지 않고, 이들의 상대적인 중요도 및 네트워크 제한에 근거하여 패킷을 선택하거나 또는 폐기할 수 있다.
데이터의 다른 프로세싱
상기 설명은 데이터의 트랜스코딩에 관련 것이다. 다른 프로세싱의 유형이 또한 수행될 수 있다. 예를 들어, 프로세싱은 반복 코딩 또는 에러 정정 코딩을 통해 리던던시(redundancy)를 부가하도록 또한 사용될 수 있다. 예를 들어, 네트워크가 손실(lossy) 특성을 갖는 경우, 네트워크 내의 손실 뿐만 아니라, 네트워크 노드의 손실(예를 들어, 피어 투 피어 네트워크에서, 네트워크 노드는 턴 오프될 수 있음)을 극복하는데 보다 강인하게 일부 데이터를 전송하는데 유용하도록, 리던던시를 부가하는 것이 적절할 수 있다.
반복 코딩에 의해, 데이터가 그 목적지에 도달할 가능성을 증대시키기 위해 동일한 데이터가 다수회 전송된다. 에러 정정 코딩(예를 들어, 순방향 에러 정정)에 의해, 손실을 극복하기 위해 특별화된 패킷간 리던던시(예를 들어, 리드 솔로몬(Reed-Solomon) 블록 코드)가 데이터에 부가된다. 에러 정정 기법은 버스트(burst) 에러를 분리된(isolated) 에러로 변환하도록 패킷을 또한 인터리브할 수 있다. 일 구현예에서, 예를 들어, 데이터 부분 A, B 및 C의 각각 및 데이터 부분 A, B 및 C의 체크섬 버전이 전송된다. 따라서, 이들 전송된 구성요소 중 하나가 수신되지 않는다 하더라도, 수신되는 구성요소는 데이터 부분 A, B 및 C을 재생하는데 충분하다.
일반적으로, 본 명세서에서 사용되는 바와 같이, "프로세싱"은 트랜스코딩, 리던던시 부가, (이미지, 비디오, 오디오, 그래픽, 데이터 및 헤더 데이터에 대한) 신호 향상, 노이즈 감소, 해상도 향상, 로고 삽입, 스트림의 스플라이싱(splicing), VCR 기능(예를 들어, 스피드업, 슬로우다운, 스트림의 일시 중지), 비디오 및 오디오 스트림의 병합, 애드(ad) 삽입, 스트림의 개성화, 스트림으로부터의 객체 제거, 스트림의 전경/배경 세그멘테이션, 객체 인식, 안면 인식, 보이스(voice) 인식, 스피치 인식, 유사도 검출, 신호 분석(예를 들어, 이미지, 비디오 및 오디오 분석), 텍스트 분석 및 미디어 탐색 동작을 지칭한다(이들로만 제한되지 않음).
데이터 및 네트워크에 관련 정보를 이용하는 프로세싱
이하의 설명은 본 발명의 각종 실시예에 따른 데이터 프로세싱을 기술한다. 이들 각종 실시에에서, 데이터는 전술한 바와 같이, 스케일러블하거나 혹은 비스케일러블, 벗겨낼 수 있도록 인코딩되거나 혹은 그렇지 않은, 암호화되거나 혹은 암호화되지 않을 수 있고, 이들의 결합일 수 있다. 트랜스코딩은 전술한 바와 같이, 패킷을 선택하거나 폐기함으로써, 또는 패킷을 절단함으로써 수행될 수 있다.
도 1은 본 발명에 따른 실시예가 구현될 수 있는 네트워크(100)를 도시하는 도면이다. 본 실시예에서, 네트워크(100)는 다수의 상호 접속된 서버 노드(120, 121, 122 및 123)에 결합된 콘텐츠 소스(110)를 포함한다. 물론 도시된 것보다 많거나 적은 수의 콘텐츠 소스 및 서버 노드가 존재할 수 있다.
콘텐츠 소스(110)를 포함하는, 이들 노드 간의 상호 접속은 유선 접속, 무선 접속 또는 이들의 결합일 수 있다. 각각의 상호 접속은 노드 간의 다수의 스트리밍 세션이 병렬적으로 발생할 수 있도록 하나 이상의 채널을 포함한다.
일반적으로 서술하면, 콘텐츠 소스(110) 및 서버 노드(120-123)는 데이터를 프로세스하고/하거나 저장하고, 이러한 데이터를 송수신하는 성능을 제공하는 장치의 유형이다. 특히, 일 실시예에서, 서버 노드(120-123)는 프로세싱 동작을 수행한다. 이러한 실시예에서, 콘텐츠 소스(110)는 저장 장치일 수 있고, 서버 노드(120-123)는 컴퓨터 시스템 뿐만 아니라, 전형적으로 간주되는 컴퓨터 시스템은 아니되, 유사한 성능을 가지는 다른 유형의 장치일 수 있다. 다른 실시예에서, 콘텐츠 소스(110) 및 서버 노드(120-123)는 프로세싱 동작을 수행하며, 이와 같이 컴 퓨터 시스템 뿐만 아니라 다른 유형의 장치일 수 있다.
네트워크(100)는 모바일 장치 또는 고정형 장치일 수 있는 클라이언트 노드(130)와 같은 클라이언트 장치와 통신한다. 일 실시예에서, 네트워크(100)는 클라이언트 노드(130)에 대해 미디어 데이터를 스트리밍하기 위한 것이다. 물론 다수의 클라이언트 노드가 존재할 수 있다. 클라이언트 노드(130)는 유선 접속, 무선 접속, 또는 이들의 결합을 통해 네트워크(100)에 결합될 수 있다.
일반적으로, 네트워크(100)는 콘텐츠 소스(110)로부터의 데이터 및/또는 임의의 중간 서버 노드(120-123)로부터의 데이터를 클라이언트 노드(130)에 제공하는 성능을 제공한다. 콘텐츠 소스(110)로부터 클라이언트 노드(130)로 이동함에 따라 데이터에 의해 취해진 루트, 또는 경로는 임의의 수의 중간 노드 및 이들 노드 사이의 상호 접속을 통과할 수 있다. 일반적으로 서술하면, 본 발명의 실시예는 전송자로부터 수신자로의 데이터 패킷의 스트리밍에 관련 것이다. 네트워크(100) 내의 임의의 노드가 전송자로서 간주될 수 있으며, 마찬가지로 네트워크(100) 내의 임의의 노드가 수신자로서 간주될 수 있다. 전송자 및 수신자 노드는 인접 노드일 수 있으며, 또는 이들은 중간 노드에 의해 분리될 수도 있다. 또한, 몇몇 실시예에서, 콘텐츠 소스 및 클라이언트 노드를 포함하는 네트워크(100) 내의 임의의 노드는 이하 도면과 관련하여 기술된 미디어 스트림의 프로세싱을 수행할 수 있다. 또한, 클라이언트 노드(130)가 네트워크(100) 내의 엔드 노드로서 도시된다 하더라도, 클라이언트 노드(130)는 네트워크 내의 노드일 수 있다.
도 2는 본 발명에 따른 실시예가 구현될 수 있는 네트워크(100)(도 1)의 예 시적인 병렬 서버 노드(120 및 121)를 도시하는 블록도이다. 일반적으로, 서버 노드(120 및 121)는 미디어 스트림의 프로세싱을 병렬로 수행할 수 있는 네트워크 노드이다. 보다 구체적으로, 서버 노드(120 및 121)는 단일 스트림의 상이한 부분을 독립적으로 프로세스할 수 있다. 즉, 본 실시예에서, 스트림의 제 1 부분은 프로세싱을 위한 노드(120)에서 수신되고, 동일한 스트림의 제 2 부분은 프로세싱을 위한 노드(121)에서 수신된다. 이러한 일 실시예에서, 제 1 부분내의 데이터(또는 데이터 패킷) 및 제 2 부분내의 데이터(또는 데이터 패킷)는 상호 배타적이다. 즉, 제 1 부분 내의 데이터는 제 2 부분에서 복제되지 않으며, 제 2 부분 내의 데이터는 제 1 부분에서 복제되지 않는다. 다른 실시예에서, 제 1 부분 내의 데이터와 제 2 부분 내의 데이터는 부분적으로 혹은 전체적으로 서로 중첩된다.
2개의 병렬 노드가 기술되어 있으나, 2개 이상의 병렬 노드가 존재할 수 있다. 또한, (2개의 부분으로 분리된) 단일 스트림이 기술되어 있으나, 다수의 스트림이 존재할 수 있으며, 이들 중 일부 혹은 이들 전부가 마찬가지로 분리되며 서버 노드(120 및 121)에 의해 병렬로 프로세스된다. 즉, 서버 노드(120 및 121)의 각각은 2개 이상의 스트림에 걸쳐 일시에 동작할 수 있다. 본질적으로, 동일한 스트림의 2개의 부분 상에서 동작하는 서버 노드(120 및 121)는 병렬 노드의 기본적인 경우를 나타내며, 이는 3개 이상의 병렬 서버 노드 및 2개 이상의 노드 당 스트림을 수반하는 상황으로 확장될 수 있다. 또한, 콘텐츠 소스(110)로부터 서버 노드(120 및 121)로의 경로 상에 위치하는 하나 이상의 중간 노드가 존재할 수 있으며, 서버 노드(120 및 121)로부터 클라이언트 노드(130)로의 경로 상에 위치하는 하나 이상의 중간 노드가 존재할 수 있다. 따라서, 서버 노드(120 및 121)는 콘텐츠 소스가 아닌 업스트림 노드로부터 스트림을 수신할 수 있고, 클라이언트 노드가 아닌 다운스트림 노드로 스트림을 전송할 수 있다. 또한, 서버 노드(120 및 121)는 동일한 업스트림 노드로부터 또는 상이한 업스트림 노드로부터 동일한 스트림의 부분을 수신할 수 있고, 프로세스된 스트림을 동일한 다운스트림 노드 또는 상이한 다운스트림 노드로 전송할 수 있다.
본 발명의 실시예에 따르면, 서버 노드(120 및 121)의 각각은, 서버 노드(120 및 121)에 의해 각각 측정되고 관측된 다운스트림 및/또는 업스트림 네트워크 상태에 적어도 부분적으로 근거하여 프로세싱 결정을 행한다.
프로세싱 결정은 트랜스코딩을 할지의 여부, 및 데이터가 트랜스코딩될 정도를 포함할 수 있다. 데이터가 트랜스코딩될 정도는, 본질적으로, 트랜스코딩이 완료되는 경우 폐기될 데이터의 양(또는 유지될 데이터의 양)을 지칭한다. 예를 들어, 트랜스코딩될 데이터 패킷 내의 데이터에 의해 표시되는 해상도의 3 레벨이 존재하면, 프로세싱 결정은 모두 3개의 레벨을 유지하거나, 또는 1개 또는 2개의 레벨을 폐기할 것인지를 수반한다. 프로세싱 결정은 그 전체적으로 드롭되는 데이터 패킷을 또한 초래할 수 있다.
프로세싱 결정은 전송된 데이터에 리던던시를 도입할지의 여부를 대신 포함할 수 있다. 예를 들어, 동일한 데이터, 또는 동일한 데이터의 서브세트를 상이한 노드에 전송할 지의 결정이 이루어질 수 있다. 상호 배타적인 부분 A, B 및 C로 분리될 수 있는 데이터를 고려한다. 각각의 부분을 상이한 노드에 전송하거나, 부 분 A 및 B를 하나의 노드에 전송하며, 부분 B 및 C를 다른 노드에 전송하거나, 또는 부분 A, B 및 C를 몇몇 개수의 다른 노드의 각각에 전송하는 프로세싱 결정이 이루어질 수 있다.
노드(120)는 그것이 수행되는 관측 및 측정에 근거하여 프로세싱을 결정을 행하고, 노드(121)는 그것이 수행되는 관측 및 측정에 근거하여 프로세싱을 결정을 행할 수 있으며, 즉, 노드(120 및 121)는 반드시 정보를 공유할 필요는 없다. 대안적으로, 서버 노드(120 및 121)는 이들의 관측 및 측정을 공유할 수 있으며, 각각의 노드는 프로세싱 결정을 행하기 위해 다른 노드에 의해 공유된 정보를 그 자신의 측정 및 관측과 결합할 수 있다. 또한, 노드(120 및 121)에 의해 공유된 정보는 노드(120 및 121)가 접촉하거나 혹은 접속한 적 있는 다른 노드로부터의 정보를 포함할 수 있다. 예를 들어, 노드(121)의 노드 업스트림 또는 다운스트림은 노드(121)와 정보를 공유할 수 있으며, 이는 다시 노드(120)와 해당 정보를 공유할 수 있다. 노드(121)의 노드 업스트림 또는 다운스트림은 다른 노드(예를 들어, 다른 병렬 노드, 또는 다른 다운스트림 또는 업스트림의 노도) 등으로부터 정보를 수신할 수 있는 등이다. 노드(120)는 노드(121)로부터 정보를 요구할 수 있거나("풀(pull)" 방법), 또는 노드(121)는 노드(120)에 정보를 "푸시(push)"할 수 있다(역도 가능). 프로세싱 결정은 데이터 자신에 관련 정보에 또한 근거하여 이루어질 수 있다. 이와 관련하여, 도 5와 관련하여 추가적인 정보가 제공된다.
도 3은 본 발명에 따른 실시예가 구현될 수 있는 네트워크(100)(도 1)의 예시적인 직렬 서버 노드(120)를 도시하는 블록도이다. 노드(120 및 121)는 데이터 스트림의 직렬 프로세싱을 위해 사용될 수 있는 네트워크 노드이다. 즉, 데이터 스트림은 서버 노드(120)에서 수신되며, 프로세싱이 보장되는 경우에 프로세스되며, (보장된다면) 다른 프로세싱을 위해 서버 노드(122)에 전송된다. 앞에서와 같이, 서버 노드(120 및 122)는 서버 노드(120 및 122)에 의해 각각 측정되고 관측된 네트워크 상태에 적어도 부분적으로 근거하고, 또한 데이터 그 자체에 관한 정보에 근거하여 프로세싱 결정(예를 들어, 트랜스코딩을 행할지의 여부, 데이터가 트랜스코딩되는 정도, 리던던시를 도입할지의 여부 등)을 행한다. 또한, 서버 노드(122)는 서버 노드(120)와 정보를 공유할 수 있다. 서버 노드(122)에 의해 공유된 정보는 앞서 기술된 것과 유사한 방식으로 노드(122)가 또 다른 노드로부터 수신한 정보를 포함할 수 있다. 이와 관련하여, 도 5와 관련하여 추가적인 정보가 제공된다.
도 3이 2개의 직렬 노드를 도시한다 하더라도, 2개 이상의 직렬 노드가 존재할 수 있다. 또한, 단일 스트림이 설명된다 하더라도, 다수의 스트림이 존재할 수 있으며, 각각의 스트림은 서버 노드(120 및 121)에 의해 병렬로 프로세스될 수 있다. 즉, 서버 노드(120 및 121)의 각각은 2개 이상의 스트림에 대해 일시에 동작할 수 있다. 본질적으로, 서버 노드(120 및 122)는 직렬 노드의 기본적인 경우를 나타내며, 이는 3개 이상의 직렬 서버 노드 및 2개 이상의 노드 당 스트림을 포함하도록 확장될 수 있다. 또한, 콘텐츠 소스(110)로부터 서버 노드(120 및 121)로의 경로 상에 위치하는 하나 이상의 중간 노드가 존재할 수 있으며, 서버 노드(120 및 121)로부터 클라이언트 노드(130)로의 경로 상에 위치하는 하나 이상의 중간 노 드가 존재할 수 있다. 따라서, 서버 노드(120)는 콘텐츠 소스가 아닌 업스트림 노드로부터 스트림을 수신할 수 있고, 서버 노드(121)는 클라이언트 노드가 아닌 다운스트림 노드로 스트림을 전송할 수 있다.
도 4는 본 발명에 따른 실시예가 구현될 수 있는 네트워크(100)(도 1)의 예시적인 직렬 및 병렬 노드(120, 122 및 123)를 도시하는 블록도이다. 노드(120 및 122) 또는 노드(120 및 123)는 도 3과 관련하여 앞서 기술된 바와 같이, 데이터 스트림의 직렬 프로세싱을 위해 사용될 수 있는 네트워크 노드이다. 노드(120 및 123)는 도 2와 관련하여 앞서 기술된 바와 같이, 스트림의 부분을 병렬로 프로세싱하기 위해 사용될 수 있다. 앞에서와 같이, 서버 노드(120, 122 및 123)는 도 2 및 도 3과 관련하여 위에서 기술되고, 도 5와 관련하여 아래에서 기술되는 바와 같이, 네트워크 상태에 적어도 부분적으로 근거하고, 데이터 자신에 관련 정보에도 근거하여 프로세싱 결정(예를 들어, 트랜스코딩을 행할지의 여부, 데이터가 트랜스코딩되는 정도, 리던던시를 도입할지의 여부 등)을 행한다.
도 5는 본 발명의 실시예에 따른 네트워크 노드(200)로 및 노드로부터의 정보의 흐름을 도시하는 도면이다. 네트워크 노드(200)는 앞서 언급한 임의의 네트워크(프로세싱) 노드를 나타낸다. 네트워크 노드(200)는 데이터 패킷을 수신하고, 패킷을 프로세스할 지의 여부에 관련 결정을 행하고, 프로세싱이 수행될 정도에 관련 결정을 행하며((예를 들어, 트랜스코딩을 행할지의 여부, 데이터가 트랜스코딩되는 정도, 리던던시를 도입할지의 여부 등)), 데이터 패킷을 출력한다(예를 들어, 이들 패킷을 다른 네트워크 노드 또는 클라이언트 노드일 수 있는 다음 다운스트림 노드에 전송함). 각종 실시예에서, 네트워크 노드(200)는 "로컬 소스 정보", "이웃 소스 정보", "로컬 네트워크 및 시스템 관측"(측정을 포함), 및/또는 "이웃 네트워크 및 시스템 관측"(측정을 포함)을 이용하여 프로세싱 결정(들)을 행한다. 실시예에 따라서는, 네트워크 노드(200)에서 이러한 정보의 전부 혹은 일부만이 이용 가능하다.
본 명세서에서 사용되는 바와 같이, 로컬 소스 정보는 네트워크 노드(200)에 의해 수신된 데이터 패킷으로부터의 네트워크 노드(200)에서 이용 가능한 데이터에 관련 정보를 지칭한다. 예를 들어, 로컬 소스 정보는 네트워크 노드(200)에 의해 수신된 각각의 데이터 패킷의 헤더에서 전달되는 정보일 수 있거나, 수신된 각각의 데이터 패킷의 헤더에서 전달되는 정보로부터 도출되는 정보일 수 있다. 패킷 헤더에 포함된 정보의 유형은 일반적으로 앞서 기술된 바와 같다. 보다 구체적으로, 로컬 소스 정보는 이하와 같은 정보의 유형, 즉, 데이터 패킷 내의 데이터의 개시 및 종단을 식별하는 정보, 데이터 패킷 내의 데이터를 절단하는 절단 포인트, 데이터 패킷이 길이를 식별하는 정보, 데이터 패킷의 전송 시각을 식별하는 정보, 데이터 패킷에 대한 공칭 프리젠테이션 시각을 식별하는 정보, 데이터 패킷이 전송되지 않거나 수신되지 않는 경우 발생할 예측되는 디스토션의 양을 데이터 패킷에 대해 정량화하는 정보, 데이터 패킷 및 다른 데이터 패킷 간의 코딩 의존도, 데이터 패킷에 대해 얼마나 많은 다른 데이터 패킷이 의존하는지를 데이터 패킷에 대해 식별하는 정보, 데이터 패킷이 에러 복원력을 제공하는지를 식별하는 정보, 데이터 패킷이 리던던시를 제공하는지를 식별하는 정보, 데이터 패킷을 전송하는 기한을 식 별하는 정보, 데이터 패킷에 대해 시퀀스 수를 식별하는 정보, 데이터 패킷에 대한 우선 순위 정보, 데이터의 공간 영역 피쳐(features), 데이터의 컬러 구성요소 피쳐, 데이터의 해상도 레벨, 데이터의 품질 레벨, 데이터의 콘텐츠, 데이터를 기술하는 메타데이터, 데이터의 보안 특성, 데이터의 디지털 권리 관리 특성을 들 수 있으며, 이들로만 제한되지 않는다. 데이터(또는 데이터 패킷)의 각각의 특정이 인스턴스와 연관된 로컬 소스 정보는 해당 데이터에 대해 일정하지만, 데이터는 전형적으로 연속적으로 송수신되고, 그와 같은 관점에서 로컬 소스 정보는 시간에 따라 변경될 수 있다. 네트워크 노드(200)는 다른 노드와 그 로컬 소스 정보를 공유할 수 있다.
본 명세서에서 사용되는 바와 같이, 로컬 네트워크 관측은 네트워크 노드(200)에 의해 관측되거나 측정되는 네트워크에 관련 정보를 지칭한다. 보다 구체적으로, 로컬 네트워크 관측은 네트워크 내에서 노드(200)의 즉각적인 다운스트림 경로에 대한 다음과 같은 정보의 유형, 즉 경로를 따라 이용 가능한 대역폭, 경로를 따른 병목 링크 성능, 데이터 패킷 전송 레이트, 데이터 패킷 손실 레이트, 데이터 패킷 수신 패턴, 데이터 패킷 손실 패턴, 어느 데이터 패킷이 경로를 따라 다음 노드에서 수신되었는지를 식별하는 정보, 어느 데이터 패킷이 경로를 따라 다음 노드에 도달하지 않았는지를 식별하는 정보, 경로를 통과하는데 필요한 시간을 정량화하는 정보, 경로와 연관된 지연을 정량화하는 정보(예를 들어, 레이턴시 및 지터를 포함함)를 들 수 있으며, 이들로만 제한되지 않는다. 로컬 네트워크 관측은 시간에 따라 변경될 수 있다. 네트워크 노드(200)는 다른 노드와 그 로컬 네트 워크 관측을 공유할 수 있다.
본 명세서에서 사용되는 바와 같이, 로컬 시스템 관측은, 노드의 연산 자원의 이용 가능도, 노드의 자원의 사용 정도, 노드의 자원 상의 부하와 같은 네트워크 노드(200)에 관련 정보를 지칭한다. 예를 들어, 로컬 시스템 관측은 시스템 메모리 사용/이용 가능도, 시스템 프로세서 사용/이용 가능도, 시스템 저장 사용/이용 가능도, 및 시스템 입/출력(I/O) 또는 네트워크 사용/이용 가능도를 들 수 있으며, 이들로만 제한되지 않는다. 로컬 시스템 관측은 시간에 따라 변경될 수 있다. 네트워크 노드(200)는 다른 노드와 그 로컬 시스템 관측을 공유할 수 있다.
본 명세서에서 사용되는 바와 같이, 이웃 소스 정보는 로컬 소스 정보와 본질적으로 동등하되, 이웃 노드 또는 노드들로부터 수신되는 정보를 지칭한다. 다시 도 2를 참조하면, 이웃 소스 정보는 서버 노드(121)로부터 서버 노드(120)에 의해 수신될 수 있고, 서버 노드(120)로부터 서버 노드(121)에 의해 수신될 수 있다. 도 3을 참조하면, (서버 노드(122)는 서버 노드(120)의 다운스트림이고, 이웃 소스 정보는 본질적으로 서버 노드(120)로부터 서버 노드(122)로 전송되기 때문에) 서버 노드(120)는 서버 노드(122)로부터 이웃 소스 정보를 수신할 수 있다. 로컬 노드의 관점에서, 이웃 소스 정보는 시간에 따라 변경될 수 있다.
이웃 소스 정보는 이웃 노드에 의해 행해진 프로세싱 결정(들)을 기술하는 정보를 또한 포함할 수 있다. 도 2와 관련하여 기술된 병렬 노드의 경우를 고려하면, 서버 노드(120 및 121)의 각각은 해상도의 3 레벨(저, 중 및 고)에서 인코딩된 데이터를 갖는 패킷을 수신한다. 서버 노드(120)는 그의 네트워크 상태 관측에 근 거하여, 각각의 데이터 패킷의 고 해상도 부분을 절단함으로써(해상도의 저 및 중 부분을 남기고) 데이터를 트랜스코딩하는 결정에 도달할 수 있다. 서버 노드(121)는 그의 네트워크 상태 관측에 근거하여, 각각의 데이터 패킷의 중 및 고 해상도 부분을 절단함으로써 데이터를 트랜스코딩하는 결정에 도달할 수 있다. 따라서, 클라이언트 노드(130)는 서버 노드(120)로부터의 데이터의 중 해상도 부분에 대한 필요성을 갖지 않는다. 서버 노드(121)가 서버 노드(120)와 이러한 정보를 공유하는 경우, 서버 노드(120)는 그에 따라 그 트랜스코딩 결정을 행할 수 있다. 상기 예에서, 서버 노드(120)도 각각의 데이터 패킷의 중 및 고 해상도 부분을 절단함으로써 데이터 패킷을 트랜스코딩하는 결정에 대신 도달한다.
이제 도 3과 관련하여 기술된 서버 노드의 경우를 고려한다. 서버 노드(120)는 초기에 해상도의 3 레벨로 인코딩된 데이터에 의해 서버 노드(122)에 패킷을 전송할 수 있다. 서버 노드(122)는 그 로컬 네트워크 관측에 근거하여, 각각의 데이터 패킷의 고 해상도 부분을 절단함으로써 데이터를 트랜스코딩하는 결정에 도달할 수 있다. 따라서, 서버 노드(122)는 서버 노드(120)로부터 수신되는 데이터의 고 해상도 부분에 대한 더 이상의 필요성을 갖지 않는다. 서버 노드(122)가 서버 노드(120)와 이러한 정보를 공유하는 경우, 서버 노드(120)는 그에 따라 그 트랜스코딩 결정을 행할 수 있다. 상기 예에서, 서버 노드(120)는 각각의 데이터 패킷의 고 해상도 부분을 절단함으로써 데이터 패킷을 트랜스코딩하는 결정에 도달한다.
본 명세서에서 사용되는 바와 같이, 이웃 네트워크 관측 및 이웃 시스템 관 측은 본질적으로 로컬 네트워크 관측 및 로컬 시스템 관측에 각각 동등하되, 이웃 노드 또는 노드들로부터 수신되는 정보를 지칭한다. 다시 도 2를 참조하면, 이웃 네트워크 관측 및/또는 이웃 시스템 관측은 서버 노드(121)로부터 서버 노드(120)에 의해 수신될 수 있고, 서버 노드(120)로부터 서버 노드(121)에 의해 수신될 수 있다. 도 3을 참조하면, 서버 노드(120)는 서버 노드(122)로부터 이웃 네트워크 관측 및/또는 이웃 시스템 관측을 수신할 수 있다. 이웃 네트워크 관측 및 이웃 시스템 관측은 시간에 따라 변경될 수 있다.
도 5를 참조하면, 블록(202)에서, 일 실시예에서, 네트워크 노드(200)는 로컬 소스 정보를 분석하고, 다른 실시예에서, 네트워크 소스 정보를 분석한다. 블록(204)에서, 일 실시예에서, 네트워크 노드(200)는 로컬 네트워크 관측을 분석하고, 다른 실시예에서, 이웃 네트워크 관측을 분석한다. 다른 실시예에서, 로컬 시스템 관측은 블록(204)에서 분석된다. 또 다른 실시예에서, 이웃 시스템 관측은 블록(204)에서 분석된다. 상술한 유형의 정보의 각종 결합은 이러한 정보의 이용 가능도에 따라, 블록(202 및 204)에 의해 분석될 수 있다.
블록(206)에서, 블록(202 및 204)에서의 분석에 근거하여, 네트워크 노드(200)는 프로세싱이 수행되어야 하는지 여부에 관련 결정에 도달하고, 수행되어야 하는 경우, 수행될 프로세싱의 유형 또는 정도를 결정한다. 일반적으로, 입수할 수 있는 정보에 근거하여, 네트워크 노드(200)는 입수한 데이터를 프로세싱하는 것에 관련 결정을 행한다. 입수할 수 있는 정보는 일반적으로 로컬 소스 정보, 로컬 네트워크 관측, 및/또는 로컬 시스템 관측을 포함한다. 일 실시예에서, 입수할 수 있는 정보는 이웃 소스 정보, 이웃 네트워크 관측, 및/또는 이웃 시스템 관측을 또한 포함한다.
일 실시예에서, 프로세싱 결정은 어느 패킷이 절단되거나 또는 드롭되는지에 관련 결정을 또한 수반한다. 이러한 일 실시예에서, 이러한 결정은 "슬라이딩 윈도우(sliding window)" 방안을 호출함으로써 이루어진다. 패킷이 프로세싱 노드로부터 전송됨에 따라, 새로운 패킷이 전형적으로 도달할 것이다. 따라서, 특정의 패킷을 프로세스하고 전송할지의 여부에 관련 결정은, 초기 결정이 이루어진 이후에 프로세싱 노드에서 어떤 다른 패킷이 도달하였는지에 의존하여 변경될 수 있는 진화적인(evolving) 결정이다. 예를 들어, 네트워크 노드(200) 상에 5개의 패킷이 큐(queue)되는 상대적으로 간단한 예를 고려한다. 네트워크에 관해 현재 이용 가능한 정보 뿐만 아니라, 이들 5개의 패킷에 의해 전달된 데이터에 관련 정보 및 시스템에 관련 정보에 근거하여, 본 명세서에서 이미 기술된 바와 같이, 최상위 상대 우선 순위를 갖는 3개의 패킷을 전송하도록 결정이 이루어진다. 한편, 3개의 패킷 중 2개만이 전송되는 동안 5개의 패킷이 네트워크 노드(200)에 더 도달함에 따라, 이제 큐는 8개의 패킷을 포함한다. 입수한 8개의 패킷에 관련 프로세싱 결정이 업데이트된 네트워크 및 시스템 정보 뿐만 아니라 이들 8개의 패킷에 의해 전달된 데이터에 관련 정보를 이용하여 이루어진다. 결정은 다른 3개의 패킷을 전송하는 것일 수 있으나, 선택된 3개의 패킷은 전송되지 않은 3개의 패킷의 제 1 그룹 내의 패킷을 포함하지 않을 수 있다. 본질적으로 일 실시예에 따르면, 프로세싱 결정은 결정이 행해질 시점에서 네트워크 노드(200)에서 이용 가능한 정보의 스냅 샷(snapshot)에 근거하여 이루어지며, 패킷의 취급에 영향을 주는 결정은 임의의 시점에서 변경(예들 들어, 반전)될 수 있다. 상기 예는 프로세싱이 패킷 절단을 포함하는 인스턴스로 확장될 수 있다. 즉, 상기 예는 비스케일러블 또는 스케일러블 데이터에 적용될 수 있다.
일 실시예에서, 블록(208)에서, 네트워크 노드(200)는 입수할 수 있는 정보에 근거하여(예를 들어, 블록(202 및 204)으로부터의 로컬 소스 정보, 이웃 소스 정보, 로컬 시스템 관측, 네트워크 시스템 간측, 로컬 네트워크 관측, 및/또 이웃 네트워크 관측의 분석에 근거하여) 라우팅 결정을 행한다. 라우팅 결정은 어느 다운스트림 노드 또는 노드들이 출력(예를 들어, 프로세스된) 데이터를 수신하는지에 관련 결정을 포함할 수 있다. 예를 들어, 도 4를 참조하면, 서버 노드(120)는 병렬 서버 노드(122 및 123) 중 하나 또는 둘다에 패킷을 할당할 수 있다. 라우팅 결정은 어느 데이터 패킷이 어느 노드에 전송될 지에 관련 결정을 또한 포함할 수 있다. 즉, 라우팅 결정은 어느 노드가 데이터를 수신할 것인지 뿐만 아니라, 이들 노드 간에 데이터가 어떻게 분배되는지를 결정하는 것을 수반할 수 있다. 또한, 라우팅 결정은 프로세싱 결정에 영향을 줄 수 있다. 반대로, 프로세싱 결정은 라우팅 결정에 영향을 줄 수 있다. 또한, 다운스트림 노드에 의해 행해진 프로세싱 및 라우팅 결정이 라우팅 결정에 영향을 줄 수 있다.
일 실시예에서, 네트워크 노드(200)는 소스 정보(로컬 및/또는 이웃)를 출력한다. 다른 실시예에서, 네트워크 노드(200)는 네트워크 관측 정보(로컬 및/또는 이웃)를 출력한다. 또 다른 실시예에서, 네트워크 노드(200)는 시스템 관측 정보 (로컬 및/또는 이웃)를 출력한다.
도 6은 본 발명에 따른 프로세싱 장치(300)의 일 실시예의 블록도이다. 본 실시예에서, 프로세싱 장치(300)는 각각 업스트림 노드로부터 데이터 패킷의 스트림을 수신하고, 다운스트림 노드에 데이터 패킷의 스트림을 전송하기 위한 수신자(310) 및 전송자(320)를 포함한다. 수신자(310)는 다른 노드로부터 소스 정보를, 다른 노드로부터 네트워크 관측 정보를, 및/또는 다른 노드로부터 시스템 관측 정보를 또한 수신할 수 있다. 전송자(320)는 다른 노드로 소스 정보를, 다른 노드로네트워크 관측 정보를, 및/또는 다른 노드로 시스템 관측 정보를 또한 전송할 수 있다.
수신자(310) 및 전송자(320)는 유선 또는 무선 통신이 가능하다. 개별적인 수신자 및 전송자도록 유선 통신에 대해 하나, 무선 통신에 대해 하나가 또한 사용될 수 있다. 수신자(310) 및 전송자(320)는 단일 장치(예를 들어, 트랜시버)로서 통합될 수 있음을 이해할 수 있을 것이다.
프로세싱 장치(300)는 선택사양적인 제어기(330)(예를 들어, 프로세서 또는 마이크로프로세서), 선택사양적인 복호화기(340), 선택사양적인 메모리(350) 또는 그 결합을 포함할 수 있다. 일 실시예에서, 복호화기(340)는 헤더 정보를 복호화하도록 사용된다. 다른 실시예에서, 메모리(350)는 다운스트림 노드에 전송되기 이전에 업스트림 노드로부터 수신된 데이터 패킷을 축적하도록 사용된다.
도 7은 본 발명의 실시예에 따른 데이터의 직렬 프로세싱을 위한 방법의 플로우차트(400)이다. 도 8은 본 발명의 실시예에 따른 데이터의 병렬 프로세싱을 위한 방법의 플로우차트(500)이다. 도 9는 본 발명의 실시예에 따른 데이터의 직렬 및 병렬 프로세싱을 위한 방법의 플로우차트(600)이다. 플로우차트(400, 500 및 600)에 특정의 단계가 개시되어 있다 하더라도, 이러한 단계는 예시적이다. 즉, 본 발명의 실시예는 플로우차트(400, 500 및 600)에서 기재된 단계의 각종 다른 단계 또는 변형예를 수행하는데 특히 적합하다. 플로우차트(400, 500 및 600)의 단계는 제공된 것과 상이한 순서로 수행될 수 있으며, 플로우차트(400, 500 및 600)의 모든 단계가 수행될 필요가 없음이 이해될 것이다. 플로우차트(400, 500 및 600)에 의해 기술된 방법의 전부 또는 일부는, 예를 들어, 컴퓨터 시스템의 컴퓨터 사용 가능한 매체에 상주하는 컴퓨터 판독 가능하고 컴퓨터 실행 가능한 인스트럭션을 이용하여 구현될 수 있다.
일반적으로, 플로우차트(400)는 도 3의 직렬 노드(120 및 122)를 이용하여 구현되고, 플로우차트(500)는 도 2의 병렬 노드(120 및 121)를 이용하여 구현되며, 플로우차트(600)는 도 4의 직렬 및 병렬 노드(120, 122 및 123)를 이용하여 구현된다.
먼저 도 7을 참조하면, 블록(402)에서 데이터가 액세스된다. 일 실시예에서, 데이터가 인코딩되어 패킷화된다. 인코딩된 데이터는 스케일러블하거나 또는 스케일러블하지 않을 수 있다. 다른 실시예에서, 데이터는 "파일 기반형"이다(예를 들어, 데이터는 파일 포맷으로 저장되고, 하나의 노드로부터 다른 노드로 스트리밍되며, 각각의 수신 노드 상에 파일로서 저장됨). 또 다른 실시예에서, 데이터가 암호화된다.
블록(404)에서, 데이터에 관련 정보, 네트워크에 관련 정보, 및/또는 시스템(예를 들어, 노드)에 관련 정보, 또는 그 결합을 이용하여 데이터를 프로세스할 지이 여부에 대한 결정이 행해진다. 일 실시예에서, 데이터에 관련 정보는 로컬 소스 정보를 포함하고, 네트워크에 관련 정보는 로컬 네트워크 관측을 포함하며, 시스템에 관련 정보는 로컬 시스템 관측을 또한 포함한다. 다른 실시예에서, 데이터에 관련 정보는 이웃 소스 정보를 또한 포함하고, 네트워크에 관련 정보는 이웃 네트워크 관측을 또한 포함하며, 시스템에 관련 정보는 이웃 시스템 관측을 또한 포함한다. 이웃 소스 정보, 이웃 네트워크 정보 및 이웃 시스템 관측은 이웃에 의해 국소적으로 관측된 정보 뿐만 아니라 이웃이 그 이웃으로부터 축적한 정보를 포함할 수 있다.
블록(406)에서, 결정이 데이터를 프로세스하도록 하는 것이면, 데이터는 데이터에 관련 정보, 네트워크에 관련 정보, 및/또는 시스템에 관련 정보, 또는 그 결합을 이용하여 프로세스된다. 앞에서와 같이, 일 실시예에서, 데이터에 관련 정보는 로컬 소스 정보를 포함하고, 네트워크에 관련 정보는 로컬 네트워크 관측을 포함하며, 시스템에 관련 정보는 로컬 시스템 관측을 포함한다. 다른 실시예에서, 앞에서와 마찬가지로, 데이터에 관련 정보는 이웃 소스 정보를 또한 포함하고, 네트워크에 관련 정보는 이웃 네트워크 관측을 또한 포함하며, 시스템에 관련 정보는 이웃 시스템 관측을 또한 포함한다. 또한, 앞서 언급한 바와 같이, 이웃 소스 정보, 이웃 네트워크 정보 및 이웃 시스템 관측은 이웃에 의해 국소적으로 관측된 정보 뿐만 아니라 이웃의 이웃으로부터 축적한 정보를 포함할 수 있다.
블록(408)에서, 일 실시예에서, 라우팅 결정은 네트워크에 관련 정보를 이용하여 행해진다. 또한, 이러한 일 실시예에서, 네트워크에 관련 정보는 로컬 네트워크 관측을 포함하는 한편, 다른 실시예에서, 네트워크에 관련 정보는 이웃 네트워크 관측을 또한 포함한다. 다른 실시에에서, 라우팅 결정은 데이터에 관련 정보를 이용하여 행해진다. 이러한 일 실시예에서, 데이터에 관련 정보는 이웃에 이해 국소적으로 관측된 정보 뿐만 아니라 그의 이웃으로부터 축적된 정보를 포함하여, 로컬 소스 정보 및/또는 이웃 소스 정보를 포함한다. 또 다른 실시예에서, 라우팅 결정은 이웃 시스템 정보를 고려할 수 있다.
이제 도 8을 참조하면, 블록(502)에서, 데이터의 제 1 부분은 제 1 노드에서 수신되고 데이터의 제 2 부분은 제 2 노드에서 수신된다. 일 실시예에서, 제 1 부분은 제 2 부분에 있는 데이터를 포함하지 않으며, 제 2 부분은 제 1 부분에 있는 데이터를 포함하지 않는다. 다른 실시예에서, 제 1 부분 내의 데이터 및 데 2 부분 내의 데이터는 부분적으로 혹은 전체적으로 서로 중첩될 수 있다. 일 실시예에서, 데이터는 인코딩되어 패킷화된다. 인코딩된 데이터는 스케일러블할 수도 있고 혹은 스케일러블하지 않을 수도 있다. 다른 실시예에서, 데이터는 파일 기반형이다. 또 다른 실시예에서, 데이터는 암호화된다.
블록(504)에서, 본 명세서에서 이미 기술한 바와 같이, 데이터를 프로세스할 지의 여부에 대한 결정이 행해진다. 결정이 프로세스하는 것이면, 데이터의 제 1 부분은 데이터의 제 1 부분에 관련 정보, 네트워크에 관련 정보, 및/또는 시스템(제 1 노드)에 관련 정보, 또는 그 결합을 이용하여 제 1 노드에서 프로세스된다. 앞에서와 같이, 일 실시예에서, 데이터의 제 1 부분에 관련 정보는 로컬(제 1 노드) 소스 정보를 포함하고, 네트워크에 관련 정보는 로컬 네트워크 관측을 포함하며, 시스템에 관련 정보는 로컬 시스템 관측을 포함한다. 다른 실시예에서, 앞에서와 마찬가지로, 데이터의 제 1 부분에 관련 정보는 이웃 소스 정보를 또한 포함하고, 네트워크에 관련 정보는 이웃 네트워크 관측을 또한 포함하며, 시스템에 관련 정보는 이웃에 의해 국소적으로 관측된 정보 뿐만 아니라 이웃의 이웃으로부터 축적한 정보를 포함하여, 이웃 시스템 관측을 또한 포함한다. 소스, 네트워크 및 시스템 정보는 노드 간에 공유될 수도 있고 공유되지 않을 수도 있다.
블록(506)에서, 결정이 프로세스하는 것이면, 데이터의 제 2 부분은 데이터의 제 2 부분에 관련 정보, 네트워크에 관련 정보, 및/또는 시스템(제 2 노드)에 관련 정보, 또는 그 결합을 이용하여 제 2 노드에서 프로세스된다. 앞에서와 같이, 일 실시예에서, 데이터의 제 2 부분에 관련 정보는 로컬(제 2 노드) 소스 정보를 포함하고, 네트워크에 관련 정보는 로컬 네트워크 관측을 포함하며, 시스템에 관련 정보는 로컬 시스템 관측을 포함한다. 다른 실시예에서, 앞에서와 마찬가지로, 데이터의 제 2 부분에 관련 정보는 이웃 소스 정보를 또한 포함하고, 네트워크에 관련 정보는 이웃 네트워크 관측을 또한 포함하며, 시스템에 관련 정보는 이웃에 의해 국소적으로 관측된 정보 뿐만 아니라 이웃의 이웃으로부터 축적한 정보를 포함하여, 이웃 시스템 관측을 또한 포함한다. 소스, 네트워크 및 시스템 정보는 노드 간에 공유될 수도 있고 모두 공유되지 않을 수도 있다.
이제 도 9를 참조하면, 블록(602)에서 데이터가 액세스된다. 일 실시예에 서, 데이터가 인코딩되어 패킷화된다. 인코딩된 데이터는 스케일러블할 수도 있고 스케일러블하지 않을 수도 있다. 다른 실시예에서, 데이터는 파일 기반형이다. 또 다른 실시예에서, 데이터가 암호화된다.
블록(604)에서, 데이터는 적어도 제 1 부분 및 제 2 부분으로 분리된다. 일 실시예에서, 제 1 부분은 제 2 부분에 있는 데이터를 포함하지 않으며, 제 2 부분은 제 1 부분에 있는 데이터를 포함하지 않는다.
블록(606)에서, 제 1 및 제 2 네트워크 노드는 데이터에 관련 정보, 네트워크에 관련 정보, 및/또는 시스템에 관련 정보, 또는 그 결합에 따라 식별되고 선택된다. 일 실시예에서, 네트워크에 관련 정보는 로컬 네트워크 관측을 포함하는 한편, 다른 실시예에서, 네트워크에 관련 정보는 이웃에 의해 국소적으로 관측된 정보 뿐만 아니라 이웃의 이웃으로부터 축적한 정보를 포함하여, 이웃 시스템 관측을 또한 포함한다. 일 실시예에서, 데이터에 관련 정보는 로컬 소스 정보를 포함하는 한편, 다른 실시예에서, 데이터에 관련 정보는 이웃에 의해 국소적으로 관측된 정보 뿐만 아니라 이웃의 이웃으로부터 축적한 정보를 포함하여, 이웃 소스 정보를 또한 포함한다. 일 실시예에서, 시스템에 관련 정보는 로컬 시스템 관측을 포함하는 한편, 다른 실시예에서, 시스템에 관련 정보는 이웃에 의해 국소적으로 관측된 정보 뿐만 아니라 이웃의 이웃으로부터 축적한 정보를 포함하여, 이웃 시스템 관측을 또한 포함한다.
블록(608)에서, 데이터의 제 1 부분은 프로세싱을 위한 제 1 네트워크 노드에 전송되고, 데이터의 제 2 부분은 프로세싱을 위한 제 2 네트워크 노드에 전송에 전송된다.
요약하면, 그 각종 실시예에서, 본 발명은 네트워크에서 미디어 데이터를 스트리밍하는 방법 및 시스템을 제공한다. 데이터는 다양한 클라이언트 성능을 수용하도록 프로세스된다. 데이터가 암호화되는 경우, 복호화 없이 프로세스되어, 데이터의 보안성을 유지할 수 있다. 프로세싱 결정은 네트워크의 이질적이고 시변하는 통신 링크의 속성을 포착하는 다수의 정보 항목에 근거한다. 서버 노드에 걸쳐 프로세싱 동작을 밸런싱함으로써, 또한 몇몇 예에서 프로세싱 동작을 병렬로 수행함으로써, 패킷이 손실되거나 지연되는 가능성이 감소된다.
본 발명의 실시예가 이상 기술되었다. 본 발명은 특정의 실시예에서 기술되었으나, 본 발명은 이러한 실시예에 의해 제한되는 것으로서 해석되어서는 안되며, 후술하는 청구 범위에 따라 해석된다는 것이 이해될 것이다.

Claims (8)

  1. 데이터를 트랜스코딩(transcoding)하는 방법(600)으로서,
    다수의 데이터 패킷(a plurality of data packets)을 포함하는 데이터를 액세스하는 단계(602)와,
    상기 데이터를 다수의 데이터 부분(a plurality of data portions)으로 분리하는 단계(604) - 상기 다수의 데이터 부분들의 각 데이터 부분은, 다른 데이터 부분과 상이한 데이터를 갖도록, 서로 배타적임 - 와,
    적어도 2개의 상기 데이터 부분을 네트워크 내의 개별 노드에게 전송하는 단계(606)를 포함하며,
    상기 개별 노드는, 상기 개별 노드 각각에 의해 측정 또는 관측된 네트워크 상태에 적어도 부분적으로 기초하여, 상기 적어도 2개의 데이터 부분을 서로 병렬로 트랜스코딩하는
    방법.
  2. 제 1 항에 있어서,
    상기 네트워크에 관한 정보에 따라 상기 개별 노드를 선택하는 단계(608)를 더 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 개별 노드로부터 상기 네트워크에 관한 상기 정보를 수신하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 개별 노드에 관한 정보에 따라 상기 개별 노드를 선택하는 단계를 더 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 네트워크(100)는 제 1 노드(122) 및 제 2 노드(123)를 포함하며, 상기 제 1 노드는 제 1 데이터 부분에 관한 정보 및 상기 제 1 노드에게 알려진 상기 네트워크에 관한 정보에 따라 상기 다수의 데이터 부분 중 상기 제 1 데이터 부분을 트랜스코딩하고, 상기 제 2 노드는 제 2 데이터 부분에 관한 정보 및 상기 제 2 노드에게 알려진 상기 네트워크에 관한 정보에 따라 상기 다수의 데이터 부분 중 상기 제 2 데이터 부분을 트랜스코딩하는 방법.
  6. 제 5 항에 있어서,
    상기 제 1 노드에게 알려진 상기 네트워크에 관한 상기 정보는 상기 제 2 노드에 의해 관측되고 상기 제 1 노드에 제공되는 정보를 포함하는 방법.
  7. 제 5 항에 있어서,
    상기 네트워크는 상기 제 1 노드와 통신하는 제 3 노드를 더 포함하며, 상기 제 3 노드는 상기 네트워크 내의 다운스트림 노드로 트랜스코딩된 데이터를 전송하고, 상기 제 3 노드로부터 전송된 상기 트랜스코딩된 데이터에 관한 정보는 상기 제 1 노드에 제공되며, 상기 제 1 데이터 부분의 상기 트랜스코딩은 상기 제 3 노드로부터 전송된 상기 트랜스코딩된 데이터에 관한 정보에 또한 근거하는 방법.
  8. 제 5 항에 있어서,
    상기 제 1 노드에서, 상기 제 2 노드에서 수행된 상기 제 2 데이터 부분의 트랜스코딩에 관한 정보를 수신하는 단계를 더 포함하며, 상기 제 1 노드에서의 상기 트랜스코딩은 상기 제 2 데이터 부분의 상기 트랜스코딩에 관한 상기 정보에 또한 따르는 방법.
KR1020087012072A 2005-10-21 2006-07-21 데이터를 트랜스코딩하는 방법 KR101002112B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/256,565 US20070091928A1 (en) 2005-10-21 2005-10-21 Serial and parallel processing of data using information about the data and information about a streaming network
US11/256,565 2005-10-21

Publications (2)

Publication Number Publication Date
KR20080070017A KR20080070017A (ko) 2008-07-29
KR101002112B1 true KR101002112B1 (ko) 2010-12-16

Family

ID=37103128

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087012072A KR101002112B1 (ko) 2005-10-21 2006-07-21 데이터를 트랜스코딩하는 방법

Country Status (4)

Country Link
US (1) US20070091928A1 (ko)
KR (1) KR101002112B1 (ko)
DE (2) DE112006004258B4 (ko)
WO (1) WO2007046904A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266182B2 (en) * 2006-06-30 2012-09-11 Harmonic Inc. Transcoding for a distributed file system
CA2622367C (en) * 2008-02-04 2015-11-17 Omnivex Corporation Subscription based content delivery for a digital signage network
KR101672287B1 (ko) * 2008-04-07 2016-11-03 엘지전자 주식회사 방송 신호 수신 방법 및 방송 신호 수신 장치
KR101580516B1 (ko) * 2008-04-07 2015-12-28 엘지전자 주식회사 방송 신호 수신 방법 및 방송 신호 수신 장치
EP2404451B1 (en) * 2009-03-04 2016-05-11 Telefonaktiebolaget LM Ericsson (publ) Processing of multimedia data
US8687685B2 (en) 2009-04-14 2014-04-01 Qualcomm Incorporated Efficient transcoding of B-frames to P-frames
KR101285654B1 (ko) * 2011-07-06 2013-08-14 주식회사 씬멀티미디어 메타 데이터와 미디어 데이터가 분리되어 있는 파일 형식의 멀티미디어 컨텐츠를 프로그래시브 다운로드하기 위한 실시간 트랜스코딩 장치
US9307258B2 (en) * 2012-10-30 2016-04-05 Broadcom Corporation Parallel transcoding
US10303716B2 (en) * 2014-01-31 2019-05-28 Nbcuniversal Media, Llc Fingerprint-defined segment-based content delivery
US10032479B2 (en) * 2014-01-31 2018-07-24 Nbcuniversal Media, Llc Fingerprint-defined segment-based content delivery
US9762937B2 (en) * 2014-08-07 2017-09-12 Sonic Ip, Inc. Systems and methods for protecting elementary bitstreams incorporating independently encoded tiles
CN105451031B (zh) * 2015-11-18 2021-11-30 腾讯科技(深圳)有限公司 一种视频转码方法和系统
US10492084B2 (en) 2016-10-10 2019-11-26 Microsoft Technology Licensing, Llc Collaborative communications
JP2023508744A (ja) * 2019-12-02 2023-03-03 ジクシー,エルエルシー 複数の信頼性のないチャネルを介したパケット化データ通信

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050182855A1 (en) * 2004-02-13 2005-08-18 Apostolopoulos John G. Media data transcoding devices

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275536B1 (en) * 1999-06-23 2001-08-14 General Instrument Corporation Implementation architectures of a multi-channel MPEG video transcoder using multiple programmable processors
US20020143850A1 (en) * 2001-03-27 2002-10-03 Germano Caronni Method and apparatus for progressively processing data
US7720105B2 (en) * 2002-04-30 2010-05-18 International Business Machines Corporation Method and arrangement for local synchronization in master-slave distributed communication systems
JP2006031358A (ja) * 2004-07-15 2006-02-02 Ziosoft Inc ボリュームレンダリング等の画像処理システム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050182855A1 (en) * 2004-02-13 2005-08-18 Apostolopoulos John G. Media data transcoding devices

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Distributed video transcoding and its application to grid delivery" COMMUNICATIONS, APCC 2003

Also Published As

Publication number Publication date
DE112006002899T5 (de) 2008-10-09
DE112006002899B4 (de) 2012-07-05
US20070091928A1 (en) 2007-04-26
WO2007046904A1 (en) 2007-04-26
KR20080070017A (ko) 2008-07-29
DE112006004258A5 (de) 2013-01-03
DE112006004258B4 (de) 2020-03-19

Similar Documents

Publication Publication Date Title
KR100942889B1 (ko) 데이터 부분을 최적화하는 방법
KR101002112B1 (ko) 데이터를 트랜스코딩하는 방법
US7558954B2 (en) Method and apparatus for ensuring the integrity of data
JP4987965B2 (ja) メディアデータの分散記憶
EP1417834B1 (en) Encoding and decoding methods for secure scalable streaming and related systems
US7581094B1 (en) Cryptographic checksums enabling data manipulation and transcoding
US6983049B2 (en) Storage devices for secure scalable data streaming
US7349539B2 (en) Encoding and encrypting devices for secure scalable data streaming
US6990202B2 (en) Packetizing devices for secure scalable data streaming
JP2004538677A (ja) 下流側の要件に応じてセキュアでスケーラブルなパケットを中流側でトランスコーディングする方法およびシステム
KR100962852B1 (ko) 데이터를 프로세스하는 방법
WO2006045033A1 (en) Methods and systems that use information about encrypted data packets to determine an order for sending the data packets
KR101041719B1 (ko) 데이터를 프로세싱하는 방법
US7505590B1 (en) Method and system for providing transcodability to frame coded streaming media
KR101150619B1 (ko) 데이터 처리 방법
US20020164017A1 (en) Signal format that facilitates easy scalability of encrypted streams
Zeng et al. Security architectures and analysis for content adaptation
Yu Streaming media encryption
Jeronimo et al. Heather Yu

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131209

Year of fee payment: 4