KR100942889B1 - 데이터 부분을 최적화하는 방법 - Google Patents

데이터 부분을 최적화하는 방법 Download PDF

Info

Publication number
KR100942889B1
KR100942889B1 KR1020087012067A KR20087012067A KR100942889B1 KR 100942889 B1 KR100942889 B1 KR 100942889B1 KR 1020087012067 A KR1020087012067 A KR 1020087012067A KR 20087012067 A KR20087012067 A KR 20087012067A KR 100942889 B1 KR100942889 B1 KR 100942889B1
Authority
KR
South Korea
Prior art keywords
data
information
node
network
packet
Prior art date
Application number
KR1020087012067A
Other languages
English (en)
Other versions
KR20080059316A (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 KR20080059316A publication Critical patent/KR20080059316A/ko
Application granted granted Critical
Publication of KR100942889B1 publication Critical patent/KR100942889B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • 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/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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata

Abstract

본 발명자는 일반적으로 보안성의 위험을 초래하는 트랜스코딩 노드(transcoding node)(160)의 프로세스를 다룬다. 본 발명의 실시예는 트랜스코딩 노드(160)에서 다수의 데이터 스트림(a plurality of data strwam)으로부터의 데이터 부분을 최적화하는 방법 및 그 시스템에 관한 것이다. 먼저, 데이터(502)의 적어도 한 부분을 저장하기 위해 상기 트랜스코딩 노드(160) 상에 적어도 하나의 저장 로케이션(location)(165)이 제공된다. 상기 데이터(502)의 적어도 한 부분에 관한 정보가 액세스된다. 상기 데이터(502)의 적어도 한 부분의 임의의 다른 데이터에 대한 액세스를 필요로 하지 않고 데이터(502)의 부분을 프로세스하기 위해 상기 정보가 이용된다.

Description

데이터 부분을 최적화하는 방법{METHOD FOR OPTIMIZING PORTIONS OF DATA FROM A PLURALITY OF DATA STREAMS AT A TRANSCODING NODE}
본 출원에 대한 관련 출원
본 출원은, 본 출원과 공통 계류 중이며, 그 전체가 본 명세서에서 참조로서 인용되는 "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)에 관련된다.
본 발명의 실시예는 미디어 데이터를 스트리밍하는(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 프레임을 디코딩하는데 사용될 수 있도록 제각기 디스플레이 시각보다 먼저 수신될 필요가 있다. 따라서, 디코더(예를 들어, 클라이언트 또는 목적지 노드)에서 도달하지 않거나 또는 늦게 도달하는 인코딩된 비디오 프레임은 제각기 디스플레이 기한을 놓칠 수 있을 뿐만 아니라, 늦거나 또는 놓치는 프레임의 특정의 코딩 의존성에 따라, 다수의 다른 후속의 프레임이 적절하게 디스플레이되지 못하게 할 수 있다. 이는 디스플레이의 전체 품질에 영향을 줄 수 있다.
따라서, 다양한 클라이언트 성능 및 이질적이고 시변하는 통신 링크를 수용하고 또한 미디어 콘텐츠의 보안성을 유지하는 것 이외에, 네트워크 상에서 성공적인 미디어 스트리밍에 대한 또 다른 열쇠는 패킷이 손실되거나 지연될 수 있는 가능성을 감소시키는 것이다. 통상적인 해결책에서는 이들 성능 중 하나 이상이 결여되어 있거나, 또는 과도하게 복잡하다.
발명의 개요
본 발명의 실시예는 트랜스코딩 노드(transcoding node)에서 다수의 데이터 스트림(a plurality of data strwam)으로부터의 데이터 부분을 최적화하는 방법 및 그 시스템에 관한 것이다. 먼저, 데이터의 부분을 저장하기 위해 상기 트랜스코딩 노드 상에 적어도 하나의 저장 로케이션(location)이 제공된다. 상기 데이터의 부분에 관한 정보가 액세스된다. 상기 데이터의 부분의 임의의 다른 데이터에 대한 액세스를 필요로 하지 않고 데이터의 부분을 프로세스하기 위해 상기 정보가 이용된다.
도면의 간단한 설명
본 명세서의 일부이며 본 명세서에 포함되어 있는 참부 도면은 본 발명의 실시예를 도시하며, 상세한 설명과 함께 본 발명의 원리를 설명하도록 기능한다.
도 1은 본 발명에 따른 실시예가 구현될 수 있는 네트워크의 블록도이고,
도 2는 본 발명에 따른 실시예가 구현될 수 있는 네트워크에서의 병렬 노드의 블록도이며,
도 3은 본 발명에 따른 실시예가 구현될 수 있는 네트워크에서의 직렬 노드의 블록도이고,
도 4는 본 발명에 따른 실시예가 구현될 수 있는 네트워크에서의 직렬 및 병렬 노드의 블록도이며,
도 5는 본 발명의 실시예에 따른 네트워크 노드로 및 노드로부터의 정보의 흐름을 도시하는 도면이고,
도 6은 본 발명에 따른 트랜스코더 장치의 일 실시예의 블록도이며,
도 7은 본 발명의 실시예에 따른 직렬 노드에서의 데이터를 트랜스코딩하는 방법의 플로우차트이고,
도 8은 본 발명의 실시예에 따른 병렬 노드에서의 데이터를 트랜스코딩하는 방법의 플로우차트이며,
도 9는 본 발명의 실시예에 따른 직렬 및 병렬 노드에서의 데이터를 트랜스코딩하는 방법의 플로우차트이고,
도 10은 본 발명에 따른 실시예가 구현될 수 있는 제 2 네트워크의 블록도이며,
도 11은 본 발명에 따른 실시예가 구현될 수 있는 단일 저장 로케이션을 갖는 트랜스코딩 노드의 블록도이고,
도 12는 본 발명에 따른 실시예가 구현될 수 있는 다수의 저장 로케이션을 갖는 트랜스코딩 노드의 블록도이며,
도 13a는 본 발명에 따른 실시예가 구현될 수 있는 데이터베이스 및 태그 저장 장치를 갖는 트랜스코딩 노드의 블록도이고,
도 13b는 본 발명에 따른 실시예가 구현될 수 있는 예시적인 전송 트랜스코딩 노드의 블록도이며,
도 14는 본 발명의 실시예에 따른 단일 저장 로케이션을 갖는 트랜스코딩 노드에서 다수의 데이터 스트림으로부터 데이터를 프로세스하는 방법의 플로우차트이 고,
도 15는 본 발명의 실시예에 따른 다수의 저장 로케이션을 갖는 트랜스코딩 노드에서 다수의 데이터 스트림으로부터 데이터를 프로세스하는 방법의 플로우차트이며,
도 16은 본 발명의 실시예에 따른 데이터베이스 및 태그 조직을 이용하는 트랜스코딩 노드에서의 다수의 데이터 스트림으로부터 데이터를 트랜스코딩하는 방법의 플로우차트이다.
본 상세한 설명에서 참조되는 도면은 특별히 언급하지 않는 한, 축적대로 도시되어 있는 것으로 이해되어서는 안 된다.
이하 본 발명의 각종 실시예에 대한 참조가 상세하게 이루어질 것이며, 이들의 예는 첨부 도면에 도시되어 있다. 본 발명은 이들 실시예와 관련하여 기술될 것이나, 이들 실시예에 제한하도록 의도되어 있지 않다는 것이 이해될 것이다. 오히려, 본 발명은 대안 수정예 및 균등물을 커버하도록 의도되어 있으며, 이들은 첨부되는 청구 범위에 의해 정의되는 바와 같이, 본 발명의 사상 및 범위 내에 포함될 수 있다. 또한, 본 발명의 후술하는 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위해 각종 특정의 세부 사항이 개시되어 있다. 다른 사례에서, 잘 알려진 방법, 프로시쥬어, 구성요소 및 회로는 본 발명의 측면을 불필요할 정도로 불명확하게 하지 않도록 상세하게 기술되어 있지 않다.
본 명세서에서 제공된 설명 및 예는 멀티미디어 데이터(본 명세서에서 미디어 데이터 또는 미디어 콘텐츠로서 또한 지칭됨)의 문맥으로 기술되어 있다. 멀티미디어 데이터의 일례는 오디오 데이터가 수반되는 비디오 데이터(예를 들어, 사운드트랙을 갖는 영화)이다. 그러나, 미디어 데이터는 단지 비디오, 혹은 단지 오디오, 또는 비디오 및 오디오 모두일 수 있다. 일반적으로, 본 발명은, 각종 실시예에서, 스피치(speech) 기반 데이터, 오디오 기반 데이터, 이미지 기반 데이터, 웹 페이지 기반 데이터, 그래픽 데이터 등 및 그 결합과 함께 사용하는데 매우 적합하다.
안전한 스케일러블 ( scalable ) 스트리밍 및 안전한 트랜스코딩
안전한 스케일러블 스트리밍에 의해, 미디어 데이터는 콘텐츠를 복호화하지 않고(또한 디코딩하지 않고), 암호화되고 인코딩된 콘텐츠의 일부를 폐기함으로써, 다운스트림 트랜스코더가 트랜스코딩 동작을 수행하도록 하는 방식으로 인코딩되고 암호화된다.
안전한 스케일러블 스트리밍은 인코딩, 암호화 및 패킷화 동작의 신중한 조정에 근거한다. 본 명세서에서 사용되는 바와 같이, 스케일러블 인코딩은 원래의 데이터를 입력으로서 취하고 스케일러블하게(scalably) 인코딩된 데이터를 출력으로서 생성하는 프로세스로서 정의되며, 여기서 스케일러블하게 인코딩된 데이터는 그 일부가 다양한 품질 레벨에 의해 원래의 데이터를 재구성하는데 사용될 수 있는 특성을 갖는다. 구체적으로, 스케일러블하게 인코딩된 데이터는 내장된 비트스트림으로서 간주될 수 있다. 비트스트림의 일부분은 비트스트림의 나머지로부터 임의의 정보를 필요로 하지 않고, 원래의 데이터의 베이스라인 품질 재구성을 디코딩하는데 사용될 수 있으며, 점진적으로(progressively) 큰 비트스트림의 부분이 원래의 데이터의 향상된 재구성을 디코딩하는데 사용될 수 있다. 예를 들어, 이미지가 해상도에 의해 스케일러블하게 인코딩되는 경우, 데이터의 적은 부분은 저 해상도 이미지를 디코딩하는데 사용될 수 있고, 데이터의 큰 부분은 중간 해상도 이미지를 디코딩하는데 사용될 수 있으며, 모든 데이터는 전체 해상도 이미지를 디코딩하는데 사용될 수 있다. 스케일러블 코딩 표준안은 MPEG-1/2/4 및 H.261/2/3/4, Motion JPEG(Joint Photographic Experts Group) 2000을 포함하는 JPEG 2000 및 3-D 서브밴드 코딩을 들 수 있으며, 이들로만 제한되지 않는다.
본 명세서에서 사용되는 바와 같이, 점진적인 암호화(progressive encryption)는 원래의 데이터(평문(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-feedback), 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를 포함한다. 데이터 패킷은 하나 이상의 패킷이 다른 패킷을 인증할 능력에 영향을 주지 않고 폐기될 수 있도록 독립적으로 인증될 수 있다. 대안적으로, 패킷의 그룹은, 다른 패킷의 그룹을 인증하는 능력에 영향을 주지 않고 그 패킷의 그룹이 폐기될 수 있도록 독립적으로 인증될 수 있다. 상기 암호화 기법은 대칭형 키 기법을 이용하거나 또는 공개/비밀 키 기법을 이용하여 적용될 수 있다.
효과적이고 효류적인 보안성 스케일러블 스트리밍을 달성하기 위해, 스케일러블하게 인코딩되고 점진적으로 암호화된 데이터는 데이터를 복호화하지 않고, 패킷을 절단하거나 혹은 폐기함으로써 트랜스코딩이 수행될 수 있도록 하는 우선 순위 방식으로 데이터 패킷 내에 선정하여 위치된다. 일 실시예에서, 콘텐츠는 점진적으로 암호화되는 데이터 패킷으로 인코딩된다. 암호화되거나 암호화되지 않을 수 있은 헤더는 각각의 패킷과 연관되어 있다. 헤더는 콘텐츠 데이터를 암호화하는데 사용된 기법과 상이한 암호화 기법을 이용하여 암호화될 수 있다. 헤더가 암호화되는 경우, 미디어 콘텐츠를 나타내는 데이터를 복호화하지 않고 헤더가 복호화될 수 있다. 패킷의 헤더는, 예를 들어, 패킷 내에서 절단 포인트(truncation points)를 식별하는 정보를 포함한다. 제 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 정보를 이용하여, 재구성된 이미지의 품질에 대해 덜 영향을 주는 데이터 세그먼트가 식별될 수 있다. 전술한 바와 같이, 트랜스코딩 동안, 덜 중요한 프레임에 대응하는 데이터 세그먼트가 제거(drop)되거나 추출될 수 있다. 특히, 트랜스코딩 동작은 미디어 데이터를 복호화하지 않고 수행된다.
선행 문단에서 설명의 전제는 세그먼트 길이가 문제가 되지 않는다는 것, 즉, 예를 들어, 몇몇 개수의 세그먼트는 그들의 길이에 관계없이 전송될 수 있거나, 또는 세그먼트가 동등한 길이로 되어 있다는 것이다. 비트레이트 제한이 존재하는 경우, 세그먼트 길이는 트랜스코딩 동안 고려할 인자일 수 있으며, 예를 들어, 하나의 보다 긴 세그먼트 대신에 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 네트워크 노드에 전송에 전송된다.
다수의 스트림으로부터의 데이터를 단일 저장 로케이션에 저장
본 명세서에서 기술된 몇몇 실시예가 네트워크를 통해 다수의 로케이션에서 트랜스코딩 노드를 이용한다 하더라도, 도 10에 도시된 바와 같은 단일 트랜스코딩 노드이 이용은 표준적인(또는 이미 확립된) 비트랜스코딩 노드 네트워크 구성이 네트워크 또는 구성요소에 대한 현저한 업그레이드를 필요로 하지 않고 이용되도록 한다는 것이 이해될 것이다. 또한, 단일 트랜스코딩 노드만을 갖는 네트워크의 이용은 트랜스코딩 및 비트랜스코딩 노드의 협력을 갖는 보다 큰 네트워크의 보다 작은 부분을 나타낸다. 예를 들어, 네트워크(151)는 일 실시예에서 도 1의 임의의 서버 노드 또는 모든 서버 노드(예를 들어, (120-123))일 수 있다. 즉, 각각의 서버 노드(120-123)는 출력을 제공하는 단일 트랜스코딩 노드를 갖는 네트워크(151)와 같은 완전한 노드 네트워크를 표시할 수 있다. 일반적으로 트랜스코딩 노드는 네트워크의 중간에 있을 수 있으며, 도 10에 도시된 바와 같이 클라이언트에 반드시 가장 근접하게 있을 필요는 없음에 주목하라. 그러나, 다른 실시예에서, 트랜스코딩 노드는 전송자, 예를 들면, 스트리밍 서버이며 네트워크의 중간에 있지 않다. 또 다른 실시예에서, 트랜스코딩 노드는 클라이언트이다.
예를 들어, 도 13b에 도시한 바와 같이, 출력 대역폭 제한을 갖는 서버 스트리밍 다중 스트림(1129)은 출력 비트 레이트 제한 하의 모든 클라이언트에 의해 보여지는 전체 품질을 극대화하기 위해 어느 패킷을 전송/폐기/절단하는지를 결정하도록 다중 스트림에 걸쳐 적응될 수 있다. 다중 스트림에 걸친 이러한 프로세싱은 현저한 성능 이득을 초래할 수 있다.
따라서, 다중 스트림에 걸친 프로세싱은 (1) 미드 네트워크 트랜스코더(중간 네트워크 노드를 통과하는 다중 스트림에 걸쳐 트랜스코딩함), 또는 (2) 스트리밍 서버(다중 스트림에 걸친 스트리밍을 적응시킴)에서 수행되거나 또는 (3) 노드가 미드 네트워크 노드 및 전송자로서 동시에 작용하는 경우에(몇몇 스트림은 이를 통과하고 또한 이들 몇몇 스트림을 개시하여 전송함) 수행될 수 있다.
다중 스트림 세트는 암호화되거나 암호화되지 않은, 스케일러블하게 인코딩되거나 스케일러블하지 않게 인코딩되는 개별적인 스트림으로 구성될 수 있으며, 비디오, 이미지, 스피치, 오디오, 그래픽, 또는 다른 형태의 미디어 혹은 비미디어(non-media) 데이터에 대응할 수 있다. 개별적인 미디어 스트림은 부분적으로 암호화되고 부분적으로 암호화되지 않을 수 있으며, 또는 부분적으로 스케일러블하게 인코딩되거나 부분적으로 스케일러블하지 않게 인코딩될 수 있다. 다중 스트림은 상기한 것의 임의의 혼합된 결합일 수 있다.
본 명세서에서 기술되고, 도 10에 도시하는 바와 같이, 콘텐츠 소스(110)는 도 1의 동작과 유사한 동작으로 네트워크(151)를 통해 데이터 부분의 데이터를 클라이언트 노드(130)에 전송한다. 즉, 콘텐츠 소스(110)는 미디어 스트림 및 노드(152-157)의 네트워크에 걸쳐 데이터 부분을 분산시키며 이는 트랜스코딩 노드(160)에서 재그룹화될 수 있다. 데이터 부분만이 이용 가능한 경우에도 트랜스코딩하는 것이 가능하다는 것에 주목하라. 따라서 프로세싱을 수행하기 위해 모든 데이터를 재그룹화하는 것은 필요하지 않다. 일 실시예에서, 트랜스코딩 노드(160)는 본 명세서에서 상세하게 기술된 바와 같은 프로세싱 동작을 수행하는 서 버 노드(120-123)와 같은 서버 노드이다. 따라서, 본 명세서에서 기술된 바와 같이, 트랜스코딩 노드(160)는 컴퓨터 시스템 뿐만 아니라, 전형적으로 컴퓨터 시스템으로 간주되지 않으나 유사한 성능을 가질 수 있는 다른 유형의 장치일 수 있다.
일반적으로 본 명세서에서 기술된 바와 같이, 일 실시예에서, 트랜스코딩 노드(160)는 다수의 미디어 스트림으로부터 수신된 데이터 부분의 프로세싱을 수행할 수 있는 네트워크 노드이다. 즉, 일 실시예에서, 다수의 스트림은 트랜스코딩 노드(160)에서 수신된다. 스트림은 적어도 하나 및 통상적으로 다수의 데이터 부분을 트랜스코딩 노드(160)에 제공한다.
통상적으로, 각종 미디어 스트림을 통한 데이터 부분(예를 들어, 데이터 패킷 등)의 분산은 네트워크 상에서의 트래픽 분산을 허용한다. 이러한 분산은, 동일한 경로 상에서 데이터가 정체되지 않으므로 네트워크에 대한 스루풋을 증대시킬 수 있다. 네트워크 내에서 하나의 경로가 감속되거나, 막히거나, 또는 다르게 정상 용량에서 동작하는 않는 경우 이러한 성능은 더욱 가치를 가질 것이다. 추가적으로, 네트워크(151) 상에서 상이한 루트를 이동하는 데이터의 부분으로 데이터를 분산시키는 것은, 네트워크(151)의 각각의 노드(152-157)가 전체 데이터 파일의 부분만을 수신할 것이므로 네트워크의 보안성을 증대시킬 것이다. 일 실시예에서, 사용자는 네트워크에 걸친 데이터 패킷의 분산을 명시적으로 선택할 수 있다. 다른 실시예에서, 네트워크 라우터가 네트워크에 걸친 데이터 패킷의 확산을 수행할 수 있다.
발생할 수 있는 문제는 노드(160)가 다수의 미디어 스트림을 입력으로서 수신하되, 총 수신된 대역폭보다 낮은 출력 대역폭 제한을 갖는 것이다. 예를 들어, 트랜스코딩 노드(160)는 500 kb/s의 총 수신된 비트 레이트에 대응하는 다수의 입력 스트림을 수신하나, 출력 대역폭은 400 kb/s로 제한되어 있다. 트랜스코딩 노드(160)는 입력 중인 동일한 레이트에서 데이터를 출력하는 것이 가능하지 않은 경우 데이터를 저장하고 프로세스하기 시작할 것이다. 일 실시예에서, 이것은 미디어 출력의 수(또는 이용 가능한 대역폭)가 미디어 입력의 수(또는 이용 가능한 대역폭)보다 적은 경우에 발생할 것이다. 이러한 불균형이 발생하는 경우, 데이터의 부분에 병목이 생기지 않고, 데이터의 너무 많은 부분이 제거되지 않도록 보장하기 위해 적절한 기법이 요구된다. 본 명세서에서 상세하게 기술된 바와 같이, 상기 문제를 극복하기 위한 일 실시예는 수신 클라이언트가 (품질이 감소하더라도) 사용 가능한 스트림을 수신할 것을 보장하기 위해 적절한 데이터의 부분이 출력되는 것을 보장하도록 데이터를 프로세스하는 것이다.
예를 들어, 본 명세서에서 기술되는 바와 같이, 로드가 불균형으로 되는 경우(예를 들어, 출력보다 입력이 많은 경우), 패킷을 프로세스할 지의 여부에 관한 결정, 수행될 프로세싱의 정도에 관한 결정(예를 들어, 패킷을 얼마나 절단하고 어느 패킷이 절단되는지 또는 패킷을 얼마나 제거하고 어느 패킷이 제거되는지), 및 어느 패킷을 출력할 지에 관한 결정(예를 들어, 다른 미드 네트워크 노드 또는 클라이언트 노드일 수 있는 다음의 다운스트림 노드에 이들 패킷을 전송하는 것)이 요구된다. 각종 실시예에서, 트랜스코딩 노드(160)는 "로컬 소스 정보", "이웃 소스 정보", "로컬 네트워크 관측"(측정을 포함함), 및/또는 "이웃 네트워크 관측"(측정을 포함함)을 이용하여 프로세싱 결정(들)을 행한다. 실시예에 따라, 이러한 정보의 전ㅂ부 또는 일부만이 트랜스코딩 노드(160)에서 이용 가능하다.
도 11 및 도 14를 참조하면, 블록(702)에서, 다수의 스트림 중 적어도 하나로부터 수신된 데이터의 적어도 한 부분을 저장하기 위해 단일 저장 로케이션이 트랜스코딩 노드 상에 제공된다. 즉, 각각의 데이터의 부분, 데이터의 패킷 등은 수신되는 입력 스트림(1109)에 관계없이 단일 저장 로케이션(예를 들어, 버켓(bucket) 또는 버퍼 또는 메모리 또는 저장 장치의 형태)(165)으로 진행한다. 일 실시예에서, 데이터는 인코딩되어 패킷화된다. 인코딩된 데이터는 스케일러블하거나 스케일러블하지 않게 코딩될 수도 있다. 데이터는 또한 코딩되지 않을 수도 있다(생(raw) 포맷). 다른 실시예에서, 데이터는 암호화된다.
블록(704)에서, 데이터의 부분에 관한 정보가 액세스된다. 일 실시예에서, 데이터의 부분에 관한 정보는 본 명세서에서 상세하게 기술된 패킷 헤더(또는 힌트 트랙과 같은 메타데이터, 또는 다른 패킷의 페이로드, 또는 다른 유사한 피쳐)에 저장된다. 즉, 데이터 패킷 내의 데이터를 실질적으로 액세스하는 대신에, 트랜스코딩 노드는 데이터 패킷 레이아웃의 개요를 제공하는 헤더(메타데이터 또는 힌트 트랙 정보 등)를 액세스할 것이다. 예를 들어, 이러한 정보는 데이터가 스케일러블하게 또는 스케일러블하지 않게 인코딩되었는지 여부, 스케일러블도의 레벨이 무엇인지, 절단 포인트가 어디에 위치하는지, 및 데이터의 중요도 등을 포함할 수 있다.
일 실시예에서, 데이터의 부분에 관한 정보는 본 명세서에서 기술된 R-D 정보를 액세스하는 것을 또한 포함한다. 즉, 데이터 부분의 크기를 결정하기 위한 레이트 평가 및/또는 패킷 내의 데이터 값을 결정하기 위한 디스토션 평가인데, 이들 모두가 본 명세서에서 상세하게 기술되어 있다.
블록(706)에서, 일 실시예는 데이터의 부분 내에서 임의의 다른 데이터에 대한 액세스를 필요로 하지 않고 데이터의 부분을 프로세스하기 위해 상기 정보를 이용한다. 즉, 결정이 데이터를 프로세스하는 것이면, 데이터는 데이터에 관한 정보 및 네트워크에 관한 정보를 이용하여 프로세스된다. 예를 들어, 데이터가 트랜스코딩되는 정도는 본질적으로 프로세싱이 완료되는 경우 폐기될 데이터의 양(또는 유지될 데이터의 양)을 지칭한다. 예를 들어, 트랜스코딩될 데이터 패킷 내의 데이터에 의해 표시되는 3 레벨의 해상도가 존재하면, 트랜스코딩 결정은 모든 3개의 레벨을 유지할지 혹은 1개 또는 2개의 레벨을 폐기할지를 수반한다. 트랜스코딩 결정은 또한 데이터 패킷이 전체적으로 제거되는 것을 초래할 수 있다. 다른 예에서, 원래의 미디어 스트림은 100 kb/s를 필요로 할 수 있으나, 80 kb/s의 출력 대역폭 제한이 존재할 수 있으며, 따라서 트랜스코딩 노드가 이용 가능한 대역폭 내에서 적합하도록 출력 비트레이트를 저감시킬 것을 필요로 한다.
본 명세서에서 기술된 바와 같이, 일 실시예에서, 프로세싱을 지휘하는데 사용될 수 있는 추가적인 정보는 로컬 소스 정보를 포함하며, 네트워크에 관한 정보는 로컬 네트워크 관측을 포함한다. 다른 실시예에서, 상기와 마찬가지로, 데이터에 관한 정보는 이웃 소스 정보를 또한 포함하고, 네트워크에 관한 정보는 이웃 네트워크 관측을 또한 포함한다.
데이터의 부분 내의 데이터를 실질적으로 액세스하는 대신에, 데이터의 부분을 프로세스하는데 데이터의 부분에 관한 정보(예를 들어, 패킷 헤더 등)를 이용함으로써, 현재의 단일 노드 트랜스코더(160A)는 데이터의 부분이 암호화되는지에 관계없이 데이터의 부분을 프로세스하는 것이 가능하다. 예를 들어, 데이터의 부분이 본 명세서에서 기술된 바와 같은 스케일러블 코딩에 의해 점진적인 암호화 포맷으로 암호화되고, 스케일러블 코딩이 정보(예를 들어, 헤더 등)에 제공되는 경우, 트랜스코딩 노드는 데이터의 부분을 복호화하지 않고 데이터의 스케일러블 부분을 절단할 수 있다.
다른 실시예에서, 데이터의 부분에 관한 정보(예를 들어, 헤더 또는 힌트 트랙 또는 다른 메타데이터의 형태)는 데이터의 부분 내의 데이터의 나머지와 상이한 암호화 알고리즘을 이용하여 암호화될 수 있다. 따라서, 이러한 정보는 데이터 자체가 암호화된 채로 유지되면서 평가 및 사용을 위해 복호화될 수 있다. 이러한 방식으로, 트랜스코딩 노드에서의 데이터의 보안성이 유지된다.
일 실시예에서, 트랜스코딩 노드(160A) 내의 데이터 부분은 단일 저장 로케이션에 저장되므로, 입력 미디어 스트림(1109)에 관계없이, 데이터 패킷은 이들이 수신되고 순서대로 프로세스되는 경우 큐에 위치된다. 즉, 데이터 패킷이 입력함에 따라 큐에 위치하고 데이터 패킷이 출력됨에 따라(1129) 큐는 전방으로 하나 이동한다(또는 다수의 패킷,예를 들어, 10개의 패킷이 출력되면, 큐는 10만큼 전진함). 다른 실시예에서, 데이터 패킷은 이들이 수신될 때 상이한 방식으로 조직된다. 예를 들어, 시간 및 크기, 또는 중요도, 또는 크기에 의해 정규화된 중요도에 의해 큐 내에 위치하거나, 또는 트랜스코딩 노드(160A)에 의해 정의되는 다른 매트릭스에 위치한다.
이제 도 12를 참조하면, 트랜스코딩 노드(160B)는 다수의 입력 스트림(1109)을 수신하는 것으로 도시되어 있다. 그러나, 트랜스코딩 노드(160A)와 달리, 트랜스코딩 노드(160B)는 실질적인 또는 가상적인(또는 실질적인 것과 가상적인 것의 결합) 저장 로케이션에서 데이터의 부분을 유지할 것이다. 즉, 데이터의 부분은 수신되는 순서 뿐만 아니라 그로부터 데이터의 부분이 도달한 미디어 스트림을 참조하여 유지될 것이다. 예를 들어, 제 1 입력(1109A) 상에 수신된 미디어는 제 1 저장 로케이션(165A)에 저장될 것이고, 제 2 입력(1109B) 상에 수신된 미디어는 제 2 저장 로케이션(165B)에 저장될 것이며, 제 3 입력(1109C)으로부터 수신된 미디어는 제 3 저장 로케이션(165C)에 저장될 것이다.
따라서, 입력 미디어 스트림(1109)이 일정한 레이트에서 데이터의 패킷을 제공하는 경우, 트랜스코딩 노드(160B)는 입력 중인 동일한 레이트에서 데이터를 더 이상 출력할 수 없을 때 데이터를 저장하기 시작할 것이다. 일 실시예에서, 이것은 출력(1129)의 수(또는 이용 가능한 대역폭)이 입력(1109)의 수(또는 이용 가능한 대역폭)보다 적은 경우 발생할 것이다.
이러한 입/출력 불균형이 발생하는 경우, 데이터의 부분에 병목이 생기지 않고, 데이터의 너무 많은 데이터의 부분이 제거되지 않는 것을 보장하기 위해 적절한 기법이 요구된다. 본 명세서에서 상세하게 기술되는 바와 같이, 부하를 밸런싱하는 일 실시예는 수신 클라이언트 노드가 (품질이 감소하더라도) 사용 가능한 스트림을 수신할 것을 보장하기 위해 적절한 데이터의 부분이 출력되는 것을 보장하도록 데이터를 프로세스하는 것이다.
도 12 및 도 15를 참조하면, 블록(802)에서, 다수의 스트림 중 적어도 하나로부터 수신된 데이터의 적어도 한 부분을 저장하기 위해 다수의 저장 로케이션(165A-165C)이 트랜스코딩 노드 상에 제공되며, 여기서 상기 다수의 저장 로케이션의 각각은 상기 다수의 데이터 스트림의 각각에 관련된다. 즉, 본 명세서에서 기술되는 바와 같이, 데이터의 부분은 수신되는 순서 뿐만 아니라, 그로부터 데이터의 부분이 도달한 미디어 스트림을 참조하여 유지될 것이다. 예를 들어, 제 1 입력(1109A) 상에 수신된 미디어는 제 1(물리적 또는 가상적) 저장 로케이션(165A)의 큐에 저장될 것이고, 제 2 입력(1109B) 상에 수신된 미디어는 제 2 저장 로케이션(165B)의 큐에 저장될 것이며, 제 3 입력(1109C) 상에 수신된 미디어는 제 3 저장 로케이션(165C)의 큐에 저장될 것이다. 일 실시예에서, 데이터는 인코딩되어 패킷화된다. 인코딩된 데이터는 스케일러블하거나 스케일러블하지 않게 코딩될 수도 있다. 다른 실시예에서, 데이터는 암호화된다. 데이터는 또한 코딩되지 않을 수도 있다(새로운 포맷).
일 실시예에서, 데이터의 부분이 수신되는 각각의 미디어 스트림(1109)과 관련하여 데이터의 부분을 추적하는 것은 각각의 스트림에 대해 4중(소스 IP 어드레스, 소스 포트, 목적지 IP 어드레스, 포트 목적지)을 추적하는 문제이다. 이러한 정보는 논리적 버퍼를 생성함으로써 유지될 수 있으며 여기서 IP 어드레스 및 포트 번호는 스트림 식별자로서 사용된다. 일 실시예에서, 이러한 정보는 데이터베이스 의 일부분일 수 있거나 또는 데이터 패킷의 헤더 정보에 대해 수정(또는 그로부터 판독)될 수 있다.
블록(804)에서, 데이터의 부분에 관한 정보가 액세스된다. 일 실시예에서, 데이터의 부분에 관한 정보는 본 명세서에서 상세하게 기술된 헤더(또는 힌트 트랙 또는 메타데이터 또는 유사한 피쳐)에 저장된다. 즉, 데이터 패킷 내의 데이터를 실질적으로 액세스하는 대신에, 트랜스코딩 노드는 데이터 패킷 레이아웃의 개요를 제공하는 헤더를 액세스할 것이다. 예를 들어, 헤더는 데이터가 스케일러블지 또는 비스케일러블지 여부, 스케일러블도의 레벨이 무엇인지, 절단 포인트가 어디에 위치하는지, 및 데이터의 중요도 등과 같은 정보를 포함할 것이다.
일 실시예에서, 데이터의 부분에 관한 정보는 본 명세서에서 기술된 R-D 정보를 액세스하는 것을 또한 포함한다. 즉, 데이터 부분의 크기를 결정하기 위한 레이트 평가 및/또는 패킷 내의 데이터 값을 결정하기 위한 디스토션 평가인데, 이들 모두는 본 명세서에서 상세하게 기술되어 있다.
블록(806)에서, 일 실시예는 데이터의 부분 내의 임의의 다른 데이터에 대한 액세스를 필요로 하지 않고 데이터의 부분을 프로세스하기 위해 상기 정보를 이용한다. 즉, 결정이 데이터를 프로세스하는 것이면, 데이터는 데이터에 관한 정보 및 네트워크에 관한 정보를 이용하여 프로세스된다. 예를 들어, 데이터가 프로세스되는 정도는 본질적으로 프로세싱이 완료되는 경우 폐기될 데이터의 양(또는 유지될 데이터의 양)을 지칭한다. 예를 들어, 프로세스될 데이터 패킷 내의 데이터에 의해 표시되는 3 레벨의 해상도가 존재하면, 프로세싱 결정은 모든 3개의 레벨을 유지할지 혹은 1개 또는 2개의 레벨을 폐기할지를 수반한다. 프로세싱 결정은 또한 데이터 패킷이 전체적으로 제거되는 것을 초래할 수 있다. 본 명세서에서 기술된 바와 같이, 일 실시예에서, 데이터에 관한 정보는 로컬 소스 정보를 포함하며, 네트워크에 관한 정보는 로컬 네트워크 관측을 포함한다. 다른 실시예에서, 상기와 마찬가지로, 데이터에 관한 정보는 이웃 소스 정보를 또한 포함하고, 네트워크에 관한 정보는 이웃 네트워크 관측을 또한 포함한다.
데이터의 부분 내의 데이터를 실질적으로 액세스하는 대신에 데이터의 부분을 프로세스하는데 데이터의 부분에 관한 정보(예를 들어, 헤더 등)를 이용함으로써, 현재의 단일 노드 트랜스코더(160B)는 데이터의 부분이 암호화되는지에 관계없이 데이터의 부분을 프로세스하는 것이 가능하다. 예를 들어, 일 실시예에서, 데이터의 부분이 본 명세서에서 기술된 바와 같은 스케일러블 코딩에 의해 점진적인 암호화 포맷으로 암호화되고, 스케일러블 코딩이 정보(예를 들어, 헤더 등)에 제공되는 경우, 트랜스코딩 노드는 데이터의 부분을 복호화하지 않고 데이터의 스케일러블 부분을 절단할 수 있다. 본 명세서에서 점진적인 암호화가 언급되었다 하더라도, 본 명세서에서 기술된 실시예와 관련하여 다수의 암호화 방법이 이용될 수 있음이 이해될 것이다. 본 명세서에서 점진적인 암호화는 단지 간략성 및 명확성을 위해 사용된다.
다른 실시예에서, 데이터의 부분에 관한 정보(예를 들어, 헤더 또는 힌트 트랙 또는 다른 메타데이터의 형태)는 데이터의 부분 내의 데이터의 나머지와 상이한 암호화 알고리즘을 이용하여 암호화될 수 있다. 따라서, 이러한 정보는 데이터 자체가 암호화된 채로 유지되면서 평가 및 사용을 위해 복호화될 수 있다. 이러한 방식으로, 트랜스코딩 노드에서의 데이터의 보안성이 유지된다.
일 실시예에서, 트랜스코딩 노드(160B) 내의 데이터의 부분은 입력 미디어 스트림(1109)에 근거하여 복수의 저장 로케이션에 저장되므로, 데이터 패킷은 이들이 수신되는 경우 큐에 위치되며, 이들이 수신되는 스트림에 근거하여 순서대로 프로세스된다. 즉, 데이터 패킷이 입력함에 따라 큐에 위치하고 데이터 패킷이 출력됨에 따라 큐는 스트림 기반으로 전방으로 하나 이동한다(또는 다수의 패킷,예를 들어, 10개의 패킷이 출력되면, 큐는 10만큼 전진함).
패킷이 전송되는 경우 각각의 스트림을 구체적으로 추적하고 해당 정보를 활용함으로써, 트랜스코딩 노드(160B)는 프로세싱을 수행하기 위한 상이한 스트림의 다양성을 활용하는 것이 가능하다. 예를 들어, 단일 데이터 스트림 입력(1109A)로부터 다수의 데이터를 미지의 상태로 프로세싱하는 대신에, 예를 들어, 미디어 스트림에 걸쳐 프로세싱 효과를 균일하게 공유하는 것이 가능하며, 트랜스코딩 노드(160B)는 각각의 미디어 스트림(1109A-1109C)으로부터 데이터의 부분이 프로세스되는 것을 보장할 수 있다.
보다 중요하게는, 프로세싱은 보다 정교한 성능을 제공하기 의해 상이한 미디어 스트림에 걸쳐 수행될 수 있다. 예를 들어, 프로세싱은 각각의 스트림이, 예를 들어, 동일한 디스토션의 양에 의해 영향을 받도록, 모든 스트림에 걸쳐 초래되는 디스토션을 공평하게 공유하도록 스트림에 걸쳐 수행될 수 있다. 다른 예로서, 프로세싱은 모든 스트림에 걸쳐 본 전체 디스토션을 최소화하기 위해 상이한 스트 림에 걸쳐 수행될 수 있다(이 경우 각각의 스트림은 상이한 디스토션에 의해 영향을 받을 수 있지만, 모든 스트림에 걸쳐 합산되는 총 디스토션이 최소화됨). 다른 예로서, 프로세싱은 임의의 단일 스트림에 영향을 주는 최대 디스코션을 최소화하기 위해 상이한 스트림에 걸쳐 수앵될 수 있다. 다른 예로서, 상이한 스트림은 상이한 품질의 몇몇 요건을 가질 수 있으며(예를 들어, 각각의 스트림은 상이한 최대 수용 가능한 디스토션을 가질 수 있음), 따라서 프로세싱은 각각의 스트림에 대한 QoS 요건을 적절하게 충족하기 위해, 예를 들어, 각각의 스트림에 대한 최대 디스토션을 적절한 값으로 제한하기 위해, 상이한 스트림에 걸쳐 수행될 수 있다.
이제 도 13a를 참조하면, 트랜스코딩 노드(160C)는 다수의 입력 스트림(1109)을 수신하는 것으로 도시되어 있다. 그러나, 트랜스코딩 노드(160C)는 그 수신된 입력 대역폭보다 낮은 출력 대역폭 제한을 가질 수 있다. 따라서, 입력 미디어 스트림(1109)이 일정한 레이트에서 데이터의 패킷을 제공하는 경우, 트랜스코딩 노드(160C)는 입력 중인 것과 동일한 레이트에서 데이터를 더 이상 출력할 수 없을 때 데이터를 저장하기 시작할 것이다. 일 실시예에서, 이것은 출력(1129)의 수(또는 이용 가능한 대역폭)가 입력(1109)의 수(또는 이용 가능한 대역폭)보다 적은 경우 발생할 것이다.
이러한 입/출력 불균형이 발생하는 경우, 데이터의 부분에 병목이 생기지 않고, 데이터의 너무 많은 부분이 제거되지 않도록 보장하기 위해 적절한 기법이 요구된다. 본 명세서에서 상세하게 기술되는 바와 같이, 부하를 밸런싱하는 일 실시예는 수신 클라이언트 노드가 (품질이 감소된 경우) 사용 가능한 스트림을 수신할 것을 보장하기 위해 데이터의 적절한 부분이 출력되는 것을 보장하도록 데이터를 프로세스하는 것이다.
일반적으로, 트랜스코딩 노드(160C)는 트랜스코딩 노드(160A)와 같은 단일 저장 방법에서 동작하거나, 또는 트랜스코딩 노드(160B)에서 기술한 것과 같은 다수의 실질적 또는 가상적(또는 실질적인 것과 가상적인 것의 결합) 저장 로케이션을 이용하는 것이 가능하다. 그러나, 트랜스코딩 노드(160A) 및 트랜스코딩 노드(160B)와 달리, 트랜스코딩 노드(160C)는 데이터의 부분으로부터 정보(예를 들어, 헤더 등)를 저장하기 위한 데이터베이스를 이용한다. 즉, 노드(160C)는 초기에 정보(예를 들어, 헤더 등)를 판독하고 정보(예를 들어, R-D 정보, 네트워크 정보 등)를 데이터베이스에 저장한다. 데이터의 부분(또는 데이터 패킷)은 그 다음에 데이터베이스 엔트리를 지정하는 포인터에 의해 태그된다. 예를 들어, 스트링 1 - 레이트 정보, 스트링 2 - 디스토션 정보 등이다. 데이터 패킷에 관한 정보를 초기에 판독하고 저장함으로써, 이후의 시점에서 모든 헤더 정도를 다시 재판독할 필요가 없으므로 트랜스코딩 프로세스는 보다 효율적일 수 있다.
도 12 및 도 16을 참조하면, 블록(902)에서, 다수의 스트림 중 적어도 하나로부터 수신된 데이터의 적어도 한 부분을 저장하기 위해 적어도 하나의 저장 로케이션(165)이 트랜스코딩 노드 상에 제공된다. 다른 실시예에서, 본 명세서에서 기술되는 바와 같이, 상기 다수의 저장 로케이션의 각각은 상기 다수의 데이터 스트림의 각각에 관련될 것이다. 즉, 본 명세서에서 사용되는 바와 같이, 데이터의 부분은 단일 저장 로케이션 내에서 수신되는 순서로, 또는 그로부터 도달되는 미디어 스트림을 참조하고 수신되는 순서로 유지될 수도 있다.
블록(904)에서, 데이터의 부분에 관한 정보가 액세스된다. 일 실시예에서, 데이터의 부분에 관한 정보는 본 명세서에서 상세하게 기술된 헤더(또는 유사한 피쳐)에 저장된다. 즉, 데이터 패킷 내의 데이터를 실질적으로 액세스하는 대신에, 트랜스코딩 노드는 데이터 패킷 레이아웃의 개요를 제공하는 헤더를 액세스할 것이다. 예를 들어, 헤더는 데이터가 스케일러블지 또는 비스케일러블지 여부, 스케일러블도의 레벨이 무엇인지, 절단 포인트가 어디에 위치하는지 등과 같은 정보를 포함할 것이다.
일 실시예에서, 데이터의 부분에 관한 정보는 본 명세서에서 기술된 R-D 정보를 액세스하는 것을 또한 포함한다. 즉, 데이터 부분의 크기를 결정하기 위한 레이트 평가 및/또는 패킷 내의 데이터 값을 결정하기 위한 디스토션 평가인데, 이들 모두가 본 명세서에서 상세하게 기술되어 있다.
블록(906)에서, 데이터베이스(168) 엔트리는 데이터의 부분에 관한 정보에 근거하여 트랜스코딩 노드(165C)에서 생성된다. 일 실시예에서, 정보는 헤더 또는 힌트 트랙 또는 메타데이터로부터의 R-D 정보 또는 유사한 정보이다. 블록(908)에서, 태그는 데이터의 부분에 관한 정보의 데이터베이스 엔트리를 지정하도록 생성된다. 블록(910)에서, 데이터베이스 엔트리를 지정하도록 생성된 태그는 데이터의 부분과 상관된다.
블록(912)에서 일 실시예는 데이터의 부분 내의 임의의 다른 데이터에 대한 액세스를 필요로 하지 않고 또한 데이터의 부분을 수반하는 정보(예를 들어, 헤더 등)의 재참조를 필요로 하지 않고 데이터의 부분을 프로세스하기 위해 태그 및 데이터베이스를 이용한다. 즉, 결정이 데이터를 프로세스하는 것이면, 데이터는 데이터베이스 및 태그를 이용하여 프로세스된다. 예를 들어, 데이터가 프로세스되는 정도는 본질적으로 프로세싱이 완료되는 경우 폐기될 데이터의 양(또는 유지될 데이터의 양)을 지칭한다. 예를 들어, 트랜스코딩될 데이터 패킷 내의 데이터에 의해 표시되는 3 레벨의 해상도가 존재하면, 트랜스코딩 결정은 모든 3개의 레벨을 유지할지 혹은 1개 또는 2개의 레벨을 폐기할지를 수반한다. 프로세싱 결정은 또한 데이터 패킷이 전체적으로 제거되는 것을 초래할 수 있다. 본 명세서에서 기술된 바와 같이, 일 실시예에서, 데이터에 관한 정보는 로컬 소스 정보를 포함하며, 네트워크에 관한 정보는 로컬 네트워크 관측을 포함한다. 다른 실시예에서, 상기와 마찬가지로, 데이터에 관한 정보는 이웃 소스 정보를 또한 포함하고, 네트워크에 관한 정보는 이웃 네트워크 관측을 또한 포함한다.
헤더, 데이터의 부분 내의 데이터 등을 실질적으로 액세스하는 대신에 데이터의 부분을 프로세스하는데 태그를 이용함으로써, 현재의 단일 노드 트랜스코더(160C)는 데이터의 부분이 암호화되는지에 관계없이 데이터의 부분을 프로세스하는 것이 가능하다. 예를 들어, 데이터의 부분이 본 명세서에서 기술된 바와 같은 스케일러블 코딩에 의해 인코딩되고, 스케일러블 코딩이 데이터베이스에 제공되는 경우, 트랜스코딩 노드는 데이터의 부분을 복호화하지 않고 데이터의 스케일러블 부분을 절단할 수 있다. 다른 실시예에서, 데이터의 부분에 관한 정보는 데이터의 부분 내의 데이터의 나머지와 상이한 암호화 알고리즘으로 암호화될 수 있다. 따라서, 헤더는 (하나의 경우에서) 데이터 패킷 내의 데이터의 나머지가 암호화된 채로 유지되는 동안 평가 및 저장을 위해 복호화될 수 있다. 따라서, 트랜스코딩 노드(160C)에서의 데이터의 보안성이 유지된다.
일 실시예에서, 트랜스코딩 노드(160C) 내에서 데이터 부분은 입력 미디어 스트림(1109)에 근거하여 다수의 저장 로케이션에 저장되므로, 태그가 생성되는 경우, 데이터베이스 엔트리는 큐에 데이터 패킷 로케이션을 또한 포함할 수 있으며, 예를 들어, 데이터 패킷이 수신되는 경우, 이들이 수신되는 시각 및/또는 스트림에 근거하여 데이터 패킷이 순서대로 프로세스되는 것을 보장하도록 보조함으로써 효율성을 증대시킬 수 있다. 또한, 데이터베이스 및 연관된 태그를 이용함으로써, 큐 또는 다중 저장 로케이션 방법을 이용하지 않고 데이터의 패킷을 추적하는 것이 가능하다. 즉, 데이터베이스가 선형적이므로, 예를 들어, 제 2 엔트리가 제 1 엔트리 이전에 입력될 수 없으므로, 데이터베이스에 근거하여 데이터의 부분을 출력하는 프로세스는 디폴트로(by default) 선형적이다. 즉, 패킷이 데이터베이스로부터 제거됨에 따라, 리스트는 하나(또는 그 이상) 상승하여 이동한다. 따라서, 데이터베이스 및 태그 방법이 사용되는 경우 복잡한 또는 정교한 저장 로케이션은 필요하지 않다.
요약하면, 그 각종 실시예에서, 본 발명은 네트워크에서 미디어 데이터를 스트리밍하는 방법 및 시스템을 제공한다. 데이터는 다양한 클라이언트 성능을 수용하도록 프로세스된다. 데이터가 암호화되는 경우, 복호화 없이 프로세스되어, 데이터의 보안성을 유지할 수 있다. 프로세싱 결정은 네트워크의 이질적이고 시변하 는 통신 링크의 속성을 포착하는 다수의 정보 항목에 근거한다. 서버 노드에 걸쳐 프로세싱 동작을 밸런싱함으로써, 또한 몇몇 예에서 프로세싱 동작을 병렬로 수행함으로써, 패킷이 손실되거나 지연되는 가능성이 감소된다.
본 발명의 실시예가 이상 기술되었다. 본 발명은 특정의 실시예에서 기술되었으나, 본 발명은 이러한 실시예에 의해 제한되는 것으로서 해석되어서는 안되며, 후술하는 청구 범위에 따라 해석된다는 것이 이해될 것이다.

Claims (10)

  1. 트랜스코딩 노드(transcoding node)(160)에서 다수의 데이터 스트림(a plurality of data strwam)으로부터의 데이터 부분을 최적화하는 방법으로서,
    상기 다수의 데이터 스트림의 적어도 하나로부터 수신된 데이터(502)의 적어도 한 부분을 저장하기 위해 상기 트랜스코딩 노드(160) 상에 적어도 하나의 저장 로케이션(location)(165)을 제공하는 단계와,
    상기 데이터(502)의 적어도 한 부분에 관한 정보에 액세스하는 단계와,
    상기 데이터(502)의 적어도 한 부분의 임의의 다른 데이터에 대한 액세스를 필요로 하지 않고 상기 데이터(502)의 부분을 프로세싱하기 위해 상기 정보를 이용하는 단계를 포함하며,
    상기 데이터(502)의 적어도 한 부분에 관한 정보에 액세스하는 단계는,
    상기 데이터(502)의 적어도 한 부분의 크기를 결정하기 위해 상기 데이터(502)의 적어도 한 부분의 헤더 상에 저장된 레이트 평가(rate evaualtion)에 액세스하는 단계와,
    상기 데이터(502)의 적어도 한 부분의 데이터 값을 결정하기 위해 상기 데이터(502)의 적어도 한 부분의 상기 헤더 상에 저장된 디스토션 평가(distortion evaluation)에 액세스하는 단계와,
    상기 데이터(502)의 적어도 한 부분의 중요도를 결정하기 위해 상기 데이터(502)의 적어도 한 부분의 상기 헤더 상에 저장된 중요도 평가에 액세스하는 단계를 포함하고,
    상기 데이터(502)의 부분을 프로세싱하는 것은 상기 데이터(502)의 적어도 한 부분의 저장된 평가 및 레이트 평가에 근거하여 데이터(502)의 비스케일러블(non-scalable) 부분을 제거함으로써 상기 트랜스코딩 노드(160)에서 데이터를 프로세싱하는 것을 포함하는
    데이터 부분을 최적화하는 방법.
  2. 제 1 항에 있어서,
    데이터(502)의 적어도 한 부분을 저장하기 위해 상기 트랜스코딩 노드(160) 상에 다수의 저장 로케이션(165)을 제공하는 단계로서, 상기 다수의 저장 로케이션(165)의 각각은 다수의 데이터 스트림의 각각에 관련되는 단계를 더 포함하는
    데이터 부분을 최적화하는 방법.
  3. 제 2 항에 있어서,
    상기 다수의 저장 로케이션(165)은 상기 트랜스코딩 노드(160) 상에서의 실제의 저장 로케이션(165)인,
    데이터 부분을 최적화하는 방법.
  4. 제 2 항에 있어서,
    상기 다수의 저장 로케이션(165)은 상기 트랜스코딩 노드(160) 상에서의 가상의 저장 로케이션(165)인,
    데이터 부분을 최적화하는 방법.
  5. 삭제
  6. 삭제
  7. 제 1 항에 있어서,
    스케일러블(scalable) 코딩으로 암호화 포맷에 의해 상기 데이터(502)의 적어도 한 부분을 암호화하는 단계로서, 상기 암호화 및 상기 스케일러블 코딩은 상기 데이터(502)의 암호화된 부분의 헤더에서 표현되는 단계를 더 포함하는
    데이터 부분을 최적화하는 방법.
  8. 제 7 항에 있어서,
    상기 데이터(502)의 부분을 프로세싱하는 것은,
    상기 데이터(502)의 암호화된 부분의 상기 헤더에 저장된 스케일러블 코딩 정보에 근거하여 데이터(502)의 스케일러블 부분을 절단(truncating)함으로써 상기 트랜스코딩 노드(160)에서 데이터를 프로세싱하는 것을 더 포함하는
    데이터 부분을 최적화하는 방법.
  9. 제 1 항에 있어서,
    스케일러블 코딩으로 암호화 포맷에 의해 상기 데이터(502)의 부분을 암호화하는 단계로서, 상기 암호화 및 상기 스케일러블 코딩은 상기 데이터(502)의 부분에 관한 상기 정보에서 표현되는 단계를 더 포함하는
    데이터 부분을 최적화하는 방법.
  10. 제 9 항에 있어서,
    상기 데이터(502)의 부분을 프로세스싱하는 것은 상기 데이터(502)의 부분에 관한 정보에 저장된 스케일러블 코딩 및 암호화 정보에 근거하여 데이터(502)의 스케일러블 부분을 절단함으로써 상기 트랜스코딩 노드(160)에서 데이터를 프로세싱하는 것을 더 포함하는
    데이터 부분을 최적화하는 방법.
KR1020087012067A 2005-10-21 2006-07-21 데이터 부분을 최적화하는 방법 KR100942889B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/255,742 US20070091926A1 (en) 2005-10-21 2005-10-21 Method for optimizing portions of data from a plurality of data streams at a transcoding node
US11/255,742 2005-10-21

Publications (2)

Publication Number Publication Date
KR20080059316A KR20080059316A (ko) 2008-06-26
KR100942889B1 true KR100942889B1 (ko) 2010-02-17

Family

ID=37465059

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087012067A KR100942889B1 (ko) 2005-10-21 2006-07-21 데이터 부분을 최적화하는 방법

Country Status (4)

Country Link
US (2) US20070091926A1 (ko)
KR (1) KR100942889B1 (ko)
DE (1) DE112006002893B4 (ko)
WO (1) WO2007046908A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9774381B2 (en) 2013-02-12 2017-09-26 Samsung Electronics Co., Ltd. Transmitter, relay, receiver, and cooperative communication system using network compress-and-forward scheme

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8295275B2 (en) * 2006-03-20 2012-10-23 Intel Corporation Tagging network I/O transactions in a virtual machine run-time environment
JP4912075B2 (ja) * 2006-08-11 2012-04-04 パナソニック株式会社 復号装置
US8327399B2 (en) * 2006-08-31 2012-12-04 At&T Intellectual Property I, Lp System and method for delivering targeted advertising data in an internet protocol television system
US7991904B2 (en) * 2007-07-10 2011-08-02 Bytemobile, Inc. Adaptive bitrate management for streaming media over packet networks
US7987285B2 (en) 2007-07-10 2011-07-26 Bytemobile, Inc. Adaptive bitrate management for streaming media over packet networks
US20100218258A1 (en) * 2007-08-17 2010-08-26 Seong-Oun Hwang Contents protection providing method and protected contents consuming method and apparatus thereof
US20100251381A1 (en) * 2007-08-17 2010-09-30 Seong-Oun Hwang System renewability message providing method and system renewability message using method and apparatus thereof
KR20090029634A (ko) * 2007-09-18 2009-03-23 한국전자통신연구원 콘텐츠 보호 제공방법과 보호된 콘텐츠 소비방법 및 그 장치
US7995578B2 (en) * 2007-12-14 2011-08-09 Electronics And Telecommunications Research Institute Repetition apparatus and method for repeatedly transmitting and receiving data packet using different puncturing patterns
US20100017516A1 (en) * 2008-07-16 2010-01-21 General Instrument Corporation Demand-driven optimization and balancing of transcoding resources
JP5044519B2 (ja) * 2008-10-06 2012-10-10 アラクサラネットワークス株式会社 受信側装置、伝送装置、伝送方法およびプログラム
US20100199322A1 (en) * 2009-02-03 2010-08-05 Bennett James D Server And Client Selective Video Frame Pathways
US8687685B2 (en) 2009-04-14 2014-04-01 Qualcomm Incorporated Efficient transcoding of B-frames to P-frames
KR20120104238A (ko) * 2009-12-16 2012-09-20 톰슨 라이센싱 광고 큐 메세지를 보호하기 위한 시스템 및 방법
IL210169A0 (en) 2010-12-22 2011-03-31 Yehuda Binder System and method for routing-based internet security
US10778659B2 (en) 2012-05-24 2020-09-15 Smart Security Systems Llc System and method for protecting communications
US9325676B2 (en) 2012-05-24 2016-04-26 Ip Ghoster, Inc. Systems and methods for protecting communications between nodes
KR20150070105A (ko) 2012-08-18 2015-06-24 루미날, 인크. 안전한 컴퓨터 환경을 제공하는 시스템 및 방법
US10050645B2 (en) * 2014-01-30 2018-08-14 Hewlett Packard Enterprise Development Lp Joint encryption and error correction encoding
US9973514B2 (en) * 2014-10-27 2018-05-15 Hong Kong Baptist University Method and apparatus for assuring location data integrity with minimum location disclosure
US9992126B1 (en) 2014-11-07 2018-06-05 Speedy Packets, Inc. Packet coding based network communication
US10320526B1 (en) 2014-11-07 2019-06-11 Strong Force Iot Portfolio 2016, Llc Packet coding based network communication
US9825733B1 (en) 2014-11-07 2017-11-21 Speedy Packets, Inc. Packet coding based network communication
US10129159B2 (en) 2015-07-07 2018-11-13 Speedy Packets, Inc. Multi-path network communication
US10999012B2 (en) 2014-11-07 2021-05-04 Strong Force Iot Portfolio 2016, Llc Packet coding based network communication
US9992088B1 (en) 2014-11-07 2018-06-05 Speedy Packets, Inc. Packet coding based network communication
US10318762B1 (en) * 2015-03-06 2019-06-11 United Services Automobile Association (Usaa) Third-party platform for tokenization and detokenization of network packet data
US10341194B2 (en) 2015-10-05 2019-07-02 Fugue, Inc. System and method for building, optimizing, and enforcing infrastructure on a cloud based computing environment
US20180284745A1 (en) 2016-05-09 2018-10-04 StrongForce IoT Portfolio 2016, LLC Methods and systems for self-organization of collected data using 3rd party data from a data marketplace in an industrial internet of things environment
US11120293B1 (en) * 2017-11-27 2021-09-14 Amazon Technologies, Inc. Automated indexing of media content
US11194930B2 (en) 2018-04-27 2021-12-07 Datatrendz, Llc Unobtrusive systems and methods for collecting, processing and securing information transmitted over a network
CN110061989B (zh) * 2019-04-19 2021-07-13 航天云网数据研究院(江苏)有限公司 一种数据采集网关全隔离方法
EP3987483A4 (en) 2019-06-24 2023-03-01 Insurance Services Office, Inc. MACHINE LEARNING SYSTEMS AND METHODS FOR ENHANCED IMAGE FALSIFICATION LOCATION

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020047899A1 (en) * 2000-01-28 2002-04-25 Diva Systems Corporation Method and apparatus for preprocessing and postprocessing content in an interactive information distribution system
US20040010613A1 (en) * 2002-07-12 2004-01-15 Apostolopoulos John G. Storage and distribution of segmented media data

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4408323A (en) * 1981-06-29 1983-10-04 Bell Telephone Laboratories, Incorporated Processor facilities for integrated packet and voice switching
US5204958A (en) * 1991-06-27 1993-04-20 Digital Equipment Corporation System and method for efficiently indexing and storing a large database with high data insertion frequency
US5440545A (en) * 1993-08-02 1995-08-08 Motorola, Inc. Packet delivery system
JP3193947B2 (ja) * 1997-01-08 2001-07-30 株式会社ディジタル・ビジョン・ラボラトリーズ データ送信システム及びデータ送信方法
US6483543B1 (en) * 1998-07-27 2002-11-19 Cisco Technology, Inc. System and method for transcoding multiple channels of compressed video streams using a self-contained data unit
US6944762B1 (en) * 1999-09-03 2005-09-13 Harbor Payments Corporation System and method for encrypting data messages
US7124116B2 (en) * 1999-12-20 2006-10-17 Huy-Tech Software Corporation Method for performing market-adapted price planning
US6922845B2 (en) * 2000-04-25 2005-07-26 The Directtv Group, Inc. Multi-processor DVR
US7072336B2 (en) * 2000-05-26 2006-07-04 Nortel Networks Limited Communications using adaptive multi-rate codecs
US6771703B1 (en) * 2000-06-30 2004-08-03 Emc Corporation Efficient scaling of nonscalable MPEG-2 Video
US6963972B1 (en) * 2000-09-26 2005-11-08 International Business Machines Corporation Method and apparatus for networked information dissemination through secure transcoding
FR2816154A1 (fr) * 2000-10-31 2002-05-03 Canon Kk Insertion d'information supplementaire dans des donnees numeriques
US6983049B2 (en) * 2001-05-04 2006-01-03 Hewlett-Packard Development Company, Lp. Storage devices for secure scalable data streaming
US7054335B2 (en) * 2001-05-04 2006-05-30 Hewlett-Packard Development Company, L.P. Method and system for midstream transcoding of secure scalable packets in response to downstream requirements
US6990202B2 (en) * 2001-10-04 2006-01-24 Hewlett-Packard Development Company, L.P. Packetizing devices for secure scalable data streaming
US6738617B2 (en) * 2001-05-15 2004-05-18 Qualcomm Incorporated Controller for reducing latency in a group dormancy-wakeup process in a group communication network
US7065213B2 (en) * 2001-06-29 2006-06-20 Scientific-Atlanta, Inc. In a subscriber network receiving digital packets and transmitting digital packets below a predetermined maximum bit rate
US7133925B2 (en) * 2002-07-15 2006-11-07 Hewlett-Packard Development Company, L.P. System, method, and format thereof for scalable encoded media delivery
US7627184B2 (en) * 2003-11-21 2009-12-01 Nec Corporation Content distribution/reception device, content transmission/reception method, and content distribution/reception program
KR101145261B1 (ko) * 2004-02-27 2012-05-24 삼성전자주식회사 멀티미디어 데이터를 기록한 정보저장매체, 그 재생방법및 재생장치
US7535907B2 (en) * 2005-04-08 2009-05-19 Oavium Networks, Inc. TCP engine

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020047899A1 (en) * 2000-01-28 2002-04-25 Diva Systems Corporation Method and apparatus for preprocessing and postprocessing content in an interactive information distribution system
US20040010613A1 (en) * 2002-07-12 2004-01-15 Apostolopoulos John G. Storage and distribution of segmented media data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9774381B2 (en) 2013-02-12 2017-09-26 Samsung Electronics Co., Ltd. Transmitter, relay, receiver, and cooperative communication system using network compress-and-forward scheme

Also Published As

Publication number Publication date
DE112006002893T5 (de) 2008-10-23
DE112006002893B4 (de) 2012-03-01
US8045584B2 (en) 2011-10-25
US20070091926A1 (en) 2007-04-26
WO2007046908A1 (en) 2007-04-26
US20070091927A1 (en) 2007-04-26
KR20080059316A (ko) 2008-06-26
WO2007046908A8 (en) 2007-07-26

Similar Documents

Publication Publication Date Title
KR100942889B1 (ko) 데이터 부분을 최적화하는 방법
KR101002112B1 (ko) 데이터를 트랜스코딩하는 방법
US7558954B2 (en) Method and apparatus for ensuring the integrity of data
EP1417834B1 (en) Encoding and decoding methods for secure scalable streaming and related systems
JP4987965B2 (ja) メディアデータの分散記憶
US7054335B2 (en) Method and system for midstream transcoding of secure scalable packets in response to downstream requirements
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
KR100962852B1 (ko) 데이터를 프로세스하는 방법
EP1803280A1 (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) 데이터 처리 방법
US7155010B2 (en) Signal format that facilitates easy scalability of encrypted streams

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: 20130201

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140203

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150202

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160201

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20200205

Year of fee payment: 11