KR100713623B1 - 범용 프로세서와 비디오 프로세서의 결합구조에서의 nal처리 시스템 및 방법 - Google Patents

범용 프로세서와 비디오 프로세서의 결합구조에서의 nal처리 시스템 및 방법 Download PDF

Info

Publication number
KR100713623B1
KR100713623B1 KR1020050035574A KR20050035574A KR100713623B1 KR 100713623 B1 KR100713623 B1 KR 100713623B1 KR 1020050035574 A KR1020050035574 A KR 1020050035574A KR 20050035574 A KR20050035574 A KR 20050035574A KR 100713623 B1 KR100713623 B1 KR 100713623B1
Authority
KR
South Korea
Prior art keywords
nal
data
video processor
processing module
processor
Prior art date
Application number
KR1020050035574A
Other languages
English (en)
Other versions
KR20060112877A (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 KR1020050035574A priority Critical patent/KR100713623B1/ko
Publication of KR20060112877A publication Critical patent/KR20060112877A/ko
Application granted granted Critical
Publication of KR100713623B1 publication Critical patent/KR100713623B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods 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 characterised by memory arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 시스템 및 방법에 관한 것으로, 특히 범용 프로세서와 비디오 프로세서의 결합구조에서 패킷을 효율적으로 처리하는 시스템 및 방법에 관한 것이다.
본 발명의 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 시스템은 내부에 있는 SDRAM의 NAL 데이터를 일정단위로 AMBA를 통해 NAL 처리모듈에 전송하고, 상기 NAL 처리모듈로부터 제공된 크기정보를 사용하여 슬라이스 헤더를 파싱하며, H.264 비디오 프로세서의 SDRAM의 각각의 영역에 해당되는 데이터를 지정하여 H.264 비디오 프로세서를 동작시키는 ARM 기반 마이컴; 상기 ARM 기반 마이컴으로부터 입력받은 NAL 데이터를 처리하여 0x03을 제거하고, 제거된 0x03의 수와 NAL 데이터 1개의 전체 크기를 카운트하는 NAL 처리모듈; 및 상기 NAL 처리모듈에서 처리된 데이터를 AMBA를 통해서 내부의 SDRAM으로 전송하는 H.264 비디오 프로세서;를 포함하는 것을 특징으로 한다.
H.264, 범용, 비디오, 프로세서, NAL, 패킷

Description

범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 시스템 및 방법{The system and method for processing network abstraction layer in the coupled frame of general processor and video processor}
도 1은 종래의 범용 프로세서와 비디오 프로세서의 연결방식을 나타낸 도면이다.
도 2는 종래의 NAL 스트림 구조를 나타낸 도면이다.
도 3은 종래의 NAL에서 메모리의 데이터 이동을 나타낸 도면이다.
도 4는 본 발명의 범용 프로세서와 비디오 프로세서의 연결방식을 나타낸 도면이다.
도 5는 본 발명의 NAL 처리블럭의 내부구조를 나타낸 도면이다.
도 6은 본 발명의 NAL 데이터 처리구조를 나타낸 도면이다.
도 7은 본 발명의 S/W와 H/W가 결합된 방식의 구동 파이프 라인을 나타낸 도면이다.
본 발명은 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 시 스템 및 방법에 관한 것으로, 특히 범용 프로세서와 비디오 프로세서의 결합구조에서 패킷을 효율적으로 처리하는 시스템 및 방법에 관한 것이다.
H.264 비디오 코덱의 디코딩을 구현하는 방법으로 S/W 방식, H/W 방식 및 S/W 방식과 H/W 방식이 결합된 방식이 사용될 수 있다. H.264는 비디오 압축방식이 1가지로 고정되어 있는 구조가 아니라, VLC 방식의 선택도 가능하다. 그리고, 데이터 스트림도 데이터 분할(data partition)이라는 방식으로 여러 개로 분할할 수 있고, 레퍼런스 픽쳐(reference picture)의 운영방식도 변형이 가능하며, SEI(Supplemental Enhancement Information)라는 추가정보도 가지고 있을 수 있다. 또한, H.264의 비디오 데이터는 데이터 압축 성능을 높이기 위해 많은 연산이 필요한 방식으로 엔코딩되어 있기 때문에 디코딩시에 많은 연산이 필요하다.
따라서, 변형이 자유로운 운영방식을 구현하면서 낮은 주파수에서 처리되도록 하기 위해서는 S/W나 H/W 중에서 어느 한 쪽으로 구현하는 것이 아니라, S/W 방식과 H/W 방식을 결합하여 사용하는 것이 유용하다. 범용 프로세서에서 S/W로 H.264의 TOP 운영방식을 조정하고, 슬라이스(slice)의 헤더(header)를 파싱(parsing)하여 여러 가지의 정보를 유동적으로 운영이 가능하도록 하며, H/W 부분에서는 슬라이스 페이로드(slice payload)를 처리하여 낮은 주파수에서 고속의 동작이 가능하도록 한다.
도 1은 종래의 범용 프로세서와 비디오 프로세서의 연결방식을 나타낸 도면이다. 도 1에 도시된 바와 같이, 처리할 스트림이 범용 프로세서(20)의 메모리(20a)에 저장되어 있다. ARM 기반 마이컴과 같은 범용 프로세서(20)의 메모리(20a) 에 있는 비디오 스트림을 읽어온 후에 슬라이스 헤더를 파싱(parsing)하고, 탑(top) 운영에 관련된 여러 가지의 설정을 한다. 슬라이스 페이로드를 데이터 인터페이스(50)를 통해 비디오 프로세서(40)의 메모리(40a)에 저장해두면 비디오 프로세서(40)에서는 메모리(40a)의 내용을 읽어 슬라이스 페이로드의 디코딩을 처리하는 방식으로 동작한다. 이러한 데이터 인터페이스의 기능으로는 프로세서의 종류에 따라 GDMA, AMBA 및 HOST 인터페이스 등의 방식이 사용된다.
H.264는 여러 가지의 네트워크 환경에서의 사용을 강화하기 위해 NAL (Network Abstraction Layer)이라는 패킷으로 비디오 스트림이 구성되어 있다. H.264에서는 비디오를 엔코딩한 슬라이스 데이터나 디코딩 정보를 마지막 단에서 NAL이라는 형식으로 다시 한번 변형하는 구조를 가지고 있다. 따라서, 디코딩하기 위해서는 제일 먼저 NAL이라는 형식을 처리하여 디코딩 정보나 슬라이스 데이터를 사용할 수 있다.
도 2는 종래의 NAL 스트림 구조를 나타낸 도면이다. 도 2에 도시된 바와 같이, NAL 스트림은 슬라이스 데이터나 디코딩 정보를 1 바이트씩 나누어 마지막 남는 부분은 바이트 정렬(byte align)한 후, 바이트로 나열된 데이터에 0x00000x의 데이터가 있을 경우에 0x0000030x의 형태로 0x03을 삽입하는 신텍스(syntax)가 적용되어야 한다. 1개의 NAL 단위가 만들어지면 1 바이트의 NAL 헤더가 스트림의 첫 부분에 붙게 된다. NAL과 NAL사이에는 NAL 스타트 코드(start code) (0x00000001)라는 4 바이트의 값으로 구분되어 있다. 1개 NAL에 대한 크기 정보는 포함되어 있지 않고, 디코딩 과정에서 처음 0x0000001부터 다음 0x00000001 사이의 스트림을 바이트 카운트하여 전체의 크기를 구하여 사용해야 한다.
H.264 스트림을 디코드하기 위해서는 NAL 스타트 코드와 다음의 NAL 스타트 코드까지 바이트를 카운트하여 전체 크기를 구해야 하고, 스트림에서 0x000003이라는 값이 나오게 되면 뒤 부분의 0x03을 제거한 뒤, 스트림을 앞으로 1 바이트 당기면서 스트림을 재구성해야 한다. 전체 바이트 카운트에서도 0x000003의 0x03의 개수를 카운트하여 제거한 후에 사용하여야 한다.
상기 NAL 처리방식을 도 1과 같은 종래의 구조에서 처리하기 위해서는 32비트로 운영되는 범용 프로세서의 메모리나 비디오 프로세서의 메모리에서 바이트 단위의 연산이 일어나야 한다. 이미지 처리를 위해서 시스템들이 SDRAM을 사용하고 있는데, 1개의 NAL 크기를 알기 위해서는 다수의 불연속적인 메모리 엑세스가 발생한다. 이는 연속적인 메모리 엑세스가 최대 장점인 SDRAM에서 메모리 크기의 낭비를 초래한다. 범용 프로세스 쪽에서 NAL 패킷 처리를 한다면 메모리에서 데이터를 읽어와서 0x00000001 값을 찾으면서 바이트 카운트를 진행하여 전체 NAL 크기를 구하고, 중간에 0x000003이 있을 경우에는 0x03을 제거한 후에 1 바이트씩 주소를 앞으로 당겨서 메모리에 적재해 준다. 32 비트 프로세서에서 2 워드를 읽어와서 시프트(shift) 연산을 수행한 후, 1 워드를 만들어서 메모리에 저장해 주거나 1 바이트씩 엑세스를 해야 한다.
도 3은 종래의 NAL에서 메모리의 데이터 이동을 나타낸 도면이다. 도 3에 도시된 바와 같이, ADDR0에서 읽은 데이터에서 0x00000302라는 값이 있으면 0x03을 제거하여 0x000002가 되고, ADDR1에 있는 데이터의 첫 번째 바이트(0x34)를 읽어와 서 연속적인 스트림이 되도록 한다. ADDR1은 기존의 3 바이트 데이터를 시프트시킨 뒤, ADDR2의 데이터를 읽어와서 1 바이트를 추가하는 방식으로 연속된 시프트 동작을 수행한다. NAL 데이터 뒤 부분에서 다시 0x000003 패턴이 나오게 되면 추가적인 1바이트 시프트가 수행되어져야 한다. 1 워드(32 비트들) 엑세스씩 2번 엑세스하여 시프트 연산을 수행하는 방식을 피하기 위해서는 메모리를 바이트 엑세스하는 방식으로 바꾸어 1 바이트를 읽어 제거할 0x03부분에 어드레스를 한 단계 당겨 저장하는 방식을 취할 수도 있으나. 이것은 많은 스트림의 1 바이트 연산이 되므로 1 워드의 처리를 위해 4번의 메모리 엑세스가 이루어져야 하는 문제가 발생한다.
도 1에서 1개의 NAL을 처리하기 위해서는 데이터를 범용 프로세서(20)의 메모리(20a)로부터 데이터 인터페이스(50)를 통하여 비디오 프로세서(40)의 메모리(30)에 전달하여야 한다. 그 후, 비디오 프로세서(40)에서 H.264 스트림 디코딩을 처리하는 과정이 진행된다. 여기서, 작은 크기의 스트림일 경우에는 메모리 사용에 문제가 없지만, 고해상도의 비디오 처리를 위해서는 많은 메모리 엑세스가 발생하게 되어 동작속도가 증가되어 전력소모도 많아지게 되고, 메모리의 사용에 있어서도 SDRAM 메모리를 사용하게 될 경우에는 연속적인 엑세스를 해야만 성능이 향상된다. NAL의 처리를 하게 되면 1 워드나 1 바이트 단위의 엑세스가 불연속적으로 발생하여 효율저하가 발생하기 때문에 H.264 디코더 전체 메모리 크기를 증가시키야 하는 문제점이 있다.
이에 본 발명은 상기 문제점을 해결하기 위한 것으로써, 범용 프로세서와 비디오 프로세서의 결합구조에서 패킷을 효율적으로 처리하는 시스템 및 방법을 제공하는 것을 목적으로 한다.
본 발명은 내부에 있는 SDRAM의 NAL 데이터를 일정단위로 AMBA를 통해 NAL 처리모듈에 전송하고, 상기 NAL 처리모듈로부터 제공된 크기정보를 사용하여 슬라이스 헤더를 파싱하며, H.264 비디오 프로세서의 SDRAM의 각각의 영역에 해당되는 데이터를 지정하여 H.264 비디오 프로세서를 동작시키는 ARM 기반 마이컴; 상기 ARM 기반 마이컴으로부터 입력받은 NAL 데이터를 처리하여 0x03을 제거하고, 제거된 0x03의 수와 NAL 데이터 1개의 전체 크기를 카운트하는 NAL 처리모듈; 및 상기 NAL 처리모듈에서 처리된 데이터를 AMBA를 통해서 내부의 SDRAM으로 전송하는 H.264 비디오 프로세서;를 포함하는 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 시스템을 제시한다.
또한, 본 발명은 ARM 기반 마이컴이 SDRAM의 NAL 데이터를 일정단위로 AMBA를 통해 NAL 처리모듈에 전송하는 제1단계; 상기 NAL 처리모듈이 ARM 기반 마이컴으로부터 입력받은 NAL 데이터를 처리하여 0x03을 제거하고, 제거된 0x03의 수와 NAL 데이터 1개의 전체 크기를 카운트하는 제2단계; 상기 NAL 처리모듈에서 처리된 데이터가 AMBA를 통해서 H.264 비디오 프로세서의 SDRAM으로 전송되는 제3단계; 상기 데이터가 H.264 비디오 프로세서의 SDRAM의 각각의 영역에 들어가는 제4단계; 및 상기 ARM 기반 마이컴이 NAL 처리모듈로부터 제공된 크기정보를 사용하여 슬라 이스 헤더를 파싱하고, SDRAM의 각각의 영역에 해당되는 데이터를 지정하여 H.264 비디오 프로세서를 동작시키는 제5단계;를 포함하는 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 방법을 제시한다.
인터넷과 공중파를 통해 많은 멀티미디어 정보가 전송되고 있는 시점에서 단일 데이터가 여러 경로로 동시에 전송되거나 또는 안전한 전송을 위해 데이터가 패킷(packet)화되어 전송되고 있다. 패킷은 데이터를 안전하게 전송하기 위한 필요한 정보들을 가지고 있는데, 비디오 코덱에서도 이러한 패킷 기능이 코덱의 일부로 포함되기 시작했다. 디지털 멀티미디어 방송(DMB)의 비디오 코덱의 표준인 H.264에서도 NAL이라는 이름의 패킷의 개념이 이용된다.
이하, 본 발명의 실시예에 대한 구성 및 그 작용을 첨부한 도면을 참조하면서 상세히 설명하기로 한다.
도 4는 본 발명의 범용 프로세서와 비디오 프로세서의 연결방식을 나타낸 도면이다. 도 4에 도시된 바와 같이, 본 발명의 범용 프로세서(200)와 비디오 프로세서(400)의 연결방식은 도 1의 데이터 인터페이스(50) 대신에 NAL 처리블럭(500)으로 대체된다. 본 발명의 범용 프로세서(200)와 비디오 프로세서(400)의 연결방식은 도 1과 같이 단순히 데이터를 전달해 주는 것이 아니라, 연속적인 NAL 스트림을 입력받아 NAL 스타트 코드(start code)와 0x03을 제거하면서 범용 프로세서(200)의 메모리(200a)에 있는 NAL을 변환하여 비디오 프로세서(400)의 메모리(400a)에 저장한다.
도 5는 본 발명의 NAL 처리블럭의 내부구조를 나타낸 도면이다. 도 5에 도시 된 바와 같이, NAL 처리블럭(500)의 동작방법은 다음과 같다.
1) 범용 프로세서의 메모리로부터 NAL 데이터를 DMA를 사용하여 읽는다.
2) NAL 스타트 코드(0x00000001)를 찾아내고, NAL 스타트 코드가 나올 때까지 NAL 스타트 코드 사이에 있는 데이터를 바이트 카운트(byte count)한다.
3) 입력받는 NAL 데이터 중에 0x000003 데이터 패턴이 있을 경우에는 마지막 0x03을 제거하고, 다음의 데이터를 앞으로 1 바이트 당겨서 스트림을 재구성한다.
4) 제거된 0x03의 수를 카운트하여 바이트 카운트한 값에서 제거하여 스트림 크기를 구한다.
5) 처리가 끝난 스트림을 비디오 프로세서의 메모리에 DMA를 사용하여 쓴다.
도 4에서는 상기와 같이 처리할 경우에 1개의 NAL을 처리할 때 범용 프로세서(200)의 메모리(200a)로부터 DMA를 사용하여 1개의 NAL 크기에 대한 데이터가 1번의 연속적인 메모리 엑세스로 NAL 처리블럭(500)에 입력된다. 그리고, NAL 처리블럭(500)에서 처리가 끝난 후, DMA를 사용하여 비디오 프로세서(400)의 메모리(400a)에 연속적으로 저장된다.
종래기술에서는 NAL 처리블럭이 단순히 데이터 전달기능으로 구성되어 있을 경우에 NAL 데이터에 대한 처리를 모두 범용 프로세서에서 소프트웨어로 해주어야 하는데, 이러한 경우에는 다음과 같이 동작이 수행된다.
1) 범용 프로세서의 메모리로부터 1 바이트 단위로 NAL 데이터를 읽는다.
2) NAL 스타트 코드를 검색한 후, 그 다음의 데이터부터 메모리에 쓴다.
3) 0x000003 패턴이 나올 경우에 0x03를 제거하면서 메모리에 쓴다.
4) 새로운 NAL 스타트 코드가 나올 때까지 2)번과 3)번의 과정을 반복적으로 수행하면서 바이트 카운트를 수행한다.
5) NAL 처리가 완료되거나 전송할 데이터의 크기만큼 처리가 되면 데이터를 비디오 프로세서의 메모리로 전송한다.
도 1에서는 상기와 같이 처리할 경우에 상기 2)번과 3)번의 과정에서 비연속적인 메모리 엑세스가 발생하고, 바이트 단위 엑세스로 인해 메모리의 사용에 있어 효율이 떨어진다. 결과적으로, 메모리의 크기와 계산량이 증가한다. 소프트웨어 처리로 인해 범용 프로세서(20) 내부와 메모리(20a) 사이에서 양방향으로 수 차례 데이터가 전송된 후에 데이터 인터페이스(50)를 거쳐 비디오 프로세서(40)의 메모리(40a)에 데이터가 전송된다.
본 발명에서 제시하는 구조로 사용하게 될 경우에는 SDRAM을 메인 메모리로 사용하는 32비트 프로세서에서 대용량 스트림의 연속적인 메모리 엑세스(burst mode)로 SDRAM 메모리의 고속동작으로 인하여 빠른 속도처리가 가능하다.
단순히 SDRAM에서 NAL 스트림을 읽거나 쓸 때 버스트 모드를 사용하여 연속적으로 엑세스하는 것과 1 워드씩 128번을 단일(single) 엑세스하는 것을 비교해 보면, 적어도 2배에서 많게는 5배 이상의 엑세스 시간의 차이가 발생하게 된다. NAL 처리를 위한 바이트 연산 엑세스까지 포함되면, 프로그램의 구조에 따라 많은 메모리 엑세스와 연산이 추가로 사용되어져야 한다.
도 6은 본 발명의 NAL 데이터 처리구조를 나타낸 도면이다. 도 6에 도시된 바와 같이, NAL 처리모듈(700)은 S/W로 비디오 디코딩 설정 정보처리와 전체 디코 더 운영을 하여 여러 가지의 변형에 쉽게 적응하게 하고, 비디오 데이터 처리는 H/W를 사용하여 고속처리가 가능하게 하는 S/W 방식과 H/W 방식이 결합된 구조에서 적합한 효과를 내도록 한다.
ARM 기반 마이컴(600)과 같은 범용 프로세서를 이용하여 전체적으로 구성해보면 ARM 기반 마이컴(600)과 연결된 SDRAM(600A)에 연속적인 NAL 스트림(600a)이 들어 있고, AMBA를 통해서 NAL 처리모듈(700)이 연결되어 있으며, AMBA를 통해 비디오 프로세서(800)의 모듈에 연결되는 구조를 형성한다. 비디오 프로세서(800)의 SDRAM(800A)에는 각각의 NAL 단위로 MAP을 형성해두고, NAL 처리모듈(700)에서 각각의 SDRAM(800A)에 1개의 NAL씩 저장하여 비디오 프로세서(800)에서 1개 단위로 처리할 수 있도록 한다.
상기 NAL 처리모듈(700)의 동작방법은 다음과 같다.
1) ARM 기반 마이컴(600)의 SDRAM(600A)로부터 NAL 스트림(600a)을 AMBA(DMA)를 사용하여 입력받는다.
2) NAL을 1개 단위씩 구분하여 처리한 후, NAL의 크기정보와 0x03의 개수를 ARM 기반 마이컴(600)에 제공한다.
3) 처리된 NAL 데이터는 순차적으로 RM_BASE0, RM_BASE1, RM_BASE2 및RM_BASE3에 AMBA를 이용하여 쓴다. 여기서, RM_BASE는 NAL 스트림(600a)이 저장되는 SDRAM(800)의 영역을 나타낸 것이다. RM_BASE의 크기는 사용되는 NAL 스트림(600a) 의 양에 따라 임의로 설정이 가능하도록 레지스터로 정한다.
상기 ARM 기반 마이컴(600)의 동작방법은 다음과 같다.
1) ARM 기반 마이컴(600)의 프로그램에서는 NAL 처리모듈(700)에 NAL을 연속으로 전달한다.
2) NAL 전달과 병렬적으로 NAL 스트림(600a)으로부터 입력받은 각각의 NAL에 대한 크기를 바탕으로 ARM 기반 마이컴(600)의 SDRAM(600A)에 있는 1개의 NAL의 위치를 파악하고, 디코딩에 관련된 설정정보를 가져와서 소프트웨어로 파싱(parsing)한다. 여기다서, 처음의 시작위치는 알고 있으므로 NAL의 크기만 알게 되면 각각의 NAL의 시작위치를 계산해낼 수 있다.
3) 슬라이스 헤더의 정보를 사용하여 비디오 프로세서(800)가 비디오 데이터를 디코드할 때 필요한 정보(비디오 프로세서(800)에서 처리해야 할 비디오 데이터가 있는 RM_BASE의 주소, NAL의 크기 및 슬라이스 헤더 파싱정보)를 지정하고, 비디오 프로세서(800)를 동작시킨다.
4) 비디오 프로세서(800)가 동작하고 있는 동안에 다음에 처리할 NAL의 슬라이스 헤더의 파싱을 작동시키고, RM_BASE 중에 비디오 데이터의 처리가 완료되어 빈 공간이 발생하면 NAL 처리모듈(700)을 동작시켜 NAL 처리를 진행한다.
상기 NAL 데이터 처리구조의 데이터 처리방법은 다음과 같다.
1) ARM 기반 마이컴(600)이 SDRAM(600A)의 NAL 데이터를 일정단위로 AMBA를 통해 NAL 처리모듈(700)에 전송한다.
2) NAL 처리모듈(700)은 ARM 기반 마이컴(600)으로부터 입력받은 NAL 데이터를 처리하여 0x03을 제거하고, 제거된 0x03의 수와 NAL 데이터 1개의 전체 크기를 바이트 단위로 카운트한다.
3) NAL 처리모듈(700)에서 처리된 데이터가 AMBA를 통해서 H.264 비디오 프로세서(800)의 SDRAM(800A)으로 전송한다. 데이터는 H.264 비디오 프로세서(800)의 일정한 크기로 정해진 SDRAM(800A)의 4개 영역(800a, 800b, 800c, 800d, 변형 가능하다.)에 1개의 NAL 단위로 순서대로 순환하면서 들어가게 된다. 데이터가 모든 영역에 저장되면 NAL 처리모듈(700)은 동작을 멈추고, 하나라도 사용이 끝나면 동작을 재시작한다.
4) ARM 기반 마이컴(600)이 NAL 처리모듈(700)로부터 제공된 크기정보를 사용하여 슬라이스 헤더를 파싱하고, SDRAM(800A)의 4개 영역(800a, 800b, 800c, 800d)에 해당되는 데이터를 지정하여 H.264 비디오 프로세서(800)를 동작시킨다.
도 7은 본 발명의 S/W와 H/W가 결합된 방식의 구동 파이프 라인을 나타낸 도면이다. 도 7에 도시된 바와 같이, ARM 기반 마이컴, NAL 처리모듈 및 H.264 비디오 프로세서를 운영하면 각각 동시에 동작할 수 있기 때문에 파이프 라인 방식으로 작동하게 된다. 파이프 라인은 NAL 처리를 진행하고, S/W로 슬라이스 헤더 파싱을 진행하면서 비디오 프로세서에서 비디오 데이터를 디코딩하는 3단방식으로 진행된다.
기존 방식의 구조로 사용하였을 경우에는 S/W로 NAL 처리를 하고, 그 데이터를 가지고 슬라이스 헤더 파싱을 진행한 후, 데이터를 비디오 프로세서에 전달하여 디코딩을 진행시키면 NAL 처리와 슬라이스 헤더 파싱의 결합 및 하드웨어 디코딩으로 이루어진 2단 파이프 라인이 형성된다.
이에 반하여, 본 발명의 방식을 사용하게 되면 3단 파이프 라인이 형성되고, 효율적인 메모리 엑세스와 H/W 처리를 통한 빠른 NAL 처리효과로 인하여 빠른 속도의 비디오 처리가 가능하다.
이상에서 설명한 내용을 통해 본 업에 종사하는 당업자라면 본 발명의 기술사상을 이탈하지 아니하는 범위 내에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다. 따라서, 본 발명의 기술적 범위는 실시예에 기재된 내용만으로 한정되는 것이 아니라 특허청구범위에 의하여 정해져야 한다.
이상에서와 같이 본 발명에 의한 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 시스템 및 방법은 다음과 같은 효과가 있다.
첫째, 기존의 처리방식보다 효율적인 메모리 사용이 가능하다.
둘째, H/W로 NAL 처리를 빨리 수행한다.
셋째, 3단 파이프라인 처리(slice header parsing, NAL 처리, H/W 디코드)로 빠른 동작이 가능하다.
넷째, 비디오 데이터가 큰 크기(HD 급)의 영상일수록 많은 효과가 발생하여 대용량 고속처리 프로세서에 적용하기에 적합하다.
다섯째, 메모리 엑세스가 줄어들어 작은 크기의 스트림일 경우에도 저전력에 용이하다.
여섯째, NAL뿐만 아니라 패킷을 먼저 처리해야 하는 형태의 비디오 스트림 입력일 경우에 각각의 패킷을 처리하는 방식에 맞추어 NAL 처리모듈을 설계하여 효율적인 메모리 엑세스와 파이프라인 처리가 가능하다.

