KR100960425B1 - 트랜스코더-멀티플렉서(트랜스먹스) 소프트웨어 아키텍처를 포함하는 트랜스코더 장치 및 방법 - Google Patents

트랜스코더-멀티플렉서(트랜스먹스) 소프트웨어 아키텍처를 포함하는 트랜스코더 장치 및 방법 Download PDF

Info

Publication number
KR100960425B1
KR100960425B1 KR1020037005714A KR20037005714A KR100960425B1 KR 100960425 B1 KR100960425 B1 KR 100960425B1 KR 1020037005714 A KR1020037005714 A KR 1020037005714A KR 20037005714 A KR20037005714 A KR 20037005714A KR 100960425 B1 KR100960425 B1 KR 100960425B1
Authority
KR
South Korea
Prior art keywords
data
processing
transcoding
transcoder
processing resource
Prior art date
Application number
KR1020037005714A
Other languages
English (en)
Other versions
KR20030068140A (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 KR20030068140A publication Critical patent/KR20030068140A/ko
Application granted granted Critical
Publication of KR100960425B1 publication Critical patent/KR100960425B1/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
    • 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

완전히 소프트웨어로 실현되고 있는 디지털 비디오 트랜스코더-멀티플렉서(트랜스먹스) 아키텍처이다. 트랜스먹스(200)는, 트랜스코딩을 수행하기 위해 VLIW(very long instruction word: 아주 긴 명령 워드) 미디어 프로세서(105)를 사용하여 전송 스트림 레벨에서 디어셈블리(de-assembly) 및 리어셈블리(re-assembly)할 수 있는 TPE(transcoder processing element: 트랜스코더 처리 엘리먼트)(240)와, 기본 스트림 레벨에서 디어셈블리 및 리어셈블리를 행하기 위한 코프로세서(131)를 포함하고 있다. 상기 프로세서는 처리량을 최적화하여 처리의 평형을 이루기 위해 적어도 일부분을 병렬로 동작시킨다. 완전히 소프트웨어로 실현되고 있는 트랜스먹스 아키텍처는 새로운 기능을 처리하고, 하드웨어 또는 소프트웨어 문제를 해결하며, 새로운 처리를 시험하고, 변화하는 고객 요구에 적응하는 일 등에 갱신(upgrade)를 허용하기 위해 제공된다.

Description

트랜스코더-멀티플렉서(트랜스먹스) 소프트웨어 아키텍처 {TRANSCODER- MULTIPLEXER(TRANSMUX) SOFTWARE ARCHITECTURE}
본 발명은 디지털 비디오 트랜스코더 아키텍처에 관한 것이다.
다음과 같은 두문자어 및 용어들이 사용된다.
AC - 교류(Alternating Current) : DCT 계수
ALU - 논리연산장치(Arithmetic Logic Unit)
B - 양방향 예측 부호화(Bidirectionally-predictive coded(MPEG))
Back. - 역방향(Backward(MPEG))
BSP - 비트스트림 프로세서(Bitstream Processor)
CBP - 암호화된 블록 패턴(Coded Block Pattern(MPEG))
CBR - 고정 비트속도(Constant Bit Rate)
Chan. - 채널(Channel)
CPU - 중앙처리장치(Central Processing Unit)
D$ - 데이터 캐쉬(Data cache)
DC - 직류(Direct Current) : DCT 계수
DCT - 이산코사인변환(Discrete Cosine Transform)
DMA - 직접 메모리 억세스(Direct Memory Access)
DPCM - 차분 펄스 부호 변조(Differential Pulse Code Modulation)
DPRAM - 이중 포트 램(Dual Port RAM)
DS - 데이터 스트리머(Data Streamer)
DTS - 디코드 시간 스탬프(Decode Time Stamp)
FIFO - 선입선출(First-in, First-out)
FIR - 유한 임펄스 응답(Finite Impulse Response)
FPGA - 필드-프로그래머블 게이트 어레이(Field-Programmable Gate Array)
Fwd. - 순방향(Forward(MPEG))
H/V - 수평/수직(Horizontal/Vertical)
HW - 하드웨어(Hardware)
I - 인트라 부호화(MPEG) 또는 정수(Intra-coded(MPEG) or Integer)
I$ - 명령 캐쉬(Instruction cache)
I/F - 중간 주파수(Intermediate Frequency)
I2C - IIC - Inter-integrated circuit(시리얼 버스 표준)
I2S - IIS - Inter-IC sound(3-와이어 디지털 스테레오 PCM 오디오 인터커넥
트)
iBlk - 입력 블록(Input block) FIFO
IDCT - 역이산코사인변환(Inverse DCT)
IEC - 국제 전자기계 위원회(International Electro-mechanical Commission)
IFG - 정수, 부동 소수점 및 그래픽(Integer, Floating point & Graphics)
(IFG-ALU에서와 동일); 이큐에이터 두문자어(Equator acronym)
IG - 정수, 그래픽 유닛(Integer, Graphics unit)
iMB - 입력 매크로블록(Input macroblock) FIFO
Info. - 정보(Information)
Int. - 인터페이스(Interface)
iRB - 입력속도 버퍼(Input rate buffer)
ISR - 인터럽트 서비스 루틴(Interrupt service routine)
ITU - 국제전기통신연합(International Telecommunication Union)
JTAG - 결합 시험 동작 그룹(Joint Test Action Group)(IEEE 1149.1 프로토
콜)
KB - 킬로바이트(Kilobyte)
LRU - 최근에 가장 적게 사용된(least recently used)(캐쉬 라인 치환 알고
리즘)
MAP - 미디어 가속 프로세서(Media Accelerated Processor)(이큐에이터)
MB - 메가바이트(Megabyte) 또는 매크로블록(Macroblock)
MC - 이동보상(Motion Compensation)
MTS - MPEG 전송 스트림(Transport Stream)
MUX - 멀티플렉서(Multiplexer)
NC - 난-코히어런트 접속(Non-coherent Connect)
NOP - 연산 없음(No Operation)
NTSC - 미국 텔레비전 시스템 위원회(National Television Standards Commi
ttee)
oBlk - 출력 블록(Output block) FIFO
oMB - 출력 매크로블록(Output macroblock) FIFO
oRB - 출력속도 버퍼(Output rate buffer)
P - 예측 부호화(Predictive-Coded(MPEG))
PCR - 프로그램 클록 기준(Program Clock Reference(MPEG))
PES - 패킷화된 기본 스트림(Packetized Elementary Stream(MPEG))
Pic. - 영상(Picture)
PID - 패킷 식별자(Packet Identifier)
PTS - 프리젠테이션 시간 스탬프(Presentation Time Stamp)
QL - 양자화 레벨(Quantization Level)
RAM - 랜덤 억세스 메모리(Random Access Memory)
RAMDAC - RAM 디지털/아날로그 변환기(Digital-to-Analog Converter)
Ref. - 기준(Reference)
Reg. - 레지스터(Register)
RGB - 적·녹·청(Red Green Blue)
RISC - 축소된 명령집합 컴퓨터(Reduced Instruction Set Computer)
RL - 실행길이(Run Length; or run-level pair(실행레벨쌍))
ROM - 독출전용 메모리(Read-Only Memory)
RTOS - 실시간 운영체제(Real-Time Operating System)
Rx - 수신기(Receiver)
SAV - 액티브 비디오의 개시(Start of Active Video)
SC - 개시코드(Start Code)
SDRAM - 동기형 다이내믹 랜덤 억세스 메모리(Synchronous Dynamic Random
Access Memory)
SGRAM - 동기형 그래픽 랜덤 억세스 메모리(Synchronous Graphics Random
Access Memory)
SIMD - 단일 명령, 다중 데이터(Single Instruction, Multiple Data)
Svc. - 서비스(Service)
SW - 소프트웨어(Software)
T1 - 1.544 Mbps의 데이터 속도를 갖는 US 전화 디지털 선로 표준(A US
telephony digital line standard with a data rate of 1.544 Mbps)
TCI - 전송 채널 입력(Transport Channel Input)
TLB - 변환 참조 버퍼(Translation Lookaside Buffer)(MMU의 일부)
TMC - 트랜스코더 멀티플렉서 코어(Transcoder Multiplexer Core)
TPE - 트랜스코더 처리 엘리먼트(Transcoder Processing Element)
T-STD - 전송 시스템 목표 디코더(Transport System Target Decoder)
tVLD - 트랜스코더 VLD
tVLE - 트랜스코더 VLE
Tx - 송신기(Transmitter)
VBV - 비디오 버퍼 검증기(Video Buffer Verifier(MPEG))
VLD - 가변길이 디코딩(Variable-Length Decoding)
VLE - 가변길이 엔코딩(Variable-Length Encoding)
VLIW - 아주 긴 명령 워드(Very Long Instruction Word)
예컨대, 케이블 텔레비전 또는 위성 텔레비전 네트워크 등과 같은 광대역 통신시스템을 통한 디지털 비디오 데이터의 전송이 더욱 더 대중화되고 있다. 소스 비디오 시퀀스는, 미리 압축되거나, 혹은 그대로의 비트스트림을 형성하기 위해, 고정 비트속도(Constant Bit Rate: CBR) 또는 가변 비트속도(Variable Bit Rate: VBR)로 할 수 있는 임의의 속도로 미리 엔코드될 수 있다. 그렇지만, 많은 응용에 있어서, 미리 압축된 비트스트림은 특정의 정당하거나, 또는 바람직한 포맷 및 비트속도와만 일치해야 한다. 따라서, 예컨대 셋톱 박스 및/또는 네트워크의 몇몇 중간점으로 통신하기 전에, 비디오 데이터의 비트속도, 포맷 또는 다른 특성을 변화시키기 위해 트랜스코더가 사용되고 있다.
다수의 압축된 비트스트림을 수신하여 이들 비트스트림을 (적어도 부분적으로) 신장한 후, 그것들을 영상 복잡성과 같은 비트스트림의 몇몇 통계적인 특성에 기초하여 양자화 파라미터를 할당함으로써 재압축하는 통계적인 멀티플렉서에 있어서 다수의 트랜스코더가 종종 사용되고 있다.
전형적으로, 비트스트림은 MPEG와 같은 알려진 비디오 코딩 표준에 따라 압 축된다.
트랜스먹스(transmux)는, 다수의 단일 서비스 비디오 트랜스코더(transcoder)와, 비디오 비트속도를 동적으로 설정하는 통계적인 멀티플렉서(multiplexer)의 결합으로 되어 있다. 일반적으로 이것은, 스탯먹스 그룹(statmux group) 내에서 비디오 서비스의 품질을 지각 있게 등화하도록, 즉 더 많은 비트를 압축하기 어려운 비디오를 포함하고 있는 서비스에 할당하고, 더 적은 비트를 압축하기 쉬운 비디오를 포함하고 있는 서비스에 할당하도록 행해진다.
그렇지만, 트랜스먹스 아키텍처의 발전은 각종의 요구를 처리해야 한다. 특히, 완전히 소프트웨어로 실현되고 있는 트랜스먹스 아키텍처를 제공하는 것이 바람직하다. 이것은, 하드웨어가 아니라 소프트웨어를 변경하는 것만으로 트랜스먹스 기능이 이 분야에 있어서(예컨대, 케이블 텔레비전 헤드엔드 등에서) 변경되도록 함으로써 커다란 적응성(flexibility)을 제공한다. 또한, 이 아키텍처는 인터넷과 같은 컴퓨터 네트워크에서의 사용에 적당하다.
이것은, 새로운 기능을 처리하고, 하드웨어 또는 소프트웨어 문제("버그(bug)")를 수리하며, 새로운 프로세스를 시험하고, 고객의 요구의 변화에 순응하도록 트랜스먹스의 갱신(upgrading)을 허용하기 때문에, 유익하다. 이들 작업은 "소프트"(소프트웨어에 기초를 둔) 트랜스먹스에 의해 모두 용이한 작업이다.
게다가, 설계 시간 및 비용의 절약으로 이어질 수 있다.
트랜스먹스는 좋은 계산 효율을 제공해야 하고, 상당히 작은 물리적인 사이 즈(발자국)를 허용해야 한다.
트랜스먹스는 VLIW 미디어 프로세서(media processor)와 같은 쉽게 입수할 수 있는 미디어 프로세서를 이용하여 실현가능해야 한다.
트랜스먹스는 프레임과 프레임 사이(frame-to-frame)의 재양자화 에러의 트랙을 유지하는 것을 포함하는 완전한 트랜스코딩을 수행해야 한다.
트랜스먹스는 RTOS의 이용 없이 단일의 프로세서에서의 트랜스코딩된 비디오 PID와 패스 스루(pass-thru) 데이터/오디오 서비스의 조합으로 (버퍼 관리, 프로세서 관리 등을 포함하는) 다중의 트랜스코딩 스레드(thread)의 스케줄링을 제공해야 한다.
트랜스먹스는, 높은 레벨의 계산 처리량을 얻기 위해, 서로에 대한 대기시간으로부터 VLIW 미디어 프로세서 및 코프로세서를 유지하기 위한 트랜스코딩 작업에 특유한 로드 평형 알고리즘(load balancing algorithm)을 사용해야 한다.
트랜스먹스는, 코프로세서 메모리 제약조건(constraint), 명령 캐쉬 크기 및 데이터 캐쉬 크기의 영향을 받는 VLIW 미디어 프로세서 및 코프로세서상에서 실행하는 컴포넌트로 트랜스코딩 알고리즘의 신장을 제공해야 한다.
트랜스먹스는 단순화된 트랜스코딩 알고리즘의 경우에 따른 전문화를 다른 MPEG-2 영상 형태(I, P 또는 B) 및 매크로블록 부호화 형태(인트라 부호화(intra-coded) 또는 인터 부호화(inter-coded))를 제공하고, 트랜스코딩 중에 양자화 스텝 크기를 증가시킬 것인지 또는 감소시킬 것인지를 고려해야 한다.
트랜스먹스는 전체적인 소프트웨어 아키텍처를 트랜스코더 처리 엘리먼트(TPE)에 제공해야 한다.
본 발명은 상기 및 다른 이점을 갖는 트랜스먹스 설계를 제공한다.
본 발명은 디지털 비디오 트랜스먹스 아키텍처에 관한 것이다.
본 발명에 따른 트랜스코딩 처리는, 다음과 같은 5개의 단계로 분해될 수 있다. VLIW 코어 처리 리소스(core processing resource) 및 BSP 처리 리소스는 지시된 바와 같이 다른 단계를 위해 할당된다. BSP는 순차적인 비트스트림 패킹(packing) 및 언패킹(unpacking)을 처리한다. MAP-2000CA에 있어서, 다른 공급자로부터의 유사한 장치가 사용될 수 있지만, BSP는 VLD/VLE 코프로세서인 VLx 코프로세서(131)이다. BSP는 다중의 트랜스코딩 VLE 및 VLD 스레드(처리 루프)를 실행한다. 대응하는 아키텍처가 도 1a에 도시되어 있다.
a) MPEG 전송 스트림 디코딩(VLIW 코어에 대해)(10)
b) MPEG 비디오 기본 스트림 가변길이 디코딩(VLD)(BSP에 대해)(20)
c) 일반적으로, 다음의 구성요소로 이루어진 코어 트랜스코딩(VILW에 대해)(30)
c.1) (VLD 출력의) 역양자화
c.2) 공간적인 에러 이동보상(및 IDCT 출력으로의 가산)
c.3) 이동보상된 에러의 순방향 DCT
c.4) 역양자화 결과로의 에러(지금 DCT 도메인에 있음)의 가산
c.5) (VLE 입력을 형성하기 위한) 순방향 양자화
c.6) 역양자화 VLE 입력 및 DCT 도메인에서의 누적 에러를 형성하기 위해 순방향 양자화 입력으로부터 감산
c.7) 공간적인 에러를 형성하기 위한 에러의 역DCT. 이 에러는 이 화상을 참조하는 미래의 화상(단계 c.2)에 있어서 사용되는 기준 프레임 버퍼에 저장되어 있다.
d) MPEG 비디오 기본 스트림 가변길이 엔코딩(VLE)(BSP에 대해)(40)
e) (트랜스코딩된 비디오 기본 스트림을 싸는) MPEG 전송 스트림 엔코딩(VLIW에 대해)(50)
그래서, 파싱/디먹스(parsing/demux; 10)는 전송 스트림 디어셈블리(de-assembly)를 제공하고, VLD(20)는 ES 디어셈블리를 제공하며, VLE(40)는 ES 리어셈블리(re-assembly)를 제공하고, 리먹스/패킷화(remux/packetization; 50)는 전송 스트림 리어셈블리를 제공한다.
일반적으로, 비디오 억세스 유닛(부호화된 영상)의 트랜스코딩은 M개의 처리 엘리먼트에 의해 N개의 계산 단계에 있어서 이루어진다. 여기서, 어떤 단계의 결과는 그 뒤의 단계로의 입력으로서 사용되고 있다(본 발명의 경우에서의 특정 단계는 상기에 리스트되어 있음). N개의 단계의 각각은 그 알고리즘에 의해 강요되는 데이터 종속성의 영향을 받는 다른 처리 엘리먼트에 의해 실행되어도 좋다.
이 발명의 중요한 개념의 하나는, 각각의 부호화된 영상이 처리 엘리먼트 사이에서 통과되는 데이터 구조(영상 구조)에 의해 표시된다는 점이다. 영상의 큐(queue: 대기행렬)는 하나 이상의 처리 엘리먼트에 의해 서비스될 수도 있는 각 기능부(단계)로의 입력에 존재한다.
본 발명에 따른 특정의 트랜스코더장치는, 적어도 압축된 디지털 비디오 데이터로 이루어진 전송 스트림의 입력 채널을 수신하기 위한 제1트랜스코더 처리 엘리먼트(TPE)와, 이 제1TPE와 연결되어 데이터 디어셈블리, 코어 트랜스코딩 및 데이터 리어셈블리를 제공하기 위한 제1 및 제2처리 리소스를 갖추고 있다. 부가적으로, 제1처리 리소스에서 처리하기 전에 상기 제2처리 리소스로부터 수신된 데이터를 큐잉(queuing: 공급)하기 위한 큐가 제1처리 리소스와 연결되어 있고, 제2처리 리소스에서 처리하기 전에 상기 제1처리 리소스로부터 수신된 데이터를 큐잉하기 위한 큐가 제2처리 리소스와 연결되어 있다. 상기 제1 및 제2처리 리소스는, 데이터 디어셈블리, 코어 트랜스코딩 및 데이터 리어셈블리를 제공하기 위해 적어도 일부분에서 병렬로 동작가능하게 되어 있다.
VLIW 및 BSP에 대해 단일 또는 다중의 스레드 실행이 사용되어도 좋다.
또한, 대응하는 방법도 소개된다.
도 1a는 본 발명에 따른 트랜스코딩 아키텍처를 나타낸 도면,
도 1b는 본 발명을 실현하기 위한 미디어 프로세서를 나타낸 도면,
도 2는 본 발명에 따른 트랜스먹스의 개관을 나타낸 도면,
도 3은 본 발명에 따른 TPE(Transcoder Processing Element: 트랜스코더 처리 엘리먼트) 소프트웨어 아키텍처를 나타낸 도면,
도 4는 본 발명에 따른 스케줄러를 이용한 영상 큐의 조작을 나타낸 도면,
도 5는 본 발명에 따른 컨텍스트 절환 경로(context switch path)의 조작을 나타낸 도면,
도 6은 본 발명에 따라 사용하기 위한 트랜스코더를 나타낸 도면,
도 7은 인터블록(inter-block)을 P영상(P-picture)으로 부호화할 때 도 6의 트랜스코더의 기능 블록을 나타낸 도면,
도 8은 인터블록을 B영상으로 부호화할 때 도 6의 트랜스코더의 기능 블록을 나타낸 도면,
도 9는 인트라블록(intra-block)을 난-B영상(non-B-picture)으로 부호화할 때 도 6의 트랜스코더의 기능 블록을 나타낸 도면(여기서, Q2>Q1),
도 10은 인트라블록을 B영상으로 부호화할 때 도 6의 트랜스코더의 기능 블록을 나타낸 도면(여기서, Q2>Q1),
도 11은 인트라블록을 난-B영상으로 부호화할 때 도 6의 트랜스코더의 기능 블록을 나타낸 도면(여기서, Q2≤Q1),
도 12는 인트라블록을 B영상으로 부호화할 때 도 6의 트랜스코더의 기능 블록을 나타낸 도면(여기서, Q2<Q1)이다.
본 발명은 디지털 비디오 트랜스먹스 아키텍처에 관한 것이다.
1. 서론(Introduction)
트랜스먹스는 다음과 같은 주요한 어플리케이션(application: 응용)을 다루 는 디지털 텔레비전 네트워크 장치이다.
전송 스트림 그루밍(Transport Stream Grooming) - 트랜스먹스는 n개의 전송 스트림 입력까지를 매개로 하여 수신되는 프로그램 요소(비디오, 오디오 및 데이터)를 포함하고 있는 단일 고객의 전송 스트림 출력의 발생을 지원한다. 그루밍은 입력 전송 스트림으로부터 트랜스코딩하기 위한 소스 재료의 선택을 가리킨다.
비디오 비트속도 저감(Video Bit Rate Reduction) - 전형적으로, 트랜스먹스의 전송 스트림 출력은 그들의 원래의 입력 비트속도에서 프로그램 요소를 뒷받침할 수 없다. 따라서, 트랜스먹스는 "그루밍된" 요소의 총속도가 채널 용량을 넘지 않도록 하기 위해 비디오 속도저감 기술을 사용하게 된다. 특별한 서비스(프로그램)에 할당되는 비트속도는 일정한 전 전송 스트림 속도에 영향을 받는 멀티플렉스(multiplex: 다중화)의 다른 서비스와 비교되는 서비스의 상대적인 복잡성에 의해 결정된다.
스플라이싱(Splicing) - 트랜스먹스는 동일하거나 또는 다른 전송 스트림 입력을 매개로 하여 수신되는 MPEG-1 프로그램을 스플라이스(splice)하는 능력을 지원한다. 전형적으로, 스플라이스된 요소는 하나의 입력 또는 광고(advertisement: ad)를 매개로 하여 수신되는 "네트워크" 프로그램 또는 다른 입력을 매개로 하여 수신되는 국부적으로 생긴 프로그래밍을 포함한다.
데이터 삽입(Data Insertion) - 트랜스먹스는 비동기 및 동기 스트림, 다중 프로토콜 인캡슐레이션(multi-protocol encapsulation), 및 데이터 캐루젤(data carousel)을 포함하는 고정 및 가변 비트속도의 각종 형태의 전송을 지원한다. 트랜스먹스는 트랜스코딩 함으로써 제공되는 것들을 포함하되 데이터 서비스가 비디오를 포함하는 통계적인 멀티플렉스 그룹의 멤버로서의 대역폭을 향한 경쟁을 하도록 하는 널 패킷 "기회(opportunity)"를 이용한다.
도 1b는 본 발명을 실현하기 위한 미디어 프로세서를 나타낸다.
2. 미디어 프로세서 아키텍처의 개관
현재 상업적으로 이용가능한 본 발명을 실현하기 위한 하나의 가능한 미디어 프로세서는, 워싱턴주 시애틀에 위치하고 있는 이큐에이터(Equator) 테크놀로지스 인코포레이티드로부터 입수할 수 있는 고객 어플라이언스용 미디어 가속 프로세서 모델 MAPCA2000TM이다.
미디어 프로세서(100)의 주요한 구성요소는 다음과 같다.
1. VLIW 프로세서(105)는 2개의 클러스터로 이루어진다. 각 클러스터는 64개의 32비트 범용 레지스터, 32개의 술어 레지스터(predicate register) 및 2개의 128비트 레지스터를 포함하고 있는 그 고유의 레지스터 파일(106, 107)을 갖추고 있다. 각 클러스터는 2개의 기능적인 유닛, 즉 정수/논리/비트식의 계산, 로드/저장 조작 및 분기를 수행하는 I-ALU(108, 109)와, 분할 및 나머지, 32비트 및 64비트 분할 조작, 시프트/추출/병합, 단일의 정확한 IEEE 부동소수점, 128비트 분할(8, 16 및 32비트 인자) FIR 및 절대값 연산을 포함한 정수 계산을 수행하는 IG-ALU(110, 111)를 갖추고 있다.
2. (NOP의 확장을 위해 스트림 버퍼를 갖춘) 32KB 명령 캐쉬(112)는, LRU 치환 전략을 갖는 2방향 세트 연합의 16바이트 라인 크기이다.
3. 32KB 데이터 캐쉬(114)는 4방향 세트 연합의 32바이트 라인 크기로 LRU 치환 알고리즘을 사용한다.
4. 어드레스 천이는 데이터 캐쉬(114), 명령 캐쉬(112) 및 DMA 엔진(120; MAPCA2000TM에 있어서 DataStreamerTM로서 알려져 있음)과 연결된 개별적인 TLB에 의해 이루어진다. TLB는 원인 인터럽트를 놓치고, SW로 서비스된다.
5. 16비트 RISC CPU(코프로세서; 131)는 메모리(121)를 포함하고 있다.
6. DMA 엔진(120)은 I/O와 메모리 사이의 전송, 메모리로부터 I/O로의 전송 및 메모리와 메모리 사이의 전송을 실현하는 기술어 체인(descriptor chain)에 의해 제어되는 자율적인 데이터 이동기(data mover)이다. 독립적으로 스케줄링되는 64개의 데이터 복사 조작(경로)까지 동시에 진행중일 수 있다.
7. 내부 SDRAM 메모리 컨트롤러(140)는 64비트의 넓은 데이터 경로를 따라 150MHz에서 64MB까지 지원한다.
8. 2개의 32비트(22 또는 66MHz) PCI 버스 인터페이스(141, 142)는 PCI(143)와 함께 이용가능하다.
9. 온칩(on-chip) 주변기기는 전송 채널 인터페이스(163, 165)를 포함할 수 있다. 트랜스먹스는 VLIW 프로세서(및 캐쉬/TLB), DMA 엔진, BSP 코프로세서, 전송채널 입력 인터페이스, PCI 버스 인터페이스 및 SDRAM 인터페이스를 사용한다. MAP-2000 패키지의 다른 구성요소는 전부 사용되지 않는다.
VLx는 VLD/VLE(또는 BSP) 코프로세서(131)에 대한 이큐에티어의 이름이다. TPE에 있어서, 우리는 다중의 tVLE 및 tVLD 스레드를 실행하기 위해 VLIW 프로세서와 대항하여 이 프로세서를 사용한다.
이 비트스트림 조작 프로세서는, 비트 필드 패킹/언패킹, 호프만 엔코딩/디코딩, 및 조건부의 신택스 파싱(syntax parsing: 구문 분석) 및 생성 등과 같은 엔코딩 및 디코딩에 관계된 고유의 직렬 작업을 수행하기 위해 최적화되어 있다. 이 프로세서는 이들 기능을 위해 특별한 명령 또는 하드웨어 지원을 받고 있는 범용 CPU이다.
도 2는 본 발명에 따른 트랜스먹스의 개관을 나타낸다.
3. 트랜스먹스의 고수준 기능의 개관
트랜스먹스(200)에 있어서, K개의 비디오 채널의 전송 멀티플렉스는 각각의 수신기(Rx; 210)에 의해 수신된다. 여기서는, 일례로서 K=6채널인 경우만을 나타내고 있다. 어떤 적당한 수의 채널이 사용될 수 있다. 그루머 FPGA(215)는 각 수신기와 연결되어 각 채널을 돌보고, 관계된 데이터를 각각의 FIFO(220)로 공급한다.
디멀티플렉서(DEMUX) FPGA(230)는 DPRAM(245)으로부터의 "어느 트랜스코더"신호에 기초하여 L개의 트랜스코더의 뱅크에서 이용가능한 하나의 트랜스코더(240)로 FIFO로부터의 데이터를 라우트한다. 개개의 트랜스코더는 또한 트랜스코더 처리 엘리먼트로서 참조된다. TPE는 관계된 메모리와 I/O장치를 갖춘 미디어 프로세 서 칩(예컨대, MAP2000 시리즈 프로세서)이다. 각 TPE는 입력 멀티플렉스로부터의 다수의 채널을 처리한다. 개시 및 재구성 중에, 예컨대 일반적으로 양도되고 2000년 9월 20일에 출원되어 심사계류 중에 있는 미국 특허출원 제09/666,902호(발명의 명칭: "Processor Allocation For Channels In A Video Multi-Processor System")에 개시된 시스템을 이용하여 서비스의 TPE로의 정적 할당이 결정된다.
도 2에 나타낸 TMC 모듈은 32MB의 SDRAM을 갖는 MAP-2000CA로 할 수 있다. TPE는 디멀티플렉서(DEMUX) FPGA(230)와 PCI 버스(242) 사이의 TMC 모듈이다. 디멀티플렉서 FPGA(230)로부터의 필터링된 전송 스트림 입력은 MAP-2000의 전송 채널 입력(TCI) 포트를 매개로 한 입력이다. 출력 전송 패킷은 PCI 버스(242)를 매개로 하여 멀티플렉서(MUX) 프로세서(244)(다른 TMC 모듈)로 보내진다. 이 멀티플렉서 프로세서(244)는 QL(양자화 레벨) 프로세서(246)의 통계적인 다중화 결정의 실현을 처리하고, TPE의 출력을 인터리브(interleave)하며, 최후의 PCR 시간스탬프를 생성한다. 갖가지 채널에 대한 출력 비트속도가 QL 프로세서(246)(다른 TMC 모듈)에 의해 동적으로 변화된다. TPE는 PCI 버스(242)를 가로질러 지나가는 메시지를 통해 멀티플렉서(MUX; 244), QL 프로세서(246) 및 커널 프로세서(Kernel processor; 248)와 통신한다. 커널 프로세서(248)는 인터페이스와 사용자 사이에서 처리를 행하는 시스템, DMA 엔진에 대한 상태 감시 및 구조, 및 출력 전송 스트림에 대한 데이터/PSI/SI 소싱(sourcing)을 위한 제어 프로세서이다.
압축된 비디오의 각 입력 프레임에 대하여, TPE는 그 프레임에 인가하기 위해 다수의 다른 트랜스코딩 기구로부터 선택할 수 있다. 이들 기구에 의해 도입되 는 복잡성 및 트랜스코딩 인공물(transcoding artifact)은 변화한다. 일반적으로, 더 낮은 복잡성 및 더 많은 인공물이 이들 기구에 의해 도입되고 있다. TPE에는, 다수의 압축된 프레임이 각 비디오 채널에 대해 하나의 버퍼, 즉 룩어헤드 버퍼(look-ahead buffer: 예견 버퍼)에 저장되어 있다. 저장된 비트스트림은 먼저, 프레임마다 I/B/P영상 형태 및 해상도를 해독하도록 파스(parse)된다. 그 후, 목표 비트속도를 얻고 인공물을 최소로 하기 위해, 파스된 정보에 트랜스코딩 알고리즘을 적용하여 룩어헤드 버퍼 내의 모든 프레임에 대해 적당한 처리모드를 선택한다. 이 실현의 목적은, 버퍼 내의 모든 프레임을 트랜스코딩하는데 필요한 총 사이클 카운트가 특정의 실현예에 기초하여 변화하는 TPE의 이용가능한 처리전력을 넘지 않도록 하는 제약조건의 영향을 받는 트랜스코딩 인공물을 최소로 하기 위한 것이다. 트랜스코딩에 있어서 사용되는 CPU의 총 사이클수에 대해 더 커지는 특별한 영상은 TPE에 의해 처리되는 모든 서비스에 걸친 평균 사이클수가 실시간 한계보다 적지 않을 만큼 긴 실시간을 만족하도록 지속될 수 있다. 최종적으로, 트랜스코딩된 비디오 비트스트림은 전송을 위해 리먹스(re-mux: 리멀티플렉스)된다.
4. TPE 아키텍처
도 3은 본 발명에 따른 TPE(Transcoder Processing Element: 트랜스코더 처리 엘리먼트) 소프트웨어 아키텍처를 나타낸다.
일례로서, 이 도면은 단일의 TPE에서 3개의 오디오/시각 데이터 서비스와 관계된 데이터 흐름을 나타내고 있다. 전형적으로, TPE는 다중 채널의 데이터를 처리할 수 있다. TPE가 처리할 수 있는 최대 채널수는, TPE의 처리량뿐만 아니라, 비트속도, 부호화된 영상 크기, 프레임 속도 및 다른 인자에 의해 측정되는 바와 같은 채널 데이터의 복잡성에 의존한다.
전송채널 입력(308)은 3개의 데이터 서비스를 각각의 입력속도 버퍼(310, 312, 314)로 공급하기 위해 (디먹스(디멀티플렉서; 306)에서) 디멀티플렉스된다. 이들 데이터 서비스는, 스케줄러(350) 및 각각의 서비스의 서비스 정보(370, 372, 374)에 교대로 응답하는 BSP 컨텍스트 절환 DS 채널 기능부(340)에 응답하고 있는 가변길이 디코더(304)에서 교대로 디코드된다.
VLD(304)의 출력은 입력 MB FIFO(316) 및 입력 블록 FIFO(318)로 공급된다. 이 데이터는, 예컨대 P영상 및 B영상의 이동보상 처리를 위해, 필요에 따라 순방향 기준영상(322) 및 역방향 기준영상(324)을 억세스하는 트랜스코드 기능부(320)에서 순차적으로 트랜스코딩된다. 트랜스코드 기능부(320)는 VLD의 다음에 오고 VLE를 앞서는 처리단계를 제공한다(도 6 내지 도 12 참조).
트랜스코드 기능부(320)의 출력은 출력 MB FIFO(326) 및 출력 블록 FIFO(328)에 저장된다. FIFO(326, 328)로부터의 데이터는 가변길이 엔코더(302)로 공급되고, 그 후 일례로서 3개의 데이터 서비스를 위해 각각의 출력속도 버퍼(330, 332, 334)로 공급된다. 데이터 서비스는 리먹스(remux) 기능부(336)에서 리멀티플렉스되고, PCI 버스 출력(242)을 매개로 하여 통신된다(도 2 참조).
데이터 서비스의 오디오 부분은 각각의 기능부(340, 342, 344)에서 지연되고, 리먹스(336)에서 트랜스코딩된 비디오 데이터와 재결합된다.
다수의 영상 i-n(360), …, i(362), i+1(364), i+2(366), i+3(368)의 처리는 스케줄러(350)에 의해 제어된다.
트랜스코딩 기능을 실현하는 코드가 스래싱(thrashing) 없이 I-캐쉬와 조화되지 않으면, 유효하게 실행되도록(실시간 제약조건을 만족하도록) 알고리즘을 분해해야 한다. 이 경우, 중간 데이터는 인터패스 데이터 버퍼(inter-pass data buffer; 380)에 저장된다.
각 TPE의 미디어 입력 및 출력은 MPEG2 표준에 있어서 명기된 바와 같이 MPEG2 전송 스트림 패킷의 시퀀스이다. 하나의 가능한 실시예에 있어서, 전송 스트림 입력 인터페이스는 MAP의 온칩 TCI 포트를 사용한다. 전송 스트림 출력 패킷은 출력을 위해 먹스 프로세서(mux processor)로 통과된다. 속도제어, 통계적인 멀티플렉싱 및 트랜스먹스 시스템 제어에 필요한 통신, 구조 및 디버깅은, PCI 버스 상의 프로세서 사이를 통과하는 소프트웨어 메시지에 기초를 두고 있다.
도 3은 트랜스코더용의 TPE 소프트웨어 아키텍처의 주요한 컴포넌트(component: 구성요소)를 나타내고 있다. 소프트웨어 처리는 도면에 있어서 타원(달걀모양)으로 나타내고 있다. 용어 "처리(process)"는 반드시 미디어 프로세서 상의 실시간 운영체제(RTOS)의 사용을 포함하지는 않는다. 본 설계는, 이들 처리를 그 "처리들" 사이에서 절환(switch)하도록 명백한 코드를 갖는 동일한 스택(stack)에 대한 절차로서 실현한다. RTOS이 사용될 때는, 이 설계는 모든 "처리"가 동일한 RTOS 작업에서 실행될 수 있는 경우에 유지될 수 있다.
각 소프트웨어 처리의 기능의 간단한 개요는 이하에 제공된다. MPEG 비디오 부호화를 위한 많은 미디어 프로세서는 가변길이 엔코딩(302) 및 디코딩(304)(각각 VLE 및 VLD)에 대해 작은 자율적인(프로그램가능한) 장치를 제공한다. MAP-2000CA에 관하여, 이 BSP는 VLx라고 하는 범용 CPU이다. BSP는 또한 MPEG 비트스트림의 파싱, 패킹 및 언패킹을 수행한다. 트랜스코더에서의 가변길이 디코딩(tVLD) 및 엔코딩(tVLE) 처리는 BSP 상에서 미디어 프로세서인 VLIW 프로세서와 공동으로 실행된다. 다른 처리는 전부 VLIW 프로세서 상에서 실행된다. 데이터 스트리머(DS; 데이터 이동기라고도 한다) 장치와 같은 DMA 엔진은 메모리, 캐쉬 및 I/O장치 사이에서의 데이터 이동(data motion)에 사용된다.
일반적인 원리는, DMA 엔진이 VLIW 프로세서 실행과 공동으로 데이터 캐쉬와 외부 메모리 사이에서 미디어 데이터의 모든 이동을 처리하도록 작고 빠르게 동작하는 메모리로서 VLIW 프로세서의 데이터 캐쉬를 사용하기 위한 것이다.
4.1 TPE 데이터 흐름에 있어서의 키 데이터 구조 및 버퍼
TPE는 미디어 데이터 흐름 아키텍처, 즉 모든 미디어 데이터(트랜스코딩되는 다른 서비스로부터의 오디오 및 비디오 데이터의 각종 표현)가 출력 전에 일련의 계산 처리 및 큐(queue; FIFO)를 통과하는 데이터 흐름 아키텍처를 사용한다. 계산 처리는, 이 데이터를 하나 이상의 입력 FIFO(PCI로부터의 전송 패킷 입력에 의해 개시됨)로부터 하나 이상의 출력 FIFO(PCI로의 전송 패킷 출력에 의해 종료됨)로 복사함으로써, 이 데이터 상에서 행한다. 미디어 데이터는 부피가 크고 기준의 낮은 장소를 갖는 바, 그에 따라 FIFO는 그들 처리가 DMA 엔진을 매개로 하여 이 데이터를 억세스하도록 캐쉬되지 않는 메모리 내에 유지된다. TCIin, 오디오 지연(Aud Dly), 입력속도 버퍼(iRB), 입력 매크로블록(iMB), 입력 블록(IBlk), 출 력 매크로블록(oMB), 출력 블록(oBlk), 출력속도 버퍼(oRB) 및 PCIout 등과 같은 데이터 버퍼의 기능뿐만 아니라, 트랜스코딩을 위한 TPE의 키 데이터 구조(버퍼 내에 존재하고 있음)는 표1에 있어서 명기되어 있다.
표1. 트랜스코딩 처리를 위한 버퍼와 키 데이터 구조
Figure 112003014617938-pct00001


