KR20010075530A - 비디오 인코더의 속도조절을 제공하기 위한 방법 및 장치 - Google Patents

비디오 인코더의 속도조절을 제공하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20010075530A
KR20010075530A KR1020017004165A KR20017004165A KR20010075530A KR 20010075530 A KR20010075530 A KR 20010075530A KR 1020017004165 A KR1020017004165 A KR 1020017004165A KR 20017004165 A KR20017004165 A KR 20017004165A KR 20010075530 A KR20010075530 A KR 20010075530A
Authority
KR
South Korea
Prior art keywords
frame
video
bits
buffer
target
Prior art date
Application number
KR1020017004165A
Other languages
English (en)
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 KR20010075530A publication Critical patent/KR20010075530A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/142Detection of scene cut or scene change
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • 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

Abstract

다수의 병렬 압축 엔진(12)으로 이루어진 디지탈 비디오 인코더의 양자화 레벨을 제어하기 위한 방법 및 장치가 제공된다. 입력 화상이 다수의 패널(10)로 분할되고, 각 패널은 별개의 압축 엔진(12)에 의해 처리된다. 기준 양자화기 스케일은 비디오의 프레임을 인코딩하기 전에 결정된다. 기준 양자화기 스케일은 비디오 인코더에 의해 처리되는 모든 비디오 이미지 패널의 제1슬라이스에서 이용된다. 이 때, 이미지 패널의 최종 스케일에서의 양자화기 스케일은 강제로 제1슬라이스와 동일하게 되도록 강요된다. 강요 단계는 구분-선형 피드백 공식을 이용할 수 있다. GOP(group of picture) 목표 비트율은 일반적으로 적어도 하나의 압축 엔진의 파이프라인을 처리함에 있어 다수의 필름 화상과 비필름 화상을 기초로 조정된다. 더 높은 목표 비트율은 비필름 화상을 위해 제공된다. 비디오 인코더의 버퍼(16) 레벨은 새로운 GOP의 시작을 제어하는데 이용된다. 버퍼(16)가 새로운 GOP를 위한 인트라-코드화(intra-coded) (Ⅰ) 프레임을 수용하는데 충분한 공간을 갖지 않으면 새로운 GOP의 시작이 지연된다.

Description