Claims (8)

  1. 범용 프로세서 내부에 포함되어 상기 범용 프로세서 내부 SDRAM의 NAL 데이터를 일정단위로 AMBA를 통해 NAL 처리모듈에 전송하고, 상기 NAL 처리모듈로부터 제공된 크기정보를 사용하여 소프트웨어적으로 슬라이스 헤더를 파싱하며, H.264 비디오 프로세서의 SDRAM의 각각의 영역에 해당되는 데이터를 지정하여 H.264 비디오 프로세서를 동작시키는 ARM 기반 마이컴;
    상기 ARM 기반 마이컴으로부터 입력받은 NAL 데이터를 DMA를 사용하여 읽은 후, NAL 스타트 코드가 나올 때까지 NAL 스타트 코드 사이에 있는 데이터를 바이트 카운트하며, 입력받은 NAL 데이터 중에 0x000003 데이터 패턴이 있는 경우에는 마지막 0x03을 제거하고 다음의 데이터를 앞으로 1 바이트 당겨서 스트림을 재구성하며 제거된 0x03의 수를 카운트하여 상기 바이트 카운트한 값에서 제거하여 스트림의 크기를 구하는 NAL 처리모듈; 및
    상기 NAL 처리모듈에서 처리된 데이터를 AMBA를 통해서 내부의 SDRAM으로 전송하는 H.264 비디오 프로세서;를 포함하며,
    상기 NAL 처리모듈에 의해 1개의 NAL을 처리할 때 DMA를 사용하여 한 개의 NAL 크기에 대한 데이터가 한 번의 연속적인 메모리 액세스로 상기 NAL 처리모듈에 입력되고 상기 NAL 처리모듈에서 처리된 데이터는 DMA를 사용하여 비디오 프로세서의 SDRAM에 연속적으로 저장되는 것을 특징으로 하는 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 시스템.
  2. 범용 프로세서 내부에 있는 ARM 기반 마이컴이 상기 범용 프로세서 내부에 있는 SDRAM의 NAL 데이터를 일정단위로 AMBA를 통해 NAL 처리모듈에 전송하는 제1단계;
    상기 NAL 처리모듈이 상기 ARM 기반 마이컴으로부터 입력받은 NAL 데이터를 DMA를 사용하여 읽음으로써 NAL 스타트 코드가 나올 때까지 NAL 스타트 코드 사이에 있는 데이터를 바이트 카운트하며, 입력받은 NAL 데이터 중에 0x000003 데이터 패턴이 있는 경우에는 마지막 0x03을 제거하고 다음의 데이터를 앞으로 1 바이트 당겨서 스트림을 재구성하며 제거된 0x03의 수를 카운트하여 상기 바이트 카운트한 값에서 제거하여 스트림의 크기를 구하는 2단계;
    상기 NAL 처리모듈에서 처리된 데이터가 AMBA를 통해서 H.264 비디오 프로세서의 SDRAM으로 전송되는 제3단계;
    상기 데이터가 H.264 비디오 프로세서의 SDRAM의 각각의 영역에 들어가는 제4단계; 및
    상기 ARM 기반 마이컴이 NAL 처리모듈로부터 제공된 크기정보를 사용하여 소프트웨어적으로 슬라이스 헤더를 파싱하고, SDRAM의 각각의 영역에 해당되는 데이터를 지정하여 H.264 비디오 프로세서를 동작시키는 제5단계;를 포함하며,
    상기 NAL 처리모듈에 의해 1개의 NAL을 처리할 때 DMA를 사용하여 한 개의 NAL 크기에 대한 데이터가 한 번의 연속적인 메모리 액세스로 상기 NAL 처리 모듈에 입력되고 상기 NAL 처리 모듈에서 처리된 데이터는 DMA를 사용하여 비디오 프로세서의 SDRAM에 연속적으로 저장되는 것을 특징으로 하는 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 방법.
  3. 청구항 2에 있어서,
    상기 제2단계의 제거된 0x03의 수를 카운트는 바이트 단위로 하는 것을 특징으로 하는 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 방법.
  4. 청구항 2에 있어서,
    상기 제4단계는 1개의 NAL 단위로 순서대로 순환하면서 들어가는 것을 특징으로 하는 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 방법.
  5. 청구항 4에 있어서,
    상기 SDRAM은 일정한 크기로 정해진 것을 특징으로 하는 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 방법.
  6. 청구항 2에 있어서,
    상기 제4단계는 모든 영역에 저장되면 NAL 처리모듈은 동작을 멈추고, 하나라도 사용이 끝나면 동작을 재시작하는 단계를 더 포함하는 것을 특징으로 하는 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 방법.
  7. 청구항 2에 있어서,
    상기 ARM 기반 마이컴, H.264 비디오 프로세서 및 NAL 처리모듈은 3단 파이프 라인 방식으로 동작하는 것을 특징으로 하는 범용 프로세서와 비디오 프로세서의 결합구조에서의 NAL 처리 방법.
  8. 청구항 7에 있어서, 상기 3단 파이프 라인 방식은
    상기 NAL 처리모듈을 처리하는 제 1단계;
    상기 ARM 기반 마이컴이 NAL 처리모듈로부터 디코딩에 관련된 정보를 가져와서 소프트웨어로 파싱하는 제 2 단계; 및
    상기 H.264 비디오 프로세서가 비디오 데이터를 디코딩하는 제 3 단계;
    를 포함하는 것을 특징으로 하는 범용 프로세서와 비디오 프로세서의 결합구조에서NAL 처리 방법.