Figure 112003014617938-pct00002
표2는 TPE를 위한 DMA 엔진(예컨대, 데이터 스트리머)의 이용을 설명한다. 데이터 스트리머 경로 번호는 표1에서의 데이터 구조와 크로스 레퍼런스(cross reference)로서 사용될 수 있다. 표2는 논리적인 DMA 엔진 경로만을 목록에 올리고 있다. 실제의 TPE 실현에 있어서는, 일반적으로 사용되고 있지 않은 DMA 엔진 리소스를 재사용할 수 있다(이하에 설명하는 "경로 등가(path equivalence)" 참조).
표2. DMA 엔진 경로 이용
Figure 112003014617938-pct00003
Figure 112003014617938-pct00004
표3. 매크로블록 데이터 구조, MbData_t
Figure 112003014617938-pct00005
4.2 트랜스코딩을 위한 TPE에서의 처리
4.2.1 디먹스(Demux)
디먹스 처리(306)의 고레벨 설명이 이하에 주어진다. 디먹스 처리는 TCI(308)로부터 도입되는 모든 MPEG 전송 스트림(MTS)을 시험한다. 이 TPE 상에서 트랜스코딩되는 서비스의 하나에 대해 오디오 또는 비디오 PID 스트림의 일부가 아닌 모든 패킷이 제거된다. 오디오 트랜스코딩은 여기서는 논의하지 않기로 한다. 오디오 스트림은 동일한 MTS 및 PES 패킷 구조를 계속 유지하고, 트랜스코딩 시스템 지연 후에 동일한 서비스의 일부로서 출력된다. 트랜스먹스는 고정 지연 장치이고, 모든 TPE 상의 모든 서비스의 모든 성분에 대해 동일한 지연이 가해진다.
디먹스(306)는 전송 스트림을 분해하고, 비디오 성분에 대한 기본 스트림 신택스를 역패킷화(de-packetize)하며, 개별의 비디오 억세스 단위(즉, 부호화된 영상)를 식별한다. 비디오 억세스 단위는 부호화된 영상 + 그 영상을 앞서는 더 높은 레벨의 모든 신택스, 및 그 영상의 최종 슬라이스의 다음에 오는 어떤 스터핑 바이트(stuffing byte)로 이루어진다. 일단 억세스 단위가 식별되면, 영상구조가 할당된다. 유지되어야 할 선택된 MTS 및 PES 층 정보는 (출력 PES 및 MTS 신택스에서의 산입을 위해) 영상구조 내에 저장된다.
디먹스 처리(306)는 억세스 단위(부호화된 영상)를 식별하기 위해 개시코드(startcode)용의 비디오 기본 스트림을 스캔한다. 이것은 또한, 부호화된 영상의 크기(byte) 및 (부호화된 프레임 속도 및 repeat_first_field 플래그로부터의) 각 영상의 프리젠테이션 지속시간을 결정해야 한다. 영상 크기는, 입력속도 버퍼(iRB)에서 완전한 영상이 이용가능한 때를 결정하기 위해 사용되고, 또한 스탯 먹스(statmux) 및 속도제어를 위해 필요하게 되는 파라미터를 계산하기 위해 사용된다. 프리젠테이션 지속시간은 PES 패킷 내에 존재하지 않는 경우에 이 영상에 대한 DTS를 구성하기 위해 사용된다. 이 영상의 시초에 있어서의 국부적인 27MHz 클록과 프로그램 클록 사이의 전류 오프셋이 결정되고, 영상구조 내에 저장된다.
4.2.2 스케줄러(Scheduler)
도 4는 본 발명에 따른 스케줄러를 이용한 영상 큐의 조작을 나타낸다. 동일한 도면번호를 붙인 구성요소는 도면에 있어서 서로 대응하는 것이다.
3개의 예의 서비스(405, 407, 409)로부터의 새로운 영상은 디먹스(306)로부터 제1스케줄러(402)로 공급된다. 부가적으로, 스케줄러(402)는 바이패스 영상(411, 413, 415)을 리먹스(remux; 336)로 공급한다. 몇몇 영상은, 예컨대 비트 저감을 위해 필요한 전류가 없을 때 바이패스 트랜스코딩된다. 리먹스(336)는 또한 각각의 서비스(416, 418, 420)로부터 부호화된 영상을 수신한다.
전술한 처리 실체(entity)의 내부 제어는 영상의 큐의 조작에 의해 처리된다. 영상 데이터 구조는 모든 비디오, PES 및 MTS 영상 데이터(예컨대, PES 및 MTS 시간스탬프, tVLD 및 tVLE에 의해 사용되는 VLx_state_t 데이터, 영상 형태, 크기 및 프리젠테이션 지속시간)뿐만 아니라, 서비스 데이터 구조에 대한 포인터를 포함하고 있다. 서비스 데이터 구조는 그 서비스에 의해 사용되는 MTS PID, 모든 서비스 큐(per-service queue; 예컨대, iRB, iMB, iBlk, oRB, 오디오 지연)의 어드레스 및 크기, 비디오 시퀀스 파라미터 및 양자화 매트릭스와 같은 정보를 포함하고 있다.
제1스케줄링 모듈(Sched1; 402)은 다른 비디오 서비스로부터의 영상을 TPE의 국부적인 처리순서로 인터리브한다. 이것은 디코딩 시간스탬프(DTS) 순서에 기초하여 행해진다. 트랜스코딩되어야 할 다음 영상은, (1) 그 DTS(국부적인 시간 베이스로 변환될 때)가 모든 서비스 사이에서 가장 작고, (2) 다음 영상(고려되고 있는 영상의 다음에 오는 영상)의 개시가 검출되고 입력속도 버퍼로 복사되면, 모든 서비스 입력 영상 큐의 하나로부터 (FIFO 순서로) 제거된다.
영상 구조는 그 영상의 DTS 시간이 발생할 때까지 "DTS 대기" 큐(408)에 그대로 남는다. 부호화된 영상은 이 기간동안 입력속도 버퍼에 존재한다. 제2스케줄링 모듈(Sched2; 404)은 DTS 시간이 경과할 때 영상을 "DTS 대기" 큐(408)로부터 "VLD 펜딩" 큐(406)로 이동시키고, BSP(410)는 이 영상을 처리하도록 스케줄링된다.
이것은 "Sched2"의 기능의 일부일 뿐이다. 이것은 또한 BSP를 tVLE 기능부에 할당하기 위해서도 사용된다. BSP에서 실행하는 처리는, 트랜스코더와 tVLE 처리 사이에 상당히 친밀한 상호작용이 있기 때문에 VLIW 프로세서와 관계가 없지 않다. 트랜스코더는 현재의 영상에 대한 목표 비트수가 만족되었는지를 판단하기 위해 tVLE에 의해 발생되는 비트의 수를 모니터한다. 목표 비트속도와 실제의 비트수 사이에 불일치가 존재하면, 트랜스코더에서의 속도제어 피드백 메커니즘이 목표 비트속도를 더욱 더 면밀히 만족시키도록 출력 MPEG 블록을 부호화하는데 사용되는 양자화 레벨을 조정한다. 이것은, 트랜스코더가 그 양자화 파라미터를 갱신하도록 발생되는 비트수를 보고하기 위해 tVLE가 N개의 매크로블록마다 정지되어야 한다는 것을 의미한다. 그 수(N)는, 예컨대 매크로블록의 대략 1/2행이다.
이러한 트랜스코딩 처리와 BSP 가변길이 엔코딩 처리 사이의 상호작용은, 이들 2개의 기능이 그들 각각의 프로세서 상에서 쉽게 실행되어야 한다는 것을 의미한다. 이 제약조건은, 트랜스코더와 tVLE 사이, 또 tVLD와 나머지 VLIW 프로세서 소프트웨어 처리 사이의 로드 평형(load balance)을 위해 충분히 밀접한 관계를 갖는다. TPE의 외부 루프의 간단화된 버전이 표4에 나타내어져 있다.
표4. 외부 루프(outer loop)
Figure 112003014617938-pct00006