비디오 인코더의 속도조절을 제공하기 위한 방법 및 장치 {METHOD AND APPARATUS FOR PROVIDING RATE CONTROL IN A VIDEO ENCODER}
다음의 레퍼런스가 이 발명에 관련되어 있다.
1. "ATSC(Advanced Television Systems Committee) 디지탈 텔레비전 표준"이란 표제가 붙은 ATSC A53 표준.
2. "ATSC 디지탈 텔레비전 표준의 사용 지침"이란 표제가 붙은 ATSC A54 표준.
3. ISO/IEC 13818-2 "Generic Coding of Moving Pictures and Associated Audio: Video" (MPEG2).
4. ISO/IEC JTC1/SC29/WG11/MPEG93/457 "MPEG2 Test Model 5".
5. "Rate Control for the Grand Alliance Prototype Encoder", Siu-WaiWu, memo distributed to the Grand Alliance Video Compression Specialist Group, November 1994.
속도조절(rate control)은 비디오 인코더의 주요한 부분이다. HDTV 인코더에서는, 화상은 데이터 압축을 위한 다중 인코딩 엔진을 이용하여 처리된다. 이들 다중 인코딩 엔진은 동시에 화상에 작용하지만, 공통 데이터 버퍼를 공유한다. 따라서, 버퍼 오버플로우, 버퍼 언더플로우 및 다른 문제가 있는 조건을 방지하기 위해 데이터가 다중 인코딩 엔진에 의해 생성되는 속도를 주의깊게 조절하지 않으면 안된다.
과거에는, 속도 조절 알고리즘은 단일의 비디오 압축기와 공동으로 사용하기 위해 제안되었다. 예컨대, 상기에 인용된 "MPEG2 Test Model 5"를 참조하기 바란다. HDTV를 인코딩하기 위한 대협정에 의해 채택된 어프로치(approach)에서는, 병렬 인코딩 엔진이 프레임 레벨 대신에 비디오 슬라이스에 동기화되고, 따라서 속도조절은 단일의 압축기만이 제공되는 것처럼 처리될 수 있다. 병렬 압축엔진을 사용하는 디지탈 비디오 인코더의 양자화를 제어하기 위해 복수의 압축기에 의한 데이터 생성의 속도를 조절하는 문제에 확실한 해결책을 제공하는 종래기술 전략은 하나도 없었다.
이것은, 비디오 화질을 최적화하도록 다중 인코딩 엔진에 의한 데이터 생성의 속도를 조절하는 유효한 속도 조절 알고리즘을 제공하는데 유리하다. 또, 그러한 알고리즘을 비디오 인코더의 현존하는 조절기 마이크로프로세서로 구현하는데 유리하다. 본 발명은, 이들 및 다른 이점을 갖추고 있는 방법 및 장치를 제공한다.
본 발명은 비디오 처리에 관한 것으로, 특히 디지탈 고화질 텔레비전(high definition television: HDTV)이나 표준 화질 텔레비전(standard definition television: SDTV) 인코더 등의 텔레비전 인코더에서 비디오를 압축하기 위해 제공되는 다중 인코딩 엔진에 의해 데이터 생성의 속도를 조절하기 위한 방법 및 장치에 관한 것이다.
도 1은 본 발명이 적용될 수 있는 HDTV 인코더를 나타낸 블록도이다.
본 발명에 따르면, 화상을 동시에 처리하고 공통 버퍼를 공유하고 있는 다중 인코딩 엔진을 갖춘 비디오 인코더에 속도조절을 제공한다. 이미지 패널(image panel)의 최종 슬라이스에서의 양자화 스케일이 이미지 패널의 최초 슬라이스에서의 양자화 스케일과 거의 같아지도록 하기 위해 비선형 피드백을 이용한다. 이것은, 패널 경계에서의 양자화 스케일의 갑작스러운 변화에 의해 발생되는 두드러진 인공물을 회피한다.
GOP(group of pictures: 화상의 그룹)에 대한 목표 비트속도는, 일반적으로 압축엔진의 처리 파이프라인에서 필름 화상(film pictures) 및 난필름 화상(non-film pictures)의 수에 기초하여 조절된다. 일반적으로 난필름 처리는 높은 목표 비트속도를 필요로 하기 때문에, 이 조절은 비디오가 필름으로부터 난필름 혹은 그와 반대로 절환될 때 속도조절 알고리즘이 채용되는 것을 허용한다.
새로운 GOP의 시작을 조절하기 위해 버퍼 레벨이 사용된다. 버퍼내에 인트라 코드화된 프레임(intra-coded frame: I 프레임)을 수용하기에 충분한 공간이 없는 경우에는, 새로운 GOP의 시작이 지연된다.
특히, 복수의 병렬 압축엔진을 갖춘 디지탈 비디오 인코더에서의 양자화를 조절하기 위한 방법 및 장치가 제공된다. 목표 양자화 레벨은 비디오 프레임마다 결정된다. 이 목표 양자화 레벨은, 비디오 프레임을 나타내며 비디오 인코더에 의해 병렬로 처리되는 복수의 패널의 비디오 화상 패널마다의 최초 슬라이스에 인가된다. 양자화 레벨은 각 화상 패널의 최종 슬라이스에서 목표 양자화 레벨을 향하여 구동된다.
구동 단계는, 예컨대 각 화상 패널의 최종 슬라이스의 양자화 레벨이 목표 양자화 레벨을 향하여 구동되도록 하기 위해 선형 피드백을 불연속으로 이용할 수 있다. 피드백은 각 화상 패널의 최초 및 최종 슬라이스 사이의 양자화 레벨의 변동을 보상할 수 있다.
GOP의 목표 비트속도는, 일반적으로 압축엔진의 적어도 하나의 처리 파이프라인에서 필름 화상 및 난필름 화상의 수에 기초하여 조절될 수 있다. 높은 목표 비트속도가 난필름 화상에 제공될 수 있다.
비디오 인코더의 버퍼 레벨은 새로운 GOP의 시작을 조절하기 위해 사용될 수 있다. 새로운 GOP의 시작은, 버퍼내에 인트라 코드화된 프레임(I 프레임)을 수용하기에 충분한 공간이 없으면 지연된다.
매 입력화상은 고정된 수의 수평패널로 분할될 수 있고, 각 패널은 분리된 압축엔진에 의해 압축된다. 패널은 프레임시간동안 동시에 압축될 수 있다. 압축된 패널 데이터는, 차후의 전송을 위해 압축엔진에서 국부적으로 다음의 프레임시간내에 비디오 인코더의 비디오 버퍼에 저장된다. 전송 패킷을 구성하기 위해, 버퍼가 적어도 하나의 데이터의 전송 패킷 페이로드 가치(transport packet payload's worth)를 가질 때마다, 데이터는 지정된 비디오 비트속도와 같은 평균속도로 버퍼로부터 복구된다. 버퍼 레벨이 하나의 데이터의 전송 패킷 페이로드 가치 이하로 떨어질 때마다 일정한 전송 비트속도를 유지하기 위해 널 패킷(nullpacket)이 비디오 패킷을 대신하게 된다.
압축엔진마다 기준 양자화기 스케일이 계산된다. 기준 양자화기 스케일은, 압축엔진에 대한 양자화기 스케일값의 축적(PanelSumQuant), 그 압축엔진에 의해 발생되는 비트의 수의 축적(PanelBitCount), 그 압축엔진에 의해 처리되는 매크로블록의 수의 축적(PanelMbCount) 및 비디오 인코더의 비디오 버퍼의 충만레벨(VideoBufferLevel)에 기초하여 계산된다. 압축엔진은 양자화에 사용되는 최종 양자화기 스케일값을 발생시키기 위해 국부적인 버퍼 충만에 기초하여 그 기준 양자화기 스케일을 변경한다. 최종 양자화기 스케일값이 소정의 최대값보다도 높은 경우에, 압축엔진에 의해 패닉 모드(panic mode)를 초기화할 수 있다. 패닉 모드는 DCT 계수의 전부 또는 일부가 제로값을 취하도록 한다.
또, 비디오 데이터의 계속하는 매크로블록을 압축하기 위해 복수의 병렬 압축엔진을 이용하여 디지탈 비디오 인코더에 의해 데이터가 처리되는 속도를 조절하기 위한 방법도 제공된다. 코드화된 화상마다 1회 화상 시작 인터럽트 서비스 루틴에 따라 계속하는 비디오 프레임에 대해 프레임 레벨 속도조절이 제공된다. 코드화된 화상마다 복수회 속도조절 인터럽트 서비스 루틴에 따라 매크로블록 레벨 속도조절이 제공된다.
화상 시작 인터럽트 루틴은 전에 코드화된 프레임으로부터 모아진 데이터를 처리함으로써 프레임 레벨 통계변수를 갱신한다. 처리되는 새로운 프레임이 인트라 코드화된 프레임(I 프레임)을 갖고 있는 경우에는, 새로운 GOP에 대해 목표 비트속도가 계산된다. 인코드되는 프레임마다, 새로운 프레임이 발생되도록 허용된비트의 수에 대해 상한 및 하한이 계산된다. 각 프레임 및 각 프레임이 분할되는 복수의 패널의 각각에 대해 목표 비트수가 계산된다. 목표 비트수는, 처리되는 비디오 프레임의 상대 복잡도값에 비례하여 비트를 분포시킴으로써 계산될 수 있다. 프레임 목표 양자화기 스케일은 프레임마다 계산된 목표 비트수로부터 계산된다. 프레임 목표 양자화기 스케일은, 비디오 프레임의 코드화를 개시하는데 사용하기 위한 초기의 기준 양자화기 스케일로서 복수의 압축엔진의 각각에 제공된다.
바람직한 실시예에서는, 기준 양자화기 스케일이 새로운 프레임이 적용가능한 상한내에서 발생되도록 허용된 비트수를 유지하기에 너무 높으면, 압축엔진은 비디오 프레임 매크로블록의 수개의 DCT(이산 코사인 변환) 계수가 제로로 되도록 한다.
속도조절 인터럽트 서비스 루틴은 프레임 목표 양자화기 스케일의 변조를 초기화하는 인터럽트를 제공한다. 변조는 비디오 프레임 패널의 각각에 대한 실제의 비트수가 패널에 대해 대응하는 목표 비트수로 되도록 시도하기 위한 피드백에 기초를 둘 수 있다.
본 발명은 병렬로 동작하는 다중 압축엔진을 사용하는 디지탈 비디오 인코더에 속도조절을 위한 방법 및 장치를 제공한다. 도 1에 나타낸 바와 같은 본 발명의 바람직한 실시예에 따르면, 매 입력화상이 HDTV 패널 스플리터(10)에 의해 8개의 수평패널로 분할된다. 그 후, 각 패널은 개개의 비디오 패널 압축기(12), 예컨대 미국, 캘리포니아 95035, 밀피타스, 맥카티 블러바드 1778의 씨-큐브 마이크로시스템스로부터 입수할 수 있는 DvXpert 칩에 의해 압축된다. 다른 패널 수도 사용할 수 있고, 본 발명은 여기에서 설명하는 DvXpert 인코더 이외의 비디오 인코더에 의해 구현할 수도 있다는 점을 인식해야 한다.
입력화상이 분할된 패널은 프레임시간동안 동시에 압축된다. 압축된 패널 데이터는 패널 압축기에 국부적으로 저장되고, 그 후 다음의 프레임시간내에 제1의 비디오 FIFO(16; "비디오 버퍼")로 전송된다. 비디오 FIFO(16)가 적어도 하나의 데이터의 전송 패킷 페이로드 가치(184바이트)를 가질 때마다, 비트는 사용자 지정 비디오 비트속도(bit_rate)와 같은 평균속도로 패킷 프로세서(18)에 의해 FIFO로부터 복구된다. 복구된 비트는 잘 알려진 MPEG(Motion Picture Experts Group) 표준에 따라 전송 패킷을 구성하기 위해 사용된다. FIFO 레벨이 184바이트 이하로 떨어질 때마다, 일정한 전송 비트속도를 유지하기 위해 널 패킷이 비디오 패킷을 대신함으로써 비디오 비트속도를 효과적으로 저감한다. 도 1에 나타낸 바와 같이, 패킷 프로세서(18)는 압축된 비트스트림을 출력한다.
속도조절 기능은 주로 마스터 압축 제어기(master compression controller: MCC)(14)에 의해 수행된다. MCC는 패널 압축기로부터의 통계(PanelSumQuant, PanelBitCount 및 PanelMbCount) 및 비디오 FIFO로부터의 버퍼 레벨을 한데 모으로, 그 후 패널 압축기마다 8비트 기준 양자화기 스케일(PanelQuant)을 계산한다. 그 후, 패널 압축기는 양자화에 사용되는 최종 양자화기 스케일값을 발생시키기 위해 국부적인 활동 및 국부적인 버퍼 충만에 기초하여 기준 양자화기 스케일을 변경한다. 소망하는 양자화기 스케일이 MPEG 양자화표에 의해 지원되는 최대값보다도 높은 경우에, 패널 압축기는 패닉 모드를 적용하여 수개의 DCT 계수를 제로로 한다.
입력 HDTV 비디오를 수신하는 동기 인터럽트 발생기(20)는, 매 입력필드의 시작시에 MCC에 필드 동기 인터럽트를 발생시키고, 필드시간내에서 주기적으로(예컨대, 1080I 모드에 대해 1.67ms 마다) 속도조절(Rate-Control: RC) 동기 인터럽트를 발생시킨다. 필드 동기인터럽트는, 패널 압축기가 현 필드시간에서 새로운 화상을 인코드할 수 있으면, 화상 시작이라고 여긴다. MCC에 의한 속도조절은 2가지 부분으로 수행된다. (1) 프레임 레벨 속도조절이 코드화된 화상 마다 1회 화상 시작 인터럽트 서비스 루틴에서 수행된다. (2) 매크로블록 레벨 속도조절이 1080라인 비월주사 모드(1080I 모드)에 대해 코드화된 화상마다 20회 이상(720라인 점진적인 주사 모드(720P 모드)에 대해 코드화된 화상마다 10회 이상) RC 인터럽트 서비스 루틴이 수행된다. 패널 압축기가 인코딩 처리를 수행하기 위해 필드시간의 일부만을 사용하기 때문에, 평균하여 8개의 RC 인터럽트만이 양자화를 조절하기 위해 사용된다.
속도조절의 목표는, 시간에 걸쳐 그리고 화상에 걸쳐 일치하는 비디오 화질을 유지하기 위한 것이다. 속도조절 알고리즘의 기본적인 가정은, 특정 화상형태의 코딩 복잡도가 정지장면의 프레임으로부터 프레임으로 거의 일정하다는 것이고, 평균 양자화기 스케일과 프레임(혹은 패널)에 걸쳐 발생되는 비트수의 곱에 의해측정된다. 현 프레임의 복잡도는, 복잡도 예측이 어떤 일시적인 값으로 리셋된 경우에 장면변화나 블랙으로부터의 페이드인이 검출된 때를 제외하고, 통상 이전 프레임의 복잡도로부터 예측된다.
화상 시작 인터럽트시에, MCC는 먼저 마지막으로 코드화된 프레임으로부터 모아진 데이터를 처리함으로써 모든 프레임 레벨 통계 변수를 갱신한다. 다가오는 프레임이 인트라 코드화된 프레임(I 프레임)인 경우에, 새로운 GOP에 대한 목표 비트속도가 계산된다. GOP 목표 비트속도 계산은, 버퍼내에 새로운 I 프레임에 의해 생성되는 비트의 서지를 수용하기에 충분한 방이 있도록, 인코더 버퍼가 매 GOP의 시작에서 일정하게 로우레벨로 되게 하는데 도움이 된다.
인코드되는 프레임마다, 새로운 프레임이 발생되도록 허용된 비트의 수에 대해 상한 및 하한을 계산한다. 이들 한계는, 인코더 버퍼나 디코더 버퍼가 오버플로우하거나 언더플로우하지 않도록 하는 제약에 기초를 두고 있다. MCC는 또한 처리되는 비디오 프레임의 상대 복잡도값에 비례하여 비트를 분포시킴으로써 프레임 및 각 패널에 대해 발생되는 목표 비트수를 계산할 수 있다. 그 후, 프레임 목표 양자화기 스케일은 목표 프레임 비트속도로부터 계산된다. 프레임 목표 양자화기 스케일은, 프레임의 코드화를 시작하는데 초기의 기준 양자화기 스케일로서 다중 패널 압축기의 매 하나에 전달된다.
각 속도조절 동기 인터럽트에서, MCC는 패널 비트 카운트가 목표와 같은 값으로 되도록 시도하는 피드백 메카니즘에 의해 프레임 목표 양자화기 스케일을 변조한다. 수용된 비트 카운트가 화상 시작에서 계산된 상한에 접근하는 경우에는,변조된 양자화기 스케일이 비트의 생성을 천천히 다운시키기 위해 더욱 증가하게 된다. 그 후, 결과적인 기준 양자화기 스케일이 매 패널 압축기로의 전달을 위해 8비트 정수값으로 고정되도록 클립된다.
기준 양자화기 스케일을 수신하자 마자, 패널 압축기는 그 국부적인 버퍼 레벨을 검사하고, 필요하다면 버퍼를 보호하기 위해 기준 양자화기 스케일을 증가시킨다. 또한, 패널 압축기는 기준 양자화기 스케일이 지나치게 높은 경우에 수개의 DCT 계수를 제로로 하도록 할 수도 있다. 그 후, MPEG Test Model 5와 마찬가지로 적응형 양자화가 수행되고, 실제의 양자화 스케일은 MPEG 양자화 스케일표로부터 검색된다.
다음 부분에서는 속도조절 알고리즘의 동작에 대해 상세히 설명한다.
1. 변수의 리스트
이름 디폴트값 설명
BitRate 사용자 정의 기초 비디오 비트율(초당 비트)
N 사용자 정의 노미널 GOP 길이
M 사용자 정의 연속되는 I 또는 P프레임간 일시적인 거리
Nb N/A GOP 내의 B프레임의 노미널 수
Np N/A GOP 내의 P프레임의 노미널 수
FrameRate 사용자 정의 입력 비디오의 프레임율
PanelSumQuant[0...7] N/A 각 패널 압축기에 양자화 스케일값의 축적
PanelBitCount[0...7] N/A 각 패널 압축기에 생성된 비트수의 축적
AvgQuant N/A 방금 코딩된 프레임의 평균 양자화 스케일값
SumPanelBitCount N/A 방금 코딩된 프레임에 조합된 모든 패널 압축기에 의해 생성된 총 비트수. 이것은 지금까지 프레임에 생성된 비트의 수이다.
K[I,P,B] 0.75,1.0,0.75 I, P 및 B프레임의 가중
X[I,P,B] N/A 코딩 복잡도의 추정
StartupX[I,P,B] N/A 코딩 복잡도 추정의 개시값
StartupQuant N/A 개시나 장면전화 또는 페이드인에 사용하기 위한 근사 최소 양자화기 스케일값
HeaderBitCount N/A 방금 인코딩된 프레임의 픽처 및/또는 시퀀스 헤더의 비트수
FrameBitCount N/A 방금 인코딩된 프레임에 의해 생성된 총 비트수
VideoBufferLevel N/A 피직칼 비디오 FIFO로 저장된 비트수
EncoderBufferLevel N/A 결합된 인코더의 버퍼에 총 비트수를 저장
BufferDelay N/A 결합된 인코더와 디코더의 총 버퍼 지연
TargetBufferLevel N/A 새로운 GOP의 시작에서 인코더 버퍼의 근사레벨
GopDuration N/A 현재 GOP의 추정 지속기간
PipelineSize N/A 인코더의 현재 처리 파이프라인의 프레임수
PipelineRepeatFields N/A 인코더의 현재 처리 파이프라인의 반복된 필드(3:2풀다운)수
PictureDuration N/A 현재 프레임의 추정된 지속기간
β 0.75 GOP 피드백 요소
MaxJitter 0.004 MPER표준의 최대 전송지터
FrameMaxDecoder N/A 디코더 버퍼에 의해 구속되는 것과 같이, 현재 프레임의 최대 비트수를 생성할 수 있게 한다.
FrameMaxEncoder N/A 인코더 버퍼에 의해 구속된 것과 같이 현재 프레임의 최대 비트수를 생성할 수 있게 한다.
VideoFifoSize 12582912비트 인코더의 피직칼 비디오 FIFO의 크기
FrameMaxBits N/A 인코더 및 디코더 모두에 의해 구속된 것과 같이 현재 프레임의 최대 비트수를 생성할 수 있게 한다.
InitialFrameTargetBits N/A 피드백 없이 현재 프레임에 의해 생성되는 타겟 비트수.
FrameTargetBits N/A 현재 프레임에 의해 생성되는 타겟 비트수.
AllocationFactor[P,B] N/A P 및 B프레임에 대한 비트 할당비
PictureFeedback N/A 픽처 레벨에서 비트 부족의 나머지 피드백
N/A 픽처 피드백 요소
AccumulatedFrameTargetBits N/A 현재 GOP의 개시 이후 프레임 타겟비트의 축적
FrameMinTarget N/A 공백으로부터 인코더 비디오 FIFO를 방지하도록 생성하기 위한 최소 비트수
MaxTarget[I,P,B] N/A 프레임 타겟비트의 최대 허용가능 값
MinTarget[I,P,B] N/A 프레임 타겟비트의 최소 허용가능 값
FrameQuant N/A 프레임에 대한 타겟 양자화기 값
MinFrameQuant 2 프레임에 대한 최소 타겟 양자화기 값
LastFrameQuant N/A 동일한 픽처타입의 최종 코딩된 프레임의 타겟 양자화기 값
LastAvgQuant N/A 동일한 픽처타입의 최종 코딩된 프레임의 실제 양자화기 스케일의 평균
PartialFrameTargetBits N/A 지금까지 프레임에서 코딩된 것과 같은 매크로블록수에 의해 스케일된 FrameTargetBits부
PartialFrameMaxBits N/A 지금까지 프레임에서 코딩된 매크로블록수에 의해 스케일된 바와 같은FrameTargetBits부
SumPanelMbCount N/A 결합된 모든 패널 압축기에 의해 지금까지 프레임에서 코딩된 매크로블록수
CurrentQuant N/A 현재 사용되는 변경된 양자화기 스케일
MacroblocksPerFrame N/A 프레임의 매크로블록수
MaxRcQuant 144 야기하는 패닉모드가 없는 최대 양자화기 스케일값
MaxQuantNonIntraDC N/A 112의 양자화기 스케일값에 대한 넌인트라 양자화 멀티플리케이션 테이블의 DC 엔트리
PanicNonIntraDCMul N/A 넌인트라 패닉 테이블의 DC 엔트리
PanicThreshold1,PanicThreshold2,PanicThreshold3 P 및 B프레임에 대한 {750000, 500000, 1500000};I프레임에 대한 {1500000, 1000000, 3000000} 패닉모드에 대한FrameMaxBits의 임계치
LocalBufferSize 3452160비트 패널 압축기의 로컬버퍼의 크기
LocalBufferLevel N/A 패널 압축기의 로컬버퍼의 충만성
PanelQuant N/A 패널 압축기에 의해 사용된 실제 양자화기 스케일값
2. 초기화
1) 표 1 및 표 1에 따른 디폴트값에 대한 모든 파라메터를 설정한다.
2) 패킷 프로세서는 압축된 데이터 패킷의 최초 184바이트가 FIFO로 기록되지 마자 비디오 FIFO로부터 데이터 패킷을 보낸다.
3. 구성
비율제어 테스크는 이하의 구성 파라메터를 수신한다:
1. 기초 비디오 스트림 비트율(BitRate).
2. 노미널 GOP길이(N).
3. 모든 I/P프레임쌍간 일시적인 거리.
4. 비디오 포맷(1920×1080I 또는 1440×1080I 또는 1280×720P).
5. 비디오 프레임율(29.97Hz 또는 30Hz 또는 59.94Hz 또는 60Hz).
4. MCC 픽처 시작 인터럽트
A) 최종 코딩된 프레임으로부터 갱신 복잡도 추정
우선, 프레임 비트 카운트 및 평균 양자화기 스케일이 패널 압축기로부터의 데이터 독출로부터 계산된다. 복잡도 계산에 이용된 비트 카운트는 슬라이스 레이어 비트에 가장 적합하다. 헤더를 위해 생성된, 즉 MCC에 의해 생성된 비트는포함되지 않는다.
AvgQuant= 모든 8개의 패널에 대한 PanelSumQuant의 합/프레임당 매크로블록수
SumPanelBitCount= 모든 8개의 패널에 대한 PanelBitCount의 합
이들 통계는 이하와 같은 미리 코딩된 픽처의 코딩 복잡도를 계산하기 위해 이용된다:
AvgQuant * SumPanelBitCount
특정한 픽처타입에 대한 코딩 복잡도가 안정된 장면 콘텐트에 대해 비교적 일정하기 때문에, 인코딩되는 프레임의 복잡도가 동일한 픽처타입의 가장 최근에 코딩된 프레임의 실제 코딩 복잡도로부터 추정될 수 있는 것을 알 수 있다.
I프레임이 드믈게 발생하기 때문에, 가장 최근에 코딩된 I프레임만이 복잡도 추정(X[I])에 이용된다. 안정성과 응답속도간 절충에 따라, 동일한 픽처타입의 4개의 가장 최근에 코딩된 프레임이 P 및 B프레임에 대한 복잡도 추정을 생성하기 위해 이용된다. 평균 이상의 프레임은, 보다 안정한 복잡도 추정을 제공하지만 보다 느린 응답시간을 제공하는 것으로 평가된다. 마찬가지로, 평균 이하의 프레임은, 보다 안정하지 않은 복잡도 추정을 제공하지만 보다 빠른 응답시간을 제공하는 것으로 평가된다.
비율제어 알고리즘은, 4개의 가장 최근에 코딩된 P프레임의 복잡도 값을 저장하기 위한 큐(queue)와, 4개의 가장 최근에 코딩된 B프레임의 복접성 값을 저장하기 위한 큐를 유지한다. 다음에, P(또는 B) 복잡도 큐에 저장된 4개의 복잡도값의 평균에 따라 P(또는 B)프레임에 대한 복잡도 추정이 계산된다.
I, P 및 B프레임에 대한 복잡도 추정은 인코딩되는 프레임을 업커밍(upcoming)하기 위한 비트 버짓(budget) 및 타겟 양자화기 스케일값을 계산하기 위해 이용된다. 상세한 설명은 이하에 기술한다.
복잡도 추정은 과거 프레임을 인코딩하면서 생성된 통계로부터 계산되기 때문에, 과거로부터의 코딩 복잡도가 이용가능하지 않거나 확실하지 않을 경우 복잡도 추정을 리셋하기 위해 개시, 장면전환 또는 페이드시에 특별한 처리가 요구된다.
개시시에, I 복잡도 추정과 P 및 B 복잡도 큐가 일련의 디폴트 개시 복잡도 값(StartupX[I/P/B])으로 초기화 된다. 인코딩되는 현재 프레임이, 블랙으로부터 페이드-인 또는 장면전환 후, 최초 I 또는 P프레임이면, P 및 B 복잡도 큐에 저장된 값과 I 복잡도 추정은 조건적으로 디폴트 개시값으로 교체된다. I 복잡도와 P 및 B 복잡도 큐에 모든 저장된 값은, 개시 복잡도와 비교된다. 저장된 복잡도는, 저장된 복잡도가 보다 작으면, 개시 복잡도로 교체된다.
다수의 장면전환이 서로 인접하여 발생하면(예컨대, 플레쉬, 특수효과, 또는 부적당한 편집), 복잡도 추정은 한번에 최초 장면전환으로 리셋된다. 이것은, 복잡도 조절이 이전의 P프레임에서 발생되면 리셋을 스킵(skip)함으로써 달성된다.
디폴트 개시 복잡도는, I프레임이 P프레임과 같이 많은 거의 4배의 비트를 소비하고, B프레임이 P프레임보다 거의 20% 작은 비트를 소비하는 소비성에 기초하여 계산된 복잡도 값을 조정한다. 이러한 4.0:1.0:0.8의 비율은 경험적인 관찰로부터 얻어진다. I:P:B비율의 또 다른 값이 가능하다. 더욱이, 개시 복잡도는 10Mbps에서 26Mbps 사이의 비트율값에 대해 20에서 28 사이로 선형적으로 변하는 일시적인 평균 양자화기 스케일을 추정한다. 이 일시적인 평균 양자화 값은 10Mbps보다 낮은 비트율값에 대해 20과, 26Mbps보다 높은 비트율값에 대해 28로 클램프 된다.
I, P 및 B프레임에 대한 개시 복잡도 값은 이하와 같이 계산된다:
StartupX[I] = 4.0*StartupQuant*N*(BitRate/
FrameRate)/(4.0+1.0*Np+0.8*Nb)
StartupX[P] = 1.0*StartupQuant*N*(BitRate/
FrameRate)/(4.0+1.0*Np+0.8*Nb)
StartupX[B] = 0.8*StartupQuant*N*(BitRate/
FrameRate)/(4.0+1.0*Np+0.8*Nb)
새로운 장면에 대한 P 및 B 복잡도 추정의 집중성을 가속하기 위해, 복잡도 리셋 다음에 P 및 B프레임에 대한 복잡도 갱신을 다루도록 상태 머쉰이 실행된다.
1. 장면전환(또는, 블랙으로부터 페이드-인) 후 초기 I 또는 P프레임에 있어서, 복잡도 추정은 프레임이 인코딩되기 전에 리셋값으로 설정된다. 초기 프레임을 인코딩한 후, 새로운 인코딩 복잡도(AvgQuant*SumPanelBitCount)를 이용하여 복잡도 추정이 갱신된다. 초기 프레임이 I프레임이면, I 복잡도 추정이 갱신된다. 초기 프레임이 P프레임이면 완전한 P 복잡도 큐는 새로운 인코딩 복잡도로 교체된다. P 인코딩 복잡도가 B 인코딩 복잡도를 추정하기 위해 이용되기 때문에, 완전한 B 복잡도 큐는 값이 P 복잡도에 대한 B 복잡도의 추정된 비율인 값 0.8로 곱해진 P프레임의 인코딩 복잡도로 교체된다. 물론, 또 다른 적당한 값이 이용될 수 있다.
2. 재정렬로 인해, 초기 I 또는 P프레임 다음에 B프레임의 최초 그룹은 과거 장면에 속하게 된다. 따라서, 그룹(M=2) 내에 하나의 B프레임만이 존재하면, B프레임 인코딩된 후 B 복잡도 큐가 리셋값으로 유지되도록 B프레임을 인코딩한 후 인코딩 복잡도가 버려진다. B프레임의 최초 그룹(M=3) 내의 하나의 B프레임보다 많으면, 최초 B프레임의 인코딩 복잡도는 그룹 내의 다음 B프레임에 대한 복잡도 추정에 이용된다. 따라서, B 복잡도 큐는 그룹 내의 최종 B프레임 이외에 정상적으로 갱신된다. 그룹 내의 최종 B프레임을 인코딩 한후, B 복잡도 큐는 과거 장면으로부터 통계가 새로운 장면의 복잡도 추정을 오염시키도록 리셋값으로 설정된다.
3. 초기 프레임이 I프레임이면, 초기 프레임 다음에 오는 최초 P프레임을 인코딩 한후, 완전한 P 복잡도 큐가 새로운 인코딩 복잡도로 교체된다. B 복잡도 큐는 0.8, 즉 P 복잡도에 대한 B 복잡도의 추정된 비와 같은 값으로 곱해진 P프레임의 인코딩 복잡도로 교체된다. 초기 프레임이 P프레임이면, 복잡도 큐는 초기 프레임 다음에 오는 최초 P프레임을 인코딩한 후 정상적으로 갱신된다.
4. 초기 프레임 다음에 오는 B프레임의 제2그룹 내의 최초 B프레임을 인코딩한 후, 완전한 B 복잡도 큐는 B프레임의 새로운 인코딩 복잡도(AvgQuant*SumPane1BitCount)로 교체된다.
5. 복잡도 큐는 그 후 모든 프레임에 대해 정상적으로 갱신된다(새로운 값에 의해 가장 오래된 엔트리를 교체함으로써). 예컨대, 이하 프레임의 시퀀스(인코딩 순서로)로 프레임 I0에서 발생하는 장면전환을 고려한다: I0, B1, B2, P3, B4, B5, P6, ... . I0를 인코딩하기 전에, 복잡도 추정이 리셋하도록 강요된다. I 복잡도 추정은 I0를 인코딩한 후에 갱신된다. B 복잡도 큐는 B1을 인코딩한 후에 새로운 인코딩 복잡도로 설정된다. 이 새로운 복잡도 추정은 B2를 부호화하는데 이용된다. B2를 부호화한 후에, B복잡도 큐는 리셋값으로 설정된다. P3를 부호화한 후에, 전체 P복잡도 큐는 P3의 부호화 복잡도로 대체되고, 전체 B복잡도 큐는 예컨대 0.8을 곱한 동일값으로 대체된다. B4를 부호화한 후에, 전체 B복잡도 큐는 B4의 부호화 복잡도로 대체된다. B5와 P6 이후, 복잡도 큐는 정상적으로 갱신된다.
블랙으로부터의 페이드 인(fade-in)이 프레임의 다음의 시퀀스로(부호화 순서로; P0, B1, B2, P3, B4, B5, P4, …) 프레임(P0)에서 발생하는 경우를 생각한다. P0를 부호화하기 전에, 복잡도 추정(I복잡도를 포함)은 리셋된다. P0를 부호화한 후에, P복잡도 큐는 P0의 부호화 복잡도로 대체되고, B복잡도 큐는 예컨대 0.8을 곱한 동일값으로 설정된다. B복잡도 큐는 B1을 부호화한 후에 새로운 부호화 복잡도로 설정된다. B2를 부호화한 후에, B복잡도 큐는 리셋값으로 설정된다. P3를 부호화한 후에, P와 B복잡도 큐 모두는 P0를 부호화한 후와 동일한 방법으로갱신된다. B4를 부호화한 후에, 전체 B복잡도 큐는 B4의 부호화 복잡도로 대체된다. B5와 P6 이후, 복잡도 큐는 정상적으로 갱신된다.
블랙으로의 페이드 아웃(fade-out)은 P프레임과 B프레임에 대한 복잡도를 증가시키지만, I프레임의 복잡도는 감소시킨다. 그러므로, 페이드 아웃이 검출될 때의 제1프레임에서, 1보다 더 큰 일정한 인자는 복잡도 추정을 증가시키기 위해 B와 P복잡도 큐의 엔트리(entry)마다 곱해진다. 예컨대, 승수 1.25는 P복잡도에 이용될 수 있고, 승수 1.5는 B복잡도에 이용될 수 있다. I복잡도 추정은 페이드 아웃이 검출되는 프레임마다 1보다 작은 일정한 인자를 곱함으로서 감소된다. 승수 0.975는 예컨대 블랙으로의 페이드 아웃동안 프레임마다 I복잡도에 적용될 수 있다.
B) 인코더의 버퍼상태를 갱신
패널 압축기의 로컬버퍼로부터 비디오 FIFO로의 압축된 데이터의 PCI버스를 매개로 하는 데이터 전송율은 비디오 FIFO로부터의 데이터 출력율보다 훨씬 더 빠르기 때문에, 복합 비디오 FIFO와 패널 압축기의 로컬버퍼 모두 인코더의 버퍼레벨고려시에 단일체로서 생각할 수 있다. 비디오 FIFO의 레벨은 FIELD SYNC에서 래치되고, PCI버스 인터페이스를 매로로 MCC에 의해 독출된다.
먼저, 이전 프레임으로부터 발생된 비트의 총계는 다음과 같이 계산된다.
FrameBitCount = SumPanelBitCount + HeaderBitCount
이 때, 총 인코더 버퍼레벨은 다음과 같이 계산된다.
EncoderBufferLevel = VideoBufferLevel + FrameBitCount
새로운 GOP는, 현프레임이 I프레임일 때 셋업된다. I프레임을 부호화하기 전에, MCC율 제어 알고리즘은 GOP에 대한 프레임의 명목상의 수(N)를 가정하면, 새로운 GOP에 대한 비트 예산을 계산한다. MCC율 제어 알고리즘은 모든 GOP의 개시에서 비디오 버퍼에 일정한 로우레벨(TargetBufferLevel)을 초래한다. TargetBuff erLevel은 인코더와 디코더를 겸한 것에서의 약간의(1/8) 가용버퍼공간이 되도록 설정된다.
TargetBufferLevel = (BufferDelay * BitRate)/8
여기에서, BufferDelay는 아래에 섹션 D로 열거되는 총버퍼지연이다.
먼저, MCC는 필름모드상태에 기초하여 다가오는 GOP의 기간(GopDuration)을 추정한다. GOP는 2개 부분, 즉 (i) 인코더의 파이프라인에서 이미 전처리되어 대기하는 프레임과, (ii) 인코더의 파이프라인에 아직 들어가지 않은 미래의 프레임으로 분할된다. 파이프라인에 이미 있는 프레임에 대해서는, 프레임의 정확한 기간은 파이프라인의 프레임수(PipelineSize)와 반복 필드를 갖는 프레임수(Pipeline RepeatFields)로부터 계산될 수 있다. 파이프라인에 아직 들어가지 않은 미래의 프레임에 대해서는, 이들 프레임이 가장 최근에 전처리된 프레임과 같은 필름모드 분류를 갖는 것으로 가정되고, 3-2 풀다운 패턴은 그것들이 필름으로서 분류되면 계속된다.
현 I프레임은 PipelineSize와 Pipeline RepeatFields의 계산에 포함되지 않는다. 그러나, 현 프레임의 정확한 기간은 반복필드상태로부터 알 수 있다. 부호화될 현 프레임이 반복하는 제1필드를 가지면, PictureDuration은 1.5/FrameRate와 같고, 만약 그렇지 않으면 PictureDuration은 1.0/FrameRate와 같다. 이 프로세스는 다음의 코드를 이용하여 실현될 수 있다.
새로운 GOP의 타겟비트율은, 나머지나 부족액을 더한 GOP가 이전의 GOP로부터 이월되는 동안 전송되는 비트의 평균수이다. 이 이월은 타겟버퍼레벨로부터 현버퍼레벨의 편차에 의해 반영된다. 특히,
GOP_target = (GopDuration * BitRate) + β* (TargetBufferLevel - EncoderBufferLevel)
여기에서, β는 적응형 피드백 제어인자이고, 이전의 GOP로부터 이월되는 나머지 비트가 있을 경우에(EncoderBufferLevel < TargetBufferLevel) β= 1.0이다. 이 구성은, 레이트 제어 알고리즘이 이전의 GOP로부터 남겨진 미사용의 비트(만약 있다면)를 이용하기 위해 신속히 응답하는 것을 가능하게 하고, 이전의 GOP가 예산보다 더 많은 비트를 소비하면 새로운 GOP가 부족한 것을 여전히 피한다. 그러므로, 어떤 부정 피드백은 버퍼에 의해 흡수되고, 비디오 품질의 갑작스러운 성능 저하를 피하기 위해 미래의 GOP를 오래 끈다. GopTarget은, GOP 사이즈가 장면변화와 다음의 I프레임을 정렬시키기 위해 연장되거나 필름모드상태가 변화하면, GOP중에서 뒤에 조정될 수 있다.
C) GopTarget을 조정
GOP내에서, GOP타겟은 다음에 대해 프레임마다 조정된다.
i) 장면변화가 검출되면, 인코더는 다음의 I프레임을 장면변화와 정렬시키기 위해 GOP를 연장한다. 이 경우에 있어서, GopTarget은 여분의 비트를 부호화하는데 필요한 비트를 제공함에 따라 증가된다. 여분의 B프레임이 P프레임에 의해 수반되어야만 하기 때문에, 이 조정은 단지 P프레임상에서만 행해진다. 현프레임이 필름이면, 증가량은 1.25 * M * BitRate/FrameRate이고, 만약 그렇지 않으면 증가량은 M * BitRate/FrameRate이다. 상수 M은 2개의 연속적인 P프레임간의 거리이다.
ii) GOP의 개시에서 초기의 타겟비트예산이 계산될 경우, 최종 전처리된 프레임임이 필름이면 전체 GOP가 필름모드로 동작할 것으로 가정되거나, 최종 전처리된 프레임이 논-필름(non-film)이면 정규 비디오 모드로 동작할 것으로 가정된다. 그러나, 필름모드상태는 GOP의 중간에서 변화할 수 있다.
가장 최근에 전처리돈 프레임이 현GOP에 속하고, 논필름으로부터 필름으로절환하면, GopTarget은 GOP의 기대기간에서의 기대 증가에 대한 계산에 따라 증가된다. GopTarget에서의 증가는 다음과 같이 계산된다.
0.25 * (BitRate/FrameRate) * (GOP에서 남아 있는 처리되지 않은 프레임의 수).
여기에서, 처리되지 않은 프레임의 수는 다음과 같이 계산된다.
N - (GOP에서 이미 부호화된 프레임의 수) - PipelineSize - 1.
한편, 입력이 필름으로부터 노멀 비디오로 절환하면, GopTarget은 GOP의 기간에서 기대 감소를 고려하기 위해 동일 양만큼 감소된다. 필름-비디오(또는 비디오-필름) 조정은 GOP에서 지금까지 부호화된 프레임의 수가 N - PipelineSize - 1을 넘으면 스킵(skip)된다.
D) 버퍼보호
종단간 버퍼(end-to-end buffer)지연은 패킷 프로세서에 의해 설정되고, 화면의 제1비트가 인코더 FIFO에 들어가는 시간에서부터 디코더 FIFO(화면의 DTS(Decoder Time Stamp)로부터 철수되는 시간까지의 경과된 시간으로서 규정된다. MCC율 제어 알고리즘은 인코더 버퍼를 오버플로우(overflow)하지 않거나 디코더 버퍼를 언더플로우(underflow)하지 않는 화면에서의 비트의 최대 허용할 수 있는 수를 계산하기 위해 지연값을 이용한다. 높은 비트율에 대해서는, 이 시스템은 디코더 버퍼가 버퍼를 최대한으로 이용할 수 있을 정도의 많은 비트를 저장한다. 그러나, 낮은 비트율에 대해서는, 예컨대 0.5초 지연의 상부 경계는 적당한 채널획득지연을 확보하기 위해 설정된다. ATSC표준에 따라, 디코더가 488 * 1024 * 16 =7995392비트 버퍼를 이용하는 것으로 가정된다. 버퍼지연은 다음의 식으로부터 계산된다.
BufferDelay = Min(7995392비트/BitRate, 0.5초)
지연은 16Mbps 이하의 비트율로 예컨대 0.5초에서 고정되고, 16Mbps 이상의 비트율, 예컨대 40Mbps로 0.2초를 선형적으로 감소한다.
디코더 버퍼가 언더플로우하는 것을 막기 위해, 인코터 버퍼의 지금의 모든 비트는 현프레임의 디코드 시간전에 디코더에 전송된 현 프레임마다 발생되는 비트를 더한다. PCI 대역폭은 출력비트율보다 훨씬 더 높기 때문에, 패널 압축기로부터 비디오 FIFO로의 데이터전송은 순간적이라고 가정할 수 있다. 현프레임의 디코드 시간의 최악의 경우는 현 화면이 비디오 FIFO로 전송된 후의 BufferDelay-MaxJitter 시간유닛이고, 하나의 화면처리시간후에 발생한다. 인코더의 현버퍼레벨이 현프레임시간동안 인코더 버퍼로부터 디코더 버퍼로 전송되는 비트의 명목상의 수(BitRate * PictureDuration)보다 더 크면, 일정한 출력비트율(BitRate)은 유지될 것이다. 만약 그렇지 않으면, 패킷 프로세서는 비디오 비트율을 유효하게 감소시키는 전송대역폭에서의 갭을 채우기 위해 널(null) 패킷을 생성할 것이다. 그러므로, 현화면이 비디오 FIFO에 들어가면, 안출된 비디오 FIFO레벨 1프레임 시간후는,
max(EncoderBufferLevel - (BitRate * PictureDuration), 0)
현프레임이 비디오 FIFO에 들어가는 시간으로부터 프레임의 디코드시간까지, 최악의 경우 (BufferDelay - MaxJitter) * BitRate 비트는 디코더 FIFO에 전송될 것이기 때문에, 현프레임에 이용할 수 있는 비트의 수는,
FrameMaxDecoder = (BufferDelay - MaxJitter) * BitRate - Max(EncoderBuff erLevel - (BitRate * PictureDuration), 0)
인코더의 비디오 FIFO가 오버플로우하는 것을 막기 위해, 현프레임이 비디오 FIFO로 전송될 때 FIFO레벨을 더한 현프레임의 사이즈는 비디오 FIFO의 사이즈(VideoFifoSize)를 넘지 않아야만 한다. 즉,
FrameMaxEncoder = VideoFifoSize - Max EncoderBufferLevel - (BitRate * PictureDuration), 0)
일례 실현에 있어서, 비록 어떤 다른 적당한 FIFO 사이즈가 당분야에서 통상의 지식을 가진 자에게는 명백한 바와 같이 이용될 수 있을지라도, 비디오 FIFO의 사이즈는 12582912비트이다.
현프레임의 최대한 허용할 수 있는 비트스트림 사이즈는 더 작은 FrameMaxEn coder와 FrameMaxDecoder로서 계산된다. 비디오 데이터의 2개의 전속패킷의 가치의 오프셋(2*8*184=2944비트)은 안전성 마진을 제공하도록 포함된다. 그러므로,
FrameMaxBits = MIN(FrameMaxEncoder, FrameMaxDecoder)-2944
패킷 프로세서가 비디오 FIFO에서의 데이터가 충분하지 않은 비디오 대역폭을 효과적으로 줄이기 위해서 널패킷을 삽입하기 때문에, 인코더나 디코더버퍼를 보호하기 위해 프레임 사이즈상에 하부 경계를 설정할 필요가 없다.
E) 프레임에 대한 비트예산 계산
부호화되는 모든 화면에 대해서는, MCC율 제어 알고리즘은 프레임마다 발생되는 비트수마다 타겟을 계산한다(FrameTargetBits). 기본 아이디어는 1세트의 일정한 가중인자(K[I], K[P], K[B])에 의해 조정되는 복잡도 추정에 비례하여 유효한 비트를 I, P, B프레임에 분배하는 것이다. 가중인자(K[])는 I, P, B프레임의 다른 지각과 통계적인 특성을 고려한다. 일례로서, 비록 다른 가중인자를 똑같이 적용할 수 있을지라도, 가중인자 0.75, 1.0, 0.75가 이용될 수 있다. 타겟으로부터 이용되는 실제 비트의 편차 일부는 미래의 프레임에 대한 타겟을 조정하기 위해 피드백된다.
I프레임에 대해서는,
FrameTargetBits = GopTarget * K[I] * X[I]/(K[I] *X[I] + Np * K[P] * X[P] + Nb * K[B] * X[B])
I프레임의 더 작은 FrameTargetBits값과 I프레임에 의해 발생되는 비트의 실제수는 남은 비트를 P프레임과 B프레임에 할당하기 전에 GopTarget에서 공제된다. 생성된 비트의 실제수가 타겟을 넘으면, I프레임은 P프레임과 B프레임보다 훨씬 더 높은 레이트로 비트를 소비하기 때문에, 타겟은 실제 비트 대신에 GopTarget에서 공제된다. 타겟으로부터 I프레임의 비트소비의 편차는 남아 있는 P프레임과 B프레임의 비트예산을 고갈시킬 수 있다. B와 P비트 할당으로부터 실제 I프레임 비트를 분리함으로써, 피드백은 다음의 GOP로 연기된다.
B프레임과 P프레임에 대해, 할당비율은 먼저 다음과 같이 계산된다.
AllocationFactor[P]=(N-1)/(Np+Nb*Max(1/2,Min(3,(K[B]*X[B]/K[P]*X[P]))))
AllocationFactor[B]=(N-1)/(Nb+Np*Max(1/3,Min(2,(K[P]*X[P]/K[B]*X[B]))))
부정확한 복잡도 평가에 의해 야기되는 극단적인 얼로케이션을 회피하기 위해서, B프레임에 대한 P프레임의 가중 복잡도(K*X)의 비율은 1/2과 3에 의해 바운드된다. 그 다음, 얼로케이션팩터를 P 및 B 프레임에 이용 가능한 비트의 평균 넘버에 적용함으로써 초기 프레임 타겟이 다음과 같이 계산된다.
InitialFrameTargetBits=AllocationFactor*
GoTarget/(GopLength-1)
GopLength는 GPO의 현재 길이로, GPO가 장면 변화와 함께 다음의 I프레임을 정렬시키도록 확장되기 때문에, NominalGopLength 보다 크게될 수 있다. GPO의 시작에 대한 현재 프레임 카운트가 노미널(nominal) GOP 보다 작으면, GopLength는 N과 동일한 값으로 설정된다. 현재 프레임 카운트가 N을 초과하면, GopLength는 P프레임이 인카운터(encounter)될 때마다 M프레임에 의해 증가된다. 그 다음, 타겟으로부터의 실재 비트 소비의 편차(deviation)를 보상하기 위해서 피드백이 InitialFrametargetBit에 부가된다. 피드백은 다음과 같이 계산된다.
PictureFeedback= α*(AccumulatedFrameTargetBit-GopBitCount).
AccumulatedFrameTargetBit는 GOP의 시작이므로, FrameTargetBit의 축적이다. FrameTargetBit의 PictureFeedBack부는 모든 P 및 B프레임 내의 축적에 포함된다. GopBitCount는 최신의 현재 GOP에 의해 생성된 다수의 비트로, 마지막 코드된 프레임을 포함한다.
각 프레임을 인코딩한 후, GopBitCount는 프레임에 의해 생성된 비트의 유효 수에 의해 증가된다. 비디오 FIFO레벨이 하나의 전송패킷을 생성하기 위해 요구되는 것 보다 작을 때, 전송비트율을 유지하기 위해서, 널 패킷(null packet)이 삽입(insert)되므로, 마지막 코드된 프레임을 위해 생성된 비트의 유효수는, 업컵잉(upcoming) 프레임시간동안 일정한 출력비트율을 유지하기 위해 요구되는 다수의 비트 마이너스 비디오 FIFO 내에 이미 있는 다수의 비트에 의해 보다 작게 바운드된다. 생성된 비트의 유효수는,
Max(FrameBitCount,(PictureDuration*Bitrate-VideoBufferLevel))이다.
상수 α는 시스템의 응답을 제어한다. α가 너무 크면 시스템을 불안정해지는 반면, α가 너무 작으면 응답이 느려진다. 1실시예에 있어서, 다른 값이 치환될 수 있음에도 α는 1/N으로 설정된다.
현재 프레임의 버짓(budget)을 고갈시킬 수 있는 과도한 네가티브 피드백을 회피하기 위해서, PictureFeedback은 피드백이 네가티브이면 InitialFrameTargetBits의 1/3을 초과하지 않도록 바운드된다.
FrameTargetBits= InitialFrameTargetBits+PictureFeedback이다.
마지막으로, FrameTargetBits는 이상 및 이하로부터 모두 바운드될 수 있다.
FrameTargetBits는 버퍼 보호를 위해 적용되는 비트의 최대 허용가능 수의 근방에 놓여지지 않을 필요가 있다. 그렇지 않으면, 패닉모드(panic mode)가 너무 쉽게 인보크(invoke)되고, 화상 품질이 과도하게 저하된다. 버퍼를 생성하기 위해서 최소 화상 사이클을 설정할 필요가 없음에도 불구하고, 대역폭이 보내지는 널패킷에 의해 소비되지 않도록 인코드된 프레임이 충분히 크게 되는 것이 바람직하다. 그러므로, 인코더 비디오 FIFO가 비는 것을 방지하기 위해서 요구되는 비트의 가장나쁜 경우의 수에 따라서, FrametargetBits를 위한 최소값이 계산된다.
FrameMinTarget=(1.5*BitRate/FrameRate)-Max(EncoderBufferLevel-(BitRate*PictureDuration), 0)
부정확한 복잡도 평가로부터의 기인할 수 있는 극단적인 값을 회피하기 위해서, 엄격한 제한이 제공되므로, FrameTargetBits가 상한을 초과하거나 이 제한 이하로 떨어지지 않게 된다.
FrameTargetBits=Min(FrameTargetBits, 0.8*FrameMaxBits, MaxTarget)
MaxTarget과 MinTarget의 값은 다음과 같이 정의된다:
MaxTarget[Iframe]=GopTarget-(N-1)*(프레임당 매크로블록 수)*8
MaxTarget[P or B frame]=Goptarget/N
MinTarget[I frame]=Goptarget/N
MinTarget[P or B frame]=(프레임당 매크로블록 수)*8)프레임을 위한 타겟 양자화기 스케일을 결정한다.
타겟 양자화기 스케일은 타겟 프레임 비트율과 복잡도 평가로부터 계산되고, 부정확한 복잡도 평가가 양자화기 스케일을 너무 낮게 구동하는 것을 방지하기 위해서 바운드된다. 또한, 양자화기 스케일은 최대 MPEG 비선형 양자화기 스케일 값에 의해 어퍼 바운드된다.
FrameQuant=Mac(MinFrameQuant, X[picture_type]/FrameTargetBits)
값 MinFrameQuant는 2로 설정된다.
부정확한 복잡도 평가의 경우, 특히 복잡한 정지 이미지에서, 안정성을 개선하기 위해서, 특히 알고리즘은, 그 값이 비교적 높은 값으로부터 갑자기 떨어지면 P 및 B 프레임의 타겟 양자화기 값에 대한 낮은 바운드를 설정한다. FrameQunat가 동일 화상 타입 및 24 보다 작은 마지막 AvgQuant 값 보다 작으면, 수반되는 조정이 FrameQuant에 만들어진다.
FrameQuant=Min(StartupQuant,(FrameQuant+Max(LastFrameQuant, LastAvgQuant))/2. 여기서, LastFrameQuant는 동일 화상 타입의 가장 최근에 코드된 타겟 양자화기(FrameQuant) 값이고, LastAvgQuant는 동일 화상 타입의 가장 최근에 코드된 프레임의 실제 평균 양자화기(AvgQuant) 값이다.
그 다음, MCC상에서 계산된 목표 양자화기 스케일(frameQuant) 값은 최대값에 의해 클램프(clamp)되고, 패널을 초기에 코드시키는데 사용되는 패널 압축기로 전달된다. 어퍼 바운드의 설정 및 패널 압축기 상의 양자화 전략은 이하에 보다 상세히 제공된다. 양자화기 스케일 값은, 타겟을 향한 화상에서 생성된 실제 비트수를 구동하기 위해서 피드백 프로세서에 의해 인터럽트(interrupt)되는 RC sync에서 주기적으로 조정된다.
G) 버퍼 레벨이 너무 높으면, 새로운 GOP의 시작은 지연된다.
새로운 GOP가 시작되기 전에, 알고리즘이 확실하게 되는데, 업커밍 I프레임에 의해 생성되는 비트의 서지(surge)를 수용하기 위해서 버퍼 내에 충분한 장소가 있게 된다. 화상 코딩 타입의 판정 후에 비율 콘트롤 태스크(task)가 수행되므로, 다음 프레임에서 새로운 GOP를 시작하는 피서블리티(feasibility)를 결정하기 위해서 버퍼가 조사된다. 버퍼 내에 충분한 공간이 없으면, 비율 제어 태스크는 다음프레임이 새로운 GOP를 시작하는 것을 방지하기 위해서 신호를 보낸다. 다음 프레임은 다음과 같으면 새로운 GOP가 시작되는 것을 허용한다:
EncoderBufferLevel+FrameTargetBits-(PictureDuration*BitRate)가 Min(0.5*BufferDelay*BitRate, TargetBufferLevel+(0.333*N*BitRate/FrameRate))와 같이 미리 계산된 문턱값 이하이다.
5. MCC RC sync 인터럽트
이상적으로, 전체 화상에 걸쳐서 균일한 품질을 생성하기 위해서, 화상 타겟 양자화기 스케일(FrameQuant)이 화상에 걸쳐 사용된다. 그런데, 프레임 복잡성 평가에 기초한 비율 제어 모델은 항상 정확하지 않다. 따라서, 비트율을 제어하기 위해서, FrameQuant에 대한 조절이 필요하다. 프레임의 축적된 비트 카운트가 코드된 매크로블록의 부분에 의해 스케일 된 프레임의 타겟 비트율과 비교되도록 피드백 매카니즘이 사용된다.
RC Sync 인터럽트에서, MCC는 모든 패널 압축기로부터의 2개의 파라미터를 읽는다. 이들 파라미터는 (i)현재 엔코드된 다수의 매크로블록이고, (ii) 이제까지 생성된 다수의 비트이다. MCC는 모든 8개의 패널에 대해 이들 통계를 합산하다 (SumPanelBitCount 및 SumPanelMbcount). 그 다음, MCC는 생성된 다수의 비트에 대한 부분적인 타겟과 부분적인 최대값을 계산한다.
PartialFrameTargetBits=FrameTargetBits*
SumPanelMbCount/(프레임당 매크로블록 수)
PartiaFrameMacBits=FrameMaxBits*SumPanelMbCount/(프레임당 매크로블록수)
PartialFrameMaxBits=FrameMaxBits*SumPanelMbCount/(프레임당 매크로블록 수)
양자화기 스케일의 조정은 PartialFrameTargetBit 및 PartialFrameMaxbits에 대한 SumPanelBitCount의 비율에 기초한다. 비트 카운트(SumPanelBitCount)가 PartialFrameMaxBits의 0.9를 초과하면, 양자화기 스케일을 다음과 같이 조정된다:
CurrentQuant=*0.9*SumPanelBitCount/PartialFrameMaxBits.
여기서, CurrentQuant는 사용되는 현재 양자화기 스케일인데, 이는 프레임을 엔코딩하는 시작에서 값 FrameQuant에 대해 초기화된다. 그렇지 않으면, 다음의 조각 선형 모델을 사용하는 PartialFrameTargetBit에 대한 SumpanelBitCount의 비율에 기초한다:
ratio<1.5: CurrentQuant=FrameQuant
2.0≥raito>1.5: CurrentQuant=(1+0.5*(ratio-1.5))*Max(FrameQuant, CurrentQuant)
ratio≥2.0: CurrentQuant=1.25+(ratio-2.0)*Max(FrameQuant,
CurrentQuant)
각 프레임의 엔드에서 비트 카운트가 카겟 비트율에 근접하는 것으로 가정되면, 패널의 최종 양자화기 스케일 값은 FrameQuant인 초기에 인접하게 된다. 이러한 정렬은, 양자화 스케일에서 갑작스런 변환에 기인할 수 있는 패널 경계에서의 보이는 심(Seam)을 회피하게 한다.
그 다음, 안정성을 개선하기 위해서, 현재 RC sync에서 계산되는 CurrentQuant의 값은 이전의 RC sync에서 계산된 CurrentQuant의 값으로 평균된다.
그 다음, CurrentQuant의 값은 FrameQuant를 캡(cap)하는데 사용되는 것과 동일한 바운드로 캡되고, 이전의 CurrentQuant 값으로 평균된다. 양자화기 스케일의 최종값을 패널 압축기로 보내기 전에, SumpanelBitCount가 FrameMaxBits의 제한을 접근시키면, 버퍼를 보호하기 위해 양자화기 스케일 값을 증가시키기 위해서 CurrentQuant는 더욱 조정된다:
if(SumPanelBitCount>0.975*FrameMaxBits)
CurrentQunt=512
else if(SumPanelBitCount>0.95*FrameMaxBits) AND
(SumPanelMbcount<0.8*MacroblocksPerFrame))
CurrentQuant=4*CurrentQuant
else if(SumPanelBitCount>0.9*FrameMaxBits) AND
(SumPanelMbCount<0.7*MaxroblocksPerFrame))
CurrentQuant=2*CurrentQuant
최종적으로, CurrentQuant의 값은 FrameQuant를 캡하는데 사용되는 것과 동일한 어퍼 바운드에 의해 다시 캡된다. 또한, 2의 낮은 바운드가 CurrentQuant에 적용된다.
6. 양자화 전략
DCT계수를 양자화기의 역값의 미리 계산된 세트에 곱함으로써, 패널 압축기는 양자화를 수행한다. 패널 압축기상에 멀티플라이어의 32개의 미리 계산된 세트가 있다. 처음 31은 1 내지 31의 MPEG 양자화기 스케일 인덱스에 대응하는데, 이는 MPEG 비선형 양자화기 맵핑 테이블에 따라서, 1 내지 112의 양자화 스케일로 맵된다. 32번째 테이블은, 인트라 DC(intra DC)를 제외하고 모든 멀티플라이어가 제로로 설정되는 패닉모드를 위해 예약되므로, DC계수는 생성된 다수의 비트를 최소화하기 위해서 버려질 수 있다. 이 패닉모드는 버퍼를 보호하기 위한 비상 측정으로서만 인보크된다. 비-인트라 패닉 멀티플라이어 테이블(PanicNonIntraDCMul)의 DC값은 최대 MPEG 양자화기 스케일(112)에 의해 비-인트라 DC를 정상적으로 양자화 할 지를 결정하기 위해서, 또는 이를 정상적으로 양자화된 프랙션(fraction)으로 설정하기 위해서 MCC에 의해 쓰여(write)질 수 있다. 패널 압축기가 MCC, 1과 112 사이의 양자화기 스케일 값(PanelQuant)으로부터 수신되면, 정상 테이블이 선택된다. 112 이상의 소정의 PanelQuant에 대해서, 패닉 테이블이 선택될 수 있다.
MCC에 의해 계산된 양자화 스케일값(FrameQuant 또는 CurrentQuant)은 1 내지 512 범위의 스팬(span)이다. 멀티플라이어 테이블을 선택하기 위해서, 이 값은 1 내지 255의 8비트값(PanelQuant)으로 변환되어 패널 압축기로 보내지고, 패널 압축기의 패닉테이블의 비-인트라 DC 멀티플라이어를 결정하기 위해 사용된다.
1<=CurrentQuant<=112: PanelQuant= 절단(truncation)에 의해 가장 가까운
정수로 CurrentQuant를 라운드.
PanicNonIntraDCMul=MaxQuantNonIntraDCMul
112<CurrentQuant<=MacRcQuant:PanelQualt=112;
PanicNonIntraDCMul=MaxQuantNonIntraDCMul
MaxRcQuant<CurrentQuant<512: PanelQuant=255;
PanicNonIntraDCMul=MaxQuantNonIntralDCMul
CurrentQuant=512: PanelQuant=255;
PanicNonIntrDCMul=0.3*MacQuantNonIntraDCMul.
여기서, MaxQuantNonIntrDCMul은 최대 MPEG 양자화기 스케일(112)을 위한 멀티플라이어 테이블의 비-인트라 DC 엔트리(entry)이다. MaxRcQuant는 144에 대한 상수값 현재 세트이다.
정상적으로, FrameQuant 값은 패널 압축기가 심각하게 화상 품질이 저하된 패널 모드를 인보크할 수 있는 이상으로 MaxRcQuant를 초과하도록 허용되지 않게 된다. 그런데, 인코더 버퍼가 오버플로윙(overflowing) 직전이거나, 디코더 버퍼가 언더플로윙(underflowing) 직전이면, 패널 압축기는 프레임의 엔코팅의 온셋(onset)에서 패닉 모드로 진행하도록 허용된다. 그러므로, FrameMaxBits의 값에 기초한 FrameQuant의 어퍼 바운드(upper bount)를 설정하기 위해서, 수반되는 적응형 알고리즘이 사용된다. FrameMaxBits가 정상 MPEG 양자화(FrameMaxBits가 문턱 PanicThreshold1을 초과한다)하면, 패닉모드로 진행하는 것을 회피하기 위해서 FrameQuant는 MaxRcQuant에 의해 캡된다.
FrameMaxBit가 PanicThreshold1 이하로 진행하면, 어퍼 바운드는 패널 압축기상에서 패닉모드를 가능하게 하는 176으로 변화되지만, 패닉에서 비-인트라 DC계수를 보호한다. FrameMaxBits가 제2문턱 PanicThreshold2로 더욱 떨어지면, 어퍼 바운드는 512로 설정되어 비-인트라 DC 계수의 양자화된 값이 정상 양자화의 비-인틀 DC계수를 지나서 감소될 수 있게 된다. 히스테리시스 매카니즘이 제공되므로, 어퍼 바운드가 MaxRcQuant 이상으로 올라갈 때, FrameMaxBits가 제3문턱 PanicThreshold3을 초과할 때까지 MaxRcQuant로 되돌려지지 않게 된다. 문턱(PanicThreshold1, PanicThreshold2, PanicThreshold3)은, 예컨대 설정될 수 있다. P 및 B 프레임에 대해 값{750000,100000,3000000}로 설정되과, I프레임에 대해서 {1500000,1000000,3000000}로 설정될 수 있다.
7. 패널 압축기
각 패널 압축기는 모든 RC Sync 및 화상 스타트에서의 MCC로부터 PanelQuant 값을 수신한다. 이 때, 패널 압축기는 매크로블록 기초에 의해 매크로블록에서 다음의 루틴을 수행한다:
A) 인코딩 통계를 갱신
매크로블록 카운트와, PanelSumQuant(이용된 실제 양자화기 스케일의 합) 및, PanelBitCount(지금까지 패널에서 생성된 비트의 수)를 축적한다. 이러한 통계는 프레임의 시작에서 제로로 리세트된다.
B) 로칼 버퍼의 충만을 점검; 로칼 버퍼 레벨이 충만에 접근하면 양자화기 스케일을 경사지게 한다.
만약 (LocalBufferLevel < (112/128) * LocalBufferSize) 이면
PanelQuant는 불변
그외 만약 (LocalBufferLevel < (120/128) * LocalBufferSize) 이면
PanelQuant = 4 * PanelQuant
그외 만약 (LocalBufferLevel < (124/128) * LocalBufferSize) 이면
PanelQuant = 16 * PanelQuant
그외
PanelQuant = 225
C) MPEG Test Model 5와 동일한 방법으로 적응형 양자화에 의해 PanelQuant를 변조.
D) 양자화를 수행하기 위해 최종 양자화기 스케일을 적용.
8. 패킷 프로세서
비디오 FIFO가 데이터의 적어도 하나의 전송 패킷 페이로드의 가치(184 바이트)를 갖을 때 마다, 패킷 프로세서는 이용자에 의해 특정화됨에 따라 비디오 비트율(bit_rate)과 동일한 평균 데이터율에서 제1비디오 FIFO로부터 데이터를 검색한다. FIFO 레벨이 184 바이트 아래로 떨어질때 마다, 패킷 프로세서는 언더플로우로부터 FIFO를 보호하도록 FIFO로부터 데이터 검색을 중지하게 된다. 이 때, 널(Null) 패킷은 일정 전송 비트율을 유지하게 된다.
본 발명은 다중 병렬 압축 엔진을 이용하는 비디오 인코더의 수행을 최적화하기 위한 비율제어 알고리즘을 제공한다는 것을 알 수 있다. 본 발명은 HDTV 및 SDTV 양쪽에 적용된다.
한편, 본 발명은 상기 실시예로 한정되는 것은 아니고, 본 발명의 요지를 벗어나지 않는 범위내에서 다양하게 변형하여 실시할 수 있음은 물론이다.

