[go: up one dir, main page]

KR100556340B1 - 영상 부호화 장치 - Google Patents

영상 부호화 장치 Download PDF

Info

Publication number
KR100556340B1
KR100556340B1 KR20040002200A KR20040002200A KR100556340B1 KR 100556340 B1 KR100556340 B1 KR 100556340B1 KR 20040002200 A KR20040002200 A KR 20040002200A KR 20040002200 A KR20040002200 A KR 20040002200A KR 100556340 B1 KR100556340 B1 KR 100556340B1
Authority
KR
South Korea
Prior art keywords
header
encoding
texture
macroblock
packing
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
KR20040002200A
Other languages
English (en)
Other versions
KR20050074012A (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 (주)씨앤에스 테크놀로지
Priority to KR20040002200A priority Critical patent/KR100556340B1/ko
Priority to JP2005002919A priority patent/JP4142652B2/ja
Priority to US11/034,270 priority patent/US7620104B2/en
Priority to CNB2005100021032A priority patent/CN100397905C/zh
Publication of KR20050074012A publication Critical patent/KR20050074012A/ko
Application granted granted Critical
Publication of KR100556340B1 publication Critical patent/KR100556340B1/ko
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02KDYNAMO-ELECTRIC MACHINES
    • H02K15/00Processes or apparatus specially adapted for manufacturing, assembling, maintaining or repairing of dynamo-electric machines
    • H02K15/50Disassembling, repairing or modifying dynamo-electric machines
    • 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
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02KDYNAMO-ELECTRIC MACHINES
    • H02K15/00Processes or apparatus specially adapted for manufacturing, assembling, maintaining or repairing of dynamo-electric machines
    • H02K15/02Processes or apparatus specially adapted for manufacturing, assembling, maintaining or repairing of dynamo-electric machines of stator or rotor bodies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02WCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO WASTEWATER TREATMENT OR WASTE MANAGEMENT
    • Y02W30/00Technologies for solid waste management
    • Y02W30/50Reuse, recycling or recovery technologies
    • Y02W30/82Recycling of waste of electrical or electronic equipment [WEEE]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Manufacturing & Machinery (AREA)
  • Power Engineering (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 디지털 영상을 부호화하는 장치에 관한 것으로, 특히 DCT 변환과 움직임 보상 및 예측을 통해 영상 부호화를 수행하는 MPEG-1, 2, 4 또는 H.261, H.263과 같은 대표적인 디지털 영상 데이터 압축/복원 표준을 구현하는 회로를 제어하는 CPU (중앙 처리 장치)의 부하를 줄이는 기술에 관한 것이다.
영상 부호화 장치에서 특히 가변장 부호화기는 영상 압축/복원 표준이 진화하면서 그 회로 구성 및 제어 방법이 점점 복잡해지고 있다. 예를 들어 MPEG-4를 이용하여 영상을 부호화할 경우, 에러 내성을 강화하기 위해 데이터분할 모드를 사용할 수 있는데, 그런 경우 한 비디오 패킷 내에서 매크로블록의 텍스쳐와 두가지 헤더를 각각 종류별로 내보내야 한다. 이때, 가변장 부호화기가 단순히 매크로블록 단위로 헤더와 텍스쳐를 따로 내보내는 구조에서는 사용자가 비디오 패킷을 구성하기 위해 복잡한 제어를 거쳐야 하고, 이는 영상 부호화 장치를 제어하는 CPU의 부하 증가로 이어지는 문제점이 있다. 따라서, 본 발명은 가변장 부호화 장치 제어에 필요한 CPU의 부하를 줄일 수 있는 영상 부호화 기술을 제시한다.
절대편차평균값(MAD), 양자화계수(QP), CPU 부하, 비디오 패킷, 부호화, 가변장 부호화기

Description

영상 부호화 장치{Image Coding System}
도 1은 종래기술에 따른 부호화기의 블록도이다.
도 2는 종래기술에 따른 영상 부호화 장치의 블록도이다.
도 3은 도 2의 부호화기를 파이프라인 구조로 이용하여 N개의 매크로블록으로 이루어지는 프레임을 부호화하는 방법의 순서도이다.
도 4는 종래기술에 따른 VLC부의 상세 블록도이다.
도 5는 데이터 분할되었을 때의 VP(비디오 패킷) 부호화 과정을 나타내는 순서도이다.
도 6은 본 발명에 따른 영상 부호화 장치의 블록도이다.
도 7은 본 발명에 의한 VLC 블록의 상세 블록도이다.
도 8은 본 발명에 의한 패킹 실행부(pack_ctrl)의 상세 블록도이다.
도 9는 데이터분할이 되지 않은 경우의 패킹의 실시예를 나타낸다.
도 10은 데이터분할이 된 경우의 패킹의 실시예를 나타낸다.
도 11은 데이터분할 되었을 때의 본 발명에 의한 비디오 패킷의 부호화 과정을 나타내는 순서도이다.
도 12는 (수학식 1)의 유도에 근거가 된 실험 자료이다.
도 13은 (수학식 1)의 offset 값에 따라, 매크로블록의 실제 비트량이 bit_est보다 작을 확률이 어떻게 변하는지를 보여주는 것이다.
도 14는 데이터분할된 경우, 본 발명에 의한 VLC 오버플로우 처리 과정을 나타내는 순서도이다.
* 도면의 주요부분에 대한 부호의 설명 *
400 : 부호화기 401 : CPU
402 : 메인메모리부 404, 405 : 메모리부
406 : VLC 블록 409 : MC 블록
411 : MAD값 412 : QP값
413 : PEN값
본 발명은 디지털 영상 부호화 기술에 관한 것으로, 특히 DCT 변환과 움직임 보상 및 예측을 통해 영상 부호화를 수행하는 부호화 장치 및 방법에 관한 것이다.
영상부호화 장치에서, 특히 가변장 부호화기는 영상 압축/복원 표준이 진화하면서 그 회로 구성 및 제어 방법이 점점 복잡해지고 있다. 예를 들어 MPEG-4를 이용하여 영상을 부호화할 경우, 에러 내성을 강화하기 위해 데이터 분할모드를 사용할 수 있는데, 그런 경우에 한 비디오 패킷 내에서 매크로블록의 텍스쳐와 두가지 헤더를 각각 종류별로 내보내야 한다. 이때, 가변장 부호화기가 단순히 매크로블록 단위로 헤더와 텍스쳐를 따로 내보내는 구조에서는 사용자가 비디오 패킷을 구성하기 위해 복잡한 제어를 거쳐야 하고, 이는 영상 부호화 장치를 제어하는 CPU의 부하 증가로 이어지는 문제점이 있다.
도 1은 종래기술에 따른 부호화기의 블록도로서, MPEG-4에 대한 실시예이다. 도 1을 참조하면, 부호화기(100)는 움직임 예측(Motion Estimation: 이하 ME라 함) 블록(101), 움직임 보상(Motion Compensation: 이하 MC라 함) 블록(102), 이산여현변환/양자화(Discrete Cosine Transform/Quantization: 이하 DCT/Q라 함) 블록(103a), AC/DC 예측(AC/DC Prediction: 이하 ADP라 함) 블록(104), 가변장부호화(Variable Length Coding: 이하 VLC라 함) 블록(105), 및 역이산여현변환/역양자화(Inverse DCT/Inverse Q: 이하 IQ/IDCT라 함) 블록(103b)을 포함한다.
ME 블록(101)은 지나간 프레임에 대해 현재 프레임의 움직임을 예측하는 작업을 수행한다. 결과는 움직임 벡터로 나오는데, 이는 매크로블록 또는 블록 별로 지난 프레임에 비해 어떤 방향으로 얼만큼 이동했는지를 나타낸다. 이런 움직임 예측을 이용하면 시간적인 반복성을 제거하여 부호량을 줄일 수 있다. 상기 매크로블록은 16x16개의 화소로 이루어지는 단위로, 4개의 휘도 블록과 2개의 색차 블록으로 구성된다. 따라서, 총 6개의 블록을 포함하며, 이들 블록은 8x8개의 화소로 이루어진다.
MC 블록(102)은 MC(-)(MC minus)(102a)와 MC(+)(MC plus)(102b)의 두 가지 종류로 구분되는데, MC(-)(102a)는 현재 프레임에서 지난 프레임으로부터의 움직임 예측 결과를 빼는 작업으로서, 시간적인 반복성이 제거된 프레임 데이터가 결과로 나온다. 또한, MC(+)(102b)는 이후에 설명될 IQ/IDCT부(103b)의 결과에 MC(-)(102) 에서 사용되었던 지나간 프레임을 더하는 작업으로서, 최종적으로 복호기에서 보게될 영상을 얻게 된다. 이 영상은 다음 프레임을 부호화할 때 지나간 프레임으로 활용된다.
DCT/Q 블록(103a)은 공간 영역의 영상 데이터를 주파수 영역의 데이터로 바꾸고, 그 결과가 더 적은 종류의 값을 갖도록 양자화를 수행한다.
ADP 블록(104)은 현재 블록의 AC/DC 계수에 대해 주변 블록의 AC/DC 계수로부터 차분치를 구한다. 이는 공간적인 연속성을 이용하여 부호량을 줄이려는 목적이다.
VLC 블록(105)은 ADP가 완료된 계수들을 가변장부호화하며, 최종적으로 부호화된 비트스트림을 발생시킨다. 이때 비트스트림은 소정 개수의 매크로블록에 대한 데이터를 포함한 비디오 패킷으로 구성된다.
IQ/IDCT 블록(103b)은 DCT/Q가 끝난 계수들에 대해 역양자화를 수행하고, 그 결과를 다시 공간 영역의 데이터로 바꾸어준다. IQ/IDCT 직후의 영상이 MC(-) 직후의 영상과 다른 점은 IQ/IDCT 직후의 영상은 DCT/Q 블록(103a)과 ADP 블록(104)의 양자화/역양자화에 의해 데이터가 손실될 수도 있다는 것이다. 데이터가 손실된 영상을 구하는 것은 복호기에서와 같은 환경을 만들기 위함이다.
도 2는 종래 기술에 따른 영상 부호화 장치의 블록도로서, 부호화기(100), 메모리부(204, 205), 중앙 처리장치(CPU)(201) 및 메인 메모리부(202), 데이터버스(203)로 구성된다.
부호화기(100)는 ME 블록(101)으로 구성되는 움직임 예측 부분 및 MC 블록(102), DCT/IDCT 블록(103), ADP 블록(104), VLC 블록(105)으로 구성되는 텍스쳐 부호화 부분으로 나뉘어지고, 상기 두 부분은 서로 독립적으로 동작할 수 있다. 단, 텍스쳐 부호화가 되려면 ME가 수행된후 나오는 움직임 벡터가 필요하다.
ME 블록(101)에서의 움직임 예측은 매크로블록 단위로 동작이 이루어지고, 그 동안 텍스쳐 부호화 부분(102, 103, 104, 105)에서는 블록 단위의 동작이 6번 반복된다.
메모리부(204, 205)는 텍스쳐 부호화를 위해 필요한 데이터들을 저장하고, 중앙 처리장치(CPU)(201) 및 메인 메모리부(202)는 나머지 블록의 동작을 제어하기 위한 것이다.
데이터버스(203)는 부호화기(100)와 외부 메모리가 데이터를 주고 받기 위한 것이다.
도 3은 도 2의 부호화기를 파이프라인 구조로 이용하여 N개의 매크로블록으로 이루어지는 프레임을 부호화하는 방법을 나타낸다.
먼저, 매크로블록 0에 대한 ME가 수행된다. 이때는 매크로블록 0에 대한 움직임 벡터가 없기 때문에 매크로블록 0의 텍스쳐 부호화는 수행될 수 없다.
다음에, 매크로블록 1에 대한 ME가 수행되는 동안, 매크로블록 0에 대한 움직임 벡터가 나와 있고, 동시에 매크로블록 0에 대한 텍스쳐 부호화가 수행될 수 있다. 이런 식으로 부호화를 하게 되면 제일 마지막 매크로블록에서는 ME는 동작하지 않고 텍스쳐 부호화만 동작하게 된다.
도 4는 종래기술에 따른 VLC부의 상세 블록도이다.
부호화된 매크로블록은 그 매크로블록의 특성을 나타내는 헤더와 실제의 영상 데이터가 포함된 텍스쳐로 구성된다.
헤더 부호화 제어부(header_ctrl)(306)는 헤더 부호화의 제어를 맡는다.
헤더 롬테이블(mb_rom)(307)은 헤더를 부호화하는 데 필요한 여러가지 테이블을 포함한다.
헤더 메모리(hmem)(305)는 헤더 부호화가 된 결과를 저장한다.
텍스쳐 부호화 제어부(texture_ctrl)(302)는 텍스쳐 부호화의 제어를 맡는다.
텍스쳐 롬테이블(ac_rom)(303)은 텍스쳐를 부호화하는 데 필요한 여러 가지 테이블을 포함한다.
텍스쳐 메모리(tmem)(301)는 텍스쳐 부호화가 된 결과를 저장한다.
VLC 레지스터부(vlc_reg)(304)는 헤더 및 텍스쳐 부호화에 필요한 여러가지 설정들을 CPU(201)로부터 받아서 텍스쳐 부호화 제어부(texture_ctrl)(302)와 헤더 부호화 제어부(header_ctrl)(306)에게 전달하며, 또한 텍스쳐 부호화 제어부(texture_ctrl)(302)와 헤더 부호화 제어부(header_ctrl)(306)로부터 부호화 결과 얼마나 많은 비트량이 발생했는지의 정보를 받아 CPU(201)로 전달한다.
도 5는 데이터 분할되었을 때의 VP(비디오 패킷) 부호화 과정을 나타낸다. 여기서, 비디오 패킷은 1개 또는 그 이상의 매크로블록을 묶는 단위로, 매크로블록 데이터 외에 제일 앞부분에 비트열 고정장 부호(재동기 마커)가 오며, 그것에 이어서 프레임헤더 정보의 일부가 반복되어 에러내성을 강화시킨다. 또한, 데이터분할 은 비디오 패킷내에서 중요한 헤더 정보를 앞부분에 위치시키는 모드로, 헤더는 중요도에 따라 헤더1과 헤더2로 구분되고, 그 사이에는 특정 비트열로 이루어지는 마커가 삽입된다.
먼저, 재동기 마커와 비디오패킷 헤더를 삽입한다(S100).
다음에, 매크로블록의 부호화를 수행한다(S110). 부호화가 끝나면, 헤더 메모리(hmem)(305)에는 헤더1과 헤더2의 비트스트림이 들어 있고, 텍스쳐 메모리(tmem)(301)에는 텍스쳐의 비트스트림이 들어 있게 된다.
다음에, 헤더1, 헤더2, 텍스쳐 비트스트림을 각각 메인 메모리(202)상에서 별도의 공간에 저장한다(S112 내지 S116). 이들은 비디오패킷 내의 모든 매크로블록들을 부호화한후 헤더1은 헤더1끼리, 헤더2는 헤더2끼리, 텍스쳐는 텍스쳐끼리 합쳐지기 위해 각각 독립된 공간을 요한다.
다음에, 비디오패킷 종료여부를 결정하게 되는데(S118), 비디오패킷의 첫번째 매크로블록 이후에 헤더1, 헤더2, 및 텍스쳐의 비트스트림이 총 얼마가 나왔는지를 계산해서, 그 값이 미리 정해둔 비디오패킷 목표 길이값보다 크면 비디오패킷을 종료하기로 결정한다.
비디오패킷이 종료되면 단계 S122로, 그렇지않으면 단계 S110으로 각각 분기된다. 상기 단계 S122에서는 현재 비디오패킷에 해당되는 매크로블록들로부터 나온 헤더1, 헤더2, 텍스쳐를 이어 붙이는 패킹과정을 수행한다.
최종적으로, 단계 S124에서는 비디오패킷(VP) 스트림을 가져간다.
이상 살펴본 바와 같이, 종래기술에 따르면, 매크로블록 부호화의 결과로 생 긴 헤더 및 텍스쳐 비트스트림을 사용자가 병합해야하므로, 그만큼 CPU의 부하가 더 걸리게된다. 특히, 데이터 분할된 경우 비디오패킷 내의 모든 매크로블록에 대해 헤더1, 헤더2, 텍스쳐를 각각 보관하고 있다가 비디오패킷이 끝날 때 사용자가 그것들을 하나로 이어붙이는 패킹작업을 해야 한다. 그 패킹작업은 다량의 비트 쉬프트 및 메모리 입출력을 요구하여 CPU의 부하를 증가시킬 수 있다. 이러한 문제는 종래 기술의 부호화 장치로는 부호화 방법을 달리 하여도 근본적으로 해결할 수 없다.
따라서 본 발명이 이루고자 하는 기술적 과제는, MPEG-1, 2, 4 또는 H.261, H.263과 같은 대표적인 디지털 영상 데이터 압축/복원 표준을 구현하는 영상 부호화 장치를 제어하는 CPU의 부하를 줄이는 데 있다.
상기의 기술적 과제를 달성하기 위한 본 발명에 따른 영상 부호화 장치는, DCT 변환과 움직임 보상 및 예측을 통해 영상 부호화를 수행하는 영상 부호화 장치에 있어서, 현재 매크로블록의 절대편차평균값(MAD)을 구하는 움직임 보상(MC) 블록; 상기 절대편차평균값(MAD)과 양자화계수(QP)를 바탕으로 현재 매크로블록의 비트량을 예측하여 비디오 패킷의 종료여부를 제어하는 제어부; 및 움직임 예측 및 텍스쳐 부호화를 수행하며, 상기 제어부의 제어에 따라 비디오 패킷내의 모든 매크로블록에 대한 패킹을 수행하는 가변장부호화(VLC) 블록을 포함하는 것을 특징으로 한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의해 달성되는 목적을 충분히 이해하기 위해서는, 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다.
도 6은 본 발명에 따른 영상 부호화 장치의 블록도이다.
도 6을 참조하면, 본 발명에 따른 영상 부호화 장치는 부호화기(400), 메모리부(404,405), 중앙처리장치(CPU)(401) 및 메인메모리부(402), 데이터버스(403)로 구성되며, 이들은 도 2의 종래기술에 따른 영상 부호화 장치에서의 부호화기(100), 메모리부(204,205), 중앙처리장치(CPU)(201) 및 메인메모리부(202), 데이터버스(203)와 동일한 기능을 수행한다. 다만, 차이점은 VLC 블록(406)이 패킹이 가능하도록 개선된 것이고, MC 블록(409)이 절대편차평균값(MAD: Mean Absolute Difference)을 구해서 출력한다는 것이다.
상기 절대편차평균값(MAD)은 하나의 매크로블록에 대해 현재 프레임이 데이터와 움직임 예측된 데이터의 차분치로 이루어지는 매크로블록을 계산한 다음, 각각의 픽셀들의 절대값을 모두 합하여 256으로 나눈 값으로, 일반적으로 이 값이 클수록 부호화된 비트스트림의 길이가 길어진다.
도면부호 411은 MC 블록(409)에서 구해진 MAD 값이고, 도면부호 412는 현재 매크로블록에 적용될 양자화계수(QP) 값으로서, 이후에 상술되는 바와 같이 MAD값과 QP값은 현재 매크로블록이 부호화된 후의 비트량을 예측하는데 사용된다. 또한 도면부호 413은 현재 매크로블록을 부호화하기 이전에 VLC 블록(406)에 주는 패킹여부를 나타내는 정보로서, 1이면 현재 매크로블록에서 패킹을 수행하고, 0이면 수행하지 않는다. 참고로, 상기 QP는 공지된 바와 같은 양자화율을 결정하는 제어 알고리즘에 의해 결정될 수 있다.
도 7은 본 발명에 의한 VLC 블록의 상세 블록도이다.
헤더 롬테이블(mb_rom)(508)은 헤더를 부호화하는데 필요한 여러가지 테이블을 포함한다.
헤더 메모리(hmem)(506)는 헤더 부호화가 된 결과를 저장되는데, 데이터분할 여부에 따라 헤더가 헤더1과 헤더2로 구분될 수도 있다.
텍스쳐 부호화 제어부(texture_ctrl)(502)는 텍스쳐 부호화의 제어를 맡는다.
텍스쳐 롬테이블(ac_rom)(503)은 텍스쳐를 부호화하는데 필요한 여러 가지 테이블을 포함한다.
텍스쳐 메모리(tmem)(501)는 텍스쳐 부호화가 된 결과를 저장한다.
패킹 실행부(pack_ctrl)(504)는 헤더와 텍스쳐의 패킹을 담당한다. 상기 패킹은 헤더 메모리(hmem)(506) 그리고/또는 텍스쳐 메모리(tmem)(501)에서 일정 단위로 데이터를 읽어와서 이어붙인 다음 헤더 메모리(hmem)(506)에 다시 쓰는 과정이다.
패킹을 수행하는 경우는 다음 두 가지이다.
첫째, 매크로블록 부호화 시작 전에 CPU(401)로부터 패킹여부에 대한 제어신 호 즉, PEN값(413)을 통해 이번 매크로블록의 부호화가 끝나고 나서 패킹을 하라고 명령을 받은 경우.
둘째, 매크로블록 부호화를 수행하는 도중에 텍스쳐 메모리(tmem)(501) 또는 헤더 메모리(hmem)(506)에서 오버플로우가 발생한 경우.
VLC 레지스터부(vlc_reg)(505)는 헤더 및 텍스쳐 부호화에 필요한 여러가지 설정들을 CPU(401)로부터 받아서 텍스쳐 부호화 제어부(texture_ctrl)(502), 패킹 실행부(pack_ctrl)(504)(504), 헤더 부호화 제어부(header_ctrl)(507)로 전달한다.
도 8은 본 발명에 의한 패킹 실행부(pack_ctrl)의 상세 블록도로서, 도 8을 참조하면 패킹 실행부(pack_ctrl)는 패킹 실행제어부(pack control)(601), 패킹 연산부(pshifter)(602), 텍스쳐 메모리 제어부(texture memory control)(605), 및 헤더 메모리 제어부(header memory control)로 구성된다.
패킹 실행제어부(pack control)(601)는 패킹 실행부(pack_ctrl)(504)의 전체적인 제어를 담당한다. 여기서, VLC 레지스터부(vlc_reg)(505)로부터 입력되는 pack_en 신호는 PEN값(413)과 동일한 값으로서 패킹을 수행할지 여부를 나타낸다.
또한, 헤더 부호화 제어부(header_ctrl)(507)로부터 입력되는 hend 신호는 현재 매크로블록의 헤더 부호화가 완료되었음을 나타내는 신호이고, hoverflow 신호는 헤더 부호화 중에 오버플로우가 발생해서 pack_en에 관계없이 강제로 패킹이 진행되어야 함을 나타내는 신호이다.
또한, 텍스쳐 부호화 제어부(texture_ctrl)(502)로부터 입력되는 tend 신호는 현재 매크로블록의 텍스쳐 부호화가 완료되었음을 나타내는 신호이고, toverflow 신호는 텍스쳐 부호화 중에 오버플로우가 발생해서 pack_en 신호에 관계없이 강제로 패킹이 진행되어야 함을 나타내는 신호이다.
패킹 실행제어부(pack control)(601)는 pack_en, toverflow, 또는 hoverflow신호가 1이면 tend 신호와 hend 신호를 통해 헤더 및 텍스쳐 부호화가 각각 완료되었는지를 확인하고, 완료되었으면 p_start 신호로 패킹을 시작하라고 명령한다.
패킹 연산부(pshifter)(602)는 실제로 패킹을 수행한다. 헤더 부호화 제어부(header_ctrl)(507)로부터 h1_start_pos, h1_end_pos, h2_start_pos, h2_end_pos 신호를 입력받는데, 차례대로 현재 매크로블록에서 헤더1(데이터분할되지 않은 경우는 헤더)의 시작 위치, 헤더1(데이터분할되지 않은 경우는 헤더)의 끝 위치, 헤더2의 시작 위치, 헤더2의 끝 위치를 의미한다. h2_start_pos와 h2_end_pos 신호의 값은 데이터분할된 경우만 유효하다.
도 8에서 '_pos'로 끝나는 신호는 텍스쳐 메모리(tmem)(501) 또는 헤더 메모리(hmem)(506) 상에서 비트 단위의 위치를 나타내는 신호이다. 텍스쳐 부호화 제어부(texture_ctrl)(502)로부터 t_start_pos, t_end_pos 신호를 입력받는데, 차례대로 현재 매크로블록에서 텍스쳐의 시작 위치, 텍스쳐의 끝 위치를 의미한다.
패킹 연산부(pshifter)(602)는 쉬프트&머지(shift&merge) 블록(603)과 레지스터 파일 블록(register file)(604) 블록으로 구성된다.
쉬프트&머지 블록(603)은 텍스쳐 메모리(tmem)(501) 및/또는 헤더 메모리(hmem)(506)로부터 나온 두 개의 32 bit 단위를 각각 적절히 쉬프트하고 머지하여 패킹된 새로운 하나의 32 bit 단위를 만들어내는 블록이다.
레지스터 파일 블록(604)은 pre_h1_start_pos, pre_h2_start_pos, pre_t_start_pos 신호를 저장하는데, 데이터분할된 경우에만 사용된다.
pre_h1_start_pos는 헤더 메모리(hmem)(506) 상에서 비디오패킷의 첫번째 매크로블록에 대한 헤더1 시작 위치이다. pre_h2_start_pos는 헤더 메모리(hmem)(506) 상에서 비디오패킷의 첫번째 매크로블록에 대한 헤더2 시작 위치이다.
pre_t_start_pos는 텍스쳐 메모리(tmem)(501) 상에서 비디오패킷의 첫번째 매크로블록에 대한 텍스쳐 시작 위치이다. 데이터분할된 경우에는 비디오패킷에 포함된 모든 매크로블록의 부호화된 데이터를 패킹해야 하기 때문에, 레지스터 파일 블록(604)에 저장된 내용이 필요하다.
텍스쳐 메모리 제어부(605)는 텍스쳐 메모리(tmem)(501)에서 패킹에 필요한 데이터를 패킹 연산부(pshifter)(602)에 넘겨주는 블록이다.
헤더 메모리 제어부(606)는 헤더 메모리(hmem)(506)에서 패킹에 필요한 데이터를 패킹 연산부(pshifter)(602)에 넘겨주고, 패킹된 데이터를 다시 헤더 메모리(hmem)(506)에 기록하는 블록이다. 만약 패킹된 데이터가 헤더 메모리(hmem)(506)에 다 차면, 텍스쳐 메모리(tmem)에 이어서 기록한다.
도 9는 데이터분할이 되지 않은 경우의 패킹의 실시예를 나타낸다.
h1_start_pos와 t_start_pos는 각각 헤더와 텍스처가 쓰여지기 시작하는 위치(bit 단위)를 나타낸다. 매크로블록의 부호화가 시작되고, 헤더와 텍스처가 각각 모두 부호화되면 h1_end_pos와 t_end_pos는 각각 헤더와 텍스처의 끝 위치를 나타 낸다. 그리고나서 패킹이 완료되면 p_end_pos는 헤더와 텍스처가 패킹된 후 매크로블록 데이터의 마지막을 가리킨다.
데이터분할이 이루어지지 않는 경우는 모든 매크로블록마다 패킹이 이루어지도록 CPU(401)로부터 명령을 받는다. 이런 예에서, hmem과 tmem은 32 bit 너비를 갖는 메모리로서, 각각 128 워드 또는 4096 비트를 저장할 수 있다.
h1_start_pos는 0~4095의 값을 가질 수 있는데, 이전 매크로블록 스트림의 종료 위치에 따라 0~31 사이의 값을 넣도록 권장된다. t_start_pos도 0~4095의 값을 가질 수 있는데, 부호화 결과를 써넣는 공간을 최대한 확보할 수 있게 0을 넣도록 권장된다. 한 매크로블록의 부호화가 끝나면 h1_start_pos와 p_end_pos를 참조하여 부호화된 스트림을 가져갈 수 있다.
도 10은 데이터분할이 된 경우의 패킹의 실시예를 나타낸다. 여기서, 부호화하는 비디오 패킷은 세 개의 매크로블록으로 이루어진다.
h1_start_pos, h2_start_pos, t_start_pos는 각각 세번째 매크로블록, 즉 비디오 패킷의 마지막 매크로블록의 헤더1, 헤더2와 텍스처가 쓰여지기 시작하는 위치(bit 단위)를 나타낸다.
pre_h1_start_pos, pre_h2_start_pos, pre_t_start_pos는 각각 비디오패킷의 첫 매크로블록의 헤더1, 헤더2와 텍스처가 쓰여지기 시작하는 위치로서, 패킹할 때 이용된다.
h1_end_pos, h2_end_pos, t_end_pos는 각각 비디오패킷의 마지막 매크로블록의 헤더1, 헤더2와 텍스처가 쓰여진 마지막 위치이다.
도 10은 첫번째, 두번째 매크로블록은 PEN값(413)을 0으로 놓고, 또한 세번째, 즉 비디오패킷의 마지막 매크로블록에서 PEN값(413)을 1로 놓고 부호화한 경우이다. 비디오패킷의 마지막 매크로블록의 헤더1, 헤더2와 텍스처의 부호화가 끝나면 3개 매크로블록의 헤더1, 헤더2, 텍스처가 차례대로 패킹된다.
만약 세번째 매크로블록을 부호화하는 동안 tmem에서 오버플로우가 발생했다면, PEN값(413)의 값에 상관없이 첫번째와 두번째 매크로블록만 강제로 패킹되고, VLC가 종료된다.
데이터분할이 된 경우는 다음 3가지 종류의 오버플로우가 발생할 수 있다.
h1 overflow : 헤더1의 부호화 결과가 h2_start_pos (헤더2의 시작 주소)를 넘어가는 경우.
h2 overflow : 헤더2의 부호화 결과가 hmem의 크기를 넘어가는 경우.
t overflow : 텍스처의 부호화 결과가 tmem의 크기를 넘어가는 경우.
도 11은 데이터분할 되었을 때의 본 발명에 의한 비디오 패킷의 부호화 과정을 나타낸다.
단계 S200에서, 재동기마커와 비디오패킷 헤더를 삽입한다.
단계 S210에서는 이번 매크로블록의 부호화 결과 나올 비트스트림의 길이 즉, 매크로블록 비트량을 예측한다.
상기 매크로블록 비트량은 다음과 같이 (수학식 1)로 예측된다.
(수학식 1)
Figure 112004001279917-pat00001
여기서, bit_est는 예측되는 비트량이고, 140은 실험적으로 얻어진 값이다. offset은 0이상의 값으로서, 이 값이 높을수록 실제로 나오는 비트량이 bit_est보다 작을 확률이 커진다(구체적인 수치는 도 13에서 설명될 것이다.)
offset이 클수록 실제 비트량이 bit_est보다 커질 확률이 줄어들어 오버플로우를 보다 확실하게 방지할 수 있지만, 비트량 예측이 실제보다 부풀려지는 경향이 나타날 수 있다. (수학식 1)에서 MAD값과 QP는 이미 다른 블록에서 구해진 값들로서, 별도로 구할 필요가 없는 값들이다.
단계 S212에서는 비디오 패킷 패킹 여부를 결정하는데, 현재 비디오 패킷의 길이에 그 예측값을 더한 값이 미리 정해놓은 비디오패킷 길이보다 크거나, 다음 매크로블록까지 비디오패킷에 포함시킬 경우 hmem 또는 tmem에서 오버플로우가 일어날 것이라고 예상되면, PEN값(413)을 1로 설정하여 현재 매크로블록에서 패킹을 수행하여 비디오 패킷을 마무리한다.
단계 S214에서는 실제로 매크로블록 부호화가 수행된다.
단계 S216에서는 현재 매크로블록이 비디오패킷의 마지막이면 단계 S218로 분기하고, 그렇지 않으면 단계 S210으로 분기한다.
단계 S218에서는 완성된 비디오 패킷 스트림을 메인 메모리부(402)로 가져간다.
도 12는 (수학식 1)의 유도에 근거가 된 실험 자료로서, 매크로블록당 비트량과 MAD/QP 값의 관계를 나타낸다. 매크로블록마다 차이가 있지만 매크로블록의 비트량은 MAD/QP 값에 대략 비례함을 알 수 있다.
도 13은 (수학식 1)의 offset 값에 따라, 매크로블록의 실제 비트량이 bit_est보다 작을 확률이 어떻게 변하는지를 보여주는 것으로, offset이 50일 경우는 약 95.0%, 70일 경우는 약 98.1%, 100일 경우는 약 99.4%이다.
목표로 하는 비디오 패킷의 길이가 tmem 또는 hmem의 크기와 거의 비슷하다면, 이 offset 값을 충분히 크게 주어 실제로 오버플로우가 발생하는 경우를 최소화할 수 있다.
목표로 하는 비디오 패킷의 길이가 tmem 또는 hmem의 크기보다 충분히 작다면, offset 값을 50 정도로만 잡아도 오버플로우가 거의 발생하지 않도록 만들 수 있다.
도 14는 데이터분할된 경우, 본 발명에 의한 VLC 오버플로우 처리 과정을 나타낸다.
N번째 매크로블록을 부호화하다가 오버플로우가 발생하면, (N-1)번째 매크로블록까지 부호화된 헤더1, 헤더2, 텍스쳐를 패킹하고 그 매크로블록의 동작을 마친다.
만약 오버플로우가 발생했을 때, (N+1)번째 매크로블록의 움직임 예측(ME)이 진행되고 있다면, 그 동작이 끝날 때까지 기다려야 한다.
다음 과정은 N번째 매크로블록을 부호화하는 것인데, MC부(409)와 ME부(410) 의 메모리 및 레지스터의 내용이 (N+1)번째 매크로블록에 맞게 들어가 있으므로, N번째 매크로블록의 움직임 예측을 다시 한 번 수행할 필요가 있다.
그후, (N+1)번째 매크로블록의 움직임 예측과 N번째 매크로블록의 텍스쳐 코딩(TC: texture coding)이 동시에 이루어지는 정상적인 상태로 진입하게 된다.
따라서, VLC 오버플로우가 한 번 발생할때마다 두 개 매크로블록의 부호화를 위한 시간이 추가로 소요된다. 그러나, tmem의 크기를 비디오 패킷의 원하는 최대크기보다 약 200 bit정도만 크게 잡아도, 오버플로우가 발생할 확률은 10만분의 2이하로 유지되어 거의 영향을 끼치지 않는다. (비디오패킷에 포함되는 매크로블록의 평균 개수를 15개로 가정했을 경우) tmem의 크기를 더 크게 잡는다면 오버플로우 확률은 더 줄어든다.
매우 드문 경우이지만, 데이터 분할이 안 된 경우에서, 부호화 도중 hmem 또는 tmem에서 오버플로우가 발생하면, 부호화 장치는 그대로 동작을 중지한다. 그렇게 되면 중지된 시점에서 부호화를 진행하던 매크로블록의 데이터는 패킹되지 않은 상태로 남아 있게 된다. 그렇게 중지된 매크로블록은 거의 noise에 가까운 영상일 확률이 높은데, 양자화 계수를 높힌 다음 부호화를 재시도할 수 있다.
본 발명에 의하면, 첫째 VLC에서 패킹, 즉 헤더(데이터분할된 경우는 헤더1과 헤더2), 그리고 텍스쳐를 합치는 과정을 완벽하게 지원함으로써 CPU의 부하를 줄일 수 있다.
둘째, 매크로블록의 부호화 종료 또는 비디오 패킷의 부호화 종료후 VLC 메 모리의 추가적인 읽고/쓰기, 쉬프트, 논리 연산 등이 요구되지않아 CPU의 부하를 줄일 수 있다.
세째, 부호화 장치의 제어가 단순해진다. 사용자는 매크로블록 또는 비디오패킷의 부호화가 끝난 후 hmem의 내용을 단순히 메인 메모리(MAIN_MEM)로 옮겨가기만 하면 된다.
네째, 데이터분할된 경우, 패킹을 지원하기 위해 비디오패킷 내의 여러 매크로블록의 데이터를 한꺼번에 tmem과 hmem에 저장하다보면 오버플로우가 일어날 가능성을 배제할 수 없다. 그런데, (수학식 1)을 이용하여 매크로블록의 비트량을 미리 예측한다면 오버플로우가 발생할 확률을 10만분의 1 이하 수준으로 낮출 수 있다. 오버플로우가 발생하면 2개 매크로블록 만큼의 부호화 시간이 더 걸리지만, 이는 패킹 지원으로 줄어든 CPU 부하에 비해 거의 무시할만한 수준이다.

Claims (9)

  1. DCT 변환과 움직임 보상 및 예측을 통해 영상 부호화를 수행하는 영상 부호화 장치에 있어서,
    현재 매크로블록의 절대편차평균값(MAD)을 구하는 움직임 보상(MC) 블록;
    상기 절대편차평균값(MAD)과 양자화계수(QP)를 바탕으로 현재 매크로블록의 비트량을 예측하여 비디오 패킷의 종료여부를 제어하는 제어부; 및
    움직임 예측 및 텍스쳐 부호화를 수행하며, 상기 제어부의 제어에 따라 비디오 패킷내의 모든 매크로블록에 대한 패킹을 수행하는 가변장부호화(VLC) 블록을 포함하는 것을 특징으로 하는 영상 부호화 장치.
  2. 청구항 1에 있어서, 상기 제어부는 아래의 (수학식 1)에 의해 현재 매크로블록의 비트량을 예측하며, 현재 비디오 패킷에서 이전 매크로블록까지 비트량의 합에 bit_est를 더한 값이 미리 정해둔 비디오 패킷의 목표 길이보다 커지는 경우에 비디오 패킷의 종료를 결정하는 것을 특징으로 하는 영상 부호화 장치.
    (수학식 1)
    Figure 112004001279917-pat00002
    여기서, bit_est는 예측되는 비트량이고, k는 실험적으로 구해진 상수이며, offset은 매크로블록이 예측된 비트량이내로 부호화될 확률을 조절하는 변수임.
  3. 청구항 1에 있어서, 상기 가변장부호화(VLC) 블록은,
    헤더 부호화의 제어를 담당하는 헤더 부호화 제어부(header_ctrl);
    헤더를 부호화하는데 필요한 여러가지 테이블을 포함하는 헤더 롬테이블(mb_rom);
    헤더 부호화가 된 결과를 저장하는 헤더 메모리(hmem);
    텍스쳐 부호화의 제어를 담당하는 텍스쳐 부호화 제어부(texture_ctrl);
    텍스쳐를 부호화하는데 필요한 여러 가지 테이블을 포함하는 텍스쳐 롬테이블(ac_rom);
    텍스쳐 부호화가 된 결과를 저장하는 텍스쳐 메모리(tmem);
    헤더와 텍스쳐의 패킹을 담당하는 패킹 실행부(pack_ctrl); 및
    헤더 및 텍스쳐 부호화에 필요한 여러가지 설정들을 저장하는 VLC 레지스터부(vlc_reg)를 포함하는 것을 특징으로 하는 영상 부호화 장치.
  4. 청구항 3에 있어서, 상기 패킹 실행부(pack_ctrl)는,
    상기 패킹 실행부(pack_ctrl)의 전체적인 제어를 담당하는 패킹 실행제어부(pack control);
    패킹을 실제로 수행하는 패킹 연산부(pshifter);
    텍스쳐 메모리(tmem)에서 패킹에 필요한 데이터를 패킹 연산부(pshifter)에 넘겨주는 텍스쳐 메모리 제어부(texture memory control); 및
    헤더 메모리(hmem)에서 패킹에 필요한 데이터를 패킹 연산부(pshifter)에 넘겨주고, 패킹된 데이터를 다시 헤더 메모리(hmem)에 기록하는 헤더 메모리 제어부(header memory control)를 포함하는 것을 특징으로 하는 영상 부호화 장치.
  5. 청구항 4에 있어서, 상기 패킹 실행제어부(pack control)는 pack_en, toverflow, 또는 hoverflow신호가 1이면 tend 신호와 hend 신호를 통해 헤더 및 텍스쳐 부호화가 각각 완료되었는지를 확인하고, 완료되었으면 p_start 신호로 패킹을 시작하라고 명령하는 것을 특징으로 하는 영상 부호화 장치.
  6. 청구항 4에 있어서, 상기 패킹 연산부(pshifter)는,
    텍스쳐 메모리(tmem) 및/또는 헤더 메모리(hmem)로부터 나온 두 개의 A bit 단위의 데이터를 각각 적절히 쉬프트하고 머지하여 패킹된 새로운 하나의 A bit 단위의 데이터를 생성하는 쉬프트&머지(shift&merge) 블록(여기서, A는 상기 텍스쳐 메모리(tmem)의 너비와 헤더 메모리(hmem)의 너비 중 작지 않은 값); 및
    비디오 패킷에 포함된 모든 매크로블록의 부호화된 데이터를 패킹하기 위하여 비디오 패킷의 첫번째 매크로블록의 헤더1, 헤더2, 텍스쳐 데이터의 시작위치를 나타내는 정보(pre_h1_start_pos, pre_h2_start_pos, pre_t_start_pos)를 저장하는 레지스터 파일(register file) 블록을 포함하는 것을 특징으로 하는 영상 부호화 장치.
  7. 청구항 1 내지 청구항 6중 어느 한항에 있어서,
    일반 비디오 패킷의 경우에는 현재 매크로블록의 부호화된 데이터를 패킹하여 헤더 메모리(hmem)에 기록하는 것을 특징으로 하는 영상 부호화 장치.
  8. 청구항 1 내지 청구항 6중 어느 한항에 있어서,
    데이터분할된 비디오 패킷의 경우에는 현재 비디오 패킷에 포함된 모든 매크로블록의 부호화된 데이터를 패킹하여 헤더 메모리(hmem)에 기록하는 것을 특징으로 하는 영상 부호화 장치.
  9. 청구항 8에 있어서,
    N번째 매크로블록의 텍스쳐 부호화를 진행하는 동안 텍스쳐 메모리(tmem) 또는 헤더 메모리(hmem)에 오버플로우가 발생하는 경우에,
    현재 비디오 패킷에 대해 비디오 패킷의 시작 매크로블록으로부터 (N-1)번째 매크로블록까지 강제로 패킹을 수행하고;
    N번째 매크로블록에 대한 움직임 예측을 재수행하고;
    N번째 매크로블록의 텍스쳐 부호화와 (N+1)번째 매크로블록에 대한 움직임 예측을 동시에 수행하는 것을 특징으로 하는 영상 부호화 장치.
KR20040002200A 2004-01-13 2004-01-13 영상 부호화 장치 Expired - Lifetime KR100556340B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR20040002200A KR100556340B1 (ko) 2004-01-13 2004-01-13 영상 부호화 장치
JP2005002919A JP4142652B2 (ja) 2004-01-13 2005-01-07 映像符号化装置
US11/034,270 US7620104B2 (en) 2004-01-13 2005-01-12 Video coding system
CNB2005100021032A CN100397905C (zh) 2004-01-13 2005-01-13 视频编码系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20040002200A KR100556340B1 (ko) 2004-01-13 2004-01-13 영상 부호화 장치

Publications (2)

Publication Number Publication Date
KR20050074012A KR20050074012A (ko) 2005-07-18
KR100556340B1 true KR100556340B1 (ko) 2006-03-03

Family

ID=34738051

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20040002200A Expired - Lifetime KR100556340B1 (ko) 2004-01-13 2004-01-13 영상 부호화 장치

Country Status (4)

Country Link
US (1) US7620104B2 (ko)
JP (1) JP4142652B2 (ko)
KR (1) KR100556340B1 (ko)
CN (1) CN100397905C (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7738554B2 (en) 2003-07-18 2010-06-15 Microsoft Corporation DC coefficient signaling at small quantization step sizes
US8218624B2 (en) * 2003-07-18 2012-07-10 Microsoft Corporation Fractional quantization step sizes for high bit rates
US7580584B2 (en) * 2003-07-18 2009-08-25 Microsoft Corporation Adaptive multiple quantization
US10554985B2 (en) 2003-07-18 2020-02-04 Microsoft Technology Licensing, Llc DC coefficient signaling at small quantization step sizes
US7602851B2 (en) 2003-07-18 2009-10-13 Microsoft Corporation Intelligent differential quantization of video coding
US7801383B2 (en) 2004-05-15 2010-09-21 Microsoft Corporation Embedded scalar quantizers with arbitrary dead-zone ratios
US8422546B2 (en) 2005-05-25 2013-04-16 Microsoft Corporation Adaptive video encoding using a perceptual model
US8130828B2 (en) 2006-04-07 2012-03-06 Microsoft Corporation Adjusting quantization to preserve non-zero AC coefficients
US7974340B2 (en) 2006-04-07 2011-07-05 Microsoft Corporation Adaptive B-picture quantization control
US8503536B2 (en) 2006-04-07 2013-08-06 Microsoft Corporation Quantization adjustments for DC shift artifacts
US8059721B2 (en) * 2006-04-07 2011-11-15 Microsoft Corporation Estimating sample-domain distortion in the transform domain with rounding compensation
US7995649B2 (en) 2006-04-07 2011-08-09 Microsoft Corporation Quantization adjustment based on texture level
US8711925B2 (en) 2006-05-05 2014-04-29 Microsoft Corporation Flexible quantization
US7324026B2 (en) * 2006-05-19 2008-01-29 Nvidia Corporation Optimization of decoder memory usage for VLC tables
US8238424B2 (en) 2007-02-09 2012-08-07 Microsoft Corporation Complexity-based adaptive preprocessing for multiple-pass video compression
US8498335B2 (en) 2007-03-26 2013-07-30 Microsoft Corporation Adaptive deadzone size adjustment in quantization
US8243797B2 (en) 2007-03-30 2012-08-14 Microsoft Corporation Regions of interest for quality adjustments
US8442337B2 (en) 2007-04-18 2013-05-14 Microsoft Corporation Encoding adjustments for animation content
US8331438B2 (en) 2007-06-05 2012-12-11 Microsoft Corporation Adaptive selection of picture-level quantization parameters for predicted video pictures
US8116372B1 (en) * 2007-10-26 2012-02-14 Xilinx, Inc. Data structure and method using same for encoding video information
US8189933B2 (en) 2008-03-31 2012-05-29 Microsoft Corporation Classifying and controlling encoding quality for textured, dark smooth and smooth video content
US8897359B2 (en) 2008-06-03 2014-11-25 Microsoft Corporation Adaptive quantization for enhancement layer video coding
ATE536048T1 (de) * 2008-06-20 2011-12-15 Dolby Lab Licensing Corp Videokomprimierung unter mehreren verzerrungsnebenbedingungen
JP2010278730A (ja) * 2009-05-28 2010-12-09 Mitsubishi Electric Corp 動画像符号化装置及び動画像符号化方法
JP5741073B2 (ja) * 2011-03-03 2015-07-01 富士通株式会社 画像符号化装置、画像符号化方法、及び画像符号化プログラム
KR101323863B1 (ko) * 2011-11-01 2013-10-31 아주대학교산학협력단 움직임 추정 방법 및 움직임 추정 장치
WO2013070974A2 (en) * 2011-11-08 2013-05-16 General Instrument Corporation Method of determining binary codewords for transform coefficients
CN107995496B (zh) * 2011-11-08 2020-07-17 谷歌技术控股有限责任公司 确定用于变换系数的二进制码字的方法
CN103581674A (zh) * 2012-08-07 2014-02-12 上海算芯微电子有限公司 视频数据的压缩/解压缩方法及系统
CN103581675A (zh) * 2012-08-07 2014-02-12 上海算芯微电子有限公司 视频数据的压缩/解压缩方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07235877A (ja) * 1994-02-24 1995-09-05 Canon Inc 可変長符号パッキング装置
JP3274284B2 (ja) * 1994-08-08 2002-04-15 キヤノン株式会社 符号化装置およびその方法
US5969764A (en) * 1997-02-14 1999-10-19 Mitsubishi Electric Information Technology Center America, Inc. Adaptive video coding method
KR100335138B1 (ko) * 1998-12-30 2002-11-27 엘지정보통신주식회사 비디오코더의가변부호화기및이를이용한코딩방법
JP3662171B2 (ja) * 2000-06-05 2005-06-22 三菱電機株式会社 符号化装置及び符号化方法
US20030215011A1 (en) * 2002-05-17 2003-11-20 General Instrument Corporation Method and apparatus for transcoding compressed video bitstreams

Also Published As

Publication number Publication date
JP2005204310A (ja) 2005-07-28
US7620104B2 (en) 2009-11-17
US20050152451A1 (en) 2005-07-14
KR20050074012A (ko) 2005-07-18
CN100397905C (zh) 2008-06-25
CN1642282A (zh) 2005-07-20
JP4142652B2 (ja) 2008-09-03

Similar Documents

Publication Publication Date Title
KR100556340B1 (ko) 영상 부호화 장치
US20060165181A1 (en) Piecewise processing of overlap smoothing and in-loop deblocking
US20060165164A1 (en) Scratch pad for storing intermediate loop filter data
JP2009260977A (ja) 不可逆圧縮及び可逆圧縮を組み合わせて用いたビデオデータ圧縮
CA2062200A1 (en) Decompression processor for video applications
US9161056B2 (en) Method for low memory footprint compressed video decoding
KR100806435B1 (ko) 데이타를 버퍼로/버퍼로부터 추출하고 로딩하는 장치 및방법
US7113644B2 (en) Image coding apparatus and image coding method
CN1968420B (zh) 应用于影像译码器与编码器的影像处理方法
JP3918263B2 (ja) 圧縮符号化装置および符号化方法
US20070127570A1 (en) Image processor and image processing method
KR20060012626A (ko) 비디오 처리 장치 및 방법
US20060133512A1 (en) Video decoder and associated methods of operation
KR100204475B1 (ko) 개선된 프레임 재배열 장치
JP2002199392A (ja) 映像符号化方法および装置
JP2000059792A (ja) 動画像信号の高能率符号化装置
JP2008294669A (ja) 画像符号化装置
CN100496126C (zh) 影像编码装置及其方法
CN101854538B (zh) 运动图像处理方法及运动图像处理器
WO2008079330A1 (en) Video compression with complexity throttling
JP2003230148A (ja) 画像データ符号化装置
JPH09121352A (ja) ビデオデータ流の全ての画素に対するビデオデータ流の符号化と復号化のための方法及び装置
JP4675383B2 (ja) 画像復号化装置および方法、画像符号化装置
US7840080B1 (en) Motion estimator architecture for low bit rate image communication
JP2008136177A (ja) 動き検出装置、MOS(metal−oxidesemiconductor)集積回路および映像システム

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20040113

PA0201 Request for examination
PG1501 Laying open of application
E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20060126

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20060223

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20060223

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20090203

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20100111

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20110207

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20120109

Start annual number: 7

End annual number: 7

FPAY Annual fee payment

Payment date: 20130110

Year of fee payment: 8

PR1001 Payment of annual fee

Payment date: 20130110

Start annual number: 8

End annual number: 8

FPAY Annual fee payment

Payment date: 20140122

Year of fee payment: 9

PR1001 Payment of annual fee

Payment date: 20140122

Start annual number: 9

End annual number: 9

FPAY Annual fee payment

Payment date: 20150205

Year of fee payment: 10

PR1001 Payment of annual fee

Payment date: 20150205

Start annual number: 10

End annual number: 10

FPAY Annual fee payment

Payment date: 20161223

Year of fee payment: 12

PR1001 Payment of annual fee

Payment date: 20161223

Start annual number: 12

End annual number: 12

FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 13

PR1001 Payment of annual fee

Payment date: 20180201

Start annual number: 13

End annual number: 13

FPAY Annual fee payment

Payment date: 20190201

Year of fee payment: 14

PR1001 Payment of annual fee

Payment date: 20190201

Start annual number: 14

End annual number: 14

PR1001 Payment of annual fee

Payment date: 20210201

Start annual number: 16

End annual number: 16

PR1001 Payment of annual fee

Payment date: 20230201

Start annual number: 18

End annual number: 18

PC1801 Expiration of term

Termination date: 20240713

Termination category: Expiration of duration