트랜스코딩에 바람직한 영상은, 스탯먹스 룩어헤드 구간(L)이 특별한 영상에 대해 경과될 때 "DTS+L 대기" 큐(412)로부터 취해진다. 영상은 그들이 실제로 트랜스코딩될 수 있을 때까지 "트랜스코딩 펜딩" 큐(414)로 이동된다. "Sched2" 모듈(404)은 동작의 tVLE/트랜스코딩 모드와 tVLD/디먹스/리먹스 동작 사이에서 토글을 초래한다. 그 횟수를 최적화하기 위해 BSP 코드 화상이 교환되고, VLIW 프로세서 캐쉬 장소를 유지하기 위해 트랜스코딩을 위한 모든 화상 펜딩이 먼저 처리되고, 그 다음에 모든 펜딩 VLD 동작이 뒤따른다.
4.2.3 tVLD
tVLD는 비디오 기본 스트림을 MbData(매크로블록 데이터) 흐름 및 BlkData(블록 데이터) 흐름으로 파스(parse)하는 BSP 기능이다. tVLD는 하나의 억세스 유닛(영상)을 처리하고, 그 후 제어를 그만두며, 그에 따라 BSP가 다른 서비스의 VLD로 또는 VLE로 (스케줄러에 의해) 재할당될 수 있게 된다. 각각의 능동 서비스는 BSP를 협조적으로 공유하는 VLD 스레드와 VLE 스레드를 포함하고 있다. 데이터 구조(VLx_state_t)는 모든 BSP 스레드 컨텍스트 + 처리되는 비디오 억세스 유닛에 특유한 데이터를 유지하기 위해 사용된다.
VLD 프로그램은 비트스트림 데이터를 독출하여 2개의 메모리 사이의 출력 스트림, MbData 및 BlkData, 및 BSP 메모리 상주의 데이터 구조, 즉 표5에 기술된 VLx_state_t를 생성한다. 일단 개시되면, VLD 프로그램은 정지하기 전에 하나의 MPEG 부호화된 영상을 처리하게 된다. 이 처리 스테이지 중에 필요하게 되는 VLIW 프로세서 상호작용은 없다.
표5. VLx_state_t 구조
Figure 112008010781313-pct00007