Claims (26)

  1. 비디오 프레임을 위한 목표 양자화 레벨을 결정하는 단계와;
    상기 목표 양자화 레벨을 상기 비디오 프레임을 나타내는 다수의 패널의 모든 비디오 이미지 패널의 제1슬라이스에 적용하여 상기 비디오 인코더에 의해 병렬로 처리하는 단계 및;
    상기 목표 양자화 레벨을 향하는 상기 각 이미지 패널의 마지막 슬라이스에서 양자화 레벨을 구동시키는 단계를 구비하여 이루어진 것을 특징으로 하는 다수의 병렬 압축 엔진을 구비하여 구성된 디지탈 비디오 인코더의 양자화를 제어하기 위한 방법.
  2. 제1항에 있어서, 상기 구동단계가 상기 목표 양자화 레벨을 향하는 상기 각 이미지 패널의 마지막 슬라이스의 양자화 레벨을 구동하도록 구분적 선형 피드백을 이용하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서, 상기 피드백은 상기 각 이미지 패널의 제1 및 최종 슬라이스 사이의 양자화 레벨의 변화에 대해 보상하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서, GOP(group of pictures) 목표 비트율이 일반적으로 상기 압축 엔진의 적어도 하나의 파이프라인 처리에서 다수의 필름 화상과 비필름 화상을기초로 조정되는 것을 특징으로 하는 방법.
  5. 제4항에 있어서, 더 높은 목표 비트율이 비필름 화상에 대해 제공되는 것을 특징으로 하는 방법.
  6. 제1항에 있어서, 상기 비디오 인코더의 버퍼 레벨이 새로운 GOP(group of pictures)의 시작을 제어하도록 이용되는 것을 특징으로 하는 방법.
  7. 제1항에 있어서, 모든 입력화상이 수평 패널의 고정된 수로 분할되고;
    상기 각 패널이 분리 압축 엔진에 의해 압축되는 것을 특징으로 하는 방법.
  8. 제7항에 있어서, 상기 패널이 프레임 시간 동안 동시에 압축되는 것을 특징으로 하는 방법.
  9. 제8항에 있어서, 압축된 패널 데이터가 다음의 프레임 시간내에서 비디오 인코더의 비디오 버퍼에 대해 연속적인 전송을 위해 압축 엔진에서 국부적으로 저장되는 것을 특징으로 하는 방법.
  10. 제9항에 있어서, 데이터는 버퍼가 적어도 하나의 데이터의 전송 패킷 페이로드의 가치를 갖을 때 마다 특정 비디오 비트율과 동일한 평균율에서 전송 패킷을형성하도록 상기 버퍼로부터 검색되는 것을 특징으로 하는 방법.
  11. 제10항에 있어서, 상기 버퍼 레벨이 데이터의 하나의 전송 패킷 페이로드의 가치 이하로 떨어질때 마다 일정 전송율을 유지하도록 널(null) 패킷이 비디오 패킷을 위해 대체되는 것을 특징으로 하는 방법.
  12. 제7항에 있어서, 기준 양자화기 스케일이 상기 각 압축 엔진을 위해 계산되는 것을 특징으로 하는 방법.
  13. 제12항에 있어서, 압축 엔진용 기준 양자화기 스케일이,
    해당 압축 엔진을 위한 양자화기 스케일 값의 축적(sum_quant)과;
    해당 압축 엔진상에서 생성된 비트 수의 축적(bitcount);
    해당 압축 엔진상에서 처리된 매크로블록의 수의 축적(MBcount) 및;
    비디오 인코더의 비디오 버퍼의 충만 레벨(buffer_level)을 기초로 계산되는 것을 특징으로 하는 방법.
  14. 제13항에 있어서, 압축 엔진은 양자화에 이용하기 위한 최종 양자화기 스케일 값을 생성하도록 국부 버퍼 충만을 기초로 그 기준 양자화기 스케일을 변형하는 것을 특징으로 하는 방법.
  15. 제14항에 있어서, 최종 양자화기 스케일 값이 소정 최대 값 보다 더 높으면, 비상 모드(panic mode)가 압축 엔진에 의해 개시되고, 상기 비상 모드는 상기 소정 최대값에서 또는 그 이하에서 양자화를 유지하는 것을 특징으로 하는 방법.
  16. 코드화된 화상당 한번의 화상 시작 인터럽트 서비스 루틴에 따라 연속적 비디오 프레임상에 프레임 레벨 비율 제어를 제공하는 단계와;
    코드화된 화상당 다수번의 비율 제어 인터럽트 서비스 루틴에 따라 매크로불록 레벨 비율 제어를 제공하는 단계를 구비하여 이루어진 것을 특징으로 하는 비디오 데이터의 연속적인 매크로 블록을 압축하기 위해 데이터가 다수의 병렬 압축 엔진을 이용하는 디지탈 비디오 인코더에 의해 처리되는 속도를 제어하기 위한 방법.
  17. 제16항에 있어서, 상기 화상 시작 인터럽트 루틴은 이전의 코드화된 프레임으로부터 수집된 데이터를 처리함으로써 프레임 레벨 통계 변수를 갱신하는 것을 특징으로 하는 방법.
  18. 제16항에 있어서, 처리되어질 새로운 프레임이 인트라-코드화(intra-coded) (Ⅰ) 프레임을 구비하면, 새로운 GOP(group of pictures)를 위한 목표 비트율을 계산하는 단계를 거 구비하여 이루어진 것을 특징으로 하는 방법.
  19. 제16항에 있어서, 새로운 프레임이 인코드될 모든 프레임에 대해 생성되도록허용되는 다수의 비트상의 상한 및 하한을 계산하는 단계와;
    각 프레임 및 각 프레임이 분할되어지는 각 다수의 패널에 대해 생성될 비트의 목표 수를 계산하는 단계를 더 구비하여 이루어진 것을 특징으로 하는 방법.
  20. 제19항에 있어서, 상기 비트의 목표 수는 비디오 프레임의 관련 복잡도 값이 처리됨에 비례하여 비트를 분배함으로써 계산되는 것을 특징으로 하는 방법.
  21. 제19항에 있어서, 프레임에 대해 계산된 비트의 목표 수로부터 프레임 양자화기 스케일을 계산하는 단계를 더 구비하여 이루어진 것을 특징으로 하는 방법.
  22. 제21항에 있어서, 상기 프레임 목표 양자화기 스케일이 비디오 프레임의 코딩을 시작하는데 이용하기 위한 초기 기준 양자화기 스케일로서 상기 다수의 압축 엔진의 각각에 대해 제공되는 것을 특징으로 하는 방법.
  23. 제22항에 있어서, 상기 매크로블록이 DCT 계수를 구비하여 구성되고, 상기 방법이,
    새로운 프레임이 상기 상한내에서 생성되도록 허용하는 비트의 수를 유지하기에 상기 기준 양자화기 스케일이 너무 높으면 상기 DCT 계수의 몇몇을 강제로 제로로 하도록 상기 압축 엔진을 인에이블링하는 단계를 더 구비하여 이루어진 것을 특징으로 하는 방법.
  24. 제19항에 있어서, 상기 비율 제어 인터럽트 서비스 루틴이 프레임 목표 양자화기 스케일의 변조를 초기화하는 인터럽트를 제공하고, 상기 변조는 패널에 대한 비트의 대응하는 목표의 수에 상기 각 패널을 위한 실제 비트 수를 가져오도록 시도하기 위한 피드백을 기초로 하는 것을 특징으로 하는 방법.
  25. 비디오 프레임을 위한 목표 양자화 레벨을 결정하기 위한 수단과;
    상기 목표 양자화 레벨을 상기 비디오 프레임을 나타내는 다수의 패널의 모든 비디오 이미지 패널의 제1슬라이스에 적용하여 상기 비디오 인코더에 의해 병렬로 처리하는 수단 및;
    상기 목표 양자화 레벨을 향하는 상기 각 이미지 패널의 마지막 슬라이스에서 양자화 레벨을 구동시키기 위한 수단을 구비하여 구성된 것을 특징으로 하는 다수의 병렬 압축 엔진으로 이루어진 디지탈 비디오 인코더의 양자화를 제어하기 위한 장치.
  26. 코드화된 화상당 한번의 화상 시작 인터럽트 서비스 루틴에 따라 연속적 비디오 프레임상에 프레임 레벨 비율 제어를 제공하기 위한 수단과;
    코드화된 화상당 다수번의 비율 제어 인터럽트 서비스 루틴에 따라 매크로블록 레벨 비율 제어를 제공하기 위한 수단을 구비하여 구성된 것을 특징으로 하는 비디오 데이터의 연속적인 매크로블록을 압축하기 위해 데이터가 다수의 병렬 압축엔진을 이용하는 디지탈 비디오 인코더에 의해 처리되는 속도를 제어하기 위한 장치.