KR1020050035574A 2005-04-28 2005-04-28 범용 프로세서와 비디오 프로세서의 결합구조에서의 nal처리 시스템 및 방법 KR100713623B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050035574A KR100713623B1 (ko) 2005-04-28 2005-04-28 범용 프로세서와 비디오 프로세서의 결합구조에서의 nal처리 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050035574A KR100713623B1 (ko) 2005-04-28 2005-04-28 범용 프로세서와 비디오 프로세서의 결합구조에서의 nal처리 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20060112877A KR20060112877A (ko) 2006-11-02
KR100713623B1 true KR100713623B1 (ko) 2007-05-02

Family

ID=37651324

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050035574A KR100713623B1 (ko) 2005-04-28 2005-04-28 범용 프로세서와 비디오 프로세서의 결합구조에서의 nal처리 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR100713623B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030220964A1 (en) 2002-05-24 2003-11-27 Geofroy Paul Joseph Data server
US20040057465A1 (en) 2002-09-24 2004-03-25 Koninklijke Philips Electronics N.V. Flexible data partitioning and packetization for H.26L for improved packet loss resilience
KR20060003426A (ko) * 2004-07-06 2006-01-11 삼성전자주식회사 파이프 라인 방식의 복호화 장치 및 방법과, 이 장치를제어하는 컴퓨터 프로그램을 저장하는 컴퓨터로 읽을 수있는 기록 매체
KR20060081970A (ko) * 2005-01-11 2006-07-14 엘지전자 주식회사 H.264 기반의 동영상 디코더에서 인트라 프레임을 랜덤억세스 가능 포인트로 선택하는 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030220964A1 (en) 2002-05-24 2003-11-27 Geofroy Paul Joseph Data server
US20040057465A1 (en) 2002-09-24 2004-03-25 Koninklijke Philips Electronics N.V. Flexible data partitioning and packetization for H.26L for improved packet loss resilience
KR20060003426A (ko) * 2004-07-06 2006-01-11 삼성전자주식회사 파이프 라인 방식의 복호화 장치 및 방법과, 이 장치를제어하는 컴퓨터 프로그램을 저장하는 컴퓨터로 읽을 수있는 기록 매체
KR20060081970A (ko) * 2005-01-11 2006-07-14 엘지전자 주식회사 H.264 기반의 동영상 디코더에서 인트라 프레임을 랜덤억세스 가능 포인트로 선택하는 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
1020060003426