Figure 112008010781313-pct00023
BSP는 DS 채널이 중지할 때를 검출할 수 없다. BSP가 검증되어야 하기 때문에, DS를 발행하는 것을 계속하기 전에 채널이 중지되고, 전송되고 있는 최종 워드를 폴링함으로써 전송 완료 조건이 결정된다. BSP 메모리로의 복사를 위해, DMA 엔진이 중지되기 전에 전송되고 있는 최종 워드는 난-제로(non-zero)로 되어야 하고, BSP 메모리 내의 위치는 제로로 초기화된다. BSP는 이 위치에서 난-제로값을 관측함으로써 전송의 완료를 검출하게 되는 것이다. BSP 메모리 밖으로의 복사를 위해, 중지되기 전에 전송된 데이터의 블록의 최종 워드가 다시 난-제로로 되어야 하고, DMA 엔진은 복사를 완료한 후에 이 소스 영역을 제로로 프로그램해야 한다. DMA 엔진 채널을 알고 있는 BSP는 전송되고 있는 최종 위치에서 제로를 만날 때 중 지된다.
VLD는,
1. 비트스트림을 BSP 메모리로 독출하고,
2. BSP 메모리로부터 메인 메모리(SDRAM)로 MbData를 이동시키며(여기서, MbData 흐름은 슬라이스 레벨보다 더 높은 신택스뿐만 아니라 매크로블록 정보를 이송하기 위해 사용된다.),
3. BSP 메모리로부터 메인 메모리(SDRAM)로 BlkData를 이동시키고, BSP 메모리 내의 부호화된 블록 버퍼를 제로로 만들며,
4. (억세스 유닛의 완료시에 VLIW 프로세서를 인터럽트하는) BSP 상태 교환을 위해 데이터를 전송할 때에 DMA 엔진을 사용한다.
비트스트림 입력 경로의 DMA 상태는 동일한 비트스트림의 VLD의 호출 사이에서 유지되지만, 다른 경로가 재설정 및/또는 재사용될 수 있다. VLx_state_t 구조는 VLD가 중지되는 시간에 각 흐름(flow)에 기록되는 데이터량의 카운트를 포함하고 있다.
비트스트림 입력 DMA 채널은 중지되지 않는 것으로 가정한다. 이것은 커다란 기본 스트림 버퍼로부터의 데이터를 소비하고, VLD가 초래될 때 적어도 하나의 완전히 부호화된 영상은 버퍼 내에 존재하는 것으로 가정한다. 버퍼 언더플로우를 검출(또는 버퍼 언더플로우에 관한 더 많은 정보를 대기)하는 방법은 없다.
MbData 흐름 소스 채널은 각 MbData_t 구조가 전송된 후에 중지된다. 이것은 BSP 메모리로부터 이중으로 버퍼되는 복사(double buffered copy)를 실현하기 위해 VLD에 의해 명쾌하게 계속된다. BlkData 소스 채널은 유사한 전략을 이용한다. 상태 채널은 BSP 메모리 안팎으로 VLx_state_t 구조를 복사하기 위해 사용된다. 이것은, BSP 실행과 동기화시키기 위해(예컨대, BSP를 다시 로드하기 위해, DMA 엔진 리소스를 재설정/재할당하기 위해, 그리고 그 데이터의 소스/싱크(sink)에 관하여 BSP를 흐름 제어하기 위해) 필요에 따라 VLIW 프로세서를 인터럽트한다. 이 채널은 각 영상의 끝에서 VLD/VLE에 의해 계속된다.
(VLx_state_t 내의) 영상 데이터는 영상 헤더 및 영상 부호화 확장으로부터 tVLD에 의해 추출된 정보로 이루어진다. 이것은, 영상 형태(I, P, 또는 B), DC 인트라 정밀도, 영상 구조, 꼭대기 필드 제1플래그, 프레임 예측 프레임 DCT 플래그, 은폐 이동벡터 플래그, 양자화 스케일 형태 플래그, 인트라 VLC 포맷 플래그, 교호의 스캔 플래그, 반복 제1필드 플래그, 풀 펠(full pel) 순방향 플래그, 풀 펠 역방향 플래그, 및 각 이동벡터 성분 및 예측 방향에 대한 r_codes(f_codes-1)를 포함하고 있다. 또한 영상 데이터에는, 고레벨 신택스의 바이트수, 상술한 신택스에 대한 오프셋, BSP GB(getbits) 단위 상태, tVLD DMA 엔진 채널 및 버퍼 인덱스, 현재의 영상의 부호화된 블록의 수 및 부호화된 매크로블록의 수가 포함되어 있다. 영상을 디코딩한 후에, 이 정보는 그 정보가 트랜스코더, tVLE 및 리먹스에 의해 사용되는 영상 데이터 구조로 복사된다. 현재의 영상에 있어서 회복 불가능한 에러의 발생을 표시하기 위한 에러 플래그도 존재한다.
1∼112 범위(부호화된 매크로블록마다)에 있어서 모든 디코드된 양자화기 스케일 값의 합은 tVLD에 의해 누적된다. 이 수는 또한 영상 데이터와 함께 되돌려 보내진다. 이 정보는 스탯먹스 요구 파라미터를 형성하기 위해 영상 형태 및 부호화된 영상 크기와 결합된다. 이 통계적인 멀티플렉싱 알고리즘은, 예컨대 166ms(30fps에서 5프레임) 룩어헤드, 및 각 서비스의 영상마다 목표 비트속도를 결정하기 위해 1초 이력을 사용한다. 영상마다 tVLD 동작이 완료되자마자, 이 정보는 (PCI 버스를 매개로 하여) QL 프로세서로 보내진다. 입력 블록(iBlk) 큐, 입력 매크로블록(iMB) 큐 및 "DTS+L 대기" 영상구조 큐(412)의 크기는 룩어헤드 요구에 기초를 두고 있다.
매크로블록 및 블록 데이터는 DMA 엔진에 의해 BSP 메모리의 밖으로 복사되는 정보의 흐름이다. 일반적으로, (1보다 큰 매크로블록 어드레스 증가에 의해 표시되는 스킵된 매크로블록으로 인한) 매크로블록의 변수와 (부호화된 블록 패턴에 있어서 "1"비트의 수에 의해 표시되는) 매크로블록에 대한 블록의 변수가 있다. 부호화된 블록 및 매크로블록만이 tVLD에 의해 생성된다. 블록 및 매크로블록이 tVLD에 의해 디코드됨에 따라, DMA 엔진은 이 데이터를 현재의 서비스에 대한 iMB 큐 및 iBlk 큐로 복사한다. 이들 큐는 캐쉬되지 않는 SDRAM 내에 상주하고 있고, 난-코히어런트 모드(non-coherent mode)로 DMA 엔진에 의해서만 억세스된다.
도 5는 본 발명에 따른 컨텍스트 절환 경로의 동작을 나타낸다.
타임 시퀀스 500에 있어서 나타내고 표3의 데이터 구조에도 언급한 바와 같이, 매크로블록 데이터는 부호화된 매크로블록마다 32바이트 구조로 이루어진다.
1. 플래그는 이 매크로블록이 슬라이스의 제1매크로블록인지 어떤지를 지시한다. 슬라이스 개시 코드의 최종 바이트에 의해 주어진 바와 같은 슬라이스 수직 위치도 포함된다.
2. 디코드된 매크로블록 어드레스 증가는 스킵된 MB의 트랙 및 현재의 MB의 스크린 위치를 유지하도록 주어지고 있다.
3. 매크로블록 형태 플래그(양자화기 존재, 순방향 MC, 역방향 MC, 부호화된 블록 패턴 존재, 인트라 부호화)가 제공된다.
4. dct_type 비트(프레임 대 필드)가 존재한다.
5. motion_type(프레임 구조에 대한 frame_motion_type 및 필드 구조에 대한 field_motion_type)가 존재한다.
6. 양자화 레벨(현재의 MC 내에 존재하는지 존재하지 않는지)이 1∼112 범위에 있어서 5비트 quantizer_scale_code 및 부호화된 quantizer_scale로서 포함되어 있다.
7. 부분적으로 디코드된 이동벡터(motion_code 및 motion_residual 포맷으로). 이중 프라임 예측(dual prime prediction)에 있어서 사용되는 델타 이동벡터가 나타내어져 있다. 필드 예측이 사용될 때, 기준필드 셀렉터 비트가 포함되어 있다.
8. 부호화된 블록 패턴은 어느 부호화된 블록이 이 매크로블록의 부분인지, 그리고 얼마나 많은 부호화된 블록이 이 매크로블록의 부분인지를 지시하기 위해 존재한다.
9. 검출된 신택스 에러의 존재를 나타내는 에러 플래그가 존재한다. 에러가 발생하면, 다음의 슬라이스에서 디코딩을 재개하기 위한 시도가 행해진다.
범례 550은 시퀀스 500의 신택스를 설명한다.
(슬라이스 레벨 신택스보다 높은) 헤더 정보가 처리될 때, 이 데이터의 축어적인 복사가 MbData 흐름에 저장된다. 헤더 정보는, 각 32바이트 단위의 최종 2바이트가 전송 완료를 검출하기 위해 BSP에 의해 사용되는 난-제로 플래그(non-zero flag)로 되도록 30바이트 덩어리 내에 채워진다.
블록 데이터는 부호화된 16비트 수로 나타내어지는 디코드되고 양자화된 DCT 계수의 8×8어레이로 이루어진다. 인트라 DC 값은 다른 DC이고, 실제의 DC 값을 얻기 위해 동일한 컬러 성분(또는 128)에 대한 이전의 인트라 DC 값이 가산되어야 한다.
주해(註解):
1) 인트라 DC 블록의 DPCM (디)코딩은 VLIW 프로세서에 있어서 수행된다. 인트라블록 DC 항은 BSP에 대한 입/출력과 다른 값이다.
2) 이동벡터의 DPCM (디)코딩은 VLIW 프로세서에 있어서 수행된다. 각 이동벡터 성분(수평 또는 수직)은 (motion_code, motion_residual)의 쌍으로서 MbData_t 내에 저장된다.
3) M개의 수신된 프로그래밍 서비스는 분리되거나 혹은 공통의 MbData_t 및 BlkData_t 버퍼와 DS 경로를 가질 수 있다. 이들 경우에, DS 채널은 BSP 로드 사이에서 반드시 플러시(flush)되거나 재설정될 필요는 없다. M개의 서비스가 메모리와 메모리 사이의 DMA 엔진 버퍼/경로를 공유하더라도, tVLD 및 tVLE는 BSP GB 유닛을 매개로 하여 비트스트림 I/O에 대해 분리된 경로를 필요로 한다.
4) BSP 및 VLIW 프로세서의 병렬 계산(parallelism)을 증가시키기 위해, 때때로 (a) VLIW 프로세서로부터의 BlkData_t 대신에 실행/레벨쌍 시퀀스를 수신함으로써 tVLE를 빠르게 하고, (b) VLIW 프로세서로 실행/레벨쌍 시퀀스를 공급함으로써 tVLD를 빠르게 할 수 있다. 항 (b)는 또한 룩어헤드 버퍼의 공간을 절약한다.
4.2.4 tVLE
tVLE 처리는 출력 블록(oBlk) 및 트랜스코더에 의해 생성되는 출력 매크로블록(oMB) FIFO로부터 블록 및 매크로블록 데이터를 소비한다. 이들 2개의 FIFO는 모든 서비스(각 FIFO의 하나만이 존재)에 의해 사용되고, 이들 FIFO는 트랜스코더가 하나의 영상으로부터 다음 영상으로 절환될 때 비워진다. DMA 엔진은 난-코히어런트 억세스 모드를 이용하여 tVLE를 위해 각 FIFO로부터 데이터를 인출(fetch)하기 위해 사용된다. 출력 비디오 기본 비트스트림은 난-코히어런트 메모리 기록 DMA 엔진 경로를 매개로 하여 출력속도 버퍼(oRB)에 저장된다.
tVLE는 에러가 없는 위상으로 되려고 한다. 모든 불량 영상은 그들이 tVLE에 보이지 않도록 삭제되지 않으면 안된다. 다음의 슬라이스 개시코드로 스캐닝함으로써 회복되는 불량 신택스 에러는 tVLE로 통과되는 스킵된 매크로블록의 시퀀스로 된다.
전술한 바와 같이, 트랜스코더 및 tVLE는 최종 동기화한 때부터 생성되는 비트수에 대한 정보를 교환하기 위해 N개의 매크로블록마다 동기화한다. 슬라이스, 매크로블록 및 블록 레벨 비트만이 카운트되고, 헤더 신택스의 크기는 일정하여 포함되지 않는다. 매크로블록 후에 발생하는 동기화점은 MbData_t 내의 모드 비트(mode-bit)로서 MB_SYNCHRONIZE 플래그와 함께 부가된다. 매크로블록은 규칙적으로 배치될 필요는 없지만, 다음과 같은 몇 가지의 제약이 있다.
1. 최종 매크로블록에는 MB_SYNCHRONIZE가 부가되어야 한다(그렇지 않으면 비트수의 최종 증가가 포함되지 않는다). tVLE는 블록 또는 매크로블록을 카운트하지 않고, 영상의 끝에 도달했다는 것을 알리기 위해 트랜스코더에 의존하고 있다.
2. 수 N은 너무 작게 할 수 없다. 그렇지 않으면, 입력 DMA 엔진 경로가 트랜스코더에 의해 기록된 데이터 이외의 데이터를 독출할 것이다. 트랜스코더는 DMA 엔진이 이 조건에 대한 점검을 할 수 없기 때문에 FIFO 언더런(underrun)을 방지하기 위해 tVLE보다 앞에 적어도 2개의 부호화된 블록 및 2개의 부호화된 매크로블록을 남기지 않으면 안된다. N이 작은 값으로 되는 것을 회피하기 위한 더 일반적인 다른 이유는, 동기화가 성능 항목에서 비용이 많이 든다는 점이다. 이것은, 더 빠른 프로세서가 공전함으로써 기다리도록 한다.
3. N은 지나치게 크지 않아야 한다. BSP는 누적된 비트 카운트를 둘레를 감도록 허용될 수 없는 부호화되지 않은 16비트 숫자로서 유지한다. N이 더 큰 값으로 될수록 목표 비트속도를 만족시킬 때에 낮은 정밀도를 의미하는 양자화 레벨을 정정하기 위해 더 긴 응답시간을 갖게 된다.
VLE는 트랜스코딩된 MPEG 비디오 기본 비트스트림을 생성한다. 슬라이스 레벨보다 더 높은 모든 신택스는 소스 비트스트림으로부터 변화되지 않고, 이 신택스는 MbData 흐름으로부터 출력 비트스트림으로 직접 복사된다. 슬라이스, 매크로블 록 및 블록 신택스는 독출한 MbData_t 및 BlkData_t 구조에 따라 생성된다. 속도제어 목적을 위해, tVLE는 생성된 출력 슬라이스/MB 비트를 카운트하고, MB_SYNCHRONIZE 플래그가 MbData_t 구조의 모드 워드로 설정될 때마다 이 정보가 VLIW 프로세서로 통과하는 것을 정지한다(공회전시킨다).
이 동기화 메커니즘은 oBlk 및 oMB FIFO가 관리되는 방법에 대한 어떤 요구를 인정한다. tVLE는, 이 tVLE가 VLIW 프로세서 동기화를 잠시 멈출 수 있다는 것을 알기 전에, 동기화점 이외의 블록 및 매크로블록의 DMA 엔진 독출이 개시되도록 하기 위해 독출선행(read-ahead) 전략을 이용한다. 부가적으로, DMA 엔진는 또한 BSP 메모리로 전송된 정보 이외의 데이터를 독출한다. 이것은, 동가화가 FIFO 언더플로우를 회피하려고 하기 전에, 3개의 MbData_t 구조(최소 크기 DMA 엔진(예컨대, DS) 버퍼 내에 2개의 MbData_t 구조가 있다) 및 MB_SYNCHRONIZE 매크로블록 이외의 2개의 BlkData_t 구조가 외부 RAM 내에 존재해야 한다는 것을 의미한다. oBlk 및 oMB FIFO에 데이터를 기록하기 위해 트랜스코더를 사용하는 처리는, 발생할 수 있는 언더플로우가 없도록 보증하기 위해 VLIW 프로세서가 적어도 6개의 MbData_t 구조 및 4개의 BlkData_t 구조의 기록을 개시해야 한다는 것을 의미하는 파이프라인식 기록후행 알고리즘(pipelined write-behind algorithm)이다.
oMB로 기록하는 6개의 부호화된 매크로블록이 동시에 개시되면, 4개의 부호화된 블록이 기록되고, 그 후 언더플로우를 회피하기 위해 더미 블록이 oBlk FIFO에 삽입되지 않으면 안된다. tVLE는 MbData_t의 "blk_skip" 필드를 통해 이들 더미 블록을 통지하게 된다. 영상의 끝(end of a picture: EOP)의 발생은 몇 가지의 귀찮은 문제를 드러낸다. 첫 번째로, EOP가 MB_SYNCHRONIZE 매크로블록으로부터 6개의 부호화된 매크로블록 내에서 발견된 경우는, 동기화점이 (필요로 되는 동기화점인) EOP로 이동된다. 두 번째로, 다중 서비스의 스케줄링으로 인해, 그리고 다중 서비스가 동일한 oBlk 및 oMB FIFO를 공유하기 때문에, EOP에서 oBlk 및 oMB 언더플로우를 회피하는 것은 실제로 도움이 되지 못한다. 이들 이유로 인해, 영상의 끝에서는 "해롭지 않은" 언더플로우가 허가된다. 이 언더플로우는 영상 사이의 FIFO에 3개의 MbData_t 및 2개의 BlkData_t의 "갭(gap)"을 삽입함으로써 해롭지 않게 행해진다. 이들 갭 구조는 새로운 영상의 처리를 개시할 때에 tVLE에 의해 독출되어 무시된다.
VLE는 다음과 같은 DMA 엔진(예컨대, DS) 경로를 사용한다.
1) BSP 컨텍스트 절환 경로는 컨텍스트 절환을 목적으로 BSP 메모리 내의 VLx_state_t 구조를 치환하기 위해 사용된다. BSP는 각 영상의 끝에서 이 경로의 소스 채널 상에서 DsContinue를 행하고, 그 후 완료를 위해 ctx_sw_flags를 대기한다(NC-to-NC).
2) MbData 흐름은 각 MbData_t 구조가 복사된 후에 소스 채널이 중지될 때의 메모리와 메모리 사이(mem-to-mem: NC-to-NC)의 복사이고, 이로써 tVLE는 이중으로 버퍼되는 독출을 행할 수 있다. 이 경로는 tVLE 호출 사이에서 재설정 및 재사용될 수 있다.
3) BlkData 흐름은 각 BlkData_t 구조가 복사된 후에 소스 채널이 중지될 때의 메모리와 메모리 사이(NC-to-NC)의 복사이고, 이로써 tVLE는 이중으로 버퍼되 는 독출을 행할 수 있다. 이 경로는 tVLE 호출 사이에서 재설정 및 재사용될 수 있다.
4) GB 출력 스트림은 비트스트림을 SDRAM에 저장한다. GB 출력 스트림은 VLx_state_t 내에 격납/재저장되고, 이 경로의 DMA 엔진 상태는 tVLE 호출 사이에서 교란되지 않아야 한다.
tVLE에 있어서, MbData_t에서의 ".qscale_code" 필드는 비트스트림 내에 직접 배치되는 5비트의 "quantizer_scale_code"이다. MB_NEWSLICE가 설정되면, MB_QUANT는 이 매크로블록에 대해 2번 .qscale을 전송하는 것을 회피하기 위해 클리어되어야 한다.
4.2.5 BSP 관리
BSP 처리(tVLD 및 tVLE)는 한 영상에 동시에 작용한다. 현재의 화상이 완료될 때, BSP는 다른 서비스, 및 아마도 다른 기능(예컨대, VLD 대 VLE)으로 절환되는 컨텍스트를 얻는다. 다음 기능이 존재하지 않는 것이 가능하다(예컨대, BSP는 사용되지 않고 VLIW 프로세서 및 간단한 실행을 대기하며, 더 작업할 때까지 공회전 루프(spin loop)가 준비된다). 이 컨텍스트 절환처리는 DMA 엔진에 의해 달성되고, 기본적으로는 VLIW 프로세서와 비동기 상태에 있다. BSP 컨텍스트 절환절차는 다음과 같다.
1) 종료 BSP 처리는 모든 필요한 상태를 BSP 메모리 상주 데이터 구조(즉, VLx_state_t, 표5 참조)에 격납한다. 이것은 BSP 하드웨어 GB(getbits) 유닛의 상태를 포함한다.
2) BSP 컨텍스트 절환 메모리-투-메모리(memory-to-memory: 메모리와 메모리 사이) DMA 엔진 경로의 소스 채널이 계속된다. 이 계속되는 동작은 BSP 메모리로부터 SDRAM의 할당된 위치로 VLx_state_t 구조를 복사한다.
3) BSP는 VLx_state_t의 .ctx_sw_loc 필드를 제로로 하고, 그 후 이 위치를 폴링하는 고속루프(fastloop)로 들어간다. 이 고속루프는 이 위치가 이 워드로부터 독출한 어드레스로 점프함으로써 난-제로로 될 때 퇴장하게 된다.
4) VLIW 프로세서는 BSP 메모리로부터 복사한 VLx_state_t로의 완료에 의해 인터럽트된다. 이 인터럽트는 VLIW 프로세서가 BSP의 진행을 모니터하는 것을 허용한다. 이 ISR의 기능에 대해서는 후술하기로 한다.
5) 다른 실행가능한 BSP 스레드가 존재하면, 컨텍스트 절환 경로는 (a) 선택적으로 BSP 메모리 텍스트 화상(명령 및 테이블)을 재로드하고, (b) 어떤 작업 데이터 구조를 초기화/제로로 하며, (c) VLx_state_t 버퍼를 새로운 BSP 스레드의 상태로 재로드한다. 새로운 VLx_state_t 구조의 ".ctx_sw_loc" 엔트리는 이 스레드에 대한 엔트리점 어드레스를 포함하고 있고, 이 엔트리점으로의 분기는 BSP가 이 난-제로값을 검출하자마자 발생한다.
6) 실행가능한 BSP 스레드가 즉시 이용가능하지 않으면, BSP는 그 고속루프에 있어서 .ctx_sw_loc를 폴링하는 것을 계속한다. BSP 컨텍스트 절환 DS 경로는 새로운 BSP 스레드가 실행가능하게 되자마자 그 경로가 계속되도록 (소스 채널 및 수신지(목적지) 채널의 양쪽을) 중지한다[단계 5로 진행].
BSP 컨텍스트 절환 DMA 엔진 경로는 컨텍스트 절환 처리에 있어서 최소로 2 개의 복사를 행한다. 첫 번째로, 종료 처리의 상태 구조가 SDRAM에 복사된다. 두 번째로, 새로운 BSP 처리의 상태 구조가 SDRAM으로부터 BSP 메모리로 복사된다. 모든 BSP 처리에 대한 모든 상태 구조는 공통 포맷(VLD 대 VLE 결합을 포함한다)을 갖고, BSP 메모리의 공동의 잘 알려진 어드레스에 존재하고 있다. 이 컨텍스트 절환시에, BSP 코드 화상이 변화되면, 컨텍스트 절환 경로는 오래된 상태 구조의 제거와 새로운 상태 구조의 설치 사이에서 이것을 BSP 메모리에 복사한다. 컨텍스트 절환 경로에 대한 소스 및 수신지 기술자(source and destination descriptor)는 1 대 1 대응의 관계에 있고, 그것들은 "Sched2" 모듈(404; 도 4 참조)에 의해 동적으로 정의된다. 영상이 "트랜스코드 펜딩(transcode pending)" 큐(414)에 부가될 때마다, 새로운 기술자를 컨텍스트 절환 소스 및 수신지 채널에 부가하는 것을 통해 대응하는 tVLE 실행이 스케줄링된다. VLD 펜딩 큐406)로 이동되는 영상마다, 각 스케줄링 사이클에 있어서 모든 tVLD가 실행되기 전에(외부 프로그램 루프의 반복 전에) 모든 tVLE가 실행되도록, tVLD 실행이 유사하게 스케줄링된다.
도 5는 본 발명에 따른 BSP 컨텍스트 절환 경로의 동작을 나타낸다.
VLIW 프로세서가 BSP에 의해 이루어지는 진행의 트랙을 유지하도록 하기 위해, SDRAM으로의 종료 BSP 처리의 상태 복사를 위한 수신지 기술자는 완료시에 VLIW 프로세서를 인터럽트한다. VLIW 프로세서 ISR은 다음과 같은 것을 포함하는 각종의 하우스 키핑(house keeping) 기능을 수행하기 위해 사용된다.
1. 컨텍스트 절환 경로의 소스 및 수신지 채널에 대한 실행된 기술자의 제거 기능.
2. VLIW 프로세서 동기화 상태를 제공하는 기능(이에 따라, 트랜스코더는 tVLE가 실행되고 있는 것을 알게 된다).
3. "VLD 펜딩" 큐로부터 "DTS+L 대기" 큐로 영상 구조를 이동시키는 기능.
4. 소스 및 수신지 채널 양쪽의 DsContinue()ing 기능. 이 기능은, 이 순간에 스케줄링하는 부가적인 작업이 없는 경우에 컨텍스트 절환 경로가 "리스트의 실행 중지 및 종료"되는 것을 방지하기 위해 필요한 기능이다.
4.2.6 VLIW 코어 트랜스코더(Core Transcoder)
비디오 트랜스코더의 근본적인 기능은 높은 비트속도 비트스트림을 낮은 비트속도 비트스트림으로 변환하는 것이다. 또한, CM(commercial: 광고) 삽입, 로고 삽입 및 그루밍(grooming)과 같은 부가적인 특징은 이 처리에 있어서 실현될 수도 있다. 트랜스코더(VLIW 엔진)는 이동보상(motion-compensation), DCT 및 양자화 등과 같은 트랜스코딩 기능(기구)을 수행한다.
도 6은 본 발명에 따라 사용하기 위한 가능한 트랜스코더를 나타낸다. 이러한 아키텍처는 DCT 도메인에 있어서 최상의 동작을 수행하고, 따라서 역DCT 및 이동보상 동작이 절감된다. 게다가, 이동벡터가 재계산되지 않기 때문에, 이에 필요한 계산이 동적으로 저감되게 된다. 이 아키텍처에 기초하여, 더 한층의 간략화가 행해질 수 있다. 신중한 비교 후에, 이 아키텍처가 낮은 계산 복잡성과 높은 신뢰성의 최상의 결합을 제공하리라고 믿고 있다.
VLIW 기계에서의 실시간 프로그래밍을 위해 몇 가지 결정적으로 고려해야 할 사항은 다음과 같다.
1) 미디어 처리 알고리즘은 이용가능한 명령, 특히 분할된 워드 계산을 효과적으로 사용해야 한다. 이들 모드에 있어서, 단일 명령은 SIMD(single instruction, multiple data: 단일 명령, 다중 데이터)식으로 8, 16 또는 32비트 요소의 짧은 벡터로서 처리되는 워드(32, 64 또는 128비트)상에서 동작한다. 미디어 데이터(화소, DCT 계수, …)의 모든 내부 루프 관리는, 실시간 비디오 계산 성능을 얻기 위해, 이들 명령을 사용해야 한다.
2) 다수의 기능적인 유닛은 비지(busy)상태로 유지되어 병렬로 동작해야 한다. 대부분의 시간동안, 이것은 최소의 문장과 문장 사이(statement-to-ststement)의 데이터 의존에 따라 할당 문장의 시퀀스로 행해질 수 있다. 반복과 반복 사이(iteration-to-iteration)의 데이터 독립이 존재하면, 종종 이것은 루프를 언롤링(unrolling)함으로써 얻어질 수 있다.
3) 분기는 느리고, "지연 슬롯(delay slot)" 동작은 사용하기 어렵다. 분기는 연산자(C에서의 ?:)를 선택하고 루프를 언롤링하며 작은 기능을 인라이닝(inlining)하는 데이터의 사용에 의해 최소화된다.
4) 캐쉬를 효과적으로 이용할 것(스래싱이 없을 것). 명령 캐쉬의 경우, 이것은 통상의 경우에 캐쉬에 상주하고 있는 영상의 전 매크로블록 루프를 의미한다. 희한한 사건(예컨대, tVLE 동기화 및 에러 회복) 및 영상 변화 중에 예외가 만들어질 수 있다. 데이터 캐쉬의 경우, 데이터 작업 세트는 스택의 꼭대기를 포함하고서 캐쉬에 상주(캐쉬 안팎으로 미디어 데이터를 이송하는 DS)하고 있어야 한다.
5) VLIW 레지스터 리소스는 효과적으로 사용되어야 한다. MAP의 2개의 클러스터의 각각은 국부적인 스칼라 변수 및 임시 표현(expression temporary)에 의해 사용되는 64개의 32비트 레지스터를 갖는다. 인라이닝 기능은 사용되는 레지스터의 수를 증가시킬 수 있다. 실제의 기능 호출에서 발생하고 엔트리 및 퇴장(exit)을 인터럽트하는 다수의 레지스터의 격납 및 재저장은 최소화되어야 한다.
도 6에 있어서는, 각각의 앵커(anchor) 영상 전에, 이전의 프레임 버퍼(P_FB; 630) 및 현재의 프레임 버퍼(C_FB; 640)가 (포인터 교환에 의해) 교체된다. B영상 트랜스코딩 중에, P_FB(630)는 순방향 이동보상을 위해 사용되고, C_FB(640)는 역방향 이동보상을 위해 사용된다. 이들 프레임 버퍼는 비트속도 저감에 의해 도입되는 한 화소 한 화소의 에러 또는 잡음 신호를 나타내는 공간적인 차 화상(difference image)을 유지한다. 여기에서 논의되는 유효한 트랜스코딩 알고리즘에 있어서, 이동벡터, 예측(이동)모드, 인터 대 인트라, 및 매크로블록의 프레임 대 필드 DCT 속성은 트랜스코딩 처리에 의해 변화되지 않는다.
트랜스코더(600)에서의 주요한 기능 블록은 다음과 같다.
1. (옵션) 실행길이 디코더(runlength decoder: RL-Dec)(605): (Run, Value)쌍을 8×8 2차원 배열로 변환한다. 이 스텝은 tVLD에서 발생한다.
2. Q1 -1: 디코더에 대한 역양자화(610). 역양자화가 (Run, Value)쌍의 Value에 대해서만 수행되기 때문에, 연산의 수는 8×8블록당 64보다 훨씬 적다. 많은 8×8블록은 MPEG CBP 플래그에 의해 지시되는 바와 같이 모두 제로이고, 이로써 Q1 -1에 대한 총 계산은 작다. 입력 비트스트림 양자화 스케일 Q1 -1이 여기에 사용된다.
3. DCT(615): 순방향 DCT. 필요하게 되는 계산 로드는 IDCT에 대한 것과 거의 동일하다. 그렇지만, 이것은 프레임 내의 매 8×8 부호화된 인터블록의 이동보상된 예측 시에 수행된다. 필요하다면, MC(620)와 DCT(615) 블록 사이에서 필드 DCT 치환이 발생한다.
4. MC(620): 디코더에 대한 이동보상(Motion Compensation: MC)은 (순방향 MC를 위한) P_FB(630)와 (역방향 MC를 위한) C_FB(640)의 양쪽을 억세스하고, 이것은 한 프레임의 모든 블록에 대해 수행된다. MC 처리는 낮은 계산량이지만, 높은 메모리 억세스로 된다. MC에 의해 필요하게 되는 데이터는 DMA 엔진을 매개로 하여 SDRAM 내의 기준영상으로부터 인출(fetch)된다. 상부 왼쪽 구석의 화소가 (1/2화소 보간에 있어서) MC 출력에 기여하는 최상부 및 가장 왼쪽의 화소로 되도록, (각 컬러 성분에 대한) 화소의 고정된 크기의 직사각형(rectangle)이 검색된다.
5. A1: 재구축된 주파수 도메인 블록을 형성하기 위해 이동보상되고 변환된 블록을 Q1 -1출력에 가산한다. 이 기능은 버퍼 C_FB로부터 데이터를 로드하고, 그 후 데이터를 C_FB 내로 반대로 저장한다. 계산은 간단한 가산이지만, 메모리 억세스는 화소마다 2개의 로드 및 하나의 저장을 포함한다.
6. Q2(650): DCT 계수에 대한 양자화. 이 연산은 8×8블록의 64개의 데이터점 모두 및 한 프레임의 매 블록에 대해 수행된다. 이 단계에서는 출력 양자화 스케일 Q2가 사용된다.
7. Q2 -1(660): 출력 양자화 스케일을 이용하는 엔코더에 대한 역양자화. 이 기능은 Q1 -1(610)보다 낮은 계산 로드를 갖는다.
8. A2: 차 블록(difference block)을 형성하기 위해 재구축된 화상으로부터 이동보상을 감산한다. 이 블록의 출력은 예측 체인에 걸친 모든 에러의 주파수 도메인 누적을 나타낸다.
9. IDCT(670): 디코더에 대한 역DCT. 이 IDCT는 많은 연산(8점 1차원 변환에 대해 대중적인 첸왕(Chen-Wang) 고속 DCT 알고리즘을 위한 19개의 가산과 13개의 승산)을 필요로 한다. IDCT의 공간적인 결과는 앵커 영상을 위해 C_FB 프레임 버퍼(640) 내에 저장된다. 이 블록에 대한 CBP 입력 비트가 제로이거나, 혹은 Q2 양자화 단계가 제로 블록으로 끝나더라도, C_FB 프레임 버퍼는 갱신되어야 한다.
10. (옵션) 실행길이 엔코더(RL-Enc; 680): (run, level)쌍을 발생한다. 이 기능 블록은 적은 계산을 행하지만, 양자화된 DCT 계수를 로드함으로써 메모리를 억세스한다. "Run"은 순차적으로 계산되기 때문에, 이 연산을 병렬로 처리하는 것은 어렵다. 이 단계는 tVLE에서 발생하게 된다.
트랜스코더의 아키텍처는 고정되어 있지만, 아주 의미 심장한 몇몇 경우에는 특정의 시나리오를 조사함으로써 데이터 흐름을 간단화할 수 있다. 도 6에 나타낸 트랜스코더 아키텍처는 많은 기능 블록을 갖지만, 영상 형태 또는 매크로블록 부호화 모드마다 그들 모두가 사용되지는 않는다. 영상 형태 및 매크로블록 형태에 따르면, 모든 조건은 각각이 어떤 간단화로 되는 6가지의 카테고리로 분류된다.
1) P영상(P-picture), 인터블록(inter-block). 이 카테고리는 대부분의 기능 블록을 사용하고, 따라서 시간소비가 가장 크다. 도 7은 인터블록을 P영상으로 부호화할 때 도 6의 트랜스코더의 기능 블록을 나타낸 도면이다. 동일한 도면번호가 붙여진 요소는 이들 도면에서 서로 대응하는 것이다. 도 7은 도 6의 트랜스코더(600)와 마찬가지로 모든 기능 블록을 사용하는 트랜스코더(700)를 나타낸다. 역방향 이동보상만이 제거되어 있다. 이것은 최악의 경우(즉, 가장 계산적으로 강한 경우)이다.
2) B영상, 인터블록. 도 8은 인터블록을 B영상으로 부호화할 때 도 6의 트랜스코더의 기능 블록을 나타낸 도면이다. B프레임이 앵커 프레임이 아니기 때문에, 공간적인 차 프레임을 출력할 필요가 없고, 이로써 다음과 같은 계산적인 절약을 얻을 수 있다. 현재 실정으로는 버퍼 C_FB(640)의 갱신이 생략될 수 있다. 또한, 도 8의 트랜스코더(800)에 있어서 나타낸 바와 같이, 기능 Q2 -1, IDCT 및 A2가 모두 생략되어 있다.
3) 난-B영상(non-B-picture), 인트라블록(intra-block), 여기서 Q2>Q1. I 및 P프레임의 인트라블록에 대해서는 이동보상이 필요하지 않다. 도 9는 인트라블 록을 난-B영상으로 부호화할 때 도 6의 트랜스코더의 기능 블록을 나타낸 도면이다(여기서, Q2>Q1). 트랜스코더(900)에 대해 나타낸 바와 같이, 이 디코더 부분에서는 A1, DCT 및 MC에 대한 연산이 생략되어 있다. 이 경우의 다른 절약은, 엔코더 부분에서의 IDCT가 더 이상 필요치 않다는 것이다. Q1 -1(610)로부터의 출력은 Q2(650)로 직접 공급된다.
4) B영상, 인트라블록, 여기서 Q2>Q1. 도 10은 인트라블록을 B영상으로 부호화할 때 도 6의 트랜스코더의 기능 블록을 나타낸 도면이다(여기서, Q2>Q1). 이 경우는 상당히 간단하다. 인트라 블록이기 때문에, 트랜스코더(1000)에 있어서 이동보상 및 DCT는 필요치 않다. IDCT도 또한 생략되어 있다.
5) 난-B영상, 인트라블록, 여기서 Q2≤Q1. 도 11은 인트라블록을 난-B영상으로 부호화할 때 도 6의 트랜스코더의 기능 블록을 나타낸 도면이다(여기서, Q2≤Q1). 주의해야 할 것은, 트랜스코더는 비트속도 절감만을 제공하기 때문에 매크로블록이 재양자화되는 일없이 통과하는 경우에, Q2가 Q1보다 적어지는 것과 같이 계산되어야 한다는 것이다.
이 경우, 인트라블록이고 양자화 변화가 없기 때문에, 트랜스코더(1100)에 있어서는 이동보상 Q2, Q2 -1이 필요치 않고, DCT가 필요하다. IDCT도 또한 생략되어 있다.
6) B영상, 인트라블록, 여기서, Q2≤Q1. 도 12는 인트라블록을 B영상으로 부호화할 때 도 6의 트랜스코더의 기능 블록을 나타낸 도면이다(여기서, Q2<Q1). 이것은 가장 간단한 경우이다. 트랜스코더(1200)는 실행길이 디코더(605)와 실행길이 엔코더(680)만을 사용한다.
트랜스코딩 처리를 위한 몇몇 특별한 기능블록을 이하에 요약한다.
(1) P영상의 입력 No-MC MB에 대해, CBP는 재양자화 후에 제로와 같게 할 수 있다. 이 경우,
(a) 이 MB가 슬라이스에서의 최초 또는 최종 MB가 아니면, 스킵된 MB가 발생된다.
(b) 이 MB가 슬라이스에서의 최초 또는 최종 MB이면, 제로 이동벡터를 갖는 순방향 프레임 예측된 MB가 발생된다.
(2) B영상의 트랜스코딩 처리에 있어서는 DC 예측이 수행되지 않는다.
(3) P영상의 스킵된 MB에 대해, 기준 데이터를 P_FB(630)로부터 C_FB(640)로 이동시킬 때에 DMA 엔진이 사용된다.
(4) 제로 이동벡터(P영상) 또는 제로 차 이동벡터(B영상)를 갖는 프레임 예측된 MB 및 이전의 MB의 동일한 예측 형태에 대해, CBP는 재양자화 후에 제로와 같게 할 수 있다. 이 경우, 이 MB가 슬라이스에서의 최초 또는 최종 MB가 아니면, 스킵된 MB가 발생된다.
트랜스코더는, (1) iMB와 데이터 캐쉬; (2) iBlk와 데이터 캐쉬; (3) 프레임 버퍼(예측을 위한 순방향 및 역방향 기준)와 데이터 캐쉬; (4) 데이터 캐쉬와 C_FB 프레임 버퍼; (5) 데이터 캐쉬와 oMB; (6) 데이터 캐쉬와 oBlk; 및 (7) (P영상의 스킵된 MB를 위한) P_FB와 C_FB 사이의 데이터 전송에 있어서 DMA 엔진을 사용한다.
4.2.7 에러 처리(Error handling)
입력 비디오 내의 에러는 tVLD 및 트랜스코딩 프로그램에 의해 검출된다. 에러는 다음과 같은 2개의 카테고리로 나누어진다.
(1) 사소한(minor) 에러: 다음의 슬라이스에서 종종 계속될 수 있는 에러.
(2) 심한(severe) 에러: 프로그램이 다음의 비디오 시퀀스 헤더에서 계속되는 에러.
사소한 에러는 영상의 다음의 슬라이스에서 계속된다. 이들 에러는 MbData_t 흐름의 격리된 MB_ERROR에 의해 표시된다. 트랜스코딩 프로그램은 MB_ERROR MB를 스킵하고(tVLE로 통과되지 않음), 영상의 다음의 양호한 MB에서 계속한다. PX_ERROR 비트에 의해 지시된 심한 에러는 파괴된 영상이 폐기되도록 하고, Demux()는 새로운 시퀀스 헤더를 찾음으로써 재개되어야 한다. 심한 에러 상태는 독립적으로 각 처리 모듈에 의해 유지되고, 비디오 시퀀스 개시코드를 달고 있는 영상(및 심한 에러 상태가 아닌 영상)이 발견될 때까지 모든 영상 구조를 제거하게 된다. PX_ERROR 영상은 Transcode()로 통과하게 되고, 여기서 그 영상에 대해 발생된 MbData_t 또는 BlkData_t는 모두 버려진다.
몇몇 상세한 절차는 다음과 같다.
1) 상기한 슬라이스 층의 대부분의 신택스 및 시맨틱 에러 조건(syntax and semantic error condition)은 .pict_flags 내에 PX_ERROR를 설정하는 다음과 같은 것을 제외하고 검사되지 않는다.
- 영상 형태 코드는 1, 2, 또는 3이 아니다(MB가 처리되지 않는다).
- 1 또는 그 이상의 fcodes == 0(MB가 처리되지 않는다).
- picture_structure는 0이다(MB가 처리되지 않는다).
- 첫 번째 슬라이스 전에 보이는 영상 헤더가 없다(MB가 처리되지 않는다).
- 영상의 슬라이스 수직 위치를 감소시킨다.
- 슬라이스 사이에서 찌꺼기(garbage)가 검출된다.
2) 다음과 같은 매크로블록 레벨 에러 조건이 검출되고, MB_ERROR 비트가 MbData_t에 설정되는 것으로 된다.
- (MB 또는 슬라이스 내의) 제로값 양자화기 스케일 코드
- 제로 값으로 된 {frame,field}_motion_code
- 블록 내의 64개 이상의 계수
- 유효하지 않은 매크로블록 어드레스 증가 VLC
- 유효하지 않은 매크로블록 형태 VLC
- 유효하지 않은 이동벡터 코드 VLC
- 유효하지 않은 부호화된 블록 패턴 VLC
- 유효하지 않은 실행/레벨(run/level) VLC
임의의 MB를 처리하기 전에 검출된 영상(또는 더 높은 레벨) 에러는 첫 번째 슬라이스 SC가 보일 때 중지되는 것으로 된다. PX_ERROR는 .u.vld.nblock==0==.u.vld.nmb로 설정되고, .u.vld.ending_startcode는 첫 번째 슬라이스 개시코드로 된다. ".u.vld" 항목은 예컨대 표5에 나타낸 바와 같은 VLx_state_t 데이터 구조의 엘리먼트를 참조하는 C 프로그래밍 언어 신택스(구문)를 나타낸다. 매크로블록 레벨 에러는 다음의 개시코드에 대한 스캔이 뒤따르는 그 MB에 대한 MbData_t 구조 내에 설정된 MB_ERROR로 된다. 이 SC가 처리되는 최종 슬라이스의 위치보다 낮지 않은 수직 위치를 갖는 개시코드이면, 그때 MB 디코딩이 계속된다.
MB 에러 회복 개시코드 스캔이 난-슬라이스(non-slice) 개시코드를 발견하면, 그때 영상 처리는 PX_ERROR 설정을 끝낸다(.u.vld.nmb 및 .u.vld.nblock은 MB_ERROR 설정을 갖는 최종 MB를 포함하여 처리되는 MB/Blk의 수를 각각 지시한다). .u.vld.ending_startcode는 발견된 난-슬라이스 개시코드를 포함하고 있다. MB 에러 회복 개시코드 스캔이 처리되는 최종 슬라이스보다 낮은 수직 위치를 갖는 슬라이스 개시코드를 발견하면, 입력은 다음의 난-슬라이스 개시코드에 대해 스캔되고, PX_ERROR가 설정되며, .nmb/.nblock은 처리되는 MB/Blk의 수를 되돌려 보내고, .ending_startcode는 발견한 난-슬라이스 개시코드를 포함하고 있다.
에러가 발생될 때, .u.vld.nmb, .u.vld.nblock, .hisyntax_bytes는 헤더 바이트, 블록 및 매크로블록 출력의 수를 정확히 특정하게 된다. 매크로블록 레벨 에러의 경우에는, 최종/에러가 있는 CBP 필드의 몇몇 비트가 클리어된다. 살아 남은 1비트는 유효한 블록 출력의 수를 나타낸다. 이것은, 인트라 매크로블록이 6개 이하의 유효한 블록을 갖게 된다(MB_ERROR가 존재하는 경우)는 것을 의미한다.
4.2.8 리먹스(Remux)
리먹스 모듈(336)은 (비디오용의) 영상 구조 또는 aud_delay FIFO 내에 격납된 정보를 이용하여 PES 및 MTS 층 신택스를 재발생시킨다. 이 TPE에 의해 트랜스코딩된 각종의 서비스에 대한 오디오 및 비디오의 패킷의 인터리빙은 MPEG 시스템(ISO/IEC 13818-1)에 있어서 기술된 T-STD 모델과 일치되어야 한다. 시간스탬프는 트랜스먹스 시스템에 대한 일정한 지연 모델에 기초하여 생성된다.
비디오의 경우, 부호화된 영상 데이터는 2개의 가능한 소스, 즉 영상이 트랜스코딩되고 있으면 oRB 속도 버퍼 또는 영상이 바이패스되고 있으면 iRB 속도 버퍼로부터 얻어질 수 있다(이하의 기재 참조).
리멀티플렉싱의 계산적인 처리는, 입력 기본 스트림 데이터를 PES 및 MTS 신택스에 의해 싸이는 캐쉬 내로 독출하기 위해 DMA 엔진을 사용하는 것을 내포한다. DMA 엔진은 출력 MTS 데이터를 PCIout 버퍼 내에 저장하기 위해 사용된다. PTS 및 DTS 시간스탬프는 국부적으로 계산된다. 출력 PTS는 입력 PTS + 상수와 같다. 출력 DTS는 가상의 oRB 버퍼 점유기간의 선형 함수이다. DTS 계산은 가상의 oRB 점유기간을 바이패스 영상 크기로 갱신하는 것을 내포한다. "가상의" 점유기간은 트랜스코딩된 영상이 T-STD에 의해 필요하게 되는 스케줄로 생성(oRB에 저장)되지 않기 때문에 사용되고, 바이패스 모드 영상은 실제의 oRB 점유기간에는 모델화되지 않는다. PCR은 출력 전송 스트림을 생성하기 위해 필요하게 되는 멀티플렉싱의 최종 레벨을 반영하기 위해 MUX 프로세서에 의해 변형된다.
4.2.9 속도제어 및 QL 프로세서 통신
부호화된 비디오 서비스의 상대적인 복잡성을 결정하기 위해, QL 프로세서는 영상마다 영상 크기 및 양자화기 값(양자화기 코드가 아님)의 합계를 필요로 한다. 리먹스는 영상 크기(기본 스트림 바이트)를 결정하고, tVLD는 각 영상에 있어서 양자화기 값의 수, 부호화된 매크로블록의 수 및 부호화된 블록의 수의 합계를 누적한다. 이들 양은 영상이 트랜스코딩되기 전에 QL 프로세서 5프레임으로 보내져야 한다. 룩어헤드 요구는 커다란 iMB 및 iBlk FIFO에 의해, 그리고 tVLD이 완료된 이래 5프레임 주기가 경과될 때까지 영상의 트랜스코딩을 스케줄링하지 않는 것에 의해 실현된다. 영상 형태 및 메트릭(metric)을 포함한 메시지는 tVLD 완료 후에 BSP 컨텍스트 절환 경로 ISR로부터 QL로 보내진다.
QL 프로세서(246)는 트랜스코딩 처리에 있어서 사용하기 위해 목표속도 정보를 되돌려 보낸다. 목표속도 정보는, 입력 영상에서 보여지는 바와 같이 비트의 동일한 상대 분포를 이용하여 슬라이스에 대한 목표비트로 변환된다. 양자화 레벨에 대한 초기의 짐작은 입력 영상 크기 대 출력 영상 크기의 비에 의해 양자화기 값의 배수 스케일링(muitiplicative scaling)에 기초를 두고 있다. 슬라이스마다 생성되는 비트의 수는 트랜스코딩 중에 (MB_SYNCHRONIZE를 이용하여) 모니터되고, 피드백 처리는 입력 및 출력 슬라이스 크기를 비교함으로써 양자화기 스케일링비를 조정한다. 개별적인 스케일링비는 각 서비스에 대한 영상 형태마다 유지된다. 누적하는 나머지 또는 부족분(실질 비트 - 목표 비트)은 서비스의 다음의 영상으로 순방향으로 전달된다.
특히,
q_out[i] = q_in[i]*alpha*(P_in/P_target)
여기서, q_out[i]는 매크로블록 i의 출력 양자화 레벨,
q_in[i]는 매크로블록 i의 입력 양자화 레벨,
P_in은 영상 층 및 더 높은 신택스를 제외하고 트랜스코딩되는 영상
의 비트의 크기,
P_target은 영상 층 및 더 높은 신택스를 제외하고 QLP로부터 트랜
스코딩되는 영상의 비트의 출력 목표 크기이다.
화상형태(I, P 및 B)마다 alpha의 개별적인 값이 있다. alpha의 값은 개시 시에 화상형태마다 1.0으로 초기화된다. 각 슬라이스가 엔코딩된 후에(크기는 tVLE로부터 얻어진다), alpha는 다음과 같이 갱신된다.
alpha = alpha*(P_in/P_target)*(S_out/S_in)
여기서, S_out은 현재의 슬라이스의 끝을 통한 누적 출력 영상 크기(헤더를 제외함)이고, S_in은 대응하는 입력 슬라이스의 슬라이스 크기의 합이다. alpha의 값은 영상 사이에서 리세트되지 않는다는 점에 주의해야 한다.
영상의 목표 출력속도가 입력 크기를 넘을 때 하나의 특별한 경우가 발생한다. 이 경우, 영상의 부호화된 입력 표현은 트랜스코딩 및 tVLE를 바이패스한 변화되지 않는 출력이다. 리먹스는 이 경우에 iRB로부터 직접 변화되지 않은 영상을 소비한다(iRB는 2 VBV 지연 + 룩어헤드 주기 + 계산상의 지연을 위해 충분히 커야 한다). 바이패스 모드가 사용될 때는, 공간적인 누적 에러는 입력 영상 형태가 I, P 또는 B인지에 따라 제로로 되어 (fwd/bak 버퍼 교체에 의해) 순방향으로 복사되거나, 사용되지 않는다.
따라서, 본 발명은 트랜스코딩 장치 및 방법을 제공함을 알 수 있다. 상기 장치는, 적어도 압축된 디지털 비디오 데이터의 입력 채널의 전송 스트림을 수신하기 위한 제1트랜스코더 처리 엘리먼트(TPE)를 포함하고 있다. 코프로세서와 같은 제1처리 리소스는 제1TPE와 연결되어 입력 채널의 디어셈블리(예컨대, VLD) 및 리어셈블리(예컨대, VLE)를 기본 스트림 레벨에서 제공한다.
VLIW 미디어 프로세서와 같은 제2처리 리소스는, 기본 스트림의 트랜스코딩을 수행하고, 입력 채널의 디어셈블리 및 리어셈블리를 전송 스트림 레벨에서 제공한다. 특히 VLIW 코어는 (VLE 전에) 전송 스트림 디멀티플렉싱을 처리하고, (VLE 후에) 리멀티플렉싱을 처리한다. 리멀티플렉싱 기능은 TPE[예컨대, MTS 및 PES 패킷화, PTS 및 DTS 시간스탬프]에 의해 부분적으로 처리되고, MUX 프로세서[예컨대, PCR 시간스탬프]에 의해 부분적으로 처리된다(도 2 참조).
제1 및 제2처리 리소스는, 트랜스코더의 처리량을 최적화하고, 2개의 프로세서간의 처리 로드의 평형을 맞추기 위해, 적어도 일부분에서 병렬로 동작가능하게 되어 있다.
게다가, 트랜스코더를 실현하기 위한 소프트웨어 아키텍처가 제공된다.
본 발명은 각종의 특정의 실시예와 관련하여 설명했지만, 청구의 범위에 기재한 본 발명의 범위를 이탈하지 않는 범위 내에서 각종의 변경 및 변형이 가능함은 물론이다.