KR1020017004165A 1998-10-02 1999-09-29 비디오 인코더의 속도조절을 제공하기 위한 방법 및 장치 KR20010075530A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10280098P 1998-10-02 1998-10-02
US60/102,800 1998-10-02
PCT/US1999/022663 WO2000021302A1 (en) 1998-10-02 1999-09-29 Method and apparatus for providing rate control in a video encoder

Publications (1)

Publication Number Publication Date
KR20010075530A true KR20010075530A (ko) 2001-08-09

Family

ID=22291739

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017004165A KR20010075530A (ko) 1998-10-02 1999-09-29 비디오 인코더의 속도조절을 제공하기 위한 방법 및 장치

Country Status (6)

Country Link
EP (1) EP1118225A1 (ko)
KR (1) KR20010075530A (ko)
CN (1) CN1328748A (ko)
AU (1) AU6277199A (ko)
CA (1) CA2345538A1 (ko)
WO (1) WO2000021302A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130066487A (ko) * 2011-12-12 2013-06-20 한국전자통신연구원 멀티미디어 스트림을 스크램블하는 장치

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0013273D0 (en) 2000-06-01 2000-07-26 Philips Electronics Nv Video signal encoding and buffer management
US7039115B1 (en) 2000-09-20 2006-05-02 General Instrument Corporation Processor allocation for channels in a video multi-processor system
US6904094B1 (en) 2000-09-20 2005-06-07 General Instrument Corporation Processing mode selection for channels in a video multi-processor system
US6724825B1 (en) 2000-09-22 2004-04-20 General Instrument Corporation Regeneration of program clock reference data for MPEG transport streams
US6847656B1 (en) 2000-09-25 2005-01-25 General Instrument Corporation Statistical remultiplexing with bandwidth allocation among different transcoding channels
US7082221B1 (en) * 2000-09-29 2006-07-25 Intel Corporation Bandwidth determination for multiple layer digital video
US7068719B2 (en) 2001-06-01 2006-06-27 General Instrument Corporation Splicing of digital video transport streams
KR100624404B1 (ko) * 2002-01-05 2006-09-18 삼성전자주식회사 사람의 시각적 특성을 고려한 적응적 부호화 방법 및 장치
KR100851251B1 (ko) 2002-01-23 2008-08-08 주식회사 엘지이아이 동영상 시스템에서의 엔코딩 제어 방법 및 그 장치
GB2387055A (en) * 2002-03-28 2003-10-01 Sony Uk Ltd Data compression method including target data quantity allocation
KR100973216B1 (ko) * 2002-04-23 2010-07-30 노키아 코포레이션 비디오 부호화 시스템에서 양자화 변수들을 표시하는 방법 및 장치
KR100486524B1 (ko) 2002-07-04 2005-05-03 엘지전자 주식회사 비디오 코덱의 지연시간 단축 장치
US7352809B2 (en) 2003-02-21 2008-04-01 Polycom, Inc. System and method for optimal transmission of a multitude of video pictures to one or more destinations
US20050169537A1 (en) * 2004-02-03 2005-08-04 Sony Ericsson Mobile Communications Ab System and method for image background removal in mobile multi-media communications
NL1030976C2 (nl) * 2006-01-23 2007-07-24 Ventury Tower Mall Iii Inc Werkwijze en inrichting voor het aanpassen van de grootte van een informatiebestand.
KR101590633B1 (ko) 2008-11-11 2016-02-02 삼성전자주식회사 슬라이스 단위로 분할된 동영상을 처리하는 동영상 부호화/복호화장치 및 동영상 부호화/복호화방법
CN101945271B (zh) * 2009-07-03 2012-11-28 大地辰星科技发展(北京)有限公司 图像压缩系统及压缩方法
CN103329524B (zh) * 2011-01-18 2016-10-05 富士通株式会社 动态图像编码装置和动态图像编码方法
CN103428486B (zh) * 2012-05-24 2017-06-09 富士通株式会社 图像压缩方法和装置
CN110708578A (zh) * 2019-10-22 2020-01-17 北方工业大学 一种视频码率自适应调整方法
CN111698505B (zh) * 2020-06-23 2022-03-25 湖南国科微电子股份有限公司 视频帧编码方法、装置、编码设备及可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0837662A (ja) * 1994-07-22 1996-02-06 Hitachi Ltd 画像符号化復号化装置
US5694170A (en) * 1995-04-06 1997-12-02 International Business Machines Corporation Video compression using multiple computing agents
US5650860A (en) * 1995-12-26 1997-07-22 C-Cube Microsystems, Inc. Adaptive quantization
EP0851656A1 (en) * 1996-12-23 1998-07-01 HE HOLDINGS, INC. dba HUGHES ELECTRONICS System and method for high resolution video compression by tiling
US5949490A (en) * 1997-07-08 1999-09-07 Tektronix, Inc. Distributing video buffer rate control over a parallel compression architecture

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130066487A (ko) * 2011-12-12 2013-06-20 한국전자통신연구원 멀티미디어 스트림을 스크램블하는 장치