Also Published As

Publication number Publication date
KR20060112877A (ko) 2006-11-02

Similar Documents

Publication Publication Date Title
US10489426B2 (en) Category-prefixed data batching of coded media data in multiple categories
US6507293B2 (en) Processing circuit and method for variable-length coding and decoding
US7403564B2 (en) System and method for multiple channel video transcoding
US6463059B1 (en) Direct memory access execution engine with indirect addressing of circular queues in addition to direct memory addressing
CN114556956A (zh) 使用旁路子流和经熵编码子流的低时延编码
US6959348B1 (en) Method and system for accessing data
US6434170B1 (en) Memory-based circular queue with local descriptive information to implement a storage area for filtering mpeg-2 packets that are distributed and/or processed under the control of a host microprocessor by a direct memory access mechanism
US8774281B2 (en) Implementation of a DV video decoder with a VLIW processor and a variable length decoding unit
JPH08265746A (ja) Mpeg2トランスポートデコーダ装置
CN102595240B (zh) 视讯/影像解码系统与相应的视讯/影像解码方法
US20080240093A1 (en) Stream multiplexer/de-multiplexer
CN109218822B (zh) 一种视频处理系统
US8443413B2 (en) Low-latency multichannel video port aggregator
US8494059B1 (en) Buffer controller
KR100713623B1 (ko) 범용 프로세서와 비디오 프로세서의 결합구조에서의 nal처리 시스템 및 방법
CN108093258B (zh) 码流数据的解码方法、计算机装置及计算机可读存储介质
US7075462B2 (en) Speeding up variable length code decoding on general purpose processors
JP4563300B2 (ja) テーブル装置、可変長符号化/復号装置、可変長符号化装置及び可変長復号装置
Chang et al. An efficient embedded bitstream parsing processor for MPEG-4 video decoding system
US7284072B2 (en) DMA engine for fetching words in reverse order
CN110213650B (zh) 一种软件快速搜索视频码流中同步字的方法及装置
US8023564B2 (en) System and method for providing data starting from start codes aligned with byte boundaries in multiple byte words
KR100582033B1 (ko) 디지털 신호처리 프로세서와 메모리간의 데이터 운용 장치및 운용 방법
Deihl III A method for dynamically interleaving multiple MPEG-1 video streams
Wu et al. Hardware-assisted syntax decoding model for software AVC/H. 264 decoders

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130424

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140402

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160401

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170403

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180409

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 13