Claims (27)

  1. 적어도 압축된 디지털 비디오 데이터의 전송 스트림의 입력 채널을 수신하기 위한 제1트랜스코더 처리 엘리먼트(TPE)와,
    상기 제1TPE와 연결되어 데이터 디어셈블리, 코어 트랜스코딩 및 데이터 리어셈블리를 제공하기 위한 제1 및 제2처리 리소스,
    제1처리 리소스에서 처리하기 전에 상기 제2처리 리소스로부터 수신된 데이터를 큐잉하기 위해 상기 제1처리 리소스와 연결된 큐 및,
    제2처리 리소스에서 처리하기 전에 상기 제1처리 리소스로부터 수신된 데이터를 큐잉하기 위해 상기 제2처리 리소스와 연결된 큐를 구비하고,
    상기 제1 및 제2처리 리소스가 데이터 디어셈블리, 코어 트랜스코딩 및 데이터 리어셈블리를 제공하기 위해 적어도 일부분에서 병렬로 동작가능하게 되어 있는 것을 특징으로 하는 트랜스코더장치.
  2. 제1항에 있어서, 상기 제1 및 제2처리 리소스는, 기본 스트림 데이터를 공급하기 위해 전송 스트림의 디어셈블리, 가변길이 디코드된 데이터를 공급하기 위해 가변길이 디코딩을 포함한 기본 스트림 데이터의 디어셈블리, 코어 트랜스코딩된 데이터를 제공하기 위해 가변길이 디코드된 데이터의 코어 트랜스코딩, 트랜스코딩된 기본 스트림 데이터를 공급하기 위해 코어 트랜스코딩된 데이터의 리어셈블리, 및 출력 전송 스트림을 형성하기 위한 데이터를 공급하기 위해 트랜스코딩된 기본 스트림 데이터의 리어셈블리를 제공하는 것을 특징으로 하는 트랜스코더장치.
  3. 삭제
  4. 제1항에 있어서, 상기 코어 트랜스코딩은 적어도 입력 채널의 재양자화를 갖추고 있는 것을 특징으로 하는 트랜스코더장치.
  5. 제1항에 있어서, 상기 제1처리 리소스는 VLIW(Very Long Instruction Word) 프로세서인 것을 특징으로 하는 트랜스코더장치.
  6. 제1항에 있어서, 상기 제2처리 리소스는 상기 제1처리 리소스의 코프로세서인 것을 특징으로 하는 트랜스코더장치.
  7. 제1항에 있어서, 영상 형태, 매크로블록 형태, 및 적어도 하나의 입력 채널의 입력/출력 양자화 레벨에 따라 상기 제1 및 제2처리 리소스의 적어도 하나의 계산상의 로드를 최소로 하기 위한 수단을 더 구비한 것을 특징으로 하는 트랜스코더장치.
  8. 제1항에 있어서, 압축된 디지털 비디오 데이터로 이루어진 전송 스트림의 관계된 복수의 입력 채널을 각각 수신하기 위한 부가적인 트랜스코더 처리 엘리먼트(TPE)와,
    상기 부가적인 TPE와 각각 연결되어 데이터 디어셈블리, 코어 트랜스코딩 및 데이터 리어셈블리를 제공하기 위한 제1 및 제2처리 리소스,
    각각의 부가적인 TPE에 대해, 제1처리 리소스에서 처리하기 전에 상기 제2처리 리소스로부터 수신된 데이터를 큐잉하기 위해 상기 제1처리 리소스와 연결된 큐 및,
    각각의 부가적인 TPE에 대해, 제2처리 리소스에서 처리하기 전에 상기 제1처리 리소스로부터 수신된 데이터를 큐잉하기 위해 상기 제2처리 리소스와 연결된 큐를 더 구비하고,
    각각의 부가적인 TPE에 대해, 상기 제1 및 제2처리 리소스가 데이터 디어셈블리, 코어 트랜스코딩 및 데이터 리어셈블리를 제공하기 위해 적어도 일부분에서 병렬로 동작가능하게 되어 있는 것을 특징으로 하는 트랜스코더장치.
  9. 제1항에 있어서, TPE, 제1처리 리소스 및 제2처리 리소스와 함께 사용하기 위한 소프트웨어로 실현되는 아키텍처를 더 구비한 것을 특징으로 하는 트랜스코더장치.
  10. 제1항에 있어서, 상기 제1 및 제2처리 리소스가 공통의 칩에 제공되는 것을 특징으로 하는 트랜스코더장치.
  11. 제1항에 있어서, 상기 TPE는 상기 입력 채널에 대하여 프레임과 프레임 사이의 재양자화 에러의 트랙을 유지하는 것을 포함한 완전한 트랜스코딩을 수행하는 것을 특징으로 하는 트랜스코더장치.
  12. 제1항에 있어서, 상기 제1 및 제2처리 리소스에 의해 적어도 일부분에 공급되어 있는 트랜스코딩된 다중의 비디오 서비스의 통계적인 멀티플렉싱을 제공하기 위해 상기 제1 및 제2처리 리소스에 대해 외부에 있는 양자화 레벨 프로세서와 통신하기 위한 수단을 더 구비한 것을 특징으로 하는 트랜스코더장치.
  13. 제1항에 있어서, 상기 제1 및 제2처리 리소스 사이에서 처리 로드의 평형을 맞추기 위한 수단을 더 구비한 것을 특징으로 하는 트랜스코더장치.
  14. 제1항에 있어서, 상기 입력 채널의 트랜스코딩은, 현재의 영상 형태에 따라 그 계산상의 로드를 저감하도록 조정되는 것을 특징으로 하는 트랜스코더장치.
  15. 제1항에 있어서, 상기 입력 채널의 트랜스코딩은, 현재의 매크로블록 부호화 형태가 인트라 부호화인지 인터 부호화인지에 따라 그 계산상의 로드를 저감하도록 조정되는 것을 특징으로 하는 트랜스코더장치.
  16. 제1항에 있어서, 상기 입력 채널의 트랜스코딩은, 트랜스코딩 중에 현재의 영상의 양자화 스텝 크기가 증가하는지 감소하는지에 따라 그 계산상의 로드를 저감하도록 조정되는 것을 특징으로 하는 트랜스코더장치.
  17. 삭제
  18. 제1항에 있어서, 상기 제1처리 리소스는 기본 스트림 데이터를 공급하기 위해 전송 스트림의 디어셈블리를 제공하고,
    상기 제2처리 리소스는 가변길이 디코드된 데이터를 공급하기 위해 가변길이 디코딩을 포함한 기본 스트림 데이터의 디어셈블리를 제공하며,
    상기 제1처리 리소스는 코어 트랜스코딩된 데이터를 공급하기 위해 가변길이 디코드된 데이터의 코어 트랜스코딩을 수행하고,
    상기 제2처리 리소스는 트랜스코딩된 기본 스트림 데이터를 공급하기 위해 코어 트랜스코딩된 데이터의 리어셈블리를 제공하며,
    상기 제1처리 리소스는 출력 전송 스트림을 형성하기 위한 데이터를 공급하기 위해 트랜스코딩된 기본 스트림 데이터의 리어셈블리를 제공하는 것을 특징으로 하는 트랜스코더장치.
  19. 제18항에 있어서, 상기 제1 및 제2처리 리소스는, 상기 제1처리 리소스가 상기 입력 채널의 적어도 하나에 대해 (a) 상기 전송 스트림의 디어셈블리, (b) 상기 가변길이 디코드된 데이터의 코어 트랜스코딩, 및 (c) 상기 트랜스코딩된 기본 스트림 데이터의 리어셈블리의 적어도 하나를 제공하고, 반면에 상기 제2처리 리소스가 상기 입력 채널의 적어도 다른 하나에 대해 (d) 상기 기본 스트림 데이터의 디어셈블리, (e) 상기 코어 트랜스코딩된 데이터의 리어셈블리의 적어도 하나를 제공하도록, 적어도 일부분에서 병렬로 동작가능하게 되어 있는 것을 특징으로 하는 트랜스코더장치.
  20. 제1항에 있어서, 상기 제1TPE와 연결되어 다중의 트랜스코딩 스레드의 스케줄링을 제공하기 위한 스케줄링 리소스를 더 구비한 것을 특징으로 하는 트랜스코더장치.
  21. 제20항에 있어서, 상기 다중의 트랜스코딩 스레드는 버퍼 관리를 포함하는 것을 특징으로 하는 트랜스코더장치.
  22. 제20항에 있어서, 상기 다중의 트랜스코딩 스레드는 프로세서 관리를 포함하는 것을 특징으로 하는 트랜스코더장치.
  23. 제20항에 있어서, 상기 스케줄링 리소스는, 트랜스코딩된 비디오와 패스 스루(pass-through) 데이터/오디오 서비스의 조합을 갖는 다중의 트랜스코딩 스레드의 스케줄링을 제공하는 것을 특징으로 하는 트랜스코더장치.
  24. 제20항에 있어서, 상기 스케줄링 리소스는, 실시간 운영체제를 사용하는 일없이 단일의 프로세서에 대하여 트랜스코딩된 비디오와 패스 스루 데이터/오디오 서비스의 조합을 갖는 다중의 트랜스코딩 스레드의 스케줄링을 제공하는 것을 특징으로 하는 트랜스코더장치.
  25. 제1항에 있어서, 영상에 대한 평균 처리 사이클의 수가 상기 입력 채널의 영상을 위해 지정되고, 상기 제1 및 제2처리 리소스의 적어도 하나에 의해 사용되는 처리 사이클의 수가 평균으로부터 지정된 양만큼 변화하도록 허락되어 있는 것을 특징으로 하는 트랜스코더장치.
  26. 제1항에 있어서, 상기 제1 및 제2처리 리소스의 적어도 하나는, 입력 채널의 다른 하나의 영상을 위하여 사용되는 처리 사이클을 평균함으로써 입력 채널의 영상을 위해 영상에 대한 평균 처리 사이클의 수를 만족하도록 허락되어 있는 것을 특징으로 하는 트랜스코더장치.
  27. 적어도 제1트랜스코더 처리 엘리먼트(TPE)에서 압축된 디지털 비디오 데이터로 이루어진 전송 스트림의 입력 채널을 수신하는 단계와,
    상기 제1TPE와 연결된 제1 및 제2처리 리소스에서 데이터 디어셈블리, 코어 트랜스코딩 및 데이터 리어셈블리를 제공하는 단계,
    제1처리 리소스에서 처리하기 전에 상기 제2처리 리소스로부터 수신된 데이터를 큐잉하기 위해 상기 제1처리 리소스와 연결된 큐를 제공하는 단계 및,
    제2처리 리소스에서 처리하기 전에 상기 제1처리 리소스로부터 수신된 데이터를 큐잉하기 위해 상기 제2처리 리소스와 연결된 큐를 제공하는 단계를 구비하고,
    상기 제1 및 제2처리 리소스가 데이터 디어셈블리, 코어 트랜스코딩 및 데이터 리어셈블리를 제공하기 위해 적어도 일부분에서 병렬로 동작가능하게 되어 있는 것을 특징으로 하는 트랜스코딩 방법.