Also Published As

Publication number Publication date
AU6277199A (en) 2000-04-26
EP1118225A1 (en) 2001-07-25
WO2000021302A1 (en) 2000-04-13
CN1328748A (zh) 2001-12-26
CA2345538A1 (en) 2000-04-13

Similar Documents

Publication Publication Date Title
US6963608B1 (en) Method and apparatus for providing rate control in a video encoder
KR20010075530A (ko) 비디오 인코더의 속도조절을 제공하기 위한 방법 및 장치
US6763067B2 (en) Rate control for bitstream re-encoding
US20080151998A1 (en) Method and Apparatus for Providing Rate Control for Panel-Based Real Time Video Encoder
US5686963A (en) Method for performing rate control in a video encoder which provides a bit budget for each frame while employing virtual buffers and virtual buffer verifiers
US5949490A (en) Distributing video buffer rate control over a parallel compression architecture
US5929916A (en) Variable bit rate encoding
US5650860A (en) Adaptive quantization
US5682204A (en) Video encoder which uses intra-coding when an activity level of a current macro-block is smaller than a threshold level
US5038209A (en) Adaptive buffer/quantizer control for transform video coders
US5872598A (en) Scene change detection using quantization scale factor rate control
US6633609B1 (en) Method and apparatus for bit rate control in a digital video environment for arbitrary bandwidth
US7826530B2 (en) Use of out of order encoding to improve video quality
US5771316A (en) Fade detection
EP1472801A1 (en) A stream based bitrate transcoder for mpeg coded video
US5764293A (en) Method of encoding video using master and slave encoders wherein bit budgets for frames to be encoded are based on encoded frames
EP1575294B1 (en) Method and apparatus for improving the average image refresh rate in a compressed video bitstream
JP2001094997A (ja) ネットワーク帯域幅に適応的なデータ伝送率制御装置
JP2000197049A (ja) 動画像可変ビットレート符号化装置および方法
EP1157560B1 (en) Bit rate control for video data compression
US7274739B2 (en) Methods and apparatus for improving video quality in statistical multiplexing
JP2001028753A (ja) 動画像符号化装置及びその方法
JP3218994B2 (ja) 画像符号化方法および装置
JP4346732B2 (ja) ビデオ・フレームの多重ストリームを処理する方法及びシステム
EP1944980A2 (en) Bit rate control algorithm

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
SUBM Submission of document of abandonment before or after decision of registration