KR1020037005714A 2000-10-25 2001-10-15 트랜스코더-멀티플렉서(트랜스먹스) 소프트웨어 아키텍처를 포함하는 트랜스코더 장치 및 방법 KR100960425B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/696,533 2000-10-25
US09/696,533 US6748020B1 (en) 2000-10-25 2000-10-25 Transcoder-multiplexer (transmux) software architecture
PCT/US2001/032105 WO2002035853A2 (en) 2000-10-25 2001-10-15 Transcoder-multiplexer (transmux) software architecture

Publications (2)

Publication Number Publication Date
KR20030068140A KR20030068140A (ko) 2003-08-19
KR100960425B1 true KR100960425B1 (ko) 2010-05-28

Family

ID=24797453

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037005714A KR100960425B1 (ko) 2000-10-25 2001-10-15 트랜스코더-멀티플렉서(트랜스먹스) 소프트웨어 아키텍처를 포함하는 트랜스코더 장치 및 방법

Country Status (9)

Country Link
US (1) US6748020B1 (ko)
EP (1) EP1329113A2 (ko)
KR (1) KR100960425B1 (ko)
CN (1) CN1481646A (ko)
AU (1) AU2002232376A1 (ko)
CA (1) CA2425921C (ko)
MX (1) MXPA03003657A (ko)
TW (1) TW552810B (ko)
WO (1) WO2002035853A2 (ko)

Families Citing this family (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7088725B1 (en) * 1999-06-30 2006-08-08 Sony Corporation Method and apparatus for transcoding, and medium
WO2001020826A1 (fr) * 1999-09-10 2001-03-22 Matsushita Electric Industrial Co., Ltd. Procede et appareil de conversion de flux et procede et appareil d'enregistrement
JP2002041285A (ja) * 2000-07-28 2002-02-08 Toshiba Corp データ処理装置およびデータ処理方法
JP2002202799A (ja) * 2000-10-30 2002-07-19 Fujitsu Ltd 音声符号変換装置
JP3636061B2 (ja) * 2000-11-08 2005-04-06 日本電気株式会社 データ挿入装置及びその方法
JP3636062B2 (ja) * 2000-11-09 2005-04-06 日本電気株式会社 ビデオデータを含むデータストリームの処理回路およびその制御方法
US6934417B2 (en) * 2000-12-22 2005-08-23 Texas Instruments Incorporated Transcoding scheme for assistance in image transformations
JP2002209215A (ja) * 2001-01-09 2002-07-26 Sony Corp 符号量制御装置及び方法、並びに画像情報変換装置及び方法
US7602847B1 (en) 2001-03-27 2009-10-13 Vixs Systems, Inc. Device and method for compression of a video stream
US8107524B2 (en) * 2001-03-30 2012-01-31 Vixs Systems, Inc. Adaptive bandwidth footprint matching for multiple compressed video streams in a fixed bandwidth network
US20070053428A1 (en) * 2001-03-30 2007-03-08 Vixs Systems, Inc. Managed degradation of a video stream
US20020191116A1 (en) * 2001-04-24 2002-12-19 Damien Kessler System and data format for providing seamless stream switching in a digital video recorder
CN1636405A (zh) * 2001-05-29 2005-07-06 皇家菲利浦电子有限公司 用于视频代码转换的方法和设备
US7058087B1 (en) 2001-05-29 2006-06-06 Bigband Networks, Inc. Method and system for prioritized bit rate conversion
US7675972B1 (en) * 2001-07-30 2010-03-09 Vixs Systems, Inc. System and method for multiple channel video transcoding
US6959348B1 (en) * 2001-07-30 2005-10-25 Vixs Systems, Inc. Method and system for accessing data
KR100424850B1 (ko) * 2001-08-08 2004-03-27 엘지전자 주식회사 데이터 전송 속도 변환 장치
US20030039226A1 (en) * 2001-08-24 2003-02-27 Kwak Joseph A. Physical layer automatic repeat request (ARQ)
US6990147B2 (en) * 2001-10-23 2006-01-24 Thomson Licensing Generating a non-progressive dummy bidirectional predictive picture
US7596127B1 (en) 2001-10-31 2009-09-29 Vixs Systems, Inc. System for allocating data in a communications system and method thereof
US7139330B1 (en) 2001-10-31 2006-11-21 Vixs Systems, Inc. System for signal mixing and method thereof
US7116712B2 (en) * 2001-11-02 2006-10-03 Koninklijke Philips Electronics, N.V. Apparatus and method for parallel multimedia processing
US7106715B1 (en) 2001-11-16 2006-09-12 Vixs Systems, Inc. System for providing data to multiple devices and method thereof
US7403564B2 (en) * 2001-11-21 2008-07-22 Vixs Systems, Inc. System and method for multiple channel video transcoding
US7356079B2 (en) * 2001-11-21 2008-04-08 Vixs Systems Inc. Method and system for rate control during video transcoding
US7165180B1 (en) 2001-11-27 2007-01-16 Vixs Systems, Inc. Monolithic semiconductor device for preventing external access to an encryption key
US9497452B2 (en) * 2002-01-22 2016-11-15 Broadcom Corporation System and method of transmission and reception of video using compressed differential time stamps
US7295610B2 (en) * 2002-03-27 2007-11-13 Scientific-Atlanta, Inc. Hybrid rate control in a digital stream transcoder
US7190723B2 (en) * 2002-03-27 2007-03-13 Scientific-Atlanta, Inc. Digital stream transcoder with a hybrid-rate controller
US7236521B2 (en) * 2002-03-27 2007-06-26 Scientific-Atlanta, Inc. Digital stream transcoder
JP4130780B2 (ja) * 2002-04-15 2008-08-06 松下電器産業株式会社 画像符号化方法および画像復号化方法
US7151856B2 (en) * 2002-04-25 2006-12-19 Matsushita Electric Industrial Co., Ltd. Picture coding apparatus and picture coding method
US7310679B1 (en) 2002-04-29 2007-12-18 Vixs Systems Inc. Method and system for transmitting video content while preventing other transmissions in a contention-based network
US7120253B2 (en) * 2002-05-02 2006-10-10 Vixs Systems, Inc. Method and system for protecting video data
US7191342B1 (en) * 2002-06-04 2007-03-13 Xilinx, Inc. Methods and circuits for allowing encrypted and unencrypted configuration data to share configuration frames
US7127520B2 (en) * 2002-06-28 2006-10-24 Streamserve Method and system for transforming input data streams
US8837605B2 (en) * 2006-09-26 2014-09-16 Onmobile Global Limited Method and apparatus for compressed video bitstream conversion with reduced-algorithmic-delay
US7009655B2 (en) * 2002-07-23 2006-03-07 Mediostream, Inc. Method and system for direct recording of video information onto a disk medium
ITTO20020858A1 (it) 2002-10-04 2004-04-05 Rai Radiotelevisione Italiana Sistema di trasmissione di segnali digitali dvb/mpeg,particolarmente per comunicazioni via satellite
US7079578B2 (en) * 2002-10-28 2006-07-18 Scopus Network Technologies Ltd. Partial bitstream transcoder system for compressed digital video bitstreams
US20040193289A1 (en) * 2002-12-31 2004-09-30 Shi Chen Decoding system and method
US20040141555A1 (en) * 2003-01-16 2004-07-22 Rault Patrick M. Method of motion vector prediction and system thereof
US7408989B2 (en) * 2003-01-16 2008-08-05 Vix5 Systems Inc Method of video encoding using windows and system thereof
US7133452B1 (en) 2003-02-24 2006-11-07 Vixs Systems, Inc. Method and system for transcoding video data
US7606305B1 (en) 2003-02-24 2009-10-20 Vixs Systems, Inc. Method and system for transcoding video data
US7327784B2 (en) * 2003-02-24 2008-02-05 Vixs Systems, Inc. Method and system for transcoding video data
US7130350B1 (en) 2003-02-28 2006-10-31 Vixs Systems, Inc. Method and system for encoding and decoding data in a video stream
US20040247030A1 (en) * 2003-06-09 2004-12-09 Andre Wiethoff Method for transcoding an MPEG-2 video stream to a new bitrate
US7739105B2 (en) * 2003-06-13 2010-06-15 Vixs Systems, Inc. System and method for processing audio frames
US8094711B2 (en) * 2003-09-17 2012-01-10 Thomson Licensing Adaptive reference picture generation
US7277101B2 (en) 2003-09-29 2007-10-02 Vixs Systems Inc Method and system for scaling images
US7668396B2 (en) * 2003-09-29 2010-02-23 Vixs Systems, Inc. Method and system for noise reduction in an image
JP4470431B2 (ja) * 2003-10-01 2010-06-02 ソニー株式会社 データ処理装置およびその方法
US8185600B2 (en) * 2003-12-29 2012-05-22 Broadcom Corporation Programming system and method for a video network
US7406598B2 (en) * 2004-02-17 2008-07-29 Vixs Systems Inc. Method and system for secure content distribution
JP2005295039A (ja) * 2004-03-31 2005-10-20 Toshiba Corp 録画装置、及び録画方法
US20050262276A1 (en) * 2004-05-13 2005-11-24 Ittiam Systamc (P) Ltd. Design method for implementing high memory algorithm on low internal memory processor using a direct memory access (DMA) engine
EP1610560A1 (en) * 2004-06-24 2005-12-28 Deutsche Thomson-Brandt Gmbh Method and apparatus for generating and for decoding coded picture data
JP4863438B2 (ja) * 2004-09-10 2012-01-25 キヤノン株式会社 データ処理装置及び処理方法
GB0426911D0 (en) * 2004-12-08 2005-01-12 Koninkl Philips Electronics Nv Data communication system and method
US7421048B2 (en) * 2005-01-20 2008-09-02 Vixs Systems, Inc. System and method for multimedia delivery in a wireless environment
US20060168637A1 (en) * 2005-01-25 2006-07-27 Collaboration Properties, Inc. Multiple-channel codec and transcoder environment for gateway, MCU, broadcast and video storage applications
US7609766B2 (en) * 2005-02-08 2009-10-27 Vixs Systems, Inc. System of intra-picture complexity preprocessing
US8949920B2 (en) * 2005-03-17 2015-02-03 Vixs Systems Inc. System and method for storage device emulation in a multimedia processing system
US7400869B2 (en) * 2005-03-22 2008-07-15 Vixs Systems Inc. System and method for adaptive DC offset compensation in wireless transmissions
US20060256860A1 (en) * 2005-05-16 2006-11-16 Gordon Stephen E Transcoding with look-ahead
CN100341333C (zh) * 2005-05-23 2007-10-03 上海广电(集团)有限公司中央研究院 一种增强像素域码流转换方法
KR100710305B1 (ko) * 2005-06-07 2007-04-23 엘지전자 주식회사 비디오 디코딩 장치의 데이터 관리기
JP4839035B2 (ja) * 2005-07-22 2011-12-14 オリンパス株式会社 内視鏡用処置具および内視鏡システム
US7707485B2 (en) 2005-09-28 2010-04-27 Vixs Systems, Inc. System and method for dynamic transrating based on content
US7782955B2 (en) * 2005-09-28 2010-08-24 Avisonic Technology Corporation Transcoder and transcoding method operating in a transform domain for video coding schemes possessing different transform kernels
EP1814334A4 (en) * 2005-10-12 2010-04-28 Nec Corp METHOD, DEVICE AND SYSTEM FOR CONVERSION OF MOVEMENT PICTURES, SERVER DEVICE AND PROGRAM
US20070112826A1 (en) * 2005-11-10 2007-05-17 Vixs Systems, Inc. Multimedia transcoding based on remaining storage capacity
US7881320B1 (en) * 2005-12-12 2011-02-01 Xilinx, Inc. Parsing data from multiple digital bitstreams
US20070160134A1 (en) * 2006-01-10 2007-07-12 Segall Christopher A Methods and Systems for Filter Characterization
US8131995B2 (en) * 2006-01-24 2012-03-06 Vixs Systems, Inc. Processing feature revocation and reinvocation
US20070177519A1 (en) * 2006-01-30 2007-08-02 Thomsen Jan H Systems and methods for transcoding bit streams
US8068541B2 (en) * 2006-01-30 2011-11-29 Jan Harding Thomsen Systems and methods for transcoding bit streams
US8014445B2 (en) * 2006-02-24 2011-09-06 Sharp Laboratories Of America, Inc. Methods and systems for high dynamic range video coding
FR2898757A1 (fr) * 2006-03-14 2007-09-21 Canon Kk Procede et dispositif d'adaptation d'une frequence temporelle d'une sequence d'images video
US8194997B2 (en) * 2006-03-24 2012-06-05 Sharp Laboratories Of America, Inc. Methods and systems for tone mapping messaging
US20070230579A1 (en) * 2006-03-31 2007-10-04 Masstech Group Inc. Serial processing of video signals using a programmable hardware device
US20070230586A1 (en) * 2006-03-31 2007-10-04 Masstech Group Inc. Encoding, decoding and transcoding of audio/video signals using combined parallel and serial processing techniques
US8711925B2 (en) 2006-05-05 2014-04-29 Microsoft Corporation Flexible quantization
US20070288980A1 (en) * 2006-06-08 2007-12-13 Huaning Niu System and method for digital communication having a frame format and parsing scheme with parallel convolutional encoders
US8189627B2 (en) 2006-06-28 2012-05-29 Samsung & Electronics Co., Ltd. System and method for digital communications using multiple parallel encoders
US8107552B2 (en) 2006-06-28 2012-01-31 Samsung Electronics Co., Ltd. System and method of wireless communication of uncompressed video having a fast fourier transform-based channel interleaver
US8111259B1 (en) * 2006-07-06 2012-02-07 Marvell International Ltd. Image processing apparatus having context memory controller
US8532176B2 (en) * 2006-07-10 2013-09-10 Sharp Laboratories Of America, Inc. Methods and systems for combining layers in a multi-layer bitstream
US7840078B2 (en) * 2006-07-10 2010-11-23 Sharp Laboratories Of America, Inc. Methods and systems for image processing control based on adjacent block characteristics
US7885471B2 (en) * 2006-07-10 2011-02-08 Sharp Laboratories Of America, Inc. Methods and systems for maintenance and use of coded block pattern information
US8130822B2 (en) * 2006-07-10 2012-03-06 Sharp Laboratories Of America, Inc. Methods and systems for conditional transform-domain residual accumulation
US8059714B2 (en) * 2006-07-10 2011-11-15 Sharp Laboratories Of America, Inc. Methods and systems for residual layer scaling
US8422548B2 (en) * 2006-07-10 2013-04-16 Sharp Laboratories Of America, Inc. Methods and systems for transform selection and management
US7577559B2 (en) * 2006-08-15 2009-08-18 Nero Ag Apparatus for transcoding encoded content
US20080056354A1 (en) * 2006-08-29 2008-03-06 Microsoft Corporation Transcoding Hierarchical B-Frames with Rate-Distortion Optimization in the DCT Domain
US8194750B2 (en) 2006-10-16 2012-06-05 Samsung Electronics Co., Ltd. System and method for digital communication having a circulant bit interleaver for equal error protection (EEP) and unequal error protection (UEP)
EP2080377A2 (en) * 2006-10-31 2009-07-22 THOMSON Licensing Method and apparatus for transrating bit streams
US8040856B2 (en) 2006-12-04 2011-10-18 Samsung Electronics Co., Ltd. System and method for wireless communication of uncompressed high definition video data using a beamforming acquisition protocol
US8265177B2 (en) 2006-12-04 2012-09-11 Samsung Electronics Co., Ltd. System and method for wireless communication of uncompressed high definition video data using beambook-constructed beamforming signals
US8259836B2 (en) 2006-12-04 2012-09-04 Samsung Electronics Co., Ltd. Method and system for generating candidate beamforming coefficients for transmission of data over a wireless medium
US8233536B2 (en) 2007-01-23 2012-07-31 Sharp Laboratories Of America, Inc. Methods and systems for multiplication-free inter-layer image prediction
US7826673B2 (en) * 2007-01-23 2010-11-02 Sharp Laboratories Of America, Inc. Methods and systems for inter-layer image prediction with color-conversion
US8503524B2 (en) * 2007-01-23 2013-08-06 Sharp Laboratories Of America, Inc. Methods and systems for inter-layer image prediction
US8665942B2 (en) * 2007-01-23 2014-03-04 Sharp Laboratories Of America, Inc. Methods and systems for inter-layer image prediction signaling
US7760949B2 (en) * 2007-02-08 2010-07-20 Sharp Laboratories Of America, Inc. Methods and systems for coding multiple dynamic range images
US8767834B2 (en) 2007-03-09 2014-07-01 Sharp Laboratories Of America, Inc. Methods and systems for scalable-to-non-scalable bit-stream rewriting
US8111670B2 (en) 2007-03-12 2012-02-07 Samsung Electronics Co., Ltd. System and method for processing wireless high definition video data using remainder bytes
US7688908B2 (en) 2007-03-12 2010-03-30 Samsung Electronics Co., Ltd. System and method for processing wireless high definition video data using a shortened last codeword
US20080240168A1 (en) * 2007-03-31 2008-10-02 Hoffman Jeffrey D Processing wireless and broadband signals using resource sharing
US20090046798A1 (en) 2007-08-13 2009-02-19 Samsung Electronics Co., Ltd. System and method for acquiring a training matrix for a breamforming acquisition protocol using a butson matrix
EP2229779A1 (en) * 2007-12-11 2010-09-22 Thomson Licensing Methods and systems for transcoding within the distribution chain
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
CN101965732B (zh) * 2008-01-07 2015-03-25 汤姆森特许公司 用于使用参数滤波进行视频编码和解码的方法和装置
US20090225775A1 (en) * 2008-03-06 2009-09-10 Integrated Device Technology, Inc. Serial Buffer To Support Reliable Connection Between Rapid I/O End-Point And FPGA Lite-Weight Protocols
US20090228733A1 (en) * 2008-03-06 2009-09-10 Integrated Device Technology, Inc. Power Management On sRIO Endpoint
US8213448B2 (en) * 2008-03-06 2012-07-03 Integrated Device Technology, Inc. Method to support lossless real time data sampling and processing on rapid I/O end-point
US8625621B2 (en) * 2008-03-06 2014-01-07 Integrated Device Technology, Inc. Method to support flexible data transport on serial protocols
US8312241B2 (en) * 2008-03-06 2012-11-13 Integrated Device Technology, Inc. Serial buffer to support request packets with out of order response packets
US8312190B2 (en) * 2008-03-06 2012-11-13 Integrated Device Technology, Inc. Protocol translation in a serial buffer
US9848209B2 (en) 2008-04-02 2017-12-19 Microsoft Technology Licensing, Llc Adaptive error detection for MPEG-2 error concealment
US8897359B2 (en) 2008-06-03 2014-11-25 Microsoft Corporation Adaptive quantization for enhancement layer video coding
US9788018B2 (en) 2008-06-30 2017-10-10 Microsoft Technology Licensing, Llc Error concealment techniques in video decoding
US8341615B2 (en) * 2008-07-11 2012-12-25 International Business Machines Corporation Single instruction multiple data (SIMD) code generation for parallel loops using versioning and scheduling
US20100104006A1 (en) * 2008-10-28 2010-04-29 Pixel8 Networks, Inc. Real-time network video processing
US9131241B2 (en) * 2008-11-25 2015-09-08 Microsoft Technology Licensing, Llc Adjusting hardware acceleration for video playback based on error detection
US8654849B2 (en) * 2008-12-22 2014-02-18 Arris Enterprises, Inc. Integrated transcoding
US8340510B2 (en) 2009-07-17 2012-12-25 Microsoft Corporation Implementing channel start and file seek for decoder
US8948241B2 (en) * 2009-08-07 2015-02-03 Qualcomm Incorporated Signaling characteristics of an MVC operation point
US8897377B2 (en) * 2009-12-31 2014-11-25 Broadcom Corporation Transcoding multiple media elements for independent wireless delivery
TWI432953B (zh) 2010-12-09 2014-04-01 Ind Tech Res Inst 具電源管理之超長指令處理器以及其電源管理裝置與方法
US20120236940A1 (en) * 2011-03-16 2012-09-20 Texas Instruments Incorporated Method for Efficient Parallel Processing for Real-Time Video Coding
US8589480B2 (en) 2011-05-24 2013-11-19 Sony Computer Entertainment America Llc Automatic performance and capacity measurement for networked servers
US9172982B1 (en) * 2011-06-06 2015-10-27 Vuemix, Inc. Audio selection from a multi-video environment
US9740377B1 (en) 2011-06-06 2017-08-22 Vuemix, Inc. Auxiliary information data exchange within a video environment
US9113227B2 (en) * 2012-03-12 2015-08-18 Broadcom Corporation Reduced complexity transcoding
US9106921B2 (en) * 2012-04-24 2015-08-11 Vixs Systems, Inc Configurable transcoder and methods for use therewith
US8914809B1 (en) 2012-04-24 2014-12-16 Open Text S.A. Message broker system and method
US9743091B2 (en) * 2012-12-17 2017-08-22 Lg Electronics Inc. Method for encoding/decoding image, and device using same
US20150271492A1 (en) 2014-03-20 2015-09-24 Panopto, Inc. Systems and Methods for Group of Pictures Encoding
US10606921B2 (en) 2016-05-27 2020-03-31 Open Text Sa Ulc Document architecture with fragment-driven role-based access controls
JP6977422B2 (ja) * 2017-09-13 2021-12-08 株式会社Jvcケンウッド トランスコード装置、トランスコード方法及びトランスコードプログラム
TWI699656B (zh) 2018-12-27 2020-07-21 新唐科技股份有限公司 可切換的i2s介面
US11888793B2 (en) 2022-02-22 2024-01-30 Open Text Holdings, Inc. Systems and methods for intelligent delivery of communications
CN117097962B (zh) * 2023-10-19 2024-01-26 江苏云舟通信科技有限公司 用于无线传输的多路复用时长预测系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870146A (en) 1997-01-21 1999-02-09 Multilink, Incorporated Device and method for digital video transcoding
US6094457A (en) 1996-12-31 2000-07-25 C-Cube Microsystems, Inc. Statistical multiplexed video encoding using pre-encoding a priori statistics and a priori and a posteriori statistics

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5289577A (en) 1992-06-04 1994-02-22 International Business Machines Incorporated Process-pipeline architecture for image/video processing
DE69607696T2 (de) * 1995-02-15 2000-10-19 Koninkl Philips Electronics Nv Vorrichtung und verfahren zur transkodierung von videosignalen
DE69730419T2 (de) 1996-04-12 2005-09-08 Imedia Corp., San Francisco System zur Verteilung komprimierter Videosignale, mit statistischem Multiplexer mit Transkodierern
GB9608271D0 (en) 1996-04-22 1996-06-26 Electrocraft Lab Video compession
WO1998027734A1 (en) 1996-12-18 1998-06-25 Thomson Consumer Electronics, Inc. Efficient fixed-length block compression and decompression
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
US6483851B1 (en) 1998-11-13 2002-11-19 Tektronix, Inc. System for network transcoding of multimedia data flow
US6310915B1 (en) * 1998-11-20 2001-10-30 Harmonic Inc. Video transcoder with bitstream look ahead for rate control and statistical multiplexing
US6570922B1 (en) * 1998-11-24 2003-05-27 General Instrument Corporation Rate control for an MPEG transcoder without a priori knowledge of picture type
US6434197B1 (en) * 1999-01-07 2002-08-13 General Instrument Corporation Multi-functional transcoder for compressed bit streams
US6275536B1 (en) * 1999-06-23 2001-08-14 General Instrument Corporation Implementation architectures of a multi-channel MPEG video transcoder using multiple programmable processors
US6643327B1 (en) * 2000-05-05 2003-11-04 General Instrument Corporation Statistical multiplexer and remultiplexer that accommodates changes in structure of group of pictures

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6094457A (en) 1996-12-31 2000-07-25 C-Cube Microsystems, Inc. Statistical multiplexed video encoding using pre-encoding a priori statistics and a priori and a posteriori statistics
US5870146A (en) 1997-01-21 1999-02-09 Multilink, Incorporated Device and method for digital video transcoding

Also Published As

Publication number Publication date
WO2002035853A2 (en) 2002-05-02
MXPA03003657A (es) 2004-05-04
CN1481646A (zh) 2004-03-10
TW552810B (en) 2003-09-11
WO2002035853A3 (en) 2002-10-31
AU2002232376A1 (en) 2002-05-06
EP1329113A2 (en) 2003-07-23
CA2425921A1 (en) 2002-05-02
KR20030068140A (ko) 2003-08-19
US6748020B1 (en) 2004-06-08
CA2425921C (en) 2013-05-28

Similar Documents

Publication Publication Date Title
KR100960425B1 (ko) 트랜스코더-멀티플렉서(트랜스먹스) 소프트웨어 아키텍처를 포함하는 트랜스코더 장치 및 방법
US5774206A (en) Process for controlling an MPEG decoder
US5812791A (en) Multiple sequence MPEG decoder
US7023924B1 (en) Method of pausing an MPEG coded video stream
KR100341055B1 (ko) 비디오감압축프로세서를위한신택스분석기
US7403564B2 (en) System and method for multiple channel video transcoding
US6263019B1 (en) Variable rate MPEG-2 video syntax processor
TW527836B (en) Processing mode selection for channels in a video multi-processor system
JP2001285861A (ja) 画像信号符号化装置
US6720893B2 (en) Programmable output control of compressed data from encoder
US20190356911A1 (en) Region-based processing of predicted pixels
KR20100018094A (ko) 편집 장치 및 방법, 그리고 기록 매체
KR101392349B1 (ko) 비디오 디코딩 방법 및 장치
US6804299B2 (en) Methods and systems for reducing requantization-originated generational error in predictive video streams using motion compensation
WO2002087248A2 (en) Apparatus and method for processing video data
KR19990028747A (ko) 감소된 메모리 요구를 갖는 압축 비디오 데이터 스트림을디코딩 및 코딩하기 위한 방법
US5666115A (en) Shifter stage for variable-length digital code decoder
US6298091B1 (en) Method to play audio and video clips through MPEG decoders
WO1996036178A1 (en) Multiple sequence mpeg decoder and process for controlling same
Chen et al. A parallel ultra-high resolution MPEG-2 video decoder for PC cluster based tiled display systems
KR100528791B1 (ko) 동영상 비디오 인코더의 버퍼 제어 방법
Golston et al. C64x VelociTI. 2 extensions support media-rich broadband infrastructure and image analysis systems
KR100821922B1 (ko) 미디어 디코딩용 국부 메모리 관리 장치
JPH11289532A (ja) 画像データ多重化装置および画像データ多重化制御方法
KR20010046145A (ko) 동영상 부호화기의 비트율 제어장치 및 그 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130429

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140512

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150508

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160510

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170512

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180510

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190516

Year of fee payment